*{box-sizing:border-box} :root{--navy:#142d52;--blue:#2563eb;--blue2:#eaf1ff;--bg:#f3f6fb;--text:#17243b;--muted:#6b7890;--line:#e2e8f0;--green:#13845b;--red:#c0394b}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--blue);text-decoration:none}.login-page{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at top left,#dce8ff,transparent 42%),var(--bg)}.login-card{background:#fff;width:min(100%,430px);padding:34px;border:1px solid var(--line);border-radius:22px;box-shadow:0 18px 55px #16345b12}.brand-mark{height:54px;width:64px;border-radius:15px;display:grid;place-items:center;background:var(--navy);color:white;font-weight:900;font-size:19px;letter-spacing:1px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.7px;color:var(--blue);margin:18px 0 8px}.login-card h1{font-size:28px;line-height:1.2;margin:0 0 10px}.muted{color:var(--muted);line-height:1.55}.small{font-size:12px}form label{display:block;font-weight:700;font-size:13px;margin:16px 0 7px}input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;padding:12px 13px;border:1px solid #d5deeb;border-radius:10px;background:#fff;font:inherit;color:var(--text);outline:none}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2563eb18}.btn{border:0;border-radius:10px;padding:11px 16px;display:inline-flex;align-items:center;justify-content:center;font-weight:750;cursor:pointer;font-size:13px;white-space:nowrap}.btn:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--blue);color:white}.secondary{background:#edf2f8;color:var(--navy)}.danger{background:#fff0f1;color:var(--red)}.full{width:100%;margin-top:22px}.footnote{font-size:12px;color:var(--muted);margin-top:24px}.admin-link{display:block;text-align:center;margin-top:20px;font-size:13px}.alert{background:#fff0f1;color:#a12536;padding:12px;border-radius:10px;margin:14px 0;font-size:13px}.notice{background:#e8fff5;color:#08714b;padding:12px 15px;border-radius:10px;margin-bottom:18px}.exam-body{min-height:100vh}.exam-header{background:white;border-bottom:1px solid var(--line);padding:17px 4vw;display:flex;align-items:center;justify-content:space-between;gap:20px}.exam-header .eyebrow{margin:0 0 5px}.exam-header strong{display:block;font-size:17px}.exam-header small{display:block;color:var(--muted);margin-top:5px}.timer-wrap{background:#fff4e7;border:1px solid #ffe1ba;border-radius:12px;padding:9px 15px;text-align:center;min-width:120px}.timer-wrap span{display:block;font-size:11px;color:#9a5b12}.timer-wrap strong{font-variant-numeric:tabular-nums;font-size:22px;color:#a44d00}.exam-layout{max-width:1300px;margin:25px auto;padding:0 22px;display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:22px}.question-panel,.navigator,.admin-section{background:white;border:1px solid var(--line);border-radius:17px;padding:24px;box-shadow:0 8px 30px #16345b08}.question-top{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line);padding-bottom:15px}.question-title{font-size:20px;line-height:1.6;margin:24px 0}.question-image{display:block;max-width:100%;max-height:360px;object-fit:contain;margin:15px 0;border-radius:10px}.options{display:grid;gap:11px}.option{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);padding:13px;border-radius:12px;cursor:pointer;line-height:1.5}.option:hover{border-color:#9bb8f8}.option.chosen{background:var(--blue2);border-color:var(--blue)}.option input{margin-top:5px;accent-color:var(--blue)}.option-key{display:grid;place-items:center;min-width:27px;height:27px;border-radius:8px;background:#eef2f8;font-size:12px;font-weight:800}.chosen .option-key{background:var(--blue);color:white}.question-actions{display:flex;justify-content:space-between;gap:12px;margin-top:28px;padding-top:18px;border-top:1px solid var(--line)}.navigator h3{margin:0}.palette{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:16px 0}.palette-btn{height:39px;border:1px solid var(--line);border-radius:9px;background:white;font-weight:750;cursor:pointer}.palette-btn.active{outline:2px solid var(--blue);border-color:var(--blue)}.palette-btn.answered{background:var(--blue);color:white;border-color:var(--blue)}.success-mark{height:58px;width:58px;border-radius:50%;display:grid;place-items:center;background:#e2f9ee;color:var(--green);font-size:30px;font-weight:900;margin-bottom:15px}.result-card{text-align:center}.result-card .success-mark{margin-left:auto;margin-right:auto}.score{font-size:56px;font-weight:850;color:var(--blue);margin:24px}.score small{display:block;font-size:12px;color:var(--muted);font-weight:600;letter-spacing:1px;text-transform:uppercase}.admin-body{background:#f4f7fb}.admin-header{background:var(--navy);color:white;padding:22px max(22px,calc((100% - 1200px)/2));display:flex;justify-content:space-between;align-items:center;gap:20px}.admin-header h1{font-size:23px;margin:4px 0}.admin-header .eyebrow{color:#a9c4ff;margin:0}.admin-header a{color:#c9d9ff}.admin-main{max-width:1200px;margin:25px auto;padding:0 20px 50px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:20px}.stat{padding:20px;border-radius:14px;background:white;border:1px solid var(--line)}.stat span{display:block;color:var(--muted);font-size:13px}.stat strong{display:block;font-size:30px;margin-top:7px}.admin-section{margin:18px 0}.admin-section h2{font-size:18px;margin:0 0 17px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.form-grid label{margin-top:8px}.form-grid .wide{grid-column:1/-1}.checks{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:18px}.checks label{margin:0;display:flex;align-items:center;gap:6px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px;white-space:nowrap}th,td{text-align:left;padding:12px 13px;border-bottom:1px solid var(--line)}th{background:#edf3fc;color:#233d63;font-size:12px}tbody tr:hover{background:#f8faff}.inline{display:inline}.btn.small{padding:7px 9px;font-size:11px}.admin-section code{background:#f0f4fa;padding:4px 6px;border-radius:5px}@media(max-width:800px){.exam-layout{grid-template-columns:1fr;padding:0 12px;margin:12px auto}.navigator{order:-1;padding:16px}.palette{grid-template-columns:repeat(8,minmax(0,1fr))}.question-panel{padding:17px}.exam-header{padding:14px;align-items:flex-start}.exam-header strong{font-size:14px}.timer-wrap{min-width:100px;padding:8px}.timer-wrap strong{font-size:18px}.admin-header{align-items:flex-start;flex-direction:column}.stats{gap:8px}.stat{padding:13px}.stat strong{font-size:23px}.admin-main{padding:0 10px 30px}.admin-section{padding:16px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}}@media(max-width:420px){.palette{grid-template-columns:repeat(6,minmax(0,1fr))}.question-actions .btn{padding:10px;font-size:12px}.login-card{padding:25px 22px}}
.option-image{display:block;max-width:min(100%,420px);max-height:260px;object-fit:contain;margin:10px 0 2px;border-radius:8px}

 Icon-only table actions 
.row-actions{display:flex;align-items:center;gap:7px}.icon-btn{width:34px;height:34px;padding:0;border:1px solid var(--line);border-radius:9px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;background:#f7f9fd;transition:transform .15s,background .15s,border-color .15s}.icon-btn:hover{transform:translateY(-1px);background:#edf3ff;border-color:#bfd0f5}.icon-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.edit-icon{color:#2459bb}.delete-icon{color:#c0394b;background:#fff7f7}.delete-icon:hover{background:#ffe9eb;border-color:#f5b9c0}.login-brand{display:flex;align-items:center;justify-content:center;margin-bottom:22px}.school-logo{width:104px;height:104px;object-fit:contain;flex:none}.login-card h1{text-align:center}
 Aksi Status Peserta: Reset biru, Selesaikan oleh Admin merah dengan teks putih. 
.toolbar-actions .btn.primary{background:#2563eb !important;color:#fff !important}
.toolbar-actions .btn.danger{background:#dc2626 !important;color:#fff !important;border:1px solid #b91c1c}
.toolbar-actions .btn.danger:hover{background:#b91c1c !important;color:#fff !important}

 Header identitas dan tombol keluar pada halaman ujian siswa 
.exam-header-main{flex:1;min-width:0}
.exam-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-shrink:0}
.exam-logout{background:#dc2626;color:#fff;border:1px solid #b91c1c;text-decoration:none}
.exam-logout:hover{background:#b91c1c;color:#fff}
.exam-student-identity{max-width:1256px;margin:16px auto 0;padding:16px 22px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 28px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 6px 20px #17365d05}
.exam-student-identity>div{display:grid;grid-template-columns:minmax(112px,max-content) minmax(0,1fr);gap:8px;align-items:start;line-height:1.5;overflow-wrap:anywhere;font-size:13px}
.exam-student-identity strong{color:#193b67}
@media(max-width:1300px){.exam-student-identity{margin-left:22px;margin-right:22px}}
@media(max-width:800px){.exam-header{flex-wrap:wrap}.exam-header-main{flex:1 1 100%}.exam-header-actions{width:100%;justify-content:space-between}.exam-student-identity{margin:12px 12px 0;padding:14px;grid-template-columns:1fr;gap:9px}.exam-student-identity>div{grid-template-columns:112px minmax(0,1fr)}}
@media(max-width:420px){.exam-header-actions{align-items:stretch}.exam-header-actions .timer-wrap{flex:1}.exam-logout{align-self:center}.exam-student-identity>div{grid-template-columns:100px minmax(0,1fr);font-size:12px}}


 Tampilan halaman ujian: modern, bersih, dan responsif 
.exam-body{background:linear-gradient(180deg,#eaf1fb 0,#f5f7fb 230px,#f5f7fb 100%);color:#172b4d}
.exam-header{background:linear-gradient(112deg,#12345b 0%,#174b83 66%,#1e5aa0 100%);color:#fff;border-bottom:0;padding:18px max(22px,calc((100% - 1256px)/2));box-shadow:0 8px 22px #15385d18}
.exam-header .eyebrow{color:#a9ceff;font-size:10px;letter-spacing:1.8px;margin:0 0 6px}
.exam-header strong{color:#fff;font-size:18px;line-height:1.35}
.exam-header small{color:#d7e7ff}
.exam-header-actions{gap:12px}
.timer-wrap{background:#fff;border:1px solid #dbe7f6;border-radius:13px;padding:8px 16px;box-shadow:0 4px 14px #081d3518;min-width:126px}
.timer-wrap span{color:#64748b;font-weight:700;letter-spacing:.25px}
.timer-wrap strong{font-size:21px;color:#b45309;letter-spacing:.5px}
.exam-logout{padding:12px 17px;border-radius:11px;font-weight:800;box-shadow:0 4px 12px #07172a22}
.exam-student-identity{margin-top:18px;padding:16px 20px;background:#fff;border-color:#dce5f1;border-radius:16px;box-shadow:0 10px 25px #193b6509}
.exam-student-identity strong{color:#204c7c}
.exam-layout{margin-top:18px;margin-bottom:38px;gap:18px;align-items:start}
.question-panel,.navigator{border:1px solid #dce5f1;border-radius:18px;box-shadow:0 12px 30px #16365a0b}
.question-panel{padding:25px 27px;min-height:490px}
.navigator{padding:22px;position:sticky;top:16px}
.question-top{align-items:center;border-bottom:0;padding-bottom:13px}
#question-count{display:inline-flex;align-items:center;border-radius:999px;background:#eaf2ff;color:#1e4c84;padding:7px 12px;font-weight:800;font-size:12px}
#save-status{font-size:12px;color:#64748b;padding:6px 0}
.exam-progress{height:5px;width:100%;background:#edf2f8;border-radius:999px;overflow:hidden;margin:0 0 21px}
#exam-progress-fill{display:block;height:100%;width:0;background:linear-gradient(90deg,#2563eb,#60a5fa);border-radius:999px;transition:width .2s ease}
.question-title{color:#162b49;font-size:21px;font-weight:400;line-height:1.65;margin:18px 0 22px;overflow-wrap:anywhere}.question-title b,.question-title strong{font-weight:700}.question-title i,.question-title em{font-style:italic}.question-title u{text-decoration:underline}
.options{gap:10px}
.option{background:#fff;border-color:#dfe7f1;border-radius:13px;padding:14px 15px;transition:border-color .15s,background .15s,box-shadow .15s}
.option:hover{border-color:#8bb2f7;background:#f9fbff}
.option.chosen{background:#edf4ff;border-color:#3979e8;box-shadow:0 0 0 2px #3979e814}
.option-key{flex-shrink:0;color:#234b7e;background:#edf2f8;border-radius:9px}
.chosen .option-key{background:#2563eb;color:#fff}
.question-actions{margin-top:26px;padding-top:19px;border-top:1px solid #e8edf4}
.question-actions .btn{min-height:42px;padding-left:18px;padding-right:18px;border-radius:11px;transition:background .15s,transform .15s,box-shadow .15s}
.question-actions .btn:not(:disabled):hover{transform:translateY(-1px)}
.btn.secondary{background:#eef3f9;color:#23466f}
.btn.secondary:hover{background:#e1ebf8}
.btn.primary{background:#2563eb;color:#fff}
.btn.primary:hover{background:#1d4ed8}
.btn.finish-ready,.btn.finish-ready:hover{background:#16a34a!important;color:#fff!important;border:1px solid #15803d!important;box-shadow:0 7px 16px #16a34a28;opacity:1!important}
.btn.finish-pending,.btn.finish-pending:hover{background:#e8edf4;color:#617089;border:1px solid #d4dce8}
.navigator h3{font-size:16px;color:#1a3558;margin-bottom:7px}
.navigator .muted{font-size:12px}
.palette{gap:8px;margin:15px 0 17px}
.palette-btn{height:40px;border-color:#dfe7f1;border-radius:10px;color:#334b68;background:#fff;transition:transform .12s,border-color .12s}
.palette-btn:hover{transform:translateY(-1px);border-color:#8bb2f7}
.palette-btn.active{outline:2px solid #2563eb;outline-offset:1px}
.palette-btn.answered{background:#2563eb;border-color:#2563eb;color:#fff}
#submit.full{margin-top:15px;min-height:44px;border-radius:11px}
#submit:not(.finish-ready){background:#edf2f8;color:#52647c;border:1px solid #dfe6f0;box-shadow:none}
#submit:disabled{opacity:1;cursor:not-allowed}
#submit.finish-ready{cursor:pointer}
#submit-help{margin-top:10px;line-height:1.55}
@media(max-width:800px){
 .exam-header{padding:15px 14px}
 .exam-header strong{font-size:16px}
 .exam-student-identity{margin:12px 12px 0}
 .exam-layout{gap:12px}
 .question-panel{padding:18px 16px;min-height:0}
 .navigator{position:static}
 .question-title{font-size:18px;line-height:1.6;margin:17px 0}
 .option{padding:12px}
 .question-actions{margin-top:21px}
}
@media(max-width:420px){
 .exam-header-actions{gap:8px}
 .timer-wrap{min-width:0;padding:8px 10px}
 .timer-wrap strong{font-size:17px}
 .exam-logout{padding:11px 13px}
 .question-actions .btn{min-height:42px;padding:10px 12px;font-size:12px}
 .question-top{align-items:flex-start;flex-direction:column;gap:6px}
 .palette{grid-template-columns:repeat(6,minmax(0,1fr))}
}