/* Admin panel — memakai token warna/font yang sama dengan situs publik
   (lihat assets/css/style.css) supaya terasa satu kesatuan, tapi dengan
   layout fungsional untuk kerja tabel & form. */

.admin-body {
    background: var(--paper-2);
    min-height: 100vh;
}

/* ---------- Top bar ---------- */
.admin-topbar {
    background: var(--primary-2);
    position: sticky;
    top: 0;
    z-index: 40;
    box-shadow: var(--shadow-sm);
}
.admin-topbar-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 12px 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}
.admin-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.05rem;
    color: var(--white);
}
.admin-brand img { width: 34px; height: 34px; object-fit: contain; }
.admin-nav {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}
.admin-nav a {
    color: var(--paper-2);
    font-weight: 600;
    font-size: .88rem;
    padding: 8px 12px;
    border-radius: var(--radius);
}
.admin-nav a:hover,
.admin-nav a.active { background: var(--primary); color: var(--white); }
.admin-nav a.admin-logout { color: var(--gold-soft); }
.admin-nav-toggle {
    display: none;
    background: none;
    border: 1px solid rgba(255,255,255,.3);
    color: var(--white);
    padding: 8px 12px;
    border-radius: var(--radius);
    font-family: var(--font-mono);
    cursor: pointer;
}
@media (max-width: 900px) {
    .admin-nav-toggle { display: block; }
    .admin-nav { display: none; width: 100%; flex-direction: column; }
    .admin-nav.open { display: flex; }
}

/* ---------- Layout ---------- */
.admin-main { padding: 32px 0 64px; }
.admin-container { max-width: 1100px; margin: 0 auto; padding: 0 24px; }

.admin-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 24px;
}
.admin-head h1 { margin-bottom: 0; }

/* ---------- Dashboard cards ---------- */
.admin-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 18px;
    margin-bottom: 32px;
}
@media (max-width: 780px) { .admin-stats { grid-template-columns: repeat(2, 1fr); } }
.admin-stat-card {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 20px;
    text-decoration: none;
    display: block;
}
.admin-stat-card:hover { border-color: var(--primary); box-shadow: var(--shadow-sm); transform: translateY(-2px); transition: all var(--dur-fast) var(--ease); }
.admin-stat-card .n { font-family: var(--font-mono); font-size: 1.8rem; font-weight: 700; color: var(--primary-2); display: block; }
.admin-stat-card .lbl { font-size: .85rem; color: var(--ink-soft); font-weight: 600; }

/* ---------- Table ---------- */
.admin-table-wrap {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    overflow: hidden;
    overflow-x: auto;
}
.admin-table-wrap table { border: none; width: 100%; }
.admin-table-wrap th { background: var(--paper-2); }
.admin-table-wrap td { vertical-align: middle; }
.admin-thumb {
    width: 52px;
    height: 40px;
    border-radius: 4px;
    object-fit: cover;
    background: var(--paper-2);
    display: block;
}
.admin-row-actions { display: flex; gap: 8px; white-space: nowrap; }

.admin-empty {
    padding: 40px 20px;
    text-align: center;
    color: var(--ink-soft);
}

/* ---------- Buttons (varian kecil untuk aksi tabel) ---------- */
.btn-sm { padding: 7px 14px; font-size: .82rem; border-radius: 6px; }
.btn-primary { background: var(--primary); color: var(--white); }
.btn-primary:hover { background: var(--primary-2); transform: translateY(-1px); }
.btn-danger { background: #B9503A; color: var(--white); }
.btn-danger:hover { background: #96402E; transform: translateY(-1px); }
.btn-ghost { background: transparent; border: 1px solid var(--line); color: var(--ink); }
.btn-ghost:hover { border-color: var(--primary); color: var(--primary); }

/* ---------- Form ---------- */
.admin-form {
    background: var(--white);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 28px;
    max-width: 720px;
}
.admin-form .form-field textarea { min-height: 90px; }
.admin-form .form-hint { font-size: .8rem; color: var(--ink-soft); margin-top: -10px; margin-bottom: 16px; }
.admin-form .form-actions { display: flex; gap: 10px; margin-top: 8px; }

.admin-current-image {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
    padding: 12px;
    background: var(--paper-2);
    border-radius: var(--radius);
}
.admin-current-image img { width: 90px; height: 64px; object-fit: cover; border-radius: 4px; }
.admin-current-image .txt { font-size: .82rem; color: var(--ink-soft); }

.icon-picker {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
    gap: 10px;
    margin-bottom: 18px;
}
.icon-picker label {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 12px 8px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    cursor: pointer;
    font-size: .72rem;
    text-align: center;
    color: var(--ink-soft);
}
.icon-picker input { position: absolute; opacity: 0; pointer-events: none; }
.icon-picker svg { width: 24px; height: 24px; color: var(--primary); }
.icon-picker input:checked + svg + span,
.icon-picker label:has(input:checked) {
    border-color: var(--primary);
    background: var(--paper-2);
    color: var(--primary-2);
    font-weight: 700;
}

/* ---------- Login / Setup ---------- */
.admin-auth-wrap {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: var(--primary-2);
}
.admin-auth-card {
    background: var(--white);
    border-radius: var(--radius);
    padding: 36px;
    width: 100%;
    max-width: 400px;
    box-shadow: var(--shadow-lg);
}
.admin-auth-card .logo-row {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 20px;
}
.admin-auth-card .logo-row img { width: 46px; height: 46px; object-fit: contain; }
.admin-auth-card h1 { font-size: 1.3rem; margin-bottom: 4px; }
.admin-auth-card .subtitle { font-size: .88rem; color: var(--ink-soft); margin-bottom: 22px; }

/* ---------- Input password dengan tombol lihat/sembunyikan ---------- */
.password-field { position: relative; }
.password-field input { padding-right: 44px; }
.password-toggle {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    cursor: pointer;
    padding: 6px 8px;
    color: var(--ink-soft);
    display: flex;
    align-items: center;
}
.password-toggle:hover { color: var(--primary); }
.password-toggle svg { width: 20px; height: 20px; }
.password-toggle .icon-eye-off { display: none; }
.password-toggle.is-visible .icon-eye { display: none; }
.password-toggle.is-visible .icon-eye-off { display: block; }
