/* ==========================================================
   Panel Admin — gaya gelap agar senada dengan situs
   ========================================================== */
:root{
  --accent:#D4AF37;
  --bg:#0B0B0D;
  --panel:#121215;
  --panel-2:#17171b;
  --card:rgba(255,255,255,.04);
  --line:rgba(255,255,255,.1);
  --line-2:rgba(255,255,255,.17);
  --text:#F4F1EA;
  --muted:#a29c90;
  --muted-2:#7c776d;
  --danger:#E5484D;
  --ok:#3DD68C;
  --warn:#F5A524;
  --r:14px;
  --side-w:250px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);font-size:15px;line-height:1.6;
  -webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;line-height:1.25;letter-spacing:-.01em}
p{margin:0}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
svg{width:19px;height:19px;fill:currentColor;flex:none}
.muted{color:var(--muted)}
.small{font-size:13px}
::selection{background:var(--accent);color:#0b0b0d}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.13);border-radius:99px;border:3px solid var(--bg)}

/* ---------- tombol & input ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:11px;
  border:1px solid transparent;font-weight:600;font-size:14px;cursor:pointer;transition:.2s;white-space:nowrap}
.btn svg{width:17px;height:17px}
.btn-gold{background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 62%,#fff),var(--accent));color:#0b0b0d;
  box-shadow:0 14px 32px -18px var(--accent)}
.btn-gold:hover{filter:brightness(1.08);transform:translateY(-1px)}
.btn-ghost{border-color:var(--line-2);background:var(--card);color:var(--text)}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-danger{border-color:color-mix(in srgb,var(--danger) 45%,transparent);background:color-mix(in srgb,var(--danger) 12%,transparent);color:#ff9c9f}
.btn-danger:hover{background:var(--danger);color:#fff;border-color:transparent}
.btn-sm{padding:8px 13px;font-size:13px;border-radius:9px}
.btn-block{width:100%}
.icon-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--card);
  display:grid;place-items:center;cursor:pointer;color:var(--muted);transition:.2s}
.icon-btn:hover{color:var(--accent);border-color:var(--accent)}

label.f{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2);margin-bottom:7px}
.input,.select,textarea.input{width:100%;padding:11px 13px;border-radius:11px;border:1px solid var(--line);
  background:#0e0e11;outline:0;font-size:14.5px;transition:.2s}
textarea.input{resize:vertical;min-height:96px;line-height:1.6}
.input:focus,.select:focus,textarea.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.select option{background:#141417}
.input::placeholder,textarea.input::placeholder{color:var(--muted-2)}
.hint{font-size:12.5px;color:var(--muted-2);margin-top:6px}

.field{margin-bottom:17px}
.row{display:grid;gap:15px}
.row.c2{grid-template-columns:1fr 1fr}
.row.c3{grid-template-columns:repeat(3,1fr)}
@media(max-width:820px){.row.c2,.row.c3{grid-template-columns:1fr}}

/* switch */
.switch{display:flex;align-items:center;gap:12px;padding:13px 15px;border-radius:12px;border:1px solid var(--line);
  background:var(--card);cursor:pointer;transition:.2s}
.switch:hover{border-color:var(--line-2)}
.switch input{display:none}
.switch .track{width:44px;height:25px;border-radius:99px;background:#2a2a30;position:relative;transition:.24s;flex:none}
.switch .track::after{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:99px;background:#8b8b93;transition:.24s}
.switch input:checked + .track{background:color-mix(in srgb,var(--accent) 35%,transparent)}
.switch input:checked + .track::after{transform:translateX(19px);background:var(--accent)}
.switch .lbl{min-width:0}
.switch .lbl b{display:block;font-size:14px}
.switch .lbl span{font-size:12.5px;color:var(--muted-2)}

/* ---------- gate login ---------- */
.gate{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;
  background:radial-gradient(800px 460px at 50% 0%,color-mix(in srgb,var(--accent) 13%,transparent),transparent 65%),var(--bg)}
.gate-card{width:min(400px,100%);padding:34px;border-radius:22px;border:1px solid var(--line);
  background:linear-gradient(160deg,var(--panel-2),var(--panel));text-align:center;box-shadow:0 40px 90px -50px #000}
.gate-logo{width:58px;height:58px;border-radius:17px;display:grid;place-items:center;margin:0 auto 18px;color:#0b0b0d;
  background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 62%,#fff),var(--accent))}
.gate-logo svg{width:26px;height:26px}
.gate-card h1{font-size:23px;margin-bottom:8px}
.gate-card p{font-size:14px;margin-bottom:20px}
.gate-card input{width:100%;padding:13px;border-radius:12px;border:1px solid var(--line);background:#0e0e11;
  outline:0;text-align:center;font-size:19px;letter-spacing:.35em;margin-bottom:14px}
.gate-card input:focus{border-color:var(--accent)}
.gate-card .hint{margin-bottom:16px}
.back-site{font-size:13px;color:var(--muted-2)}
.back-site:hover{color:var(--accent)}

/* ---------- layout ---------- */
.app{display:flex;min-height:100vh}
.side{width:var(--side-w);flex:none;border-right:1px solid var(--line);background:var(--panel);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:20}
.side-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 16px;border-bottom:1px solid var(--line)}
.side-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;color:var(--accent)}
.side-close{display:none}
.side-nav{padding:12px;display:flex;flex-direction:column;gap:3px;overflow-y:auto;flex:1}
.side-nav button{display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:11px;border:0;background:transparent;
  color:var(--muted);font-size:14.5px;font-weight:500;cursor:pointer;text-align:left;transition:.2s}
.side-nav button:hover{background:var(--card);color:var(--text)}
.side-nav button.active{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);font-weight:700;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)}
.side-foot{padding:14px;border-top:1px solid var(--line);display:grid;gap:8px}
.side-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:19;opacity:0;pointer-events:none;transition:.3s}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;gap:14px;padding:14px 26px;
  border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px)}
