/* =========================================================================
   CBT OMI — MIS Kurnia Hasan
   Sistem desain: hijau zamrud tua + emas antik, tipografi Lora (judul) &
   Plus Jakarta Sans (isi). Motif geometris delapan-titik dipakai sangat
   tipis di halaman login sebagai satu elemen ciri khas madrasah/Islami.
   ========================================================================= */
:root{
  --font-display:'Lora',Georgia,'Times New Roman',serif;
  --font-body:'Plus Jakarta Sans',-apple-system,'Segoe UI',Roboto,Arial,sans-serif;

  --omi-green:#0B6E4F; --omi-green-dark:#084F39; --omi-green-bright:#128F5E;
  --omi-teal:#0B6E73; --omi-gold:#B8862B; --omi-gold-light:#E7C878;
  --bg:#F6F4EE; --border:#E6E1D3; --text:#20241F; --muted:#6E7268; --muted-light:#9CA096;
  --text-secondary:#3D4238;
  --green-light:#E8F5EC;
  --surface:#FFFFFF; --surface-alt:#FBF9F4; --surface-muted:#F1EEE4; --row-border:#EEEADF;
  --shell-bg:#EFECE1;
  --success-bg:#EAF7EE; --success-border:#9FD8B2; --success-text:#1F6B3B; --success-strong:#15803D;
  --danger:#B23A22; --danger-bg:#FBEAE5; --danger-border:#EBB6A5;
  --warning-bg:#FBF3DE; --warning-text:#8A5A12; --warning-border:#E4BE6E;
  --badge-green-bg:#DFF2E5; --badge-green-text:#1F6B3B;
  --badge-gray-bg:#EFEBDF; --badge-gray-text:#5B5F52;
  --badge-red-bg:#FAE6E0; --badge-red-text:#96301C;
  --shadow-card:0 1px 2px rgba(32,30,20,.05),0 6px 18px -6px rgba(32,30,20,.10);
  --shadow-modal:0 24px 60px -12px rgba(20,24,18,.28);
  --shadow-sm:0 1px 2px rgba(32,30,20,.07);
  color-scheme:light;
}
[data-theme="dark"]{
  --omi-green:#34C97A; --omi-green-dark:#5EE39B; --omi-green-bright:#3ADB8A;
  --omi-teal:#2FBEC2; --omi-gold:#E6C767; --omi-gold-light:#F3DE9C;
  --bg:#12150F; --border:#2B3126; --text:#ECEAE0; --muted:#9CA593; --muted-light:#6C7663;
  --text-secondary:#C7CBBC;
  --green-light:rgba(52,201,122,.13);
  --surface:#191D14; --surface-alt:#1E2318; --surface-muted:#252B1D; --row-border:#232719;
  --shell-bg:#0D0F09;
  --success-bg:rgba(52,201,122,.12); --success-border:#2F6B4C; --success-text:#5EE39B; --success-strong:#34D399;
  --danger:#F0836F; --danger-bg:rgba(178,58,34,.18); --danger-border:#7A382E;
  --warning-bg:rgba(184,134,43,.16); --warning-text:#E6C767; --warning-border:#7A5B14;
  --badge-green-bg:rgba(52,201,122,.15); --badge-green-text:#5EE39B;
  --badge-gray-bg:#252B1D; --badge-gray-text:#B9C0AC;
  --badge-red-bg:rgba(178,58,34,.18); --badge-red-text:#F0836F;
  --shadow-card:0 1px 2px rgba(0,0,0,.4),0 8px 20px -6px rgba(0,0,0,.35);
  --shadow-modal:0 24px 60px rgba(0,0,0,.6);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;font-family:var(--font-body);background:var(--bg);color:var(--text);transition:background-color .25s ease,color .25s ease;-webkit-font-smoothing:antialiased}
a{text-decoration:none;color:inherit}
:focus-visible{outline:2px solid var(--omi-teal);outline-offset:2px}

