/* ============================================================================
   THEME.CSS — Design System "JobFair Indonesia"
   Dapat dipakai ulang langsung di proyek lain untuk menjaga tema & gaya seragam.
   Cukup tautkan file ini + font Google Fonts di bawah, lalu pakai kelas-kelas ini.

   Struktur file ini:
   1. Design Tokens (CSS Variables) — warna, tipografi, radius, shadow
   2. Reset & Base
   3. Layout Primitives (app shell, sidebar, topbar, content)
   4. Typography Helpers
   5. Grid & Card
   6. Badge (status berbasis makna warna)
   7. Button
   8. Form Elements
   9. List Card & Table
   10. Feedback (Alert, Empty State, Progress)
   11. Auth Card & Hero (halaman publik)
   12. Responsive Rules

   Font yang dibutuhkan (tautkan di <head> sebelum file ini):
   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500&display=swap" rel="stylesheet">

   Cara pakai mode gelap/terang: set atribut data-theme pada <html>, contoh:
   <html data-theme="light">  atau  <html data-theme="dark">
   Toggle lewat JS: document.documentElement.setAttribute('data-theme', 'dark'|'light')
   ============================================================================ */

/* ---------------------------------------------------------------------------
   1. DESIGN TOKENS
   --------------------------------------------------------------------------- */
:root{
  /* Warna Latar & Permukaan */
  --bg:#F5F7FC;              /* latar halaman utama */
  --surface:#FFFFFF;         /* latar kartu/panel/topbar */
  --surface-alt:#EEF2FB;     /* latar sekunder (widget di dalam kartu, hover state) */
  --surface-hover:#E7EDFA;   /* hover pada item nav/list */

  /* Warna Teks */
  --text:#10161F;            /* teks utama */
  --text-muted:#5B6472;      /* teks sekunder/label/meta */
  --border:#E1E6F0;          /* garis pembatas/border kartu, tabel, input */

  /* Warna Brand (Primary) — #1D6FFF, WAJIB konsisten di semua produk */
  --primary:#1D6FFF;
  --primary-hover:#1558D6;
  --primary-soft:#E8F0FF;    /* latar lembut untuk badge/highlight/hover */
  --on-primary:#FFFFFF;      /* warna teks di atas latar --primary */

  /* Warna Semantik Status — makna warna ini KONSISTEN di seluruh aplikasi:
     hijau = berhasil/positif, kuning = menunggu/proses, merah = gagal/bahaya,
     biru = aktif/informasional, abu = netral/nonaktif. Jangan pernah dibalik. */
  --success:#17A673;   --success-soft:#E4F7EF;
  --warning:#C98A0A;   --warning-soft:#FDF1DA;
  --danger:#E14F4F;    --danger-soft:#FCEAEA;
  --neutral:#6B7280;   --neutral-soft:#EEF0F3;

  /* Bayangan (Shadow) */
  --shadow-sm:0 1px 2px rgba(16,22,31,.05);   /* kartu diam */
  --shadow-md:0 8px 24px rgba(16,22,31,.08);  /* kartu hover/modal/dropdown */

  /* Radius Sudut */
  --radius:12px;      /* kartu, modal, elemen besar */
  --radius-sm:8px;     /* tombol, input, badge kecil */

  /* Tipografi */
  --font-display:'Space Grotesk',sans-serif;  /* judul, angka statistik, logo */
  --font-body:'Inter',sans-serif;              /* seluruh teks isi & UI */
  --font-mono:'IBM Plex Mono',monospace;       /* kode, tanggal presisi, referensi ID */
}

/* Mode Gelap — SETIAP token di atas WAJIB punya padanan di sini agar tema konsisten */
[data-theme="dark"]{
  --bg:#0D1320; --surface:#161D2E; --surface-alt:#1D2740; --surface-hover:#243252;
  --text:#E7ECF7; --text-muted:#93A0B8; --border:#26314A;
  --primary:#4C8DFF; --primary-hover:#6FA3FF; --primary-soft:#16233F; --on-primary:#071022;
  --success:#33C48D; --success-soft:#123227;
  --warning:#E3A93B; --warning-soft:#3A2C0F;
  --danger:#F16A6A; --danger-soft:#3A1414;
  --neutral:#93A0B8; --neutral-soft:#1D2740;
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow-md:0 12px 28px rgba(0,0,0,.45);
}

