:root{
  --bg:#F6F8F5; --card:#fff; --ink:#14201A; --muted:#6B7A70; --line:#E8EDE9;
  --g900:#0E4D34; --g700:#16803C; --g500:#22A559; --g100:#E3F5EA; --g50:#F1FAF4;
  --y500:#F5B70A; --y300:#FBD660; --y100:#FEF4D3; --y700:#A87A00;
  --r500:#E74C3C; --r100:#FDECEA; --r700:#C0392B;
  --p500:#9013FE; --p100:#EBE2FD; --p700:#5B21B6;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Plus Jakarta Sans',system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}
.num{font-variant-numeric:tabular-nums;letter-spacing:-0.02em}
a{color:var(--g700);text-decoration:none}
a:hover{text-decoration:underline}

.app{display:grid;grid-template-columns:232px 1fr;min-height:100vh;transition:grid-template-columns .22s ease}

.sidebar-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:0 4px 18px;
  border-bottom:1px solid var(--line);
  margin-bottom:12px;
}
.brand{display:flex;align-items:center;gap:11px;padding:0 4px;min-width:0;flex:1}
.brand-text{min-width:0;overflow:hidden}
.logo{width:34px;height:34px;border-radius:10px;background:var(--g700);display:grid;place-items:center;flex:none}
.brand b{font-size:14px;font-weight:800;display:block;line-height:1.15;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand small{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}

.sidebar-toggle{
  width:28px;height:28px;border-radius:8px;border:1px solid var(--line);
  background:var(--card);color:var(--muted);
  display:grid;place-items:center;cursor:pointer;flex:none;
  transition:.15s;
}
.sidebar-toggle:hover{background:var(--g50);color:var(--ink);border-color:var(--g500)}
.sidebar-toggle svg{transition:transform .22s ease}
aside{background:var(--card);border-right:1px solid var(--line);padding:22px 16px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:11px;padding:0 8px 22px;border-bottom:1px solid var(--line);margin-bottom:14px}
.logo{width:34px;height:34px;border-radius:10px;background:var(--g700);display:grid;place-items:center;flex:none}
.brand b{font-size:15px;font-weight:800;display:block;line-height:1.15;color:var(--ink)}
.brand small{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;font-weight:600}
nav{display:flex;flex-direction:column;gap:3px;flex:1;overflow-y:auto}
.ni{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:10px;border:0;background:none;color:var(--muted);font:600 13.5px inherit;font-family:inherit;cursor:pointer;text-align:left;transition:.15s;text-decoration:none}
.ni:hover{background:var(--g50);color:var(--ink);text-decoration:none}
.ni.on{background:var(--g100);color:var(--g900)}
.ni svg{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.side-foot{margin-top:auto;background:var(--y100);border-radius:14px;padding:14px;font-size:11.5px;color:var(--y700);line-height:1.5}
.side-foot b{font-size:12.5px;display:block;margin-bottom:3px;color:var(--ink)}
.logout-link{display:inline-block;margin-top:10px;color:var(--y700);font-weight:700;font-size:12px;text-decoration:none}
.logout-link:hover{text-decoration:underline}

/* ⬇️ MAIN: flexbox supaya footer nempel bawah */
main{padding:28px 34px 48px;min-width:0;display:flex;flex-direction:column;min-height:100vh}

.top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:26px}
.top h1{font-size:22px;font-weight:800;letter-spacing:-0.02em}
.top p{color:var(--muted);margin-top:3px;font-size:13px}
.tools{display:flex;gap:10px;align-items:center}
select{
  font:600 13px inherit;
  font-family:inherit;
  color:var(--ink);
  background:var(--card);
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px 38px 10px 16px;
  cursor:pointer;
  outline:none;
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236B7A70' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:14px 14px;
  min-width:170px;
  line-height:1.4;
}
select:hover{border-color:var(--g500)}
select:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}
select option{background:var(--card);color:var(--ink);padding:8px}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--y300);display:grid;place-items:center;font-weight:800;color:var(--g900);font-size:13px}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px 22px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
.kpi .l{color:var(--muted);font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:var(--g100)}
.ic svg{width:14px;height:14px;stroke:var(--g700);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ic.y{background:var(--y100)}.ic.y svg{stroke:var(--y700)}
.kpi .v{font-size:24px;font-weight:800;margin:14px 0 6px}
.kpi .s{font-size:12px;color:var(--muted)}
.kpi.hero{background:var(--g700);border-color:var(--g700);color:#fff}
.kpi.hero .l,.kpi.hero .s{color:rgba(255,255,255,.78)}
.kpi.hero .ic{background:rgba(255,255,255,.16)}.kpi.hero .ic svg{stroke:#fff}
.chip{display:inline-block;background:var(--y500);color:#3a2a00;font-weight:700;font-size:11.5px;padding:3px 9px;border-radius:99px}
.row{display:grid;gap:16px;margin-bottom:16px}
.r1{grid-template-columns:1.7fr 1fr}
.r2{grid-template-columns:1fr 1fr 1fr}
.h{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.h h2{font-size:15px;font-weight:700}
.lg{display:flex;gap:14px;font-size:12px;color:var(--muted)}
.lg i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
#chart{width:100%;height:190px;display:flex;align-items:flex-end;gap:5px}
.col{flex:1;display:flex;align-items:flex-end;gap:2px;height:100%}
.col div{flex:1;border-radius:4px 4px 0 0;min-height:2px;transition:height .4s}
.donutwrap{display:flex;align-items:center;gap:18px}
.donutwrap svg{width:132px;height:132px;flex:none;transform:rotate(-90deg)}
.donut-c{position:relative}
.dl{display:flex;flex-direction:column;gap:12px;flex:1;min-width:0}
.dl div{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;align-items:center}
.dl i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:8px}
.dl b{font-weight:700}
.br{margin-bottom:15px}.br:last-child{margin-bottom:0}
.bt{display:flex;justify-content:space-between;font-size:13px;margin-bottom:7px;font-weight:600}
.bt span:last-child{color:var(--muted);font-weight:500}
.tr{height:8px;background:var(--bg);border-radius:99px;overflow:hidden}
.tr div{height:100%;border-radius:99px;transition:width .5s}
.ba{font-size:11.5px;color:var(--muted);margin-top:5px}
.tx{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.tx:last-child{border:0;padding-bottom:0}
.tx .ic{width:34px;height:34px;border-radius:10px;flex:none}
.tx .ic svg{width:16px;height:16px}
.tx .t{flex:1;min-width:0}
.tx .t b{display:block;font-size:13px;font-weight:600}
.tx .t small{color:var(--muted);font-size:11.5px}
.tx .a{font-weight:700;font-size:13px;white-space:nowrap}
.in{color:var(--g700)}.out{color:var(--y700)}

/* Forms */
.form-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:24px;max-width:560px}
.form-group{margin-bottom:16px}
.form-group label{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:var(--ink)}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:inherit;background:var(--card);color:var(--ink)}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}
.form-actions{display:flex;gap:8px;margin-top:8px}
.form-footer{text-align:center;margin-top:16px;font-size:13px;color:var(--muted)}

/* Buttons */
.btn{display:inline-block;padding:10px 18px;border:none;border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:700;text-decoration:none;text-align:center;transition:.15s;font-family:inherit}
.btn:hover{text-decoration:none}
.btn-primary{background:var(--g700);color:#fff}
.btn-primary:hover{background:var(--g900)}
.btn-outline{background:transparent;border:1px solid var(--line);color:var(--ink)}
.btn-outline:hover{background:var(--g50);border-color:var(--g500)}
.btn-danger{background:var(--r500);color:#fff}
.btn-danger:hover{background:var(--r700)}
.btn-block{width:100%}
.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}

/* Alert */
.alert{padding:12px 16px;border-radius:10px;margin-bottom:16px;font-size:13.5px;font-weight:500}
.alert-error{background:var(--r100);color:var(--r700);border:1px solid #fcc}
.alert-success{background:var(--g100);color:var(--g900);border:1px solid #cbe9d6}

/* Tabs */
.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tab{padding:10px 16px;text-decoration:none;color:var(--muted);font-size:13.5px;font-weight:600;border-bottom:2px solid transparent;transition:.15s}
.tab:hover{color:var(--g700);text-decoration:none}
.tab.active{color:var(--g700);border-bottom-color:var(--g700)}

/* Table */
.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow-x:auto}
.table{width:100%;border-collapse:collapse;font-size:13.5px}
.table thead{background:var(--g50)}
.table th,.table td{padding:13px 18px;text-align:left;border-bottom:1px solid var(--line)}
.table th{font-size:11.5px;text-transform:uppercase;color:var(--muted);letter-spacing:.5px;font-weight:700}
.table tbody tr:hover{background:var(--g50)}
.table .actions{white-space:nowrap}
.table .actions .btn{margin-right:4px}

.badge{display:inline-block;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}
.badge-revenue{background:var(--g100);color:var(--g900)}
.badge-expense{background:var(--y100);color:var(--y700)}
.badge-adjustment{background:var(--p100);color:var(--p700)}

.text-center{text-align:center}
.text-muted{color:var(--muted);font-size:12px}
.page-actions{margin-bottom:16px}

/* Auth pages */
.auth-body{
  min-height:100vh;
  background:linear-gradient(135deg,#16803C,#0E4D34);
  padding:20px;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
}
.auth-wrap{
  width:100%;
  max-width:420px;
  background:#fff;
  padding:40px;
  border-radius:20px;
  box-shadow:0 20px 60px rgba(0,0,0,.2);
  margin:auto;
}
.auth-footer{
  position:absolute !important;
  bottom:20px;
  left:0;
  right:0;
  text-align:center;
  color:rgba(255,255,255,.6);
  font-size:12px;
  margin:0 !important;
  padding:0 !important;
  background:transparent !important;
}
.auth-footer strong{color:rgba(255,255,255,.9)}
.auth-footer strong{color:rgba(255,255,255,.9)}
.auth-wrap{width:100%;max-width:420px;background:#fff;padding:40px;border-radius:20px;box-shadow:0 20px 60px rgba(0,0,0,.2)}
.auth-brand{text-align:center;margin-bottom:24px}
.auth-brand h1{color:var(--g700);font-size:26px;font-weight:800;letter-spacing:-.02em}
.auth-brand p{color:var(--muted);font-size:13px;margin-top:4px}

@media(max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.r1,.r2{grid-template-columns:1fr}}
@media(max-width:820px){
  .app{grid-template-columns:1fr}
  aside{position:static;height:auto;flex-direction:row;align-items:center;padding:12px;overflow-x:auto;gap:8px;border-right:0;border-bottom:1px solid var(--line)}
  .brand{padding:0 8px 0 0;border:0;margin:0}.brand small,.side-foot{display:none}
  nav{flex-direction:row;gap:6px}
  .ni{white-space:nowrap;padding:8px 12px;font-size:12.5px}
  .ni span{display:none}
  main{padding:20px 16px 40px;display:flex;flex-direction:column;min-height:100vh}
}
@media(max-width:520px){.kpis{grid-template-columns:1fr}}

/* ===== Modal, Toast, Category Cards, Table ===== */
.btn{font:700 13px inherit;font-family:inherit;background:var(--g700);color:#fff;border:0;border-radius:10px;padding:10px 16px;cursor:pointer;transition:.15s}
.btn:hover{background:var(--g900)}
.btn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{background:var(--g50)}
.btn:disabled{opacity:.6;cursor:not-allowed}

.cats{display:flex;gap:12px;overflow-x:auto;padding-bottom:6px;margin-bottom:16px}
.cc{flex:0 0 190px;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;cursor:pointer;font-family:inherit;color:var(--ink);transition:.15s}
.cc:hover{border-color:var(--g500)}
.cc.on{border-color:var(--g700);background:var(--g50);box-shadow:0 0 0 1px var(--g700) inset}
.cc .cn{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--muted)}
.cc .cn i{width:9px;height:9px;border-radius:3px}
.cc .cv{font-size:18px;font-weight:800;margin:10px 0 4px}
.cc .cm{font-size:11.5px;color:var(--muted);line-height:1.5}
.cc.add{border-style:dashed;display:grid;place-items:center;color:var(--g700);font-weight:700;font-size:13px;background:none}

.tw{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;min-width:680px}
.tbl th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:0 10px 10px}
.tbl td{padding:12px 10px;border-top:1px solid var(--line);font-size:13px;vertical-align:middle}
.tbl .r{text-align:right}
.tbl small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.pill{display:inline-flex;align-items:center;gap:6px;background:var(--bg);padding:4px 10px;border-radius:99px;font-size:12px;font-weight:600}
.pill i{width:7px;height:7px;border-radius:50%}
.amt{font-weight:700;color:var(--g700)}
.del{border:0;background:none;color:var(--muted);cursor:pointer;padding:6px;border-radius:8px}
.del:hover{background:var(--y100);color:var(--y700)}
.del svg,.clip svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.clip{color:var(--g700)}.dash-c{color:var(--line)}
.more{display:block;margin:14px auto 0;background:none;border:1px solid var(--line);border-radius:10px;padding:9px 16px;font:600 13px inherit;font-family:inherit;color:var(--ink);cursor:pointer}
.more:hover{background:var(--g50)}
.muted{color:var(--muted);font-size:12.5px}
.hint{color:var(--muted);font-size:12px;margin:-8px 0 14px}

.ov{position:fixed;inset:0;background:rgba(14,32,24,.45);display:none;align-items:center;justify-content:center;padding:16px;z-index:50}
.ov.on{display:flex}
.modal{background:var(--card);border-radius:20px;padding:24px;width:100%;max-width:440px;max-height:92vh;overflow:auto}
.modal h3{font-size:17px;font-weight:800;margin-bottom:4px}
.modal .sd{color:var(--muted);font-size:12.5px;margin-bottom:18px}
.f{margin-bottom:14px}
.f label{display:block;font-size:12px;font-weight:600;margin-bottom:6px}
.f input,.f select{width:100%;font:500 13.5px inherit;font-family:inherit;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card);color:var(--ink);outline:none}
.f input:focus,.f select:focus{border-color:var(--g500)}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.err{color:#B45309;font-size:12.5px;min-height:18px;margin-bottom:8px}
.acts{display:flex;justify-content:flex-end;gap:10px}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--g900);color:#fff;padding:11px 18px;border-radius:12px;font-size:13px;font-weight:600;opacity:0;pointer-events:none;transition:.25s;z-index:60}
.toast.on{opacity:1;transform:translateX(-50%)}

/* ===== Card wrap + edit/delete overlay ===== */
.cc-wrap{position:relative;flex:0 0 190px}
.cc-wrap .cc{width:100%}
.cc-menu{position:absolute;top:8px;right:8px;display:flex;gap:4px;opacity:0;transition:.15s;z-index:2}
.cc-wrap:hover .cc-menu{opacity:1}
.cc-act{width:26px;height:26px;border-radius:8px;border:1px solid var(--line);background:var(--card);cursor:pointer;font-size:12px;line-height:1;display:grid;place-items:center;padding:0;color:var(--ink);transition:.15s}
.cc-act:hover{background:var(--g50);border-color:var(--g500)}
.cc-act.danger:hover{background:var(--y100);border-color:var(--y700)}
@media(max-width:820px){.cc-menu{opacity:1}}

/* ===== Input nominal (money-input) ===== */
.money-input{font-variant-numeric:tabular-nums;letter-spacing:-0.01em;text-align:left;font-weight:600}
.money-input::placeholder{font-weight:400;color:#B0BAB3}

/* ===== Custom range filter ===== */
.custom-range{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:16px}
.custom-range .f{margin-bottom:0;min-width:170px}
.custom-range .btn{height:42px}

/* ===== Advanced toggle & 3-col form ===== */
.adv-toggle{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;margin:14px 0 12px;user-select:none}
.adv-toggle input{width:16px;height:16px;margin:0;accent-color:var(--g700);cursor:pointer}
.f3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.f textarea{width:100%;font:500 13.5px inherit;font-family:inherit;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card);color:var(--ink);outline:none;resize:vertical}
.f textarea:focus{border-color:var(--g500)}

/* ===== Kategori Accordion ===== */
.cat-accordion{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.cat-item{border-bottom:1px solid var(--line)}
.cat-item:last-child{border-bottom:0}
.cat-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;gap:12px;transition:.15s}
.cat-head.clickable{cursor:pointer}
.cat-head.clickable:hover{background:var(--g50)}
.cat-item.open>.cat-head{background:var(--g50)}
.cat-head-left{display:flex;align-items:center;gap:12px;min-width:0;flex:1}
.cat-toggle{width:22px;height:22px;border:0;background:none;padding:0;cursor:pointer;display:grid;place-items:center;color:var(--muted);transition:transform .18s ease;flex:none}
.cat-toggle svg{transition:transform .18s ease;transform-origin:center}
.cat-toggle.open svg{transform:rotate(90deg)}
.cat-toggle-placeholder{width:22px;flex:none}
.cat-no{font-size:12px;color:var(--muted);font-weight:700;min-width:20px;text-align:right}
.cat-name{font-weight:700;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-count{font-size:11px;color:var(--muted);background:var(--bg);padding:3px 8px;border-radius:99px;font-weight:600;flex:none}
.cat-actions{display:flex;gap:6px;flex:none}
.cat-subs{background:#FAFCFA;border-top:1px solid var(--line)}
.cat-sub{display:flex;justify-content:space-between;align-items:center;padding:11px 18px 11px 58px;border-bottom:1px solid var(--line);transition:.15s}
.cat-sub:last-child{border-bottom:0}
.cat-sub:hover{background:var(--g50)}
.cat-arrow{color:var(--muted);font-weight:700;font-size:13px;width:22px;text-align:center;flex:none}
.cat-sub-name{font-size:13.5px;color:var(--ink);font-weight:500}
@media(max-width:640px){
    .cat-head{padding:12px 14px}
    .cat-sub{padding-left:36px}
    .cat-name{font-size:13px}
}

/* ===== Bagi Hasil ===== */
.bh-top{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}
@media(max-width:1100px){.bh-top{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.bh-top{grid-template-columns:1fr}}
.cfgrow{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-bottom:6px}
.cfgf{display:flex;flex-direction:column;gap:6px}
.cfgf label{font-size:12px;font-weight:600;color:var(--muted)}
.pctin{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden;width:110px}
.pctin input{border:0;width:70px;padding:9px 0 9px 12px;font:700 14px inherit;font-family:inherit;outline:none;color:var(--ink);background:var(--card)}
.pctin span{color:var(--muted);padding-right:10px;font-weight:600;font-size:13px}
.cfgbar{height:10px;border-radius:99px;background:var(--bg);overflow:hidden;display:flex;margin:14px 0 6px;max-width:420px}
.cfgbar div{height:100%;transition:width .3s}
.cfgmsg{font-size:12px;color:var(--muted);max-width:420px}
.cfgmsg.bad{color:#B45309;font-weight:600}
.dl2{display:flex;flex-direction:column;gap:10px;margin-top:16px;max-width:420px}
.dl2 div{display:flex;justify-content:space-between;font-size:13px}
.dl2 i{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:8px}
.dl2 .tot{border-top:1px solid var(--line);padding-top:10px;font-weight:800}
.cc.y:hover{border-color:var(--y500)}
.cc.y.on{border-color:var(--y700);background:var(--y100);box-shadow:0 0 0 1px var(--y700) inset}
.cc.add.y{color:var(--y700);border-color:var(--line)}
.cc.add.y:hover{border-color:var(--y700)}
.amt.o{color:var(--y700)}

/* ===== Autocomplete item ===== */
.ac-suggest{
  position:absolute;top:100%;left:0;right:0;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  margin-top:4px;max-height:280px;overflow-y:auto;z-index:70;
  box-shadow:0 12px 32px rgba(14,32,24,.12);
}
.ac-item{
  padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  transition:.1s;
}
.ac-item:last-child{border-bottom:0}
.ac-item:hover,.ac-item.active{background:var(--g50)}
.ac-name{font-weight:600;font-size:13.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-meta{display:flex;gap:8px;align-items:center;flex:none;font-size:11.5px;color:var(--muted)}
.ac-tag{background:var(--bg);padding:2px 8px;border-radius:99px;font-weight:600}

/* ===== Report ===== */
.rep-doc{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:32px 36px;max-width:980px;margin:0 auto}
.rep-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:2px solid var(--ink);padding-bottom:18px;margin-bottom:24px;flex-wrap:wrap}
.rep-top h2{font-size:19px;font-weight:800}
.rep-top p{color:var(--muted);font-size:12.5px;margin-top:3px}
.rep-meta{text-align:right;font-size:12.5px;color:var(--muted)}
.rep-meta b{display:block;color:var(--ink);font-size:13px}
.sec{margin-bottom:26px}
.sec:last-child{margin-bottom:0}
.sec-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sec-n{width:24px;height:24px;border-radius:7px;background:var(--g700);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800;flex:none}
.sec-h h3{font-size:14.5px;font-weight:700}
.rtbl{width:100%;border-collapse:collapse;font-size:13px}
.rtbl th{text-align:left;font-size:11px;color:var(--muted);font-weight:600;padding:0 8px 8px;border-bottom:1px solid var(--line)}
.rtbl td{padding:9px 8px;border-bottom:1px solid var(--line)}
.rtbl .r{text-align:right}
.rtbl tfoot td{border-top:1.5px solid var(--ink);border-bottom:0;font-weight:800;padding-top:11px}
.sum2{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.sum2 div{background:var(--g50);border-radius:12px;padding:12px 14px}
.sum2 span{display:block;font-size:11.5px;color:var(--muted);margin-bottom:4px}
.sum2 b{font-size:15px}
.sum2 .highlight-green{background:var(--g700);color:#fff;box-shadow:0 4px 14px rgba(22,128,60,.25)}
.sum2 .highlight-green span{color:rgba(255,255,255,.8)}
.sum2 .highlight-green b{color:#fff}
.pemb2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pcol{border-radius:14px;padding:18px;border:1px solid var(--line)}
.pcol.owner{background:var(--g50);border-color:var(--g500)}
.pcol.operator{background:var(--y100);border-color:var(--y500)}
.pcol-h{font-size:11.5px;font-weight:800;letter-spacing:.6px;margin-bottom:12px;text-transform:uppercase}
.pcol.owner .pcol-h{color:var(--g700)}
.pcol.operator .pcol-h{color:var(--y700)}
.prow{display:flex;justify-content:space-between;font-size:13px;padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.08)}
.prow:last-child{border-bottom:0}
.prow.sub{color:var(--muted);font-size:12.5px}
.prow.total{border-top:1.5px solid var(--ink);border-bottom:0;margin-top:6px;padding-top:12px;font-size:15px;font-weight:800}
.pcol.owner .prow.total{color:var(--g900)}
.pcol.operator .prow.total{color:var(--y700)}

/* Public link row */
.link-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:var(--g50)}
.link-label{font-weight:700;font-size:13.5px;margin-bottom:6px}
.link-url input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-family:ui-monospace,Menlo,monospace;font-size:12px;background:var(--card);color:var(--ink)}
.link-stat{font-size:11.5px;color:var(--muted);margin-top:6px}
.link-actions{display:flex;gap:6px;flex:none}
.badge-investor{background:var(--y100);color:var(--y700)}
.badge-team{background:var(--g100);color:var(--g700)}

@media(max-width:640px){.sum2{grid-template-columns:1fr 1fr}.pemb2{grid-template-columns:1fr}.rep-doc{padding:20px 16px}}

@media print{
  aside,.top .tools,.rep-actions,.link-row .link-actions{display:none!important}
  .app{display:block}main{padding:0}
  .rep-doc{border:0;box-shadow:none;padding:0;max-width:none}
  body{background:#fff}
}

/* ===== Detail Block ===== */
.detail-block{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:16px;background:var(--card)}
.detail-block-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--g50);border-bottom:1px solid var(--line);gap:12px;flex-wrap:wrap}
.detail-block-title{font-weight:800;font-size:15px;color:var(--ink)}
.detail-block-total{font-weight:800;font-size:15px;color:var(--y700)}
.badge-expense{background:var(--y100);color:var(--y700)}
.badge-adjustment{background:var(--p100);color:var(--p700)}

.detail-dates{background:#fff}
.dd-row{border-bottom:1px solid var(--line)}
.dd-row:last-child{border-bottom:0}
.dd-head{display:flex;justify-content:space-between;align-items:center;padding:11px 18px;gap:12px}
.dd-head:hover{background:var(--g50)}
.dd-left{display:flex;align-items:center;gap:12px}
.dd-daynum{width:34px;height:34px;border-radius:9px;background:var(--y100);color:var(--y700);display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}
.dd-dayname{font-weight:700;font-size:13px;display:block}
.dd-datetext{font-size:11.5px;color:var(--muted);display:block;margin-top:1px}
.dd-total{font-weight:700;font-size:13.5px;color:var(--y700)}
.dd-items{padding:0 18px 12px;background:#FAFCFA}
.mini-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.mini-tbl th{text-align:left;font-size:11px;color:var(--muted);font-weight:600;padding:8px 8px 6px}
.mini-tbl td{padding:8px;border-top:1px solid var(--line);vertical-align:middle}
.mini-tbl .r{text-align:right}
.mini-tbl small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.mini-tbl .amt{font-weight:700;color:var(--y700)}

.detail-grand{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--y100);border-radius:12px;font-weight:800;font-size:15px;margin-top:8px}
.detail-grand b{font-size:17px;color:var(--y700)}

/* ===== Refresh indicator ===== */
.refresh-indicator{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-bottom:14px}
.ri-dot{width:8px;height:8px;border-radius:50%;background:var(--g500);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(34,165,89,.5)}50%{opacity:.6;box-shadow:0 0 0 6px rgba(34,165,89,0)}}

.detail-sub-title{font-size:12px;font-weight:700;color:var(--g700);text-transform:uppercase;letter-spacing:.5px;padding:14px 18px 8px;background:var(--g50);border-top:1px solid var(--line)}
.detail-tbl{margin:0;border-collapse:collapse}
.detail-tbl th{background:var(--card);padding:8px 14px 8px;font-size:11px}
.detail-tbl td{padding:8px 14px;font-size:12.5px;border-bottom:1px solid var(--line)}
.detail-tbl tfoot td{border-top:1.5px solid var(--ink);font-weight:800;background:#F8FBF8;padding:10px 14px}
.detail-tbl tfoot td:last-child{color:var(--y700)}

.link-list-inline{display:flex;flex-direction:column;gap:10px}

/* ===== Date block ===== */
.date-block{border-bottom:1px solid var(--line)}
.date-block:last-child{border-bottom:0}
.date-block-head{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;background:var(--g50);border-bottom:1px solid var(--line)}
.dbh-left{display:flex;align-items:center;gap:12px}
.dbh-num{width:30px;height:30px;border-radius:8px;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;font-weight:800;font-size:12.5px;color:var(--g900);flex:none}
.dbh-date{font-weight:700;font-size:13.5px;color:var(--ink)}
.dbh-meta{font-size:11px;color:var(--muted);margin-top:1px}
.dbh-total{font-weight:800;font-size:14px;color:var(--y700)}
.date-block .detail-tbl{background:var(--card)}
.date-block .detail-tbl td{border-bottom:1px solid var(--line)}
.date-block .detail-tbl tr:last-child td{border-bottom:0}

.date-block-grand{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--g100);font-weight:800;font-size:14px}
.date-block-grand span{color:var(--g900)}
.date-block-grand b{font-size:15.5px;color:var(--g900)}

/* ===== Link group (sub-page links) ===== */
.link-group{border:1px solid var(--line);border-radius:14px;margin-bottom:20px;overflow:hidden;background:var(--card)}
.link-group-head{padding:14px 18px;background:var(--g50);border-bottom:1px solid var(--line)}
.link-group-period{font-weight:800;font-size:15px;color:var(--g900)}
.link-group-count{font-size:12px;color:var(--muted);margin-top:2px}
.link-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}
.link-row:last-child{border-bottom:0}
.link-info{flex:1;min-width:0}
.link-label{font-weight:700;font-size:13.5px;margin-bottom:6px;display:flex;align-items:center;gap:8px}
.link-url input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-family:ui-monospace,Menlo,monospace;font-size:12px;background:var(--card);color:var(--ink)}
.link-stat{font-size:11.5px;color:var(--muted);margin-top:6px}
.link-actions{display:flex;gap:6px;flex:none}
.badge-investor{background:var(--y100);color:var(--y700)}
.badge-team{background:var(--g100);color:var(--g700)}

@media(max-width:640px){
  .link-row{flex-direction:column;align-items:stretch}
  .link-actions{justify-content:flex-end}
}

/* ============================================
   MOBILE RESPONSIVE
   ============================================ */
@media (max-width: 768px) {

  main { padding: 16px 10px 40px; overflow-x: hidden; display:flex; flex-direction:column; min-height:100vh; }

  .top { flex-direction: column; align-items: stretch; gap: 12px; margin-bottom: 16px; }
  .top h1 { font-size: 18px; }
  .top p { font-size: 12px; }
  .top .tools { flex-wrap: wrap; width: 100%; gap: 8px; }
  .top .tools select,
  .top .tools .btn,
  .top .tools a.btn { flex: 1 1 auto; min-width: 0; font-size: 12px; padding: 9px 10px; }
  .top .tools select { flex: 1 1 100%; width: 100%; }

  .rep-doc { padding: 14px 10px; border-radius: 14px; }

  .rep-top { flex-direction: column; align-items: flex-start; gap: 10px; padding-bottom: 12px; margin-bottom: 16px; }
  .rep-top h2 { font-size: 15px; }
  .rep-top p { font-size: 11.5px; }
  .rep-meta { text-align: left; width: 100%; font-size: 11.5px; }
  .rep-meta b { font-size: 12px; }

  .sec { margin-bottom: 20px; }
  .sec-h { gap: 8px; margin-bottom: 10px; }
  .sec-h h3 { font-size: 13px; }
  .sec-n { width: 22px; height: 22px; font-size: 11px; }

  /* ==== TABEL: auto layout + font kecil ==== */
  .rtbl {
    table-layout: auto;
    width: 100%;
    border-collapse: collapse;
    font-size: 10px;
  }
  .rtbl th {
    font-size: 9.5px;
    padding: 6px 3px;
    line-height: 1.2;
    word-break: normal;
    overflow-wrap: normal;
    white-space: normal;
    letter-spacing: 0;
  }
  .rtbl td {
    padding: 8px 3px;
    font-size: 10px;
    word-break: normal;
    overflow-wrap: normal;
    white-space: normal;
    vertical-align: middle;
    line-height: 1.3;
  }
  .rtbl .num { white-space: nowrap; font-size: 10px; }

  /* Sembunyikan kolom "No" */
  .rtbl thead th:first-child,
  .rtbl tbody td:first-child,
  .rtbl tfoot td:first-child { display: none; }

  /* Tabel detail item — sembunyikan "Sub" dan "Harga" */
  .detail-tbl thead th:nth-child(3),
  .detail-tbl tbody td:nth-child(3),
  .detail-tbl thead th:nth-child(5),
  .detail-tbl tbody td:nth-child(5) { display: none; }

  /* Footer tabel */
  .rtbl tfoot td {
    padding: 9px 3px;
    font-size: 10.5px;
    font-weight: 800;
  }

  /* Sum2 */
  .sum2 { grid-template-columns: 1fr 1fr; gap: 8px; }
  .sum2 div { padding: 10px; }
  .sum2 span { font-size: 10px; }
  .sum2 b { font-size: 12.5px; }

  /* Pembagian */
  .pemb2 { grid-template-columns: 1fr; gap: 10px; }
  .pcol { padding: 12px; }
  .pcol-h { font-size: 10px; margin-bottom: 8px; }
  .prow { font-size: 12px; padding: 6px 0; }
  .prow.total { font-size: 13px; padding-top: 9px; }

  /* Detail block */
  .detail-block { margin-bottom: 12px; border-radius: 10px; }
  .detail-block-head { padding: 10px 12px; gap: 6px; flex-wrap: wrap; }
  .detail-block-title { font-size: 13px; }
  .detail-block-total { font-size: 13px; }

  /* Date block */
  .date-block-head { padding: 8px 12px; gap: 6px; }
  .dbh-num { width: 24px; height: 24px; font-size: 10.5px; }
  .dbh-date { font-size: 12px; }
  .dbh-meta { font-size: 10px; }
  .dbh-total { font-size: 12px; }

  .date-block-grand { padding: 10px 12px; font-size: 12px; }
  .date-block-grand b { font-size: 13px; }

  .refresh-indicator { font-size: 11px; margin-bottom: 10px; }

  .link-row { flex-direction: column; align-items: stretch; padding: 12px; }
  .link-actions { justify-content: flex-end; margin-top: 8px; }
  .link-url input { font-size: 10.5px; }
  .link-group-head { padding: 12px; }
  .link-group-period { font-size: 13px; }
}

@media (max-width: 400px) {
  .rtbl { font-size: 9.5px; }
  .rtbl th { font-size: 9px; padding: 5px 2px; }
  .rtbl td { font-size: 9.5px; padding: 6px 2px; }
  .rtbl .num { font-size: 9.5px; }
}

/* ===== Footer watermark ===== */
.app-footer{
  text-align:center;
  padding:24px 16px 12px;
  font-size:12px;
  color:var(--muted);
  line-height:1.6;
  margin-top:auto;
}
.app-footer strong{color:var(--ink);font-weight:700}

/* ===== Chips Subkategori Filter ===== */
.subs-chips{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
  margin-bottom:16px;
  padding:14px 16px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  animation:chipFade .2s ease;
}
@keyframes chipFade{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.chips-title{
  font-size:11.5px;
  font-weight:700;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.5px;
  margin-right:6px;
}
.chip-filter{
  display:inline-flex;
  align-items:center;
  gap:6px;
  border:1px solid var(--line);
  background:var(--card);
  border-radius:99px;
  padding:7px 13px;
  font:600 12.5px inherit;
  font-family:inherit;
  color:var(--ink);
  cursor:pointer;
  transition:.15s;
}
.chip-filter:hover{border-color:var(--y500);background:var(--y100);color:var(--y700)}
.chip-filter.on{background:var(--y500);border-color:var(--y500);color:#3a2a00}
.chip-filter .chip-count{
  background:rgba(0,0,0,.06);
  padding:1px 7px;
  border-radius:99px;
  font-size:10.5px;
  font-weight:700;
}
.chip-filter.on .chip-count{background:rgba(0,0,0,.15)}

@media(max-width:768px){
  .subs-chips{padding:10px 12px;gap:6px}
  .chip-filter{padding:6px 10px;font-size:11.5px}
  .chip-filter .chip-count{font-size:10px;padding:1px 6px}
  .chips-title{font-size:10.5px;flex-basis:100%;margin-bottom:2px}
}
/* ===== Search bar tabel ===== */
.table-tools{
  display:flex;
  align-items:center;
  gap:12px;
  flex:1;
  justify-content:flex-end;
}
.search-box{
  display:flex;
  align-items:center;
  gap:8px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:10px;
  padding:8px 12px;
  max-width:340px;
  flex:1;
  transition:.15s;
}
.search-box:focus-within{
  border-color:var(--g500);
  box-shadow:0 0 0 3px rgba(34,165,89,.12);
}
.search-box svg{
  color:var(--muted);
  flex:none;
  stroke:currentColor;
}
.search-box input{
  border:0;
  outline:none;
  background:transparent;
  font:500 13px inherit;
  font-family:inherit;
  color:var(--ink);
  width:100%;
  padding:0;
  min-width:0;
}
.search-box input::placeholder{color:#B0BAB3}

@media(max-width:768px){
  .h{flex-direction:column;align-items:stretch;gap:10px}
  .table-tools{width:100%}
  .search-box{max-width:none}
}
/* ============================================
   INPUT HARIAN — Daily Entry (refined)
   ============================================ */
.daily-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  flex-wrap:wrap;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  padding:16px 20px;
  margin-bottom:18px;
}
.daily-date{display:flex;flex-direction:column;gap:6px}
.daily-date label{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.daily-date input{
  font:700 15px inherit;font-family:inherit;
  border:1px solid var(--line);border-radius:10px;
  padding:10px 14px;background:var(--card);color:var(--ink);outline:none;
}
.daily-date input:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}

.daily-summary{display:flex;gap:24px;flex-wrap:wrap;align-items:center}
.ds-item{display:flex;flex-direction:column;gap:3px;min-width:100px}
.ds-item span{font-size:10.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.ds-item b{font-size:16px;font-weight:800;letter-spacing:-.01em}
.ds-item.rev b{color:var(--g700)}
.ds-item.exp b{color:var(--y700)}
.ds-item.net b{font-size:19px;color:var(--ink)}
.ds-item.net{position:relative;padding-left:20px}
.ds-item.net::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:1px;background:var(--line)}

.daily-section{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  margin-bottom:16px;
  overflow:hidden;
}
.ds-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:12px 18px;
  background:#FAFCFA;
  border-bottom:1px solid var(--line);
  gap:12px;
  flex-wrap:wrap;
}
.ds-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ds-badge{
  display:inline-block;font-size:11px;font-weight:800;letter-spacing:.5px;
  padding:4px 10px;border-radius:99px;text-transform:uppercase;
}
.ds-badge.rev{background:var(--g100);color:var(--g900)}
.ds-badge.exp{background:var(--y100);color:var(--y700)}
.ds-hint{font-size:12px;color:var(--muted)}

.daily-rows{padding:0}
.daily-rows:empty::before{
  content:'Belum ada baris. Klik "+ Tambah" untuk mulai.';
  display:block;
  padding:24px 18px;
  color:var(--muted);
  font-size:13px;
  text-align:center;
}

.drow{
  display:flex;
  align-items:flex-end;
  gap:10px;
  padding:12px 16px;
  border-bottom:1px solid var(--line);
}
.drow:last-child{border-bottom:0}
.drow:hover{background:#FBFDFB}

.drow-num{
  width:26px;height:36px;
  display:grid;place-items:center;
  font-size:12px;font-weight:800;
  color:var(--muted);
  flex:none;
}

.df{display:flex;flex-direction:column;gap:5px;min-width:0}
.df label{
  font-size:10.5px;font-weight:700;color:var(--muted);
  text-transform:uppercase;letter-spacing:.3px;
  white-space:nowrap;
}
.df label .opt{font-weight:500;text-transform:none;letter-spacing:0;color:#B0BAB3}
.df input,.df select{
  font:600 13px inherit;font-family:inherit;
  border:1px solid var(--line);border-radius:9px;
  padding:9px 12px;background:var(--card);color:var(--ink);outline:none;
  width:100%;
  transition:.15s;
}
.df input:hover,.df select:hover{border-color:#D4DDD6}
.df input:focus,.df select:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}

/* Revenue row */
.drow[data-type="revenue"] .df-cat  {flex:0 0 160px}
.drow[data-type="revenue"] .df-amt  {flex:0 0 170px}
.drow[data-type="revenue"] .df-desc {flex:1;min-width:180px}

/* Expense row */
.drow[data-type="expense"] .df-cat  {flex:0 0 130px}
.drow[data-type="expense"] .df-sub  {flex:0 0 130px}
.drow[data-type="expense"] .df-desc {flex:1;min-width:180px;position:relative}
.drow[data-type="expense"] .df-qty  {flex:0 0 70px}
.drow[data-type="expense"] .df-unit {flex:0 0 70px}
.drow[data-type="expense"] .df-price{flex:0 0 120px}
.drow[data-type="expense"] .df-amt  {flex:0 0 130px}

.drow-del{
  width:36px;height:36px;border-radius:9px;border:1px solid var(--line);
  background:var(--card);color:var(--muted);
  display:grid;place-items:center;cursor:pointer;flex:none;
  transition:.15s;
}
.drow-del:hover{background:var(--r100);color:var(--r700);border-color:var(--r500)}

.ds-total{
  display:flex;justify-content:space-between;align-items:center;
  padding:14px 18px;
  font-weight:800;font-size:14px;
  border-top:2px solid;
}
.ds-total.rev{background:var(--g100);border-top-color:var(--g700);color:var(--g900)}
.ds-total.rev b{color:var(--g900);font-size:17px}
.ds-total.exp{background:var(--y100);border-top-color:var(--y500);color:var(--y700)}
.ds-total.exp b{color:var(--y700);font-size:17px}

.daily-actions{
  position:sticky;
  bottom:0;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px 18px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  margin-top:8px;
  box-shadow:0 -4px 12px rgba(14,32,24,.05);
}
.da-info{font-size:12.5px;color:var(--muted);font-weight:600}
.da-buttons{display:flex;gap:8px}

@media(max-width:820px){
  .daily-header{padding:12px 14px}
  .daily-summary{gap:14px}
  .ds-item{min-width:auto}
  .ds-item b{font-size:14px}
  .ds-item.net b{font-size:16px}
  .ds-item.net{padding-left:0}
  .ds-item.net::before{display:none}

  .drow{flex-wrap:wrap;padding:10px 12px;gap:8px;align-items:flex-end}
  .drow-num{width:22px;height:32px}
  .drow[data-type="revenue"] .df-cat,
  .drow[data-type="revenue"] .df-amt{flex:1 1 calc(50% - 4px)}
  .drow[data-type="revenue"] .df-desc{flex:1 1 100%}

  .drow[data-type="expense"] .df-cat,
  .drow[data-type="expense"] .df-sub{flex:1 1 calc(50% - 4px)}
  .drow[data-type="expense"] .df-desc{flex:1 1 100%;min-width:0}
  .drow[data-type="expense"] .df-qty,
  .drow[data-type="expense"] .df-unit{flex:1 1 calc(50% - 4px)}
  .drow[data-type="expense"] .df-price,
  .drow[data-type="expense"] .df-amt{flex:1 1 calc(50% - 4px)}

  .drow-del{width:32px;height:32px}

  .daily-actions{padding:10px 14px}
  .da-buttons{width:100%}
  .da-buttons .btn{flex:1;justify-content:center}
  .da-info{font-size:11.5px;flex-basis:100%}
}
/* ============================================
   SIDEBAR CTA — Input Harian (prominent)
   ============================================ */
.cta-input{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  background:var(--g700);
  color:#fff;
  border-radius:12px;
  padding:12px 14px;
  font-weight:800;
  font-size:13.5px;
  text-decoration:none;
  margin-bottom:16px;
  box-shadow:0 6px 18px rgba(22,128,60,.28);
  transition:.15s;
  white-space:nowrap;
  overflow:hidden;
}
.cta-input:hover{background:var(--g900);text-decoration:none;transform:translateY(-1px);box-shadow:0 8px 22px rgba(22,128,60,.36)}
.cta-input.active{background:var(--g900);box-shadow:0 0 0 3px rgba(34,165,89,.25),0 6px 18px rgba(22,128,60,.28)}
.cta-input svg{flex:none}

/* ============================================
   SIDEBAR COLLAPSED STATE
   ============================================ */
.sidebar-collapsed .app{grid-template-columns:64px 1fr}
.sidebar-collapsed aside{padding:22px 10px}
.sidebar-collapsed .sidebar-head{flex-direction:column;gap:10px;padding:0 0 14px;margin-bottom:12px}
.sidebar-collapsed .brand-text{display:none}
.sidebar-collapsed .brand{justify-content:center;padding:0}
.sidebar-collapsed .sidebar-toggle svg{transform:rotate(180deg)}
.sidebar-collapsed .cta-input{padding:12px 0;justify-content:center}
.sidebar-collapsed .cta-input span{display:none}
.sidebar-collapsed .ni{justify-content:center;padding:12px 0;position:relative}
.sidebar-collapsed .ni span{display:none}
.sidebar-collapsed .side-foot{display:none}

/* Tooltip saat collapsed */
.sidebar-collapsed .ni:hover::after,
.sidebar-collapsed .cta-input:hover::after{
  content:attr(data-tip);
  position:absolute;
  left:70px;
  top:50%;
  transform:translateY(-50%);
  background:var(--g900);
  color:#fff;
  padding:6px 10px;
  border-radius:8px;
  font-size:12px;
  font-weight:600;
  white-space:nowrap;
  z-index:100;
  pointer-events:none;
  box-shadow:0 6px 18px rgba(0,0,0,.15);
}
.sidebar-collapsed .cta-input:hover::after{content:'Input Harian'}

@media(max-width:820px){
  .sidebar-toggle{display:none}
  .sidebar-collapsed .app{grid-template-columns:1fr}
  .sidebar-collapsed aside{padding:12px}
  .sidebar-collapsed .sidebar-head{flex-direction:row;padding:0 8px 0 0;border:0;margin:0}
  .sidebar-collapsed .brand-text{display:block}
  .sidebar-collapsed .brand{justify-content:flex-start}
  .sidebar-collapsed .cta-input{padding:8px 14px}
  .sidebar-collapsed .cta-input span{display:inline}
  .sidebar-collapsed .ni{padding:8px 12px}
  .sidebar-collapsed .ni span{display:inline}
  .sidebar-collapsed .side-foot{display:none}
  .cta-input{margin-bottom:8px;font-size:12.5px;padding:9px 12px}
  .cta-input:hover{transform:none}
}
/* ============================================
   SIDEBAR REFINED — hilangkan garis tidak perlu
   ============================================ */
.sidebar-head{
  border-bottom:0 !important;
  margin-bottom:8px !important;
  padding-bottom:8px !important;
}
aside{border-right:1px solid var(--line)}
.cta-input{margin-bottom:20px}

/* ============================================
   INPUT HARIAN v2 — Clean Layout
   ============================================ */
.daily-header{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:18px;
  padding:18px 22px;
  margin-bottom:20px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  flex-wrap:wrap;
  box-shadow:0 1px 3px rgba(14,32,24,.03);
}
.daily-date label{
  font-size:11px;
  font-weight:700;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.5px;
  display:block;
  margin-bottom:6px;
}
.daily-date input{
  font:700 15px inherit;font-family:inherit;
  border:1px solid var(--line);
  border-radius:10px;
  padding:10px 14px;
  background:var(--card);
  color:var(--ink);
  outline:none;
}
.daily-date input:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}

.daily-summary{display:flex;gap:28px;flex-wrap:wrap;align-items:center}
.ds-item{display:flex;flex-direction:column;gap:2px}
.ds-item span{font-size:10.5px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.ds-item b{font-size:17px;font-weight:800;letter-spacing:-.01em}
.ds-item.rev b{color:var(--g700)}
.ds-item.exp b{color:var(--y700)}
.ds-item.net b{font-size:20px;color:var(--ink)}
.ds-item.net{padding-left:24px;position:relative}
.ds-item.net::before{content:'';position:absolute;left:0;top:5px;bottom:5px;width:1px;background:var(--line)}

/* Section card */
.daily-section{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:18px;
  margin-bottom:16px;
  overflow:hidden;
  box-shadow:0 1px 3px rgba(14,32,24,.03);
}
.ds-head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:14px 20px;
  background:var(--g50);
  border-bottom:0;
  gap:12px;
  flex-wrap:wrap;
}
.daily-section:nth-of-type(3) .ds-head{background:var(--y100)} /* section pengeluaran */

.ds-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ds-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.5px;
  padding:5px 12px;
  border-radius:99px;
  text-transform:uppercase;
}
.ds-badge.rev{background:var(--g700);color:#fff}
.ds-badge.exp{background:var(--y500);color:#3a2a00}
.ds-hint{font-size:12.5px;color:var(--muted)}

.daily-rows{padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.daily-rows:empty::before{
  content:'Belum ada baris. Klik "+ Tambah" untuk mulai.';
  display:block;
  padding:24px 0;
  color:var(--muted);
  font-size:13px;
  text-align:center;
}

/* ROW — clean tanpa border */
.drow{
  display:flex;
  align-items:flex-end;
  gap:10px;
  padding:12px 14px;
  border-radius:12px;
  background:#FAFCFA;
  border:0;
  transition:.15s;
}
.drow:hover{background:var(--g50)}
.drow:focus-within{background:#F4FAF6;box-shadow:0 0 0 1px var(--g500) inset}

.drow-num{
  width:26px;
  height:38px;
  display:grid;
  place-items:center;
  font-size:12px;
  font-weight:800;
  color:var(--muted);
  flex:none;
}

.df{display:flex;flex-direction:column;gap:5px;min-width:0}
.df label{
  font-size:10.5px;
  font-weight:700;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.3px;
  white-space:nowrap;
}
.df label .opt{font-weight:500;text-transform:none;letter-spacing:0;color:#B0BAB3}
.df input,.df select{
  font:600 13px inherit;
  font-family:inherit;
  border:1px solid var(--line);
  border-radius:9px;
  padding:9px 12px;
  background:#fff;
  color:var(--ink);
  outline:none;
  width:100%;
  transition:.15s;
}
.df input:hover,.df select:hover{border-color:#D4DDD6}
.df input:focus,.df select:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}

/* Revenue widths */
.drow[data-type="revenue"] .df-cat  {flex:0 0 160px}
.drow[data-type="revenue"] .df-amt  {flex:0 0 170px}
.drow[data-type="revenue"] .df-desc {flex:1;min-width:180px}

/* Expense widths */
.drow[data-type="expense"] .df-cat  {flex:0 0 130px}
.drow[data-type="expense"] .df-sub  {flex:0 0 130px}
.drow[data-type="expense"] .df-desc {flex:1;min-width:180px;position:relative}
.drow[data-type="expense"] .df-qty  {flex:0 0 70px}
.drow[data-type="expense"] .df-unit {flex:0 0 70px}
.drow[data-type="expense"] .df-price{flex:0 0 120px}
.drow[data-type="expense"] .df-amt  {flex:0 0 130px}

.drow-del{
  width:38px;
  height:38px;
  border-radius:10px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--muted);
  display:grid;
  place-items:center;
  cursor:pointer;
  flex:none;
  transition:.15s;
}
.drow-del:hover{background:var(--r100);color:var(--r700);border-color:var(--r500)}

/* Total bar */
.ds-total{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:14px 22px;
  font-weight:800;
  font-size:14px;
  border-top:0;
}
.ds-total.rev{background:var(--g100);color:var(--g900)}
.ds-total.rev b{color:var(--g900);font-size:17px}
.ds-total.exp{background:var(--y100);color:var(--y700)}
.ds-total.exp b{color:var(--y700);font-size:17px}

/* Action bar */
.daily-actions{
  position:sticky;
  bottom:12px;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px 18px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  margin-top:16px;
  box-shadow:0 6px 24px rgba(14,32,24,.08);
}
.da-info{font-size:12.5px;color:var(--muted);font-weight:600}
.da-buttons{display:flex;gap:8px}

/* Mobile */
@media(max-width:820px){
  .sidebar-head{border-bottom:0 !important}
  .cta-input{margin-bottom:14px}
  .daily-header{padding:14px 16px;gap:14px}
  .daily-summary{gap:16px;width:100%}
  .ds-item{min-width:auto;flex:1}
  .ds-item.net{padding-left:0}
  .ds-item.net::before{display:none}

  .daily-rows{padding:10px 10px;gap:8px}
  .drow{flex-wrap:wrap;padding:10px;gap:8px;align-items:flex-end}
  .drow-num{width:22px;height:32px}
  .drow[data-type="revenue"] .df-cat,
  .drow[data-type="revenue"] .df-amt{flex:1 1 calc(50% - 4px)}
  .drow[data-type="revenue"] .df-desc{flex:1 1 100%}

  .drow[data-type="expense"] .df-cat,
  .drow[data-type="expense"] .df-sub{flex:1 1 calc(50% - 4px)}
  .drow[data-type="expense"] .df-desc{flex:1 1 100%;min-width:0}
  .drow[data-type="expense"] .df-qty,
  .drow[data-type="expense"] .df-unit{flex:1 1 calc(50% - 4px)}
  .drow[data-type="expense"] .df-price,
  .drow[data-type="expense"] .df-amt{flex:1 1 calc(50% - 4px)}

  .drow-del{width:34px;height:34px}

  .daily-actions{padding:10px 14px}
  .da-buttons{width:100%}
  .da-buttons .btn{flex:1;justify-content:center}
  .da-info{font-size:11.5px;flex-basis:100%}
}
/* Override border .brand yang masih ada */
.sidebar-head .brand{
  border-bottom: 0 !important;
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
  padding-top: 0 !important;
}
.sidebar-head{
  border-bottom: 0 !important;
  padding-bottom: 6px !important;
}
/* ===== Sidebar fix: brand tidak terpotong + spacing CTA ===== */
.sidebar-head{padding-bottom:14px !important;margin-bottom:14px !important}
.sidebar-head .brand-text{min-width:0;overflow:visible}
.sidebar-head .brand b{
  white-space:normal;
  overflow:hidden;
  text-overflow:clip;
  line-height:1.15;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
}
.cta-input{margin-top:4px;margin-bottom:20px !important}
/* ============================================
   SIDEBAR: brand fix — font kecil, 1 baris
   ============================================ */
.sidebar-head .brand b{
  font-size:12.5px !important;
  font-weight:700 !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  display:block !important;
  line-height:1.2 !important;
  letter-spacing:-.01em;
  max-width:140px;
}
.sidebar-head .brand small{
  font-size:10px !important;
  letter-spacing:.4px !important;
  display:block;
  margin-top:1px;
}
.sidebar-head{padding-bottom:10px !important;margin-bottom:10px !important}
.cta-input{margin-bottom:14px !important}

/* ============================================
   INPUT HARIAN v4 — Compact, konsisten halaman lain
   ============================================ */
.daily-v2{padding-bottom:90px}

/* ===== Header halaman ===== */
.daily-v2 h1{font-size:20px;font-weight:800;letter-spacing:-.02em;margin:0 0 3px}
.daily-v2 .sub{color:var(--muted);margin:0 0 16px;font-size:13px}

/* ===== Mode toggle ===== */
.daily-v2 .mode{
  display:inline-flex;
  gap:4px;
  padding:4px;
  margin-bottom:14px;
  background:var(--g50);
  border:1px solid var(--line);
  border-radius:12px;
}
.daily-v2 .mode button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  height:36px;
  padding:0 18px;
  border:0;
  border-radius:9px;
  background:transparent;
  color:var(--muted);
  font:600 13px inherit;
  font-family:inherit;
  cursor:pointer;
  transition:.15s;
}
.daily-v2 .mode button:hover{color:var(--ink)}
.daily-v2 .mode button .dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.5;flex:none}
.daily-v2 .mode button[aria-selected="true"]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.06)}
.daily-v2 .mode button[data-m="in"][aria-selected="true"]{color:var(--g700);box-shadow:inset 0 0 0 1.5px var(--g700),0 1px 3px rgba(0,0,0,.06)}
.daily-v2 .mode button[data-m="out"][aria-selected="true"]{color:var(--y700);box-shadow:inset 0 0 0 1.5px var(--y500),0 1px 3px rgba(0,0,0,.06)}
.daily-v2 .mode button[aria-selected="true"] .dot{opacity:1}

/* ===== Card dasar ===== */
.daily-v2 .card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:0 1px 2px rgba(20,38,26,.03);
}

/* ===== Top card (tanggal + total) ===== */
.daily-v2 .top-card{
  display:flex;
  flex-wrap:wrap;
  gap:16px;
  align-items:center;
  justify-content:space-between;
  padding:14px 18px;
  margin-bottom:14px;
}
.daily-v2 .cap{
  display:block;
  font-size:10.5px;
  font-weight:700;
  letter-spacing:.5px;
  color:var(--muted);
  text-transform:uppercase;
  margin-bottom:5px;
}
.daily-v2 .stats{display:flex;gap:20px;align-items:center}
.daily-v2 .stat b{
  display:block;
  font-size:18px;
  font-weight:800;
  letter-spacing:-.01em;
  font-variant-numeric:tabular-nums;
  color:var(--g700);
  transition:color .2s;
}
.daily-v2 .date{
  width:160px;
  height:38px;
  padding:0 12px;
  font-size:13px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--card);
  color:var(--ink);
  font-family:inherit;
  outline:none;
}
.daily-v2 .date:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}

/* ===== Field ===== */
.daily-v2 .field{
  width:100%;
  height:38px;
  padding:0 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--card);
  color:var(--ink);
  font:600 13px inherit;
  font-family:inherit;
  transition:.15s;
}
.daily-v2 .field::placeholder{color:#a3aea6;font-weight:500}
.daily-v2 .field:hover{border-color:#c9d4cb}
.daily-v2 .field:focus{outline:none;border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}
.daily-v2 .out .field:focus{border-color:var(--y500);box-shadow:0 0 0 3px rgba(245,183,10,.18)}
.daily-v2 select.field{
  appearance:none;
  padding-right:30px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' fill='none' stroke='%236b786f' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M1 1.5l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
  cursor:pointer;
}
.daily-v2 .field.num{text-align:right;font-variant-numeric:tabular-nums}
.daily-v2 .field.ro{background:var(--g50);font-weight:700}

/* ===== Section ===== */
.daily-v2 .sec{margin-bottom:14px;overflow:hidden}
.daily-v2 .sec-head{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 16px;
  flex-wrap:wrap;
  border-bottom:1px solid var(--line);
}
.daily-v2 .badge{
  font-size:10.5px;
  font-weight:800;
  letter-spacing:.5px;
  padding:4px 10px;
  border-radius:99px;
  text-transform:uppercase;
}
.daily-v2 .in .badge{background:var(--g100);color:var(--g900)}
.daily-v2 .out .badge{background:var(--y100);color:var(--y700)}
.daily-v2 .hint{color:var(--muted);font-size:12.5px;flex:1;min-width:140px}

/* ===== Tombol Tambah (di header section) ===== */
.daily-v2 .sec-head .btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:32px;
  padding:0 12px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--card);
  color:var(--ink);
  font:600 12.5px inherit;
  font-family:inherit;
  cursor:pointer;
  flex:none;
  transition:.15s;
}
.daily-v2 .sec-head .btn:hover{border-color:var(--g500);background:var(--g50)}
.daily-v2 .sec-head .btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* ===== Row ===== */
.daily-v2 .rows{padding:0}
.daily-v2 .row{
  display:grid;
  gap:10px;
  align-items:end;
  padding:12px 16px;
  border-bottom:1px solid var(--line);
  animation:pop .22s ease;
}
.daily-v2 .row:last-child{border-bottom:0}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.daily-v2 .in .row{grid-template-columns:24px 180px 160px 1fr 36px}
.daily-v2 .out .row{grid-template-columns:24px 130px 130px minmax(140px,1fr) 70px 70px 110px 130px 36px}

.daily-v2 .idx{
  height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  font-size:12px;
  color:var(--muted);
}

.daily-v2 .x{
  width:36px;
  height:38px;
  border-radius:10px;
  border:1px solid var(--line);
  background:var(--card);
  color:var(--muted);
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:.15s;
  flex:none;
}
.daily-v2 .x:hover{color:var(--r700);border-color:var(--r500);background:var(--r100)}
.daily-v2 .x svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

.daily-v2 .cell{min-width:0}
.daily-v2 .cell span.cap{
  display:block;
  font-size:10px;
  font-weight:700;
  letter-spacing:.4px;
  color:var(--muted);
  text-transform:uppercase;
  margin-bottom:5px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.daily-v2 .cap i{font-style:normal;text-transform:none;letter-spacing:0;font-weight:500;color:#B0BAB3}

/* ===== Total bar ===== */
.daily-v2 .total{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:12px 16px;
  font-weight:700;
  font-size:13px;
}
.daily-v2 .in .total{background:var(--g100);border-top:2px solid var(--g700);color:var(--g900)}
.daily-v2 .out .total{background:var(--y100);border-top:2px solid var(--y500);color:var(--y700)}
.daily-v2 .total b{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}

/* ===== History ===== */
.daily-v2 .hist{margin-top:18px;overflow:hidden}
.daily-v2 .hist-head{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  padding:12px 16px;
  border-bottom:1px solid var(--line);
}
.daily-v2 .hist-head h2{margin:0;font-size:14px;font-weight:800;flex:1;min-width:140px;letter-spacing:-.01em}
.daily-v2 .hist-head h2 small{display:block;font-size:11.5px;font-weight:500;color:var(--muted);letter-spacing:0;margin-top:2px}
.daily-v2 .chips{display:flex;gap:4px}
.daily-v2 .chip{
  height:28px;
  padding:0 11px;
  border-radius:99px;
  border:1px solid var(--line);
  background:var(--card);
  color:var(--muted);
  font:600 11.5px inherit;
  font-family:inherit;
  cursor:pointer;
  transition:.15s;
}
.daily-v2 .chip:hover{color:var(--ink);border-color:var(--g500)}
.daily-v2 .chip[aria-pressed="true"]{background:var(--g100);border-color:var(--g700);color:var(--g900)}

.daily-v2 .list{list-style:none;margin:0;padding:0}
.daily-v2 .item{
  display:grid;
  grid-template-columns:24px 34px 1fr auto;
  gap:12px;
  align-items:center;
  padding:11px 16px;
  border-bottom:1px solid var(--line);
  min-width:0;
}
.daily-v2 .item:last-child{border-bottom:0}
.daily-v2 .item .num{
  font-size:12px;
  font-weight:800;
  color:var(--muted);
  text-align:center;
  font-variant-numeric:tabular-nums;
}
.daily-v2 .item .body{min-width:0;overflow:hidden}
.daily-v2 .item.new{animation:flash 1.6s ease}
@keyframes flash{from{background:var(--g100);transform:translateY(-6px);opacity:0}30%{opacity:1;transform:none}to{background:transparent}}
.daily-v2 .ico{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none}
.daily-v2 .ico svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.daily-v2 .item.in .ico{background:var(--g100);color:var(--g700)}
.daily-v2 .item.out .ico{background:var(--y100);color:var(--y700)}
.daily-v2 .item .t{font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.daily-v2 .item .m{font-size:11.5px;color:var(--muted);margin-top:2px}
.daily-v2 .item .a{font-weight:800;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-size:13px}
.daily-v2 .item.in .a{color:var(--g700)}
.daily-v2 .item.out .a{color:var(--y700)}
.daily-v2 .empty{padding:28px 16px;text-align:center;color:var(--muted);font-size:12.5px}

.daily-v2 .hist-foot{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  padding:11px 16px;
  background:var(--g50);
  font-size:12px;
}
.daily-v2 .hist-foot span{color:var(--muted)}
.daily-v2 .link{
  display:inline-flex;
  align-items:center;
  gap:6px;
  color:var(--g700);
  font-weight:700;
  text-decoration:none;
  font-size:12px;
}
.daily-v2 .link:hover{text-decoration:underline}

/* ===== Autocomplete ===== */
.daily-v2 .ac-suggest{
  position:absolute;
  top:100%;
  left:0;
  right:0;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:10px;
  margin-top:4px;
  max-height:240px;
  overflow-y:auto;
  z-index:70;
  box-shadow:0 12px 32px rgba(14,32,24,.12);
}
.daily-v2 .ac-item{padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:10px}
.daily-v2 .ac-item:last-child{border-bottom:0}
.daily-v2 .ac-item:hover{background:var(--g50)}
.daily-v2 .ac-name{font-weight:600;font-size:12.5px;color:var(--ink)}
.daily-v2 .ac-meta{display:flex;gap:6px;align-items:center;flex:none;font-size:11px;color:var(--muted)}
.daily-v2 .ac-tag{background:var(--bg);padding:2px 7px;border-radius:99px;font-weight:600}

.daily-v2 .hide{display:none!important}

/* ===== Sticky bar ===== */
.daily-bar{
  position:fixed;
  left:232px;
  right:0;
  bottom:0;
  padding:10px 34px;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  z-index:40;
  transition:left .22s ease;
}
.sidebar-collapsed .daily-bar{left:64px}
.daily-bar-in{max-width:1120px;margin:0 auto;display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.daily-bar .note{color:var(--muted);font-size:12.5px;transition:color .2s}
.daily-bar .note.ok{color:var(--g700);font-weight:600}
.daily-bar .acts{display:flex;gap:8px}
.daily-bar .btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:36px;
  padding:0 14px;
  border-radius:10px;
  border:1px solid var(--line);
  background:var(--card);
  color:var(--ink);
  font:700 12.5px inherit;
  font-family:inherit;
  cursor:pointer;
  transition:.15s;
  text-decoration:none;
}
.daily-bar .btn:hover{border-color:var(--g500);background:var(--g50);text-decoration:none}
.daily-bar .btn.ghost{background:var(--card)}
.daily-bar .btn-primary,
.daily-bar .btn.btn-primary{
  background:var(--g700);
  border-color:var(--g700);
  color:#fff;
  box-shadow:0 4px 12px -4px rgba(22,128,60,.5);
}
.daily-bar .btn-primary:hover{background:var(--g900)}
.daily-bar .btn-primary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.daily-bar .btn svg{width:14px;height:14px}

.daily-v2 .toast{
  position:fixed;
  left:50%;
  bottom:80px;
  transform:translate(-50%,20px);
  background:var(--g900);
  color:#fff;
  padding:10px 18px;
  border-radius:11px;
  font-weight:600;
  font-size:12.5px;
  opacity:0;
  pointer-events:none;
  transition:.25s;
  z-index:60;
}
.daily-v2 .toast.show{opacity:1;transform:translate(-50%,0)}

/* ===== Tablet ===== */
@media(max-width:980px){
  .daily-v2 .in .row{grid-template-columns:1fr 1fr 36px}
  .daily-v2 .in .row .idx{display:none}
  .daily-v2 .in .row .c-ket{grid-column:1/-1;order:5}
  .daily-v2 .in .row .x{grid-column:3;grid-row:1}
  .daily-v2 .out .row{grid-template-columns:repeat(6,1fr)}
  .daily-v2 .out .row .idx{display:none}
  .daily-v2 .out .row .c-kat{grid-column:span 3}
  .daily-v2 .out .row .c-sub{grid-column:span 3}
  .daily-v2 .out .row .c-item{grid-column:1/-1}
  .daily-v2 .out .row .c-qty{grid-column:span 2}
  .daily-v2 .out .row .c-sat{grid-column:span 2}
  .daily-v2 .out .row .c-har{grid-column:span 2}
  .daily-v2 .out .row .c-tot{grid-column:span 5}
  .daily-v2 .out .row .x{grid-column:span 1}
}

@media(max-width:820px){
  .daily-bar{left:0;padding:10px 16px}
  .sidebar-collapsed .daily-bar{left:0}
  .daily-bar-in{flex-direction:column;align-items:stretch;gap:8px}
  .daily-bar .acts{justify-content:flex-end}
  .daily-bar .acts .btn-primary{flex:1;justify-content:center}
}

@media(max-width:640px){
  .daily-v2 h1{font-size:18px}
  .daily-v2 .top-card{padding:12px 14px}
  .daily-v2 .stats{width:100%;justify-content:space-between;gap:10px}
  .daily-v2 .date{width:100%}
  .daily-v2 .sec-head,.daily-v2 .row,.daily-v2 .total{padding-left:12px;padding-right:12px}
  .daily-v2 .in .row{grid-template-columns:1fr 36px}
  .daily-v2 .in .row .c-kat,
  .daily-v2 .in .row .c-jml,
  .daily-v2 .in .row .c-ket{grid-column:1/-1}
  .daily-v2 .in .row .x{grid-column:2;grid-row:1;align-self:end}
  .daily-v2 .hist-head,
  .daily-v2 .item,
  .daily-v2 .hist-foot{padding-left:12px;padding-right:12px}
}
/* ===== FIX: Autocomplete dropdown di Input Harian ===== */
.daily-v2 .sec{overflow:visible !important}
.daily-v2 .sec > .total{border-radius:0 0 14px 14px}
.daily-v2 .cell.c-item{position:relative}
.daily-v2 .row{position:relative}
.daily-v2 .row:focus-within{z-index:5}
.daily-v2 .ac-suggest{
  position:absolute;
  top:calc(100% + 4px);
  left:0;
  right:0;
  min-width:280px;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:10px;
  margin-top:0;
  max-height:260px;
  overflow-y:auto;
  z-index:90;
  box-shadow:0 12px 32px rgba(14,32,24,.14);
}
/* ===== History item: nomor urut ===== */
.daily-v2 .item{grid-template-columns:24px 34px 1fr auto !important}
.daily-v2 .item .num{
  font-size:12px;
  font-weight:800;
  color:var(--muted);
  text-align:center;
  font-variant-numeric:tabular-nums;
}
.daily-v2 .hist-head h2 small{display:block;font-size:11.5px;font-weight:500;color:var(--muted);margin-top:2px}
.daily-v2 .hist-head{padding:14px 16px}
/* ============================================
   REPORT LIST PAGE
   ============================================ */
.rep-filters{
  display:flex;
  gap:12px;
  align-items:center;
  flex-wrap:wrap;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px 16px;
  margin-bottom:16px;
}
.rep-search{
  display:flex;
  align-items:center;
  gap:8px;
  background:var(--bg);
  border:1px solid var(--line);
  border-radius:10px;
  padding:8px 12px;
  flex:1;
  min-width:220px;
  transition:.15s;
}
.rep-search:focus-within{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}
.rep-search svg{color:var(--muted);flex:none;stroke:currentColor}
.rep-search input{
  border:0;outline:none;background:transparent;
  font:500 13px inherit;font-family:inherit;
  color:var(--ink);width:100%;padding:0;min-width:0;
}
.rep-filters select{
  font:600 13px inherit;font-family:inherit;
  background:var(--bg);border:1px solid var(--line);border-radius:10px;
  padding:8px 34px 8px 12px;cursor:pointer;color:var(--ink);
  appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236B7A70' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;background-size:11px;
  min-width:160px;
}
.rep-filters select:focus{outline:none;border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}
.rep-count{font-size:12px;color:var(--muted);font-weight:600;margin-left:auto}

.rep-empty{
  text-align:center;
  padding:60px 20px;
  background:var(--card);
  border:1px dashed var(--line);
  border-radius:16px;
}
.rep-empty h3{font-size:16px;font-weight:800;margin:12px 0 4px}
.rep-empty p{color:var(--muted);font-size:13px}

.rep-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
  gap:16px;
}

.rep-card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:16px;
  padding:16px;
  transition:.15s;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.rep-card:hover{border-color:var(--g500);box-shadow:0 8px 24px -8px rgba(22,128,60,.15);transform:translateY(-2px)}

.rep-card-head{display:flex;justify-content:space-between;align-items:center}
.rep-status{
  font-size:10.5px;
  font-weight:800;
  letter-spacing:.5px;
  padding:4px 10px;
  border-radius:99px;
  text-transform:uppercase;
}
.rep-status.draft{background:var(--y100);color:var(--y700)}
.rep-status.pub{background:var(--g100);color:var(--g900)}

.rep-actions-mini{display:flex;gap:6px;opacity:0;transition:.15s}
.rep-card:hover .rep-actions-mini{opacity:1}
.rep-icon-btn{
  width:28px;height:28px;border-radius:8px;
  border:1px solid var(--line);background:var(--card);
  color:var(--muted);display:grid;place-items:center;cursor:pointer;
  transition:.15s;padding:0;
}
.rep-icon-btn:hover{background:var(--r100);color:var(--r700);border-color:var(--r500)}

.rep-card-body{text-decoration:none;color:inherit;flex:1}
.rep-card-body:hover{text-decoration:none}
.rep-title{font-size:14.5px;font-weight:800;color:var(--ink);margin:0 0 8px;line-height:1.3}
.rep-period{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:600;color:var(--muted);
  background:var(--g50);padding:4px 10px;border-radius:8px;
}
.rep-period svg{stroke:currentColor}

.rep-card-foot{
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-top:1px dashed var(--line);
  padding-top:10px;
  font-size:11.5px;
  color:var(--muted);
}
.rep-stat{display:flex;align-items:center;gap:5px;font-weight:600}
.rep-stat svg{stroke:currentColor;flex:none}

/* Status bar di single report */
.rep-status-bar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px 16px;
  margin-bottom:16px;
  font-size:13px;
}
.rep-status-info{color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rep-status-badge{
  font-size:10.5px;font-weight:800;letter-spacing:.5px;
  padding:3px 10px;border-radius:99px;text-transform:uppercase;
}
.rep-status-badge.draft{background:var(--y100);color:var(--y700)}
.rep-status-badge.pub{background:var(--g100);color:var(--g900)}
.rep-status-actions{display:flex;gap:8px}

@media(max-width:640px){
  .rep-grid{grid-template-columns:1fr}
  .rep-filters{padding:10px 12px}
  .rep-search{min-width:0}
  .rep-filters select{width:100%}
  .rep-count{margin-left:0;flex-basis:100%;text-align:right}
  .rep-actions-mini{opacity:1}
}
/* ===== Card list: share & open icon ===== */
.rep-icon-btn.share:hover{background:var(--g100);color:var(--g700);border-color:var(--g500)}
.rep-icon-btn.open{text-decoration:none}
.rep-icon-btn.open:hover{background:var(--g100);color:var(--g700);border-color:var(--g500);text-decoration:none}
.rep-icon-btn{transition:.15s}
/* ===== Publish Mode UI ===== */
.rep-mode-tag{
  font-size:9.5px;font-weight:800;letter-spacing:.4px;
  padding:3px 8px;border-radius:99px;text-transform:uppercase;
}
.rep-mode-tag.mode-live{background:#E0F2FE;color:#075985}
.rep-mode-tag.mode-locked{background:#FEE2E2;color:#991B1B}
.rep-mode-tag.mode-auto_refresh{background:#FEF3C7;color:#92400E}

/* Warning banner */
.rep-warning{
  display:flex;gap:12px;align-items:center;
  background:var(--y100);border:1px solid var(--y500);
  border-radius:12px;padding:12px 16px;margin-bottom:16px;
  color:var(--y700);font-size:13px;
}
.rep-warning svg{flex:none;color:var(--y700)}

/* Mode picker di modal */
.mode-pick{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.mode-opt{
  display:flex;gap:12px;align-items:flex-start;
  border:1.5px solid var(--line);border-radius:12px;
  padding:14px;cursor:pointer;transition:.15s;
}
.mode-opt:hover{border-color:var(--g500);background:var(--g50)}
.mode-opt input{margin-top:3px;accent-color:var(--g700);flex:none}
.mode-opt:has(input:checked){border-color:var(--g700);background:var(--g50)}
.mode-body{min-width:0}
.mode-title{font-weight:700;font-size:13.5px;margin-bottom:3px;color:var(--ink)}
.mode-desc{font-size:12px;color:var(--muted);line-height:1.5}
/* ===== Public View: header v2 ===== */
.pub-head-v2{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:18px;
  padding:20px 24px;
  margin-bottom:16px;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:20px;
  flex-wrap:wrap;
}
.pub-head-left{
  display:flex;
  align-items:flex-start;
  gap:16px;
  min-width:0;
  flex:1;
}

.pub-head-info{min-width:0}
.pub-head-v2 .pub-badge{
  display:inline-block;
  background:var(--y100);
  color:var(--y700);
  font-weight:700;
  font-size:10.5px;
  padding:4px 10px;
  border-radius:99px;
  text-transform:uppercase;
  letter-spacing:.5px;
  margin-bottom:8px;
}
.pub-head-v2 h1{
  font-size:20px;
  font-weight:800;
  letter-spacing:-.02em;
  margin:0;
  line-height:1.2;
  color:var(--ink);
}
.pub-head-v2 .pub-sub{
  color:var(--muted);
  font-size:12.5px;
  margin:4px 0 0;
}
.pub-head-v2 .pub-managed{
  color:var(--muted);
  font-size:11.5px;
  margin:2px 0 0;
}
.pub-head-v2 .pub-managed strong{color:var(--ink);font-weight:700}

.pub-head-right{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:10px;
  flex:none;
}
.pub-live{
  display:flex;
  align-items:center;
  gap:6px;
  font-size:11.5px;
  color:var(--muted);
  font-weight:600;
}
.pub-print{
  background:var(--g700);
  color:#fff;
  border-color:var(--g700);
  height:38px;
  padding:0 16px;
  font-size:12.5px;
  display:inline-flex;
  align-items:center;
}
.pub-print:hover{background:var(--g900);border-color:var(--g900)}

/* Footer center fix */
.pub-footer{
  text-align:center;
  padding:28px 16px 16px;
  font-size:12px;
  color:var(--muted);
  line-height:1.6;
}
.pub-footer strong{color:var(--ink);font-weight:700}

@media(max-width:640px){
  .pub-head-v2{padding:16px;flex-direction:column;gap:14px}
  .pub-head-left{flex-direction:column;gap:12px}
  .pub-head-right{width:100%;flex-direction:row-reverse;justify-content:space-between;align-items:center}
  .pub-head-v2 h1{font-size:17px}
  .pub-print{height:34px;padding:0 14px;font-size:12px}
}
/* ===== Public View FIX — force ===== */
.pub-head-v2{
  background:#fff !important;
  border:1px solid #E8EDE9 !important;
  border-radius:18px !important;
  padding:20px 24px !important;
  margin-bottom:16px !important;
  display:flex !important;
  justify-content:space-between !important;
  align-items:flex-start !important;
  gap:20px !important;
  flex-wrap:wrap !important;
}
.pub-head-v2 .pub-head-left{
  display:flex !important;
  align-items:flex-start !important;
  gap:16px !important;
  flex:1 1 auto !important;
  min-width:0 !important;
}
.pub-head-v2 .pub-head-left img{
  max-height:72px !important;
  max-width:130px !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain !important;
  flex:none !important;
  display:block !important;
}
.pub-head-v2 .pub-head-info{min-width:0;flex:1 1 auto}

.pub-head-v2 .pub-head-right{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-end !important;
  gap:10px !important;
  flex:none !important;
}

/* Footer public: center full-width */
.pub-footer,
body.pub-body .pub-footer{
  width:100% !important;
  max-width:100% !important;
  text-align:center !important;
  padding:28px 16px 16px !important;
  font-size:12px !important;
  color:#6B7A70 !important;
  line-height:1.6 !important;
  margin:0 auto !important;
}
.pub-footer strong{color:#14201A !important;font-weight:700}

/* Responsive */
@media(max-width:640px){
  .pub-head-v2{padding:16px !important;flex-direction:column !important;gap:14px !important}
  .pub-head-v2 .pub-head-left{flex-direction:column !important;gap:12px !important}
  .pub-head-v2 .pub-head-left img{max-height:56px !important;max-width:100px !important}
  .pub-head-v2 .pub-head-right{width:100% !important;flex-direction:row-reverse !important;justify-content:space-between !important;align-items:center !important}
  .pub-head-v2 h1{font-size:17px !important}
}
/* ===== Branch bar ===== */
.branch-bar{
  display:flex;justify-content:space-between;align-items:center;
  gap:12px;flex-wrap:wrap;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:8px 14px;margin-bottom:14px;
}
.branch-current{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.branch-current strong{color:var(--ink);font-weight:800}
.branch-current svg{stroke:currentColor;flex:none}
.branch-list{display:flex;gap:6px;flex-wrap:wrap}
.branch-btn{
  font:600 12px inherit;font-family:inherit;
  padding:6px 12px;border-radius:8px;
  border:1px solid var(--line);background:var(--card);
  color:var(--muted);cursor:pointer;transition:.15s;
}
.branch-btn:hover{border-color:var(--g500);color:var(--ink)}
.branch-btn.active{background:var(--g100);border-color:var(--g700);color:var(--g900);font-weight:700}
.branch-btn.add{border-style:dashed;color:var(--g700)}

/* Menu Super Admin special */
.ni-super{background:linear-gradient(90deg, #FEF4D3, transparent)}
.ni-super:hover{background:linear-gradient(90deg, #FBD660, var(--y100))}

@media(max-width:640px){
  .branch-bar{flex-direction:column;align-items:stretch;gap:8px}
  .branch-list{width:100%}
  .branch-btn{flex:1;justify-content:center}
}
/* ===== Profile Page ===== */
.profile-badge{
  display:flex;
  align-items:center;
  gap:8px;
  background:var(--y100);
  color:var(--y700);
  padding:10px 16px;
  border-radius:12px;
  font-size:13px;
  margin-bottom:16px;
  border:1px solid var(--y500);
}
.profile-badge svg{stroke:currentColor;flex:none}

.pass-wrap{position:relative}
.pass-wrap input{padding-right:40px !important}
.pass-toggle{
  position:absolute;
  right:6px;top:50%;transform:translateY(-50%);
  background:none;border:0;
  width:30px;height:30px;
  border-radius:8px;
  display:grid;place-items:center;
  color:var(--muted);
  cursor:pointer;
  transition:.15s;
}
.pass-toggle:hover{background:var(--g50);color:var(--g700)}
.pass-toggle svg{stroke:currentColor}

.pw-meter{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:8px;
}
.pw-bar{
  flex:1;
  height:6px;
  background:var(--bg);
  border-radius:99px;
  overflow:hidden;
}
.pw-fill{
  height:100%;
  width:0;
  background:var(--g500);
  border-radius:99px;
  transition:.25s;
}
.pw-label{
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
/* ===== Users Page ===== */
.invite-row{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:12px 0;border-bottom:1px dashed var(--line);flex-wrap:wrap;
}
.invite-row:last-child{border-bottom:0}
.invite-info{flex:1;min-width:0}
.invite-email{font-weight:700;font-size:13.5px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.invite-name{color:var(--muted);font-weight:500;font-size:12.5px}
.invite-meta{font-size:11.5px;color:var(--muted);margin-top:3px}
.invite-actions{display:flex;gap:6px;flex:none}
.role-select{
  font:600 12.5px inherit;font-family:inherit;
  padding:6px 26px 6px 10px;border-radius:8px;border:1px solid var(--line);
  background:var(--card);color:var(--ink);cursor:pointer;outline:none;
  appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236B7A70' stroke-width='2.5' stroke-linecap='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 8px center;background-size:9px;
}
.role-select:hover{border-color:var(--g500)}
.role-select:focus{border-color:var(--g500);box-shadow:0 0 0 3px rgba(34,165,89,.12)}
.role-select:disabled{background:var(--bg);color:var(--muted);cursor:not-allowed}
/* ===== OTP Alert (client) ===== */
.otp-alert{
  background:linear-gradient(135deg, #FEF4D3, #FFF9E6);
  border:1px solid var(--y500);
  border-radius:14px;
  padding:18px 22px;
  margin-bottom:16px;
  color:var(--y700);
}
.otp-alert-head{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:800;margin-bottom:8px;color:var(--ink)}
.otp-alert-head svg{stroke:var(--y700);flex:none}
.otp-alert p{font-size:12.5px;line-height:1.6;margin:4px 0}
.otp-code{
  font-family:ui-monospace,Menlo,monospace;
  font-size:32px;
  font-weight:900;
  letter-spacing:10px;
  background:#fff;
  border:2px dashed var(--y500);
  border-radius:12px;
  padding:14px 20px;
  display:inline-block;
  color:var(--g900);
  margin-top:10px;
  text-align:center;
}

/* ===== Bypass Alert (client) ===== */
.bypass-alert{
  display:flex;
  gap:12px;
  align-items:center;
  background:#FDECEA;
  border:1px solid var(--r500);
  color:var(--r700);
  padding:14px 18px;
  border-radius:12px;
  margin-bottom:16px;
  font-size:13px;
}
.bypass-alert svg{stroke:currentColor;flex:none}
.bypass-alert strong{color:var(--r700)}

/* ===== Bypass Mode Bar (super admin) ===== */
.bypass-mode-bar{
  display:flex;
  gap:12px;
  align-items:center;
  background:#E0F2FE;
  border:1px solid #075985;
  color:#075985;
  padding:10px 16px;
  border-radius:10px;
  margin-bottom:14px;
  font-size:12.5px;
}
.bypass-mode-bar svg{stroke:currentColor;flex:none}
.bypass-mode-bar span{flex:1}

/* ===== OTP Waiting (super admin modal) ===== */
.otp-waiting{
  text-align:center;
  padding:16px 0;
  color:var(--muted);
  font-size:13px;
}
.otp-spinner{
  width:30px;height:30px;margin:0 auto 10px;
  border:3px solid var(--line);
  border-top-color:var(--g700);
  border-radius:50%;
  animation:spin 1s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
/* ===== Subscription Page ===== */
.sub-alert{
  display:flex;gap:14px;align-items:center;
  padding:16px 20px;border-radius:14px;
  margin-bottom:20px;font-size:13.5px;
}
.sub-alert.info{background:var(--g50);border:1px solid var(--g500);color:var(--g900)}
.sub-alert.info svg{stroke:var(--g700)}
.sub-alert.danger{background:var(--r100);border:1px solid var(--r500);color:var(--r700)}
.sub-alert.danger svg{stroke:var(--r700)}
.sub-alert strong{display:block;margin-bottom:2px;font-size:14px}
.sub-alert p{margin:0;font-size:12.5px;opacity:.9}

.sub-current{padding:4px 0}
.sub-current-info{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.sub-plan-badge{
  display:inline-block;padding:6px 16px;border-radius:10px;
  font-size:14px;font-weight:800;letter-spacing:.3px;
}
.sub-plan-badge.free{background:var(--bg);color:var(--muted)}
.sub-plan-badge.basic{background:var(--g100);color:var(--g900)}
.sub-plan-badge.pro{background:var(--y100);color:var(--y700)}
.sub-plan-status{font-size:13px;color:var(--muted)}
.sub-plan-status strong{color:var(--ink)}

.usage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.usage-card{
  padding:14px 16px;background:var(--g50);border-radius:12px;
}
.usage-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:12.5px;font-weight:700;color:var(--muted)}
.usage-count{font-size:16px;font-weight:800;color:var(--ink)}
.usage-count.ok{color:var(--g700)}
.usage-count.warn{color:var(--y700)}
.usage-count.danger{color:var(--r700)}
.usage-bar{height:6px;background:var(--bg);border-radius:99px;overflow:hidden}
.usage-fill{height:100%;border-radius:99px;transition:width .3s}
.usage-fill.ok{background:var(--g500)}
.usage-fill.warn{background:var(--y500)}
.usage-fill.danger{background:var(--r500)}
.usage-warn{font-size:11px;color:var(--r700);font-weight:700;margin-top:6px}

.section-head-inline{margin:20px 0 14px}
.section-head-inline h2{font-size:18px;font-weight:800;margin-bottom:4px}
.section-head-inline p{color:var(--muted);font-size:13px}

.price-card.current{border-color:var(--g700);background:linear-gradient(180deg, var(--g50), #fff 40%)}
.current-badge{
  position:absolute;top:-12px;left:50%;transform:translateX(-50%);
  background:var(--g900);color:#fff;font-size:11px;font-weight:800;
  letter-spacing:.4px;padding:5px 12px;border-radius:99px;
  text-transform:uppercase;
}

/* Trial banner di layout */
.trial-banner{
  display:flex;gap:12px;align-items:center;
  background:var(--y100);border:1px solid var(--y500);color:var(--y700);
  padding:12px 16px;border-radius:12px;margin-bottom:14px;font-size:13px;
}
.trial-banner svg{stroke:var(--y700);flex:none}
.trial-banner strong{color:var(--y700)}
.trial-banner.danger{background:var(--r100);border-color:var(--r500);color:var(--r700)}
.trial-banner.danger svg{stroke:var(--r700)}
.trial-banner.danger strong{color:var(--r700)}

@media (max-width:900px){
  .usage-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .usage-grid{grid-template-columns:1fr}
  .sub-alert{flex-direction:column;align-items:stretch}
  .sub-alert .btn{width:100%}
}
/* ============================================
   PRICING CARDS (untuk halaman Subscription)
   ============================================ */
.pricing{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:20px;
  align-items:stretch;
}
.price-card{
  background:var(--card);
  border:1.5px solid var(--line);
  border-radius:20px;
  padding:32px 26px;
  display:flex;
  flex-direction:column;
  position:relative;
  transition:.2s;
}
.price-card:hover{
  border-color:var(--g500);
  box-shadow:0 20px 40px -20px rgba(22,128,60,.25);
}
.price-card.popular{
  border-color:var(--g700);
  background:linear-gradient(180deg, var(--g50), #fff 40%);
  box-shadow:0 20px 40px -20px rgba(22,128,60,.3);
}
.price-card.current{
  border-color:var(--g700);
  background:linear-gradient(180deg, var(--g50), #fff 40%);
}
.popular-badge{
  position:absolute;
  top:-12px;
  left:50%;
  transform:translateX(-50%);
  background:var(--g700);
  color:#fff;
  font-size:11px;
  font-weight:800;
  letter-spacing:.5px;
  padding:5px 14px;
  border-radius:99px;
  text-transform:uppercase;
  white-space:nowrap;
}
.current-badge{
  position:absolute;
  top:-12px;
  left:50%;
  transform:translateX(-50%);
  background:var(--g900);
  color:#fff;
  font-size:11px;
  font-weight:800;
  letter-spacing:.4px;
  padding:5px 12px;
  border-radius:99px;
  text-transform:uppercase;
  white-space:nowrap;
}
.price-name{
  font-size:20px;
  font-weight:800;
  margin-bottom:6px;
  color:var(--ink);
}
.price-desc{
  font-size:13px;
  color:var(--muted);
  margin-bottom:20px;
}
.price-amount{
  font-size:36px;
  font-weight:800;
  letter-spacing:-.02em;
  color:var(--ink);
  margin-bottom:4px;
  line-height:1.1;
}
.price-amount small{
  font-size:15px;
  color:var(--muted);
  font-weight:600;
}
.price-yearly{
  font-size:12.5px;
  color:var(--muted);
  margin-bottom:22px;
}
.price-features{
  list-style:none;
  padding:0;
  margin:0 0 26px;
  flex:1;
}
.price-features li{
  display:flex;
  align-items:flex-start;
  gap:10px;
  font-size:13.5px;
  margin-bottom:11px;
  color:var(--ink);
  line-height:1.5;
}
.price-features li svg{
  flex:none;
  margin-top:3px;
  stroke:var(--g700);
  stroke-width:2.6;
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.price-features li.muted{
  color:var(--muted);
  text-decoration:line-through;
  text-decoration-color:#ccc;
}
.price-card .btn{
  width:100%;
  padding:12px;
  font-size:13.5px;
  border-radius:12px;
}

/* Responsive pricing */
@media (max-width: 900px){
  .pricing{grid-template-columns:1fr; max-width:440px; margin:0 auto;}
}
/* ============================================
   SUPER ADMIN DASHBOARD
   ============================================ */
.sa-chart{
  display:flex;
  align-items:flex-end;
  gap:10px;
  height:180px;
  padding:10px 0;
}
.sa-bar-wrap{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-end;
  height:100%;
  gap:6px;
  min-width:0;
}
.sa-bar-val{
  font-size:10.5px;
  font-weight:700;
  color:var(--ink);
  white-space:nowrap;
  text-align:center;
  line-height:1.1;
  padding:2px 0;
  min-height:14px;
}
.sa-bar{
  width:100%;
  max-width:60px;
  background:var(--g500);
  border-radius:6px 6px 0 0;
  transition:.4s;
  min-height:3px;
}
.sa-bar-pair{
  width:100%;
  display:flex;
  gap:3px;
  align-items:flex-end;
  justify-content:center;
  height:100%;
  min-height:0;
}
.sa-bar-pair .sa-bar{
  max-width:28px;
}
.sa-bar.rev{background:var(--g500)}
.sa-bar.exp{background:var(--y500)}
.sa-bar-label{
  font-size:11px;
  color:var(--muted);
  font-weight:600;
  white-space:nowrap;
}

/* List items */
.sa-list-item{
  display:flex;
  align-items:center;
  gap:12px;
  padding:11px 0;
  border-bottom:1px solid var(--line);
}
.sa-list-item:last-child{border-bottom:0}
.sa-rank{
  width:26px;height:26px;
  border-radius:8px;
  background:var(--g100);
  color:var(--g900);
  display:grid;place-items:center;
  font-weight:800;font-size:12px;
  flex:none;
}
.sa-list-body{flex:1;min-width:0}
.sa-list-title{
  font-weight:700;
  font-size:13px;
  color:var(--ink);
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
a.sa-list-title{text-decoration:none;color:var(--ink)}
a.sa-list-title:hover{color:var(--g700);text-decoration:underline}
.sa-list-sub{
  font-size:11.5px;
  color:var(--muted);
  margin-top:2px;
}
.sa-list-value{
  font-weight:800;
  font-size:13px;
  color:var(--g700);
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.sa-list-badge{
  font-size:10.5px;
  font-weight:800;
  letter-spacing:.3px;
  padding:3px 9px;
  border-radius:99px;
  text-transform:uppercase;
  white-space:nowrap;
}
.sa-list-badge.active{background:var(--g100);color:var(--g900)}
.sa-list-badge.suspend{background:var(--r100);color:var(--r700)}

/* Plan badge */
.sa-plan-badge{
  display:inline-block;
  font-size:10.5px;
  font-weight:800;
  letter-spacing:.4px;
  padding:3px 10px;
  border-radius:99px;
  text-transform:uppercase;
}
.sa-plan-badge.free{background:var(--bg);color:var(--muted)}
.sa-plan-badge.basic{background:var(--g100);color:var(--g900)}
.sa-plan-badge.pro{background:var(--y100);color:var(--y700)}

/* Activity items */
.sa-act-item{
  display:flex;
  gap:10px;
  padding:9px 0;
  border-bottom:1px dashed var(--line);
}
.sa-act-item:last-child{border-bottom:0}
.sa-act-icon{
  width:28px;height:28px;
  border-radius:8px;
  background:var(--g50);
  color:var(--g700);
  display:grid;place-items:center;
  font-weight:800;font-size:12px;
  flex:none;
}
.sa-act-body{flex:1;min-width:0}
.sa-act-text{font-size:12.5px;line-height:1.4}
.sa-act-meta{font-size:11px;color:var(--muted);margin-top:2px}

/* Health */
.sa-health-item{
  display:flex;
  justify-content:space-between;
  padding:9px 0;
  border-bottom:1px solid var(--line);
  font-size:13px;
}
.sa-health-item:last-child{border-bottom:0}
.sa-health-item span{color:var(--muted)}
.sa-health-item strong{color:var(--ink);font-weight:800}

/* Quick actions */
.sa-quick-action{
  display:block;
  padding:11px 14px;
  background:var(--g50);
  border-radius:10px;
  color:var(--ink);
  text-decoration:none;
  font-weight:700;
  font-size:13px;
  margin-bottom:8px;
  transition:.15s;
}
.sa-quick-action:last-child{margin-bottom:0}
.sa-quick-action:hover{background:var(--g100);text-decoration:none;color:var(--g900)}

.link-sm{font-size:12px;color:var(--g700);font-weight:700;text-decoration:none}
.link-sm:hover{text-decoration:underline}

@media (max-width:768px){
  .sa-chart{gap:4px;height:140px}
  .sa-bar-val{font-size:9px}
  .sa-bar-label{font-size:9.5px}
}
/* Quick action icon support */
.sa-quick-action{
  display:flex;
  align-items:center;
  gap:10px;
}
.sa-quick-action svg{
  flex:none;
  color:var(--g700);
}
.link-sm{
  display:inline-flex;
  align-items:center;
  gap:4px;
}
.link-sm svg{flex:none}
/* ============================================
   PAGINATION
   ============================================ */
.pagination{
  display:flex;
  justify-content:center;
  gap:6px;
  padding:16px 20px;
  border-top:1px solid var(--line);
}
.page-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  height:34px;
  padding:0 10px;
  border-radius:8px;
  background:var(--card);
  border:1px solid var(--line);
  color:var(--ink);
  text-decoration:none;
  font-weight:700;
  font-size:13px;
  transition:.15s;
}
.page-btn:hover{border-color:var(--g500);background:var(--g50);text-decoration:none;color:var(--ink)}
.page-btn.active{background:var(--g700);border-color:var(--g700);color:#fff}
/* ============================================
   PWA INSTALL BANNER
   ============================================ */
.pwa-banner{
  position:fixed;
  bottom:-120px;
  left:16px;
  right:16px;
  max-width:520px;
  margin:0 auto;
  z-index:999;
  display:flex;
  align-items:center;
  gap:12px;
  padding:14px 16px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:0 12px 40px -8px rgba(14,32,24,.25);
  transition:bottom .35s cubic-bezier(.4,0,.2,1);
  font-family:'Plus Jakarta Sans',system-ui,sans-serif;
}
.pwa-banner.pwa-banner-show{bottom:20px}

.pwa-banner-icon{
  width:46px;
  height:46px;
  border-radius:12px;
  background:var(--g100);
  display:grid;
  place-items:center;
  flex:none;
  overflow:hidden;
}
.pwa-banner-icon img{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:12px;
}

.pwa-banner-body{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.pwa-banner-body strong{
  font-size:13.5px;
  font-weight:800;
  color:var(--ink);
  line-height:1.2;
}
.pwa-banner-body span{
  font-size:12px;
  color:var(--muted);
  line-height:1.4;
  display:flex;
  align-items:center;
  gap:4px;
  flex-wrap:wrap;
}
.pwa-ios-share{
  display:inline-block;
  vertical-align:-2px;
  stroke:var(--g700);
  fill:none;
}
.pwa-banner-body span strong{
  display:inline;
  font-weight:800;
  color:var(--ink);
  font-size:12px;
}

.pwa-banner-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex:none;
}
.pwa-btn-install{
  background:var(--g700);
  color:#fff;
  border:0;
  border-radius:10px;
  padding:9px 16px;
  font:700 12.5px inherit;
  font-family:inherit;
  cursor:pointer;
  transition:.15s;
  white-space:nowrap;
}
.pwa-btn-install:hover{background:var(--g900)}
.pwa-btn-close{
  width:32px;
  height:32px;
  border-radius:9px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--muted);
  display:grid;
  place-items:center;
  cursor:pointer;
  padding:0;
  transition:.15s;
  flex:none;
}
.pwa-btn-close:hover{background:var(--bg);color:var(--ink)}

@media (max-width:480px){
  .pwa-banner{left:10px;right:10px;padding:12px 14px;border-radius:14px}
  .pwa-banner.pwa-banner-show{bottom:14px}
  .pwa-banner-icon{width:40px;height:40px;border-radius:10px}
  .pwa-banner-body strong{font-size:13px}
  .pwa-banner-body span{font-size:11.5px}
  .pwa-btn-install{padding:8px 14px;font-size:12px}
}