/* ============================================================
   CBT UIN Jakarta — app.css (token + komponen bersama)
   Palet: warna logo UIN Jakarta (solid, tanpa gradasi,
   kecuali .hero dan .score-card yang boleh navy -> biru globe)
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Amiri:wght@400;700&family=Lora:wght@400;500;600;700&display=swap');

:root{
  --navy:#1A3683;
  --navy-dark:#12265C;
  --blue:#3F89C2;
  --blue-light:#D2E7F8;
  --gold:#D8BE00;
  --gold-soft:#F2D024;
  --gold-text:#7A6500;
  --green:#0D8A47;
  --green-soft:#DDF3E6;
  --red:#C0392B;
  --red-soft:#FBE3E0;
  --bg:#E8F2FB;
  --surface:#FFFFFF;
  --surface-2:#D9EAF8;
  --text:#16213A;
  --muted:#54708F;
  --border:#C6DDF2;
  --shadow:0 8px 28px rgba(26,54,131,.10);
  --radius:14px;
}
[data-theme="dark"]{
    --navy:#2E55A8;
    --navy-dark:#1A3683;
    --blue:#5B9CD2;
    --blue-light:#1B2F55;
    --gold:#E5C900;
    --gold-soft:#F2D024;
    --gold-text:#F2D024;
    --green:#2FBF71;
    --green-soft:#123B28;
    --red:#E57373;
    --red-soft:#4A1D1D;
    --bg:#0B1226;
    --surface:#182449;
    --surface-2:#1E2E57;
    --text:#EAF0FB;
    --muted:#9FB0D0;
    --border:#2B3D6B;
    --shadow:0 10px 32px rgba(0,0,0,.45);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);color:var(--text);font-size:16px;line-height:1.6;
}
[dir="auto"],.arab{font-family:'Amiri',serif}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.25;margin:0 0 8px}
p{margin:0 0 12px}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:16px;color:var(--text)}
img{max-width:100%}

/* ---------- tombol ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 22px;border-radius:10px;border:1px solid transparent;
  font-weight:700;font-size:16px;transition:.15s}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--navy-dark)}
.btn-gold{background:var(--gold);color:#12265C;box-shadow:0 4px 14px rgba(216,190,0,.35)}
.btn-gold:hover{background:var(--gold-soft)}
.btn-outline{background:transparent;border-color:var(--border);color:var(--text)}
.btn-outline:hover{border-color:var(--blue)}
.btn-green{background:var(--green);color:#fff}
.btn-danger{background:var(--red);color:#fff}
.btn-block{width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-sm{padding:8px 13px;font-size:14px;border-radius:8px}

/* ---------- kartu & panel ---------- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:20px}
.card h2{font-size:20px}
.muted{color:var(--muted)}
.small{font-size:14px}
.mt{margin-top:16px}.mb{margin-bottom:16px}
.grid{display:grid;gap:16px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}

/* ---------- hero (satu-satunya gradasi: navy -> biru globe) ---------- */
.hero{background:linear-gradient(135deg,var(--navy) 0%,var(--blue) 100%);
  color:#fff;border-radius:var(--radius);padding:26px 24px}
.hero h1{font-size:26px}
.hero p{opacity:.92;margin-bottom:0}
.hero .gold-line{height:4px;width:64px;background:var(--gold);border-radius:4px;margin:12px 0}

/* ---------- form ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:14px;font-weight:700;margin-bottom:6px;color:var(--muted)}
.input,select.input,textarea.input{width:100%;padding:12px;border-radius:10px;
  border:1px solid var(--border);background:var(--surface);outline:none}
.input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-light)}
textarea.input{min-height:150px;resize:vertical;line-height:1.6}

/* ---------- badge / lencana ---------- */
.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;
  font-size:13px;font-weight:700}