/* ---------------------------------------------------------------------------
   2. RESET & BASE
   --------------------------------------------------------------------------- */
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg); color:var(--text); font-family:var(--font-body);
  -webkit-font-smoothing:antialiased; transition:background .25s ease,color .25s ease;
}
h1,h2,h3,.brand{font-family:var(--font-display);}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}
.mono{font-family:var(--font-mono);}

/* ---------------------------------------------------------------------------
   3. LAYOUT PRIMITIVES — struktur "app shell" standar untuk aplikasi dashboard/admin
   --------------------------------------------------------------------------- */
#app-shell{display:flex;min-height:100vh;}

.sidebar{
  width:236px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);
  display:flex;flex-direction:column;padding:20px 14px;gap:4px;position:sticky;top:0;height:100vh;
}
.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 22px;}
.brand-mark{
  width:34px;height:34px;border-radius:10px;background:var(--primary);
  display:flex;align-items:center;justify-content:center;color:var(--on-primary);flex-shrink:0;
  box-shadow:0 4px 14px rgba(29,111,255,.35); /* selalu memakai rgba dari --primary, sesuaikan bila brand color berbeda */
}
.brand-name{font-weight:700;font-size:16.5px;letter-spacing:-.01em;}
.nav-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);padding:14px 12px 6px;font-weight:600;}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:var(--radius-sm);
  color:var(--text-muted);font-size:14.5px;font-weight:500;border:none;background:transparent;
  width:100%;text-align:left;transition:background .15s ease,color .15s ease;
}
.nav-item:hover{background:var(--surface-hover);color:var(--text);}
.nav-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600;}
.sidebar-footer{margin-top:auto;padding-top:14px;border-top:1px solid var(--border);}

.main-col{flex:1;min-width:0;}
.topbar{
  display:flex;align-items:center;gap:14px;padding:14px 28px;border-bottom:1px solid var(--border);
  background:var(--bg);position:sticky;top:0;z-index:20;
}
.topbar-spacer{flex:1;}
.icon-btn{
  width:38px;height:38px;border-radius:10px;border:1px solid var(--border);background:var(--surface);
  display:flex;align-items:center;justify-content:center;color:var(--text-muted);position:relative;transition:all .15s ease;
}
.icon-btn:hover{color:var(--primary);border-color:var(--primary);}
.notif-dot{position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--danger);border:2px solid var(--surface);}
.content{padding:28px 32px 60px;max-width:1180px;width:100%;margin:0 auto;}

/* ---------------------------------------------------------------------------
   4. TYPOGRAPHY HELPERS
   --------------------------------------------------------------------------- */
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);}
.page-title{font-size:26px;font-weight:700;margin:6px 0 4px;letter-spacing:-.015em;}
.page-sub{color:var(--text-muted);font-size:14.5px;margin:0 0 26px;}

/* ---------------------------------------------------------------------------
   5. GRID & CARD
   --------------------------------------------------------------------------- */
.grid{display:grid;gap:18px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:2fr 1fr;}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);}
.card-title{font-weight:700;font-size:15px;margin:0 0 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.stat-value{font-family:var(--font-display);font-size:28px;font-weight:700;margin:2px 0;}
.stat-label{font-size:13px;color:var(--text-muted);}

/* ---------------------------------------------------------------------------
   6. BADGE — status berbasis makna warna (lihat aturan di token §1)
   --------------------------------------------------------------------------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;}
.badge-dot{width:6px;height:6px;border-radius:50%;}
.badge-success{background:var(--success-soft);color:var(--success);} .badge-success .badge-dot{background:var(--success);}
.badge-warning{background:var(--warning-soft);color:var(--warning);} .badge-warning .badge-dot{background:var(--warning);}
.badge-danger{background:var(--danger-soft);color:var(--danger);} .badge-danger .badge-dot{background:var(--danger);}
.badge-primary{background:var(--primary-soft);color:var(--primary);} .badge-primary .badge-dot{background:var(--primary);}
.badge-neutral{background:var(--neutral-soft);color:var(--neutral);} .badge-neutral .badge-dot{background:var(--neutral);}

/* ---------------------------------------------------------------------------
   7. BUTTON
   --------------------------------------------------------------------------- */
.btn{border-radius:var(--radius-sm);padding:9px 16px;font-size:13.5px;font-weight:600;border:1px solid transparent;transition:all .15s ease;display:inline-flex;align-items:center;gap:7px;}
.btn-primary{background:var(--primary);color:var(--on-primary);}
.btn-primary:hover{background:var(--primary-hover);}
.btn-outline{background:var(--surface);border-color:var(--border);color:var(--text);}
.btn-outline:hover{border-color:var(--primary);color:var(--primary);}
.btn-ghost{background:transparent;color:var(--text-muted);border-color:transparent;}
.btn-ghost:hover{color:var(--text);background:var(--surface-alt);}
.btn-danger-outline{background:var(--surface);border-color:var(--danger);color:var(--danger);}
.btn-danger-outline:hover{background:var(--danger-soft);}
.btn-sm{padding:6px 12px;font-size:12.5px;}
.btn:disabled{opacity:.5;cursor:not-allowed;}

.chip{padding:7px 13px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:13px;font-weight:500;color:var(--text-muted);}
.chip.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft);}