#menuBtn{display:none}
.topbar-title{flex:1;min-width:0}
.topbar-title h2{font-size:19px}
.save-state{font-size:12.5px;color:var(--muted-2);display:inline-flex;align-items:center;gap:6px}
.save-state::before{content:"";width:7px;height:7px;border-radius:99px;background:var(--ok)}
.save-state.dirty{color:var(--warn)}
.save-state.dirty::before{background:var(--warn)}
.save-state.saving{color:var(--muted)}
.save-state.saving::before{background:var(--muted);animation:blink 1s infinite}
.save-state.error{color:var(--danger)}
.save-state.error::before{background:var(--danger)}
@keyframes blink{50%{opacity:.3}}
.topbar-actions{display:flex;gap:9px;flex:none}
.panels{padding:26px;max-width:1180px;width:100%}

/* ---------- kartu panel ---------- */
.card{border:1px solid var(--line);border-radius:18px;background:linear-gradient(165deg,var(--panel-2),var(--panel));
  padding:22px;margin-bottom:18px}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.card-head h3{font-size:17px;display:flex;align-items:center;gap:9px}
.card-head h3 svg{color:var(--accent);width:18px;height:18px}
.card-head p{font-size:13.5px;color:var(--muted-2);margin-top:5px;max-width:70ch}
.card-head .acts{display:flex;gap:8px;flex-wrap:wrap}

.grid-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px}
.statbox{padding:18px;border-radius:16px;border:1px solid var(--line);background:var(--card)}
.statbox span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}
.statbox b{display:block;font-size:28px;margin-top:5px;color:var(--accent)}
.statbox small{color:var(--muted-2);font-size:12.5px}

/* daftar item */
.list{display:grid;gap:11px}
.item{display:flex;align-items:center;gap:14px;padding:13px;border-radius:14px;border:1px solid var(--line);background:var(--card);transition:.2s}
.item:hover{border-color:var(--line-2)}
.item.off{opacity:.62;border-style:dashed}
.item.hid{opacity:.55;border-style:dotted}
.item-img{width:56px;height:56px;border-radius:12px;overflow:hidden;flex:none;background:#0e0e11;display:grid;place-items:center;color:var(--muted-2)}
.item-img img{width:100%;height:100%;object-fit:cover}
.item-body{flex:1;min-width:0}
.item-body b{display:block;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-body .sub{font-size:12.8px;color:var(--muted-2);display:flex;gap:9px;flex-wrap:wrap;margin-top:3px}
.item-acts{display:flex;gap:6px;flex:none;align-items:center}
.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;font-size:11.5px;font-weight:700;
  background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 30%,transparent)}
.chip.warn{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}
.chip.off{background:rgba(255,255,255,.06);color:var(--muted);border-color:var(--line-2)}
.chip.gold{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 32%,transparent)}

