/* Basmi Bah Admin — sistem desain mengikuti website (forest #073D2B · lime #B8EE58 · krem #FAF8F1) */
:root{
  --ink:#073D2B; --ink2:#0a5039; --lime:#B8EE58; --limeSoft:#EDF5E2; --limeText:#3f6b00; --green:#07844A;
  --bg:#FAF8F1; --card:#FFFFFF; --line:#DCE6D8; --muted:#52615A; --text:#12372A;
  --red:#C62828; --redBg:#FBE9E7; --amber:#B7791F; --amberBg:#FFF4CC; --blue:#1D5FA8; --blueBg:#E5EEFA; --radius:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:'Plus Jakarta Sans','Inter',-apple-system,system-ui,'Segoe UI',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px}
button,input,select,textarea{font-family:inherit;font-size:13.5px}
a{color:var(--green)}
.hidden{display:none!important}
.appshell{display:flex;min-height:100vh}
code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;background:#eef3ea;padding:1px 5px;border-radius:5px}

/* ---------- sidebar */
aside{width:240px;background:var(--ink);color:#fff;padding:18px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0;overflow-y:auto}
.brand{padding:4px 6px 14px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:10px}
.brand .logobox{display:flex;align-items:center;gap:10px}
.brand .logobox img{width:40px;height:40px;border-radius:10px;background:#fff}
.brand b{display:block;font-size:17px;letter-spacing:-.3px}
.brand small{font-size:10.5px;color:var(--lime);letter-spacing:1px;text-transform:uppercase;font-weight:700}
.navgroup{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:rgba(255,255,255,.4);padding:12px 12px 4px;font-weight:700}
.navbtn{display:flex;align-items:center;gap:11px;width:100%;padding:10px 12px;margin-bottom:2px;border-radius:9px;border:none;cursor:pointer;text-align:left;font-size:13.5px;font-weight:500;background:transparent;color:rgba(255,255,255,.85);transition:all .15s}
.navbtn:hover{background:rgba(255,255,255,.07)}
.navbtn.active{background:rgba(184,238,88,.18);color:var(--lime);font-weight:700}
.navbtn svg{width:17px;height:17px;flex-shrink:0}
.navbtn .cnt{margin-left:auto;background:var(--lime);color:var(--ink);font-size:10.5px;font-weight:800;border-radius:99px;padding:1px 7px}
.sidenote{margin-top:auto;padding:12px 8px 0;font-size:10.5px;color:rgba(255,255,255,.45);line-height:1.5}

/* ---------- main */
main{flex:1;padding:24px 32px;max-width:1320px;min-width:0}
.topbar{display:flex;align-items:center;gap:14px;margin-bottom:22px;flex-wrap:wrap}
.topbar h2{font-size:22px;font-weight:800;letter-spacing:-.3px;color:var(--ink)}
.topbar .sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.rolechip{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:6px 10px;font-size:12.5px}
.rolechip .rc-name{font-weight:700;color:var(--ink);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rolechip .rc-role{font-size:11px;color:var(--limeText);background:var(--limeSoft);border-radius:6px;padding:2px 7px;font-weight:700}
.rolechip button{border:none;background:none;color:var(--muted);cursor:pointer;display:flex}
.rolechip button svg{width:16px;height:16px}

.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:9px 16px;font-weight:700;font-size:13px;cursor:pointer;border:none;white-space:nowrap}
.btn svg{width:16px;height:16px}
.btn-lime{background:var(--lime);color:var(--ink)}
.btn-ink{background:var(--ink);color:#fff}
.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn-green{background:var(--green);color:#fff}
.btn-red{background:var(--redBg);color:var(--red)}
.btn-sm{padding:6px 12px;font-size:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.smallbtn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 10px;font-size:11.5px;cursor:pointer;font-weight:600;color:var(--ink);display:inline-flex;align-items:center;gap:5px}
.smallbtn svg{width:13px;height:13px}
.smallbtn.danger{color:var(--red)}
.smallbtn.on{background:var(--limeSoft);border-color:var(--lime)}

/* ---------- cards */
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 17px}
.kpi .row{display:flex;justify-content:space-between;align-items:flex-start}
.kpi .lbl{font-size:12px;color:var(--muted);font-weight:600;line-height:1.3}
.kpi .ic{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:var(--limeSoft);color:var(--ink)}
.kpi .ic svg{width:17px;height:17px}
.kpi .val{font-size:22px;font-weight:800;margin-top:12px;letter-spacing:-.4px;color:var(--ink)}
.kpi .sub{font-size:11.5px;color:var(--muted);margin-top:4px}
.kpi-btn{text-align:left;font:inherit;cursor:pointer;width:100%;transition:border-color .15s,box-shadow .15s}
.kpi-btn:hover{border-color:var(--lime);box-shadow:0 4px 12px rgba(7,61,43,.1)}
.panels{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;margin-bottom:18px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px}
.panel .phead{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.panel .phead svg{width:16px;height:16px;color:var(--green)}
.panel .ptitle{font-size:14px;font-weight:700;flex:1;color:var(--ink)}
.drow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.drow:last-child{border-bottom:none}
.drow .t1{font-size:13.5px;font-weight:600;color:var(--ink)}
.drow .t2{font-size:11.5px;color:var(--muted)}
.callout{background:var(--limeSoft);border:1px solid #cfe3b8;border-radius:12px;padding:14px 16px;margin-bottom:16px;display:flex;align-items:flex-start;gap:12px;font-size:13px;line-height:1.55}
.callout svg{width:22px;height:22px;color:var(--green);flex-shrink:0}
.callout.info{background:var(--blueBg);border-color:#C9D9F0}.callout.info svg{color:var(--blue)}
.callout.warn{background:var(--amberBg);border-color:#E7D9AE}.callout.warn svg{color:var(--amber)}
.callout.danger{background:var(--redBg);border-color:#F0C9C4}.callout.danger svg{color:var(--red)}
.note{font-size:11.5px;color:var(--muted);margin-top:10px;line-height:1.5}
.t2{font-size:11.5px;color:var(--muted)}

/* ---------- toolbar / tabs */
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar .search{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:8px 14px;min-width:220px;flex:1;max-width:360px}
.toolbar .search svg{width:15px;height:15px;color:var(--muted)}
.toolbar .search input{border:none;outline:none;font-size:13px;width:100%;background:transparent;color:var(--text)}
.toolbar select,.toolbar input[type=date]{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--text)}
.toolbar .spacer{flex:1}
.tabs{display:flex;flex-wrap:wrap;gap:8px;padding:2px 2px 12px;border-bottom:1.5px solid var(--line);margin-bottom:16px}
.tab{display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line);background:#fff;padding:8px 16px;border-radius:999px;font-weight:600;font-size:13px;color:var(--ink);cursor:pointer;white-space:nowrap;transition:all .15s}
.tab svg{width:15px;height:15px;color:var(--green)}
.tab:hover{border-color:var(--lime);background:var(--limeSoft)}
.tab.active{background:var(--ink);border-color:var(--ink);color:#fff}
.tab.active svg{color:var(--lime)}
.pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.pill{border:1px solid var(--line);background:#fff;border-radius:99px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer;color:var(--muted)}
.pill.active{background:var(--ink);color:#fff;border-color:var(--ink)}

/* ---------- table */
.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:auto;margin-bottom:16px}
table{width:100%;border-collapse:collapse;font-size:13px}
thead tr{background:#f6f8f3}
th{text-align:left;padding:11px 14px;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:1.5px solid var(--line);white-space:nowrap}
th.num,td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
td{padding:10px 14px;vertical-align:middle;border-bottom:1px solid var(--line)}
td.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}
tbody tr:last-child td{border-bottom:none}
tbody tr.click{cursor:pointer}tbody tr.click:hover{background:#fbfcf8}
.empty{padding:28px;text-align:center;color:var(--muted);font-size:13px}
.badge{display:inline-block;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.b-green{background:#E3F1EA;color:#2E7D5B}.b-red{background:var(--redBg);color:var(--red)}.b-amber{background:var(--amberBg);color:var(--amber)}
.b-lime{background:var(--limeSoft);color:var(--limeText)}.b-gray{background:#EEF1EC;color:var(--muted)}.b-blue{background:var(--blueBg);color:var(--blue)}.b-ink{background:var(--ink);color:#fff}

/* ---------- forms */
.field{margin-bottom:12px}
.field label{font-size:12px;font-weight:700;display:block;margin-bottom:5px;color:var(--ink2)}
.field input,.field select,.field textarea{width:100%;padding:9px 11px;border-radius:9px;border:1px solid var(--line);font-size:13.5px;color:var(--text);background:#fff}
.field textarea{min-height:76px;resize:vertical;line-height:1.5}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--lime);border-color:var(--lime)}
.field.chk{display:flex;align-items:center;gap:10px}.field.chk input{width:18px;height:18px}.field.chk label{margin:0}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.f3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.hint{font-size:11px;color:var(--muted);margin-top:4px}
.sub-editor{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fcfdf9;margin-bottom:10px}
.sub-editor .se-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.sub-editor .se-head b{flex:1;font-size:12.5px;color:var(--ink)}
.sub-editor .field{margin-bottom:8px}
.sub-add{width:100%;border:1.5px dashed var(--line);background:#fff;border-radius:10px;padding:9px;font-weight:600;color:var(--green);cursor:pointer;font-size:12.5px}
.rowtbl td{padding:4px 6px}.rowtbl input{width:100%;padding:7px 8px;border:1px solid var(--line);border-radius:7px;font:inherit}
.editor-layout{display:grid;grid-template-columns:1fr 300px;gap:16px}
.editor-side .panel{position:sticky;top:16px}
.status-flow{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:11.5px;color:var(--muted);margin:6px 0 10px}
.status-flow span{padding:3px 10px;border-radius:99px;background:#EEF1EC}
.status-flow span.on{background:var(--ink);color:#fff;font-weight:700}

/* ---------- modal / toast */
.overlay{position:fixed;inset:0;background:rgba(7,40,30,.5);display:grid;place-items:center;z-index:50;padding:20px}
.modal{background:#fff;border-radius:16px;padding:24px;width:min(560px,calc(100vw - 40px));max-height:92vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal.wide{width:min(900px,calc(100vw - 40px))}
.mhead{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px;gap:12px}
.mhead h3{font-size:17px;font-weight:800;color:var(--ink)}
.mhead p{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5}
.mhead .x{cursor:pointer;color:var(--muted);border:none;background:none;display:flex}
.mhead .x svg{width:18px;height:18px}
.savebar{display:flex;gap:10px;margin-top:16px;justify-content:flex-end;flex-wrap:wrap}
.toast{position:fixed;bottom:24px;right:24px;background:var(--ink);color:#fff;padding:13px 18px;border-radius:12px;font-size:13px;font-weight:500;box-shadow:0 10px 30px rgba(0,0,0,.3);z-index:70;max-width:380px;display:flex;align-items:center;gap:10px;opacity:0;transform:translateY(10px);transition:all .25s;pointer-events:none}
.toast.show{opacity:1;transform:translateY(0)}
.toast.err{background:var(--red)}
.toast svg{width:17px;height:17px;color:var(--lime);flex-shrink:0}

/* ---------- login */
.loginscreen{position:fixed;inset:0;background:radial-gradient(900px 500px at 100% 0%,rgba(184,238,88,.25),transparent 60%),var(--ink);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto}
.loginbox{background:#fff;border-radius:22px;padding:30px 28px;width:100%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.loginlogo{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.loginlogo img{width:52px;height:52px;border-radius:14px}
.loginlogo b{font-size:20px;color:var(--ink);display:block}
.logintag{font-size:11px;color:var(--limeText);letter-spacing:1px;text-transform:uppercase;font-weight:700}
.loginhead{font-size:18px;font-weight:800;color:var(--ink);margin-top:16px}
.loginsub{font-size:12.5px;color:var(--muted);margin-bottom:14px}
.loginerr{color:var(--red);font-size:12.5px;margin:6px 0}
.loginnote{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.5;text-align:center}

/* ---------- kanban lead */
.kanban{display:grid;grid-template-columns:repeat(7,minmax(190px,1fr));gap:10px;overflow-x:auto;padding-bottom:8px}
.kcol{background:#f3f6ee;border:1px solid var(--line);border-radius:12px;padding:10px;min-height:200px}
.kcol h4{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:8px;display:flex;justify-content:space-between}
.kcard{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;cursor:pointer;font-size:12.5px}
.kcard:hover{border-color:var(--lime)}
.kcard b{display:block;color:var(--ink)}
.kcard .t2{margin-top:3px}
.kcard.stale{border-left:3px solid var(--amber)}.kcard.overdue{border-left:3px solid var(--red)}
.act{border-left:2px solid var(--line);padding:4px 0 4px 12px;margin-left:6px;font-size:12.5px}
.act .t2{font-size:11px}
.thumb{width:120px;height:80px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#eee}
.dropzone{width:100%;padding:22px;border-radius:12px;border:2px dashed var(--lime);background:var(--limeSoft);color:var(--ink);cursor:pointer;font-size:13.5px;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.dropzone svg{width:26px;height:26px;color:var(--green)}
pre.log{background:#0f2a21;color:#d7e8dc;font-size:11.5px;padding:12px;border-radius:10px;overflow:auto;max-height:320px;white-space:pre-wrap}
.guide h3{font-size:15px;color:var(--ink);margin:18px 0 6px}.guide p,.guide li{font-size:13.5px;line-height:1.65}.guide ul,.guide ol{margin:4px 0 8px 20px}

/* ---------- mobile */
.mobilebar{display:none}
@media(max-width:900px){
  .appshell{flex-direction:column}
  aside{display:none}
  main{padding:0}
  .mobilebar{display:flex;align-items:center;gap:10px;background:var(--ink);padding:10px 16px;position:sticky;top:0;z-index:30}
  .mobilebar .mlogo{display:flex;align-items:center;gap:8px;flex:1;color:#fff}.mobilebar .mlogo img{width:28px;height:28px;border-radius:8px;background:#fff}
  .mobilebar .menubtn{background:var(--lime);border:none;border-radius:999px;padding:7px 12px;font-weight:700;color:var(--ink);cursor:pointer;font-size:12px}
  .mobile-menu{position:fixed;inset:0;background:var(--ink);z-index:40;padding:16px;overflow-y:auto}
  .topbar{margin-bottom:14px;padding:14px 16px 0;gap:10px}.topbar h2{font-size:19px}
  #view{padding:0 16px 24px}
  .grid4{grid-template-columns:1fr 1fr;gap:10px}
  .grid3,.grid2,.panels,.editor-layout{grid-template-columns:1fr}
  .f3{grid-template-columns:1fr 1fr}.f2{grid-template-columns:1fr}
  .kanban{grid-template-columns:repeat(7,220px)}
  .editor-side .panel{position:static}
}