.badge-green{background:var(--green-soft);color:var(--green)}
.badge-red{background:var(--red-soft);color:var(--red)}
.badge-gold{background:#FBF3C4;color:var(--gold-text)}
.badge-navy{background:var(--blue-light);color:var(--navy)}
.badge-grey{background:var(--surface-2);color:var(--muted)}

/* ---------- layout dalam (sidebar) ---------- */
.layout{display:flex;min-height:100vh}
/* ---------- sidebar / drawer kiri (item besar + chevron) ---------- */
.sidebar{width:248px;flex-shrink:0;background:var(--navy);color:#fff;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:10px;padding:20px 18px;border-bottom:1px solid rgba(255,255,255,.15)}
.brand img{width:38px;height:38px;background:#fff;border-radius:10px;padding:3px;object-fit:contain}
.brand b{font-size:17px;line-height:1.2}
.brand small{display:block;font-size:12px;opacity:.75;font-weight:400}
.menu{padding:14px 12px;display:flex;flex-direction:column;gap:4px;flex:1}
.menu a{display:flex;align-items:center;gap:12px;padding:14px 14px;font-size:17px;border-radius:9px;
  color:#DCE6F8;font-weight:600;text-decoration:none}
.menu a:hover{background:rgba(255,255,255,.10);text-decoration:none}
.menu a.active{background:var(--gold);color:#12265C}
.sidebar .foot{padding:14px 18px;border-top:1px solid rgba(255,255,255,.15);font-size:13px;opacity:.8}
.layout.nav-collapsed .sidebar{display:none}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:12px;padding:14px 20px;
  background:var(--surface);border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:20}
.topbar h1{font-size:19px;margin:0;flex:1}
/* tombol MENU ala Bow Valley: kotak emas, ikon grid + teks MENU */
.toggle{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  background:var(--gold);color:#12265C;border:none;border-radius:12px;
  width:56px;height:56px;padding:0;flex-shrink:0;cursor:pointer}
.toggle svg{width:22px;height:22px}
.toggle span{font-size:11px;font-weight:800;letter-spacing:.1em;line-height:1}
.toggle:hover{background:var(--gold-soft)}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--gold);color:#12265C;
  display:flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0}
.content{padding:20px;max-width:1020px;width:100%;margin:0 auto}
.overlay{display:none}
@media(max-width:900px){
  .sidebar{position:fixed;left:0;top:0;z-index:40;width:min(360px,88vw);
    transform:translateX(-105%);transition:transform .25s ease;
    background:var(--surface);color:var(--text);
    border-right:1px solid var(--border);box-shadow:12px 0 32px rgba(10,20,50,.25)}
  .sidebar.open{transform:none}
  .layout.nav-collapsed .sidebar{display:flex}
  .sidebar .brand{border-bottom:1px solid var(--border);padding:18px}
  .sidebar .brand img{width:44px;height:44px}
  .sidebar .brand b{font-size:18px;color:var(--text)}
  .sidebar .brand small{color:var(--muted);opacity:1}
  .sidebar .menu a{color:var(--text);font-size:19px;padding:16px 14px}
  .sidebar .menu a:hover{background:var(--surface-2)}
  .sidebar .menu a.active{background:var(--gold);color:#12265C}
  .sidebar .foot{border-top:1px solid var(--border);color:var(--muted);opacity:1}
  .sidebar-close{display:flex !important}
  .overlay.active{display:block;position:fixed;inset:0;background:rgba(10,20,50,.5);z-index:30}
}

/* ---------- login ---------- */
.login-wrap{display:flex;min-height:100vh}
.login-brand{flex:1;color:#fff;display:flex;flex-direction:column;
  justify-content:center;align-items:center;padding:40px;text-align:center;gap:6px;
  background:
    radial-gradient(420px 220px at 85% 8%,rgba(63,137,194,.55),rgba(63,137,194,0) 70%),
    radial-gradient(360px 360px at 8% 95%,rgba(216,190,0,.16),rgba(216,190,0,0) 65%),
    linear-gradient(150deg,#12265C 0%,#1A3683 55%,#3F89C2 100%)}
.login-brand img{width:148px;background:#fff;border-radius:22px;padding:14px;
  margin-bottom:12px;box-shadow:0 14px 34px rgba(0,0,0,.30);object-fit:contain}
.brand-chip{display:inline-block;padding:6px 14px;border:1px solid rgba(242,208,36,.65);
  color:var(--gold-soft);border-radius:999px;font-size:12px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase}
.login-brand h1{font-size:32px;font-weight:800;letter-spacing:.07em}
.login-brand .gold-line{height:4px;width:64px;background:var(--gold);border-radius:4px;margin:10px 0}
.login-brand p{opacity:.92;max-width:420px}
.login-form{flex:1;display:flex;justify-content:center;align-items:center;padding:20px}
.login-card{width:100%;max-width:400px;border-radius:18px;padding:28px}
.login-card h2{font-size:22px}
@media(max-width:820px){
  .login-wrap{flex-direction:column}
  .login-brand{padding:28px 20px}
  .login-brand h1{font-size:22px}
  .login-brand img{width:120px}
}

/* ---------- pilihan (mapel/paket/tipe) ---------- */
.option-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.option-item{padding:16px 12px;border:1px solid var(--border);border-radius:12px;
  background:var(--surface);text-align:center;font-weight:700;cursor:pointer;transition:.15s}
.option-item:hover{border-color:var(--blue)}
.option-item.active{background:var(--navy);border-color:var(--navy);color:#fff}
.option-item.active .sub{color:#DCE6F8}
.option-item .sub{display:block;font-size:13px;font-weight:500;color:var(--muted);margin-top:4px}
.steps{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.step{flex:1;min-width:110px;padding:10px;border-radius:10px;background:var(--surface-2);
  font-weight:700;font-size:14px;color:var(--muted);text-align:center;border:1px solid var(--border)}
.step.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.step.done{background:var(--green-soft);color:var(--green);border-color:var(--green)}

/* ---------- tabel ---------- */
table{width:100%;border-collapse:collapse;font-size:15px}
th,td{padding:10px 8px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
th{color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.04em}
tr:last-child td{border-bottom:none}
.table-wrap{overflow-x:auto}

/* ---------- riwayat ---------- */
.history-card{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--border)}
.history-card:last-child{border-bottom:none}
.history-score{font-size:26px;font-weight:800;min-width:56px;text-align:center}
.score-green{color:var(--green)}.score-yellow{color:var(--gold-text)}.score-red{color:var(--red)}
.history-title{font-weight:700}
.history-meta{font-size:14px;color:var(--muted)}

/* ---------- stat ---------- */
.stat-num{font-size:30px;font-weight:800;color:var(--navy)}
.stat-label{font-size:14px;color:var(--muted);font-weight:600}

/* ---------- toast & modal ---------- */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
  background:var(--navy);color:#fff;padding:12px 18px;border-radius:10px;
  box-shadow:var(--shadow);z-index:100;display:none;max-width:90vw;text-align:center}
.modal-bg{display:none;position:fixed;inset:0;background:rgba(10,20,50,.55);
  z-index:90;align-items:center;justify-content:center;padding:16px}
.modal-bg.open{display:flex}
.modal{background:var(--surface);border-radius:var(--radius);padding:24px;max-width:440px;width:100%}
.modal h3{font-size:20px}

/* ---------- footer ---------- */
.footer{text-align:center;padding:18px;color:var(--muted);font-size:14px}
.notice{background:var(--blue-light);border:1px solid var(--blue);color:var(--text);
  border-radius:10px;padding:12px 14px;font-size:15px}
.notice-gold{background:#FBF3C4;border-color:var(--gold);color:#4A3F00}
[data-theme="dark"] .notice-gold{background:#3A3200;border-color:var(--gold);color:#F2D024}

/* ============================================================
   v3 (14 Nov 2026) — motif orbit emas UIN, dialog custom,
   gerbang mulai ujian, panel Daftar Soal ala TKA
   ============================================================ */
/* ---------- motif orbit emas (lingkaran pita logo UIN) ---------- */
.login-brand{position:relative;overflow:hidden}
.hero{position:relative;overflow:hidden}
.orbit{position:absolute;pointer-events:none;line-height:0}
.orbit svg{display:block}
.orbit-a{width:360px;height:360px;right:-120px;top:-100px;opacity:.45;transform:rotate(10deg)}
.orbit-b{width:280px;height:280px;left:-110px;bottom:-130px;opacity:.28;transform:rotate(-14deg)}
.hero .orbit-a{width:300px;height:300px;right:-70px;top:-140px;opacity:.4}
.hero .orbit-b{display:none}
/* ---------- blok ucapan terima kasih (beranda) ---------- */
.thanks{margin-top:16px;max-width:430px;text-align:left;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.14);border-left:3px solid var(--gold);
  border-radius:12px;padding:12px 14px}
.thanks b{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold-soft);margin-bottom:4px}
.thanks p{margin:0;font-size:14px;line-height:1.65;opacity:.96}
/* ---------- dialog konfirmasi custom ---------- */
.confirm-modal{border-top:4px solid var(--gold);text-align:center}
.confirm-icon{width:52px;height:52px;margin:2px auto 12px;border-radius:50%;
  background:#FBF3C4;color:#8A7600;font-size:26px;font-weight:800;
  display:flex;align-items:center;justify-content:center}
.confirm-modal h3{margin-bottom:6px}
.confirm-modal .exam-nav{margin-top:18px}
.toast{border-left:4px solid var(--gold);font-weight:600}
/* ---------- gerbang mulai ujian (overlay layar penuh) ---------- */
.start-gate{position:fixed;inset:0;z-index:80;display:flex;align-items:center;
  justify-content:center;padding:16px;background:var(--bg)}
.start-gate.hidden{display:none}
.start-gate .card{max-width:480px;width:100%;text-align:center;position:relative;
  overflow:hidden;padding:28px 24px}
.start-gate .orbit-a{width:240px;height:240px;right:-90px;top:-90px;opacity:.35}
.start-gate .orbit-b{width:200px;height:200px;left:-80px;bottom:-100px;opacity:.25}
.start-gate h3{font-size:22px}
.start-gate .gate-info{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:12px 0}
/* ---------- tombol layar penuh di topbar ---------- */
.icon-btn{width:38px;height:38px;border-radius:9px;border:1px solid var(--border);
  background:var(--surface);color:var(--text);font-size:17px;flex-shrink:0}
.icon-btn:hover{border-color:var(--blue)}

/* ---------- v4 (14 Nov 2026): aksesibilitas ---------- */
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.menu a .ic{width:19px;height:19px;flex-shrink:0}
.theme-fab{position:fixed;top:14px;right:14px;z-index:50;box-shadow:var(--shadow)}

/* ---------- v5 (14 Nov 2026): drawer menu ala Hull, warna kita ---------- */
.menu a::after{content:"›";margin-left:auto;font-size:22px;line-height:1;
  opacity:.55;font-weight:800}
.menu a.active::after{opacity:1}
.sidebar-close{display:none;margin-left:auto;background:transparent;border:none;
  color:var(--text);font-size:18px;width:38px;height:38px;border-radius:9px;
  align-items:center;justify-content:center;flex-shrink:0}
.sidebar-close:hover{background:var(--surface-2)}