/* ===== Tombol ganti tema (terang/gelap) ===== */
.theme-toggle{
  position:relative;width:42px;height:24px;border-radius:20px;border:1px solid var(--border);
  background:var(--surface-muted);cursor:pointer;flex-shrink:0;padding:0;transition:background-color .2s ease
}
.theme-toggle::after{
  content:"☀️";position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;
  background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:11px;
  box-shadow:0 1px 2px rgba(0,0,0,.2);transition:transform .2s ease;line-height:1
}
[data-theme="dark"] .theme-toggle{background:var(--omi-green-dark)}
[data-theme="dark"] .theme-toggle::after{content:"🌙";transform:translateX(18px)}

/* ===== Layout Admin (sidebar kiri) ===== */
.app-shell{display:flex;min-height:100vh}
.sidebar{width:250px;background:var(--surface);border-right:1px solid var(--border);flex-shrink:0;padding:16px 0;overflow-y:auto;display:flex;flex-direction:column;transition:background-color .25s ease,border-color .25s ease}
.sidebar-nav{flex:1}
.sidebar-copyright{margin-top:auto;padding:14px 20px;border-top:1px solid var(--border);font-size:11px;color:var(--muted);text-align:center}
.sidebar .brand{display:flex;align-items:center;gap:10px;padding:0 20px 16px;margin-bottom:8px;position:relative}
.sidebar .brand::after{content:"";position:absolute;left:20px;right:20px;bottom:0;height:2px;background:linear-gradient(90deg,var(--omi-gold),transparent 85%)}
.sidebar .brand img{width:32px;height:32px}
.sidebar .brand b{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:.01em}
.sidebar .grp-label{font-size:10.5px;color:var(--muted-light);text-transform:uppercase;padding:16px 20px 7px;letter-spacing:.09em;font-weight:700}
.sidebar .nav-item{position:relative;display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:14px;color:var(--text-secondary);border-radius:9px;margin:2px 12px;transition:background-color .15s ease,color .15s ease}
.sidebar-theme-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;margin:2px 12px;font-size:14px;color:var(--text-secondary)}
.sidebar .nav-item:hover{background:var(--surface-alt)}
.sidebar .nav-item.active{background:var(--green-light);color:var(--omi-green-dark);font-weight:700}
.sidebar .nav-item.active::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--omi-gold)}

.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px;transition:background-color .25s ease,border-color .25s ease}
.topbar .search-box{flex:1;max-width:340px;position:relative}
.topbar .search-box input{width:100%;padding:9px 14px 9px 36px;border:1px solid var(--border);border-radius:20px;font-size:13px;background:var(--surface-alt)}
.topbar .search-box::before{content:"🔍";position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.5}
.topbar .right-group{display:flex;align-items:center;gap:18px}
.bell-btn{position:relative;background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted)}
.topbar .user{display:flex;align-items:center;gap:10px}
.topbar .user .who{display:flex;flex-direction:column;align-items:flex-end;line-height:1.3}
.topbar .user .who b{font-size:13px}
.topbar .user .who small{color:var(--muted);font-size:12px}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(155deg,var(--omi-green),var(--omi-green-dark));color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;box-shadow:var(--shadow-sm)}

.content{padding:24px}
.breadcrumb{font-size:12.5px;color:var(--muted);margin-bottom:6px;letter-spacing:.02em}
.breadcrumb span{margin:0 6px;opacity:.6}
h1.page-title{font-family:var(--font-display);font-size:27px;font-weight:700;margin:0 0 18px;letter-spacing:-.01em}
.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px;flex-wrap:wrap}
.page-head h1.page-title{margin:0}
.page-actions{display:flex;gap:10px;flex-wrap:wrap}
.toolbar-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap}