/* ---------------------------------------------------------------------------
   8. FORM ELEMENTS
   --------------------------------------------------------------------------- */
.form-group{margin-bottom:16px;}
label{display:block;font-size:12.5px;color:var(--text-muted);margin-bottom:5px;font-weight:600;}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=datetime-local],input[type=number],select,textarea{
  width:100%;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);color:var(--text);font-family:inherit;font-size:13.5px;
}
textarea{resize:vertical;}
.checkbox{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;}

.search-box{flex:1;min-width:220px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 13px;}
.search-box input{border:none;background:transparent;outline:none;color:var(--text);font-size:14px;width:100%;font-family:inherit;}
.filter-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px;}

/* ---------------------------------------------------------------------------
   9. LIST CARD & TABLE
   --------------------------------------------------------------------------- */
.list-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:12px;transition:box-shadow .15s ease;}
.list-card:hover{box-shadow:var(--shadow-md);}
.list-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.list-card h3{margin:0 0 4px;font-size:16px;font-weight:700;}
.list-card-meta{font-size:13px;color:var(--text-muted);display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;}
.tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
.tag{font-size:11.5px;padding:3px 9px;border-radius:6px;background:var(--surface-alt);color:var(--text-muted);}
.avatar-tile{width:42px;height:42px;border-radius:10px;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-family:var(--font-display);flex-shrink:0;}

table{width:100%;border-collapse:collapse;font-size:13.5px;}
th{text-align:left;color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;border-bottom:1px solid var(--border);}
td{padding:13px 12px;border-bottom:1px solid var(--border);}
tbody tr:hover{background:var(--surface-alt);}
.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.bulk-bar{display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--primary-soft);border-bottom:1px solid var(--border);font-size:13.5px;font-weight:600;color:var(--primary);flex-wrap:wrap;}

/* ---------------------------------------------------------------------------
   10. FEEDBACK — Alert, Empty State, Progress
   --------------------------------------------------------------------------- */
.alert{padding:12px 16px;border-radius:10px;font-size:13.5px;margin-bottom:16px;border-left:3px solid;}
.alert-success{background:var(--success-soft);color:var(--success);border-color:var(--success);}
.alert-warning{background:var(--warning-soft);color:var(--warning);border-color:var(--warning);}
.alert-danger{background:var(--danger-soft);color:var(--danger);border-color:var(--danger);}

.progress-track{height:7px;background:var(--surface-alt);border-radius:999px;overflow:hidden;}
.progress-fill{height:100%;background:var(--primary);border-radius:999px;transition:width .4s ease;}
.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted);}
.divider{height:1px;background:var(--border);margin:20px 0;}

/* ---------------------------------------------------------------------------
   11. AUTH CARD & HERO — untuk halaman publik (login/register/landing)
   --------------------------------------------------------------------------- */
.auth-wrap{max-width:400px;margin:60px auto;padding:0 20px;}
.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:30px;box-shadow:var(--shadow-md);}

.hero{position:relative;border-radius:20px;padding:48px 40px;overflow:hidden;background:linear-gradient(135deg,var(--surface-alt) 0%,var(--surface) 60%);border:1px solid var(--border);margin-bottom:32px;}
.hero h1{font-size:34px;line-height:1.15;max-width:560px;margin:14px 0 14px;letter-spacing:-.02em;}
.hero p{font-size:15px;color:var(--text-muted);max-width:480px;margin:0 0 22px;}

/* ---------------------------------------------------------------------------
   12. RESPONSIVE — mobile-first untuk halaman publik/talent, sidebar disembunyikan di layar sempit
   --------------------------------------------------------------------------- */
@media (max-width:900px){
  .grid-3,.grid-2{grid-template-columns:1fr;}
  .sidebar{display:none;}
  .content{padding:18px;}
}