/* image picker */
.imgpick{display:flex;gap:13px;align-items:center;flex-wrap:wrap}
.imgpick .prev{width:96px;height:96px;border-radius:14px;overflow:hidden;border:1px dashed var(--line-2);
  background:#0e0e11;display:grid;place-items:center;color:var(--muted-2);flex:none}
.imgpick .prev img{width:100%;height:100%;object-fit:cover}
.imgpick .ctrl{display:grid;gap:8px;flex:1;min-width:220px}
.imgpick .btns{display:flex;gap:8px;flex-wrap:wrap}
.drop{border:1px dashed var(--line-2);border-radius:12px;padding:10px;text-align:center;font-size:12.5px;color:var(--muted-2);cursor:pointer;transition:.2s}
.drop:hover,.drop.over{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}

/* warna */
.color-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.color-swatch{width:46px;height:46px;border-radius:12px;border:1px solid var(--line-2);padding:0;background:transparent;cursor:pointer;overflow:hidden}
.color-swatch::-webkit-color-swatch{border:0;border-radius:11px}
.color-swatch::-webkit-color-swatch-wrapper{padding:0}
.presets{display:flex;gap:8px;flex-wrap:wrap}
.preset{width:30px;height:30px;border-radius:9px;border:2px solid transparent;cursor:pointer;transition:.2s}
.preset:hover{transform:scale(1.12);border-color:#fff}

/* nav editor */
.navrows{display:grid;gap:9px}
.navrow{display:grid;grid-template-columns:1fr 1fr auto auto;gap:9px;align-items:center}
@media(max-width:700px){.navrow{grid-template-columns:1fr auto auto}.navrow .input:nth-child(2){grid-column:1/-1}}

/* modal */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(4px);z-index:60;opacity:0;pointer-events:none;transition:.25s}
.modal-backdrop.show{opacity:1;pointer-events:auto}
.modal{position:fixed;z-index:61;top:50%;left:50%;transform:translate(-50%,-47%) scale(.98);width:min(720px,calc(100% - 28px));
  max-height:88vh;display:flex;flex-direction:column;border-radius:20px;border:1px solid var(--line-2);
  background:var(--panel);box-shadow:0 50px 100px -50px #000;opacity:0;pointer-events:none;transition:.28s cubic-bezier(.2,.8,.2,1)}
.modal.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal-head h3{font-size:17px}
.modal-body{padding:22px;overflow-y:auto}
.modal-foot{padding:16px 22px;border-top:1px solid var(--line);display:flex;gap:9px;justify-content:flex-end;background:var(--panel-2);
  border-radius:0 0 20px 20px}
.modal-foot:empty{display:none}

/* toast */
.toast-wrap{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:9px;
  align-items:center;width:max-content;max-width:calc(100% - 32px);pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:99px;font-size:14px;font-weight:600;
  background:var(--panel-2);border:1px solid var(--line-2);box-shadow:0 20px 50px -25px #000;animation:tin .3s cubic-bezier(.2,.8,.2,1)}
.toast svg{width:17px;height:17px;color:var(--ok)}
.toast.err svg{color:var(--danger)}
.toast.out{opacity:0;transform:translateY(10px);transition:.3s}
@keyframes tin{from{opacity:0;transform:translateY(14px) scale(.96)}}

/* tips */
.tip{display:flex;gap:11px;padding:14px 16px;border-radius:13px;border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);
  background:color-mix(in srgb,var(--accent) 8%,transparent);font-size:13.5px;color:var(--muted)}
.tip svg{color:var(--accent);width:18px;height:18px;margin-top:1px}
.tip b{color:var(--text)}
.steps{display:grid;gap:10px;margin-top:12px}
.step{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--muted)}
.step b{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;flex:none;font-size:12px;color:#0b0b0d;
  background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 62%,#fff),var(--accent))}

.empty-state{padding:34px;text-align:center;border:1px dashed var(--line-2);border-radius:16px;color:var(--muted-2)}
.empty-state svg{width:32px;height:32px;color:var(--line-2);margin-bottom:10px}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.toolbar .input,.toolbar .select{width:auto;flex:0 1 auto}
.toolbar .grow{flex:1;min-width:180px}

@media(max-width:980px){
  .side{position:fixed;left:0;top:0;bottom:0;transform:translateX(-104%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
  .side.open{transform:none}
  .side-close{display:grid}
  .side-backdrop.show{opacity:1;pointer-events:auto}
  #menuBtn{display:grid}
  .panels{padding:18px}
  .topbar{padding:12px 16px}
  .topbar-actions .btn span{display:none}
  .item{flex-wrap:wrap}
  .item-acts{width:100%;justify-content:flex-end}
}