/* ===== Kartu statistik dashboard ===== */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;position:relative;overflow:hidden;box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px -10px rgba(32,30,20,.18)}
.stat-card .num{font-family:var(--font-display);font-size:29px;font-weight:700;line-height:1.15}
.stat-card .lbl{font-size:13px;color:var(--muted);margin-top:2px}
.stat-card .sub{font-size:12px;margin-top:10px;display:flex;align-items:center;gap:5px}
.stat-card::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--bar,var(--omi-green)),transparent 130%)}
.stat-card.c-green{--bar:#0B6E4F} .stat-card.c-green .sub{color:#1F6B3B}
.stat-card.c-red{--bar:#B23A22} .stat-card.c-red .sub{color:#B23A22}
.stat-card.c-blue{--bar:#2563EB} .stat-card.c-blue .sub{color:#2563EB}
.stat-card.c-gold{--bar:#B8862B} .stat-card.c-gold .sub{color:#8A6318}

/* ===== Tabel & tombol umum ===== */
.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow-card);transition:background-color .25s ease,border-color .25s ease}
.card.table-card{padding:0;overflow:hidden}
.table-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border)}
.table-toolbar input[type=search],.table-toolbar input.tbl-search{max-width:240px;margin:0;padding:8px 12px;border-radius:8px}
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;color:var(--muted);font-weight:700;padding:12px 18px;border-bottom:1px solid var(--border);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
td{padding:12px 18px;border-bottom:1px solid var(--row-border)}
tbody tr{transition:background-color .12s ease}
tbody tr:hover{background:var(--surface-alt)}
.table-footer{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;font-size:13px;color:var(--muted);flex-wrap:wrap;gap:10px}
.table-footer select{width:auto;margin:0;padding:6px 10px;display:inline-block}
.table-empty{padding:40px 20px;text-align:center;color:var(--muted)}
.pagination{display:flex;align-items:center;gap:12px}
.pagination .btn{padding:6px 12px;font-size:13px}
.pagination .btn.disabled{opacity:.4;pointer-events:none}
.pagination-info{font-weight:600;color:var(--text-secondary);white-space:nowrap}
@media (max-width:520px){.table-footer{justify-content:center;text-align:center}.pagination{width:100%;justify-content:space-between}.pagination-info{order:-1;width:100%}}

.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:9px;border:none;font-size:14px;font-weight:600;cursor:pointer;font-family:var(--font-body);transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}
.btn:active{transform:translateY(1px)}
.btn-green{background:linear-gradient(155deg,var(--omi-green-bright),var(--omi-green-dark));color:#fff;box-shadow:0 3px 10px -3px rgba(11,110,79,.55)}
.btn-green:hover{filter:brightness(1.06)}
.btn-blue{background:#2563EB;color:#fff;box-shadow:0 3px 10px -3px rgba(37,99,235,.5)}
.btn-red{background:var(--danger);color:#fff;box-shadow:0 3px 10px -3px rgba(178,58,34,.5)}
.btn-outline{background:var(--surface);border:1px solid var(--border);color:var(--text)}
.btn-outline:hover{border-color:var(--omi-green)}
input[type=text],input[type=password],input[type=number],input[type=search],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;margin-top:4px;
  font-family:var(--font-body);background:var(--surface);color:var(--text);transition:background-color .25s ease,border-color .2s ease,box-shadow .2s ease
}
input:focus,select:focus,textarea:focus{border-color:var(--omi-teal);box-shadow:0 0 0 3px rgba(11,110,115,.12);outline:none}
label{font-size:13px;font-weight:600;color:var(--text-secondary)}
.form-row{margin-bottom:14px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.profil-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media (max-width:820px){.profil-grid{grid-template-columns:1fr}}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:38px}
.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:15px;opacity:.6;padding:4px}
.pw-toggle:hover{opacity:1}

/* ===== Editor teks kaya (toolbar + area contenteditable) - form Tambah/Edit Soal ===== */
.rte-wrap{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface);margin-top:4px}
.rte-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:6px;background:var(--surface-alt);border-bottom:1px solid var(--border)}
.rte-toolbar button{width:30px;height:30px;border:none;background:transparent;border-radius:6px;cursor:pointer;font-size:13px;color:var(--text-secondary);display:inline-flex;align-items:center;justify-content:center}
.rte-toolbar button:hover{background:var(--border)}
.rte-toolbar button.rte-formula,.rte-toolbar button.rte-fraction{width:auto;padding:0 8px;font-weight:700;color:var(--omi-green-dark)}
.rte-toolbar .rte-sep{width:1px;background:var(--border);margin:4px 3px}
.rte-box{min-height:90px;padding:10px 12px;font-size:14px;outline:none;color:var(--text)}
.rte-box:empty:before{content:attr(data-placeholder);color:var(--muted-light)}
.rte-box.rte-box-sm{min-height:44px}
.rte-formula-chip{display:inline-block;padding:1px 4px;border-radius:4px;background:var(--green-light);vertical-align:middle}
.soal-preview-card{border:2px dashed var(--success-border);border-radius:12px;padding:18px;background:var(--success-bg)}
.soal-preview-card .opsi-item{padding:8px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px;background:var(--surface);font-size:14px}
.soal-preview-card .opsi-item.opsi-benar{border-color:var(--success-border);background:var(--success-bg);font-weight:700}

/* ===== Stepper (form multi-tahap) ===== */
.stepper{display:flex;align-items:center;gap:14px;margin-bottom:22px;flex-wrap:wrap}
.step{display:flex;align-items:center;gap:10px}
.step .circ{width:34px;height:34px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;color:var(--muted);flex-shrink:0;transition:border-color .15s ease,color .15s ease,background-color .15s ease}
.step.active .circ{border-color:var(--omi-green);color:var(--omi-green)}
.step.done .circ{background:var(--omi-green);border-color:var(--omi-green);color:#fff}
.step .lbl b{display:block;font-size:13px}
.step .lbl small{color:var(--muted);font-size:12px}
.step.active .lbl b{color:var(--omi-green-dark)}
.step-sep{flex:1;min-width:24px;height:1px;background:var(--border)}

/* ===== Halaman Login =====
   Motif geometris delapan-titik (khatam) sangat tipis di latar sebagai
   satu elemen ciri khas — dipakai hanya di sini, tak diulang di tempat lain. */
.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;
  background:
    radial-gradient(circle at 12% 8%, rgba(255,255,255,.10), transparent 42%),
    linear-gradient(158deg,var(--omi-green-dark),var(--omi-green) 55%,var(--omi-teal));
  position:relative;overflow:hidden;
}
.login-wrap::before{
  content:"";position:absolute;inset:0;opacity:.16;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='84' viewBox='0 0 84 84'%3E%3Cg fill='none' stroke='%23E7C878' stroke-width='1'%3E%3Cpath d='M42 4 L58 14 L58 34 L42 44 L26 34 L26 14 Z'/%3E%3Cpath d='M42 44 L58 54 L58 74 L42 84 L26 74 L26 54 Z' transform='translate(0,-4)'/%3E%3Ccircle cx='42' cy='42' r='3'/%3E%3C/g%3E%3C/svg%3E");
  background-size:84px 84px;
}
.login-card{position:relative;background:var(--surface);border-radius:16px;padding:38px 36px;width:410px;text-align:center;box-shadow:var(--shadow-modal)}
.login-card h1{font-family:var(--font-display);font-size:21px;font-weight:700;margin:0 0 4px;letter-spacing:-.01em}
.login-card p.login-institusi{color:var(--muted);font-size:13px;margin:0 0 12px}
.login-subtitle{color:var(--omi-green-dark);font-size:10px;font-weight:600;line-height:1.6;
  padding-top:12px;margin:0 0 20px;border-top:1px solid var(--border);letter-spacing:.02em}
.login-logos{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:16px}
.login-logos img{height:52px;width:auto;max-width:64px;object-fit:contain;margin:0}
.login-copyright{margin:22px 0 0;padding-top:14px;border-top:1px solid var(--border);font-size:11px;color:var(--muted)}
.err-box{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-border);padding:10px;border-radius:8px;font-size:13px;margin-bottom:14px}

/* ===== Antarmuka Ujian Peserta (fokus, minim distraksi) ===== */
.ujian-shell{display:flex;flex-direction:column;min-height:100vh;background:var(--shell-bg);user-select:none}
.ujian-shell img{-webkit-user-drag:none;user-drag:none;pointer-events:none}
.ujian-topbar{background:linear-gradient(155deg,var(--omi-green-dark),var(--omi-green));color:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px -4px rgba(0,0,0,.25)}
.timer{background:rgba(0,0,0,.22);padding:6px 14px;border-radius:20px;font-weight:700;font-variant-numeric:tabular-nums}
.timer.warning{background:var(--danger)}
.fullscreen-gate{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:var(--shell-bg);padding:20px}
.fullscreen-gate-card{background:var(--surface);border-radius:16px;padding:32px;max-width:420px;text-align:center;box-shadow:var(--shadow-modal)}
.fullscreen-gate-card h2{margin:0 0 12px;color:var(--omi-green-dark)}
.fullscreen-gate-card p{color:var(--muted);font-size:13.5px;line-height:1.6;margin:0 0 20px}
.fullscreen-gate-note{margin-top:14px !important;font-size:11.5px !important;color:var(--muted-light) !important}
.fullscreen-warning{background:var(--danger);color:#fff;padding:10px 20px;display:flex;align-items:center;justify-content:center;gap:14px;font-size:13.5px;font-weight:600}
.fullscreen-warning button{background:#fff;color:var(--danger);border:none;border-radius:8px;padding:6px 14px;font-weight:700;cursor:pointer}
.ujian-body{flex:1;display:flex;gap:20px;padding:20px;max-width:1100px;margin:0 auto;width:100%}
.soal-panel{flex:1;background:var(--surface);border-radius:14px;padding:24px;box-shadow:var(--shadow-card)}
.soal-nomor{color:var(--omi-teal);font-weight:700;font-size:13px;margin-bottom:8px;letter-spacing:.02em}
.soal-container{font-size:16px;line-height:1.7;translate:no}
.soal-arab{direction:rtl;font-family:'Amiri',serif;font-size:22px;line-height:2;margin:14px 0;text-align:right}
.soal-gambar{max-width:100%;border-radius:8px;margin-bottom:14px}
.opsi-list{margin-top:20px;display:flex;flex-direction:column;gap:10px}
.opsi-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}
.opsi-item:hover{border-color:var(--omi-green)}
.opsi-item.selected{border-color:var(--omi-green);background:var(--success-bg)}
.opsi-huruf{width:28px;height:28px;border-radius:50%;background:var(--surface-muted);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0}
.opsi-item.selected .opsi-huruf{background:var(--omi-green);color:#fff}
.nav-panel{width:260px;background:var(--surface);border-radius:14px;padding:18px;height:fit-content;box-shadow:var(--shadow-card)}
.nav-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:14px 0}
.nav-cell{width:100%;aspect-ratio:1;border-radius:7px;border:1px solid var(--border);background:var(--surface-muted);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;cursor:pointer;color:var(--text);transition:transform .1s ease}
.nav-cell:hover{transform:translateY(-1px)}
.nav-cell.terjawab{background:var(--omi-green);color:#fff;border-color:var(--omi-green)}
.nav-cell.ragu{background:var(--omi-gold-light);border-color:var(--omi-gold);color:#3D2F06}
.nav-cell.aktif{outline:2px solid var(--omi-teal);outline-offset:2px}
.legend{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:6px;margin-top:10px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.dot{width:10px;height:10px;border-radius:3px;display:inline-block}
.soal-actions{display:flex;justify-content:space-between;margin-top:24px}

.badge{padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}
.badge-green{background:var(--badge-green-bg);color:var(--badge-green-text)}
.badge-gray{background:var(--badge-gray-bg);color:var(--badge-gray-text)}
.badge-red{background:var(--badge-red-bg);color:var(--badge-red-text)}

/* ===== Scrollbar tipis khas mode gelap ===== */
[data-theme="dark"] ::-webkit-scrollbar{width:10px;height:10px}
[data-theme="dark"] ::-webkit-scrollbar-track{background:var(--bg)}
[data-theme="dark"] ::-webkit-scrollbar-thumb{background:var(--surface-muted);border-radius:20px;border:2px solid var(--bg)}
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover{background:var(--border)}
[data-theme="dark"] .avatar{background:linear-gradient(155deg,var(--omi-green-bright),var(--omi-green));color:#0F1417}
[data-theme="dark"] .stat-card::after{opacity:.85}
[data-theme="dark"] .login-wrap::before{opacity:.10}

/* Cegah soal ujian ikut ke kertas kalau peserta paksa cetak (Ctrl+P via menu browser).
   PERBAIKAN: dulu selector body::before ini TIDAK di-scope, jadi ikut "bocor" ke SEMUA
   halaman lain yang memuat app.css dan di-print (mis. Cetak Akun Peserta, ranking) -
   teks peringatan ini ikut tercetak padahal bukan halaman ujian. Sekarang di-scope ke
   body.halaman-ujian (class ini HANYA ada di layout app/Views/layouts/peserta_ujian.php,
   satu-satunya halaman yang benar-benar berisi .ujian-shell). */
@media print {
  .ujian-shell { display: none !important; }
  body.halaman-ujian::before { content: "Mode cetak dinonaktifkan selama ujian berlangsung."; }
}

/* ===== Responsif Mobile ===== */
.hamburger-btn{display:none;background:none;border:none;font-size:20px;cursor:pointer;padding:4px 8px;flex-shrink:0}
.sidebar-overlay{display:none}

@media (max-width:880px){
  /* Panel admin: sidebar jadi drawer yang digeser masuk dari kiri, dibuka lewat tombol hamburger */
  .hamburger-btn{display:block}
  .app-shell{position:relative}
  .sidebar{
    position:fixed;top:0;left:0;bottom:0;z-index:40;
    transform:translateX(-100%);transition:transform .2s ease;
    box-shadow:2px 0 12px rgba(0,0,0,.15);
  }
  .sidebar.open{transform:translateX(0)}
  .sidebar-overlay{
    display:none;position:fixed;inset:0;background:rgba(17,24,39,.4);z-index:30;
  }
  .sidebar-overlay.show{display:block}
  .topbar{padding:12px 14px}
  .topbar .search-box{max-width:none}
  .content{padding:14px}
  h1.page-title{font-size:21px}
  .page-actions{width:100%}
  .page-actions .btn{flex:1 1 calc(50% - 5px);justify-content:center;text-align:center}
  .toolbar-form{width:100%}
  .toolbar-form>div{flex:1 1 100%}
  .toolbar-form .btn{flex:1 1 calc(50% - 5px);justify-content:center;text-align:center}

  /* Halaman ujian: soal & panel navigasi ditumpuk, bukan sejajar */
  .ujian-body{flex-direction:column;padding:14px;gap:14px}
  .soal-panel{padding:16px}
  .nav-panel{width:100%}
  .ujian-topbar{padding:10px 14px}
  .soal-arab{font-size:19px}
  .soal-actions{flex-wrap:wrap;gap:10px}
  .soal-actions>div{display:flex;gap:8px;width:100%}
  .soal-actions>div .btn{flex:1;justify-content:center}

  /* Kartu login: memenuhi hampir seluruh lebar layar (bukan dipotong 380px kaku)
     supaya proporsinya tetap terasa normal di HP, bukan seperti kotak kecil di tengah */
  .login-wrap{padding:16px}
  .login-card{width:100%;max-width:440px;padding:32px 24px}
  .login-card h1{font-size:20px}
  .login-logos img{height:48px}

  /* Form 2 kolom (tambah/edit soal, peserta, dll) ditumpuk jadi 1 kolom */
  .form-grid{grid-template-columns:1fr}
}
