:root{--bg:#f4f6f9;--card:#fff;--tx:#1f2933;--mut:#6b7785;--pri:#1d4ed8;--pri2:#1e40af;--bd:#d9dee5;--ok:#15803d;--warn:#b45309;--dan:#b91c1c}
*{box-sizing:border-box}
body{margin:0;font:16px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--tx)}
a{color:var(--pri)}
.wrap{max-width:980px;margin:0 auto;padding:16px}
.wrap.narrow{max-width:760px}
.hero{text-align:center;padding:22px 8px 6px}
.hero h1{margin:0;font-size:1.7rem}
.hero p{margin:.2rem 0 0;color:var(--mut)}
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:20px;margin:16px 0;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.card h2{margin-top:0}
.card.center{text-align:center}
.muted{color:var(--mut);font-size:.92rem}
.foot{text-align:center;font-size:.85rem}
label{display:block;margin:12px 0;font-weight:600}
label.inline{display:inline-block;margin-right:18px;font-weight:400}
.field{margin:12px 0}.field .lbl{display:block;font-weight:600;margin-bottom:4px}
input[type=text],input[type=date],input[type=password],input[type=number],select,textarea{width:100%;padding:10px 12px;border:1px solid var(--bd);border-radius:8px;font:inherit;margin-top:4px;background:#fff}
input:focus,select:focus,textarea:focus{outline:2px solid #93b4ff;border-color:var(--pri)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
@media(max-width:640px){.grid2{grid-template-columns:1fr}}
.row{display:flex;gap:8px;align-items:center}.row input{margin:0}
.err{display:block;color:var(--dan);font-weight:400;font-size:.88rem;margin-top:3px}
.btn{display:inline-block;padding:10px 18px;border:1px solid var(--bd);border-radius:8px;background:#fff;color:var(--tx);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{background:#eef2f7}
.btn.primary{background:var(--pri);border-color:var(--pri);color:#fff}.btn.primary:hover{background:var(--pri2)}
.btn.danger{background:var(--dan);border-color:var(--dan);color:#fff}
.btn.sm{padding:5px 10px;font-size:.85rem}
.btn:disabled{opacity:.6;cursor:wait}
.notice{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:12px 14px;margin:14px 0}
.notice.warn{background:#fffbeb;border-color:#fde68a}
.notice.ok{background:#f0fdf4;border-color:#bbf7d0}
.kode{font-size:1.4rem;letter-spacing:.15em;font-family:ui-monospace,Menlo,Consolas,monospace}
ul.plain{padding-left:20px}ul.plain li{margin:6px 0}
.tbl{width:100%;border-collapse:collapse;background:#fff}
.tbl th,.tbl td{border:1px solid var(--bd);padding:8px 10px;text-align:left;vertical-align:top}
.tbl thead th{background:#f0f3f8}
.tbl.small{font-size:.92rem}
.tbl.words th{width:130px;background:#f0f3f8}
.tbl.words td{font-size:1.25rem;letter-spacing:.04em}
.tbl td.num,.tbl th.num{text-align:right}

/* Tes */
.topbar{background:#0f172a;color:#e5e7eb;padding:10px 16px;font-size:.92rem}
.timerbar{position:sticky;top:0;z-index:50;background:#fff;border-bottom:2px solid var(--pri);padding:8px 16px 0;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline}
.timerbar .tlabel{color:var(--mut);font-size:.85rem}
.timerbar .tval{font:700 1.8rem/1 ui-monospace,Menlo,Consolas,monospace;color:var(--pri)}
.timerbar .tsec{color:var(--mut);font-size:.9rem}
.timerbar .progress{margin-left:auto;color:var(--mut);font-size:.9rem}
.timerbar .bar{flex:0 0 100%;height:5px;background:#e5e7eb;margin:6px -16px 0}
.timerbar .bar i{display:block;height:100%;width:100%;background:var(--pri);transition:width .25s linear}
.timerbar.warn .tval{color:var(--warn)}.timerbar.warn .bar i{background:var(--warn)}
.timerbar.danger .tval{color:var(--dan);animation:blink 1s steps(2) infinite}.timerbar.danger .bar i{background:var(--dan)}
@keyframes blink{50%{opacity:.35}}
.soal{display:flex;gap:12px;background:#fff;border:1px solid var(--bd);border-radius:10px;padding:12px 14px;margin:10px 0}
.soal .no{flex:0 0 40px;height:40px;border-radius:50%;background:#eef2ff;color:var(--pri);display:flex;align-items:center;justify-content:center;font-weight:700}
.soal .isi{flex:1;min-width:0}
.soal .q{font-size:1.05rem;margin-bottom:8px}
.soal .deret{font:600 1.35rem/1.3 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.12em;margin-bottom:8px;word-spacing:.5em}
.opsi{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:6px}
.opsi.huruf{grid-template-columns:repeat(5,minmax(48px,1fr));max-width:420px}
.opsi .o{margin:0;font-weight:400;display:flex;align-items:center;gap:8px;border:1px solid var(--bd);border-radius:8px;padding:8px 10px;cursor:pointer;background:#fafbfc}
.opsi .o:hover{background:#eef2ff}
.opsi .o:has(input:checked){background:#dbeafe;border-color:var(--pri)}
.opsi .o input{width:18px;height:18px;margin:0;flex:none}
.isian{max-width:260px;font-size:1.1rem}.isian.lebar{max-width:100%}
.gambar-soal{display:block;max-width:min(100%,340px);height:auto;margin:4px 0 10px;border-radius:4px}
.grup-gambar{position:relative}
.opsi-strip{position:sticky;top:62px;z-index:20;background:#fff;border:1px solid var(--bd);border-radius:10px;padding:6px;text-align:center;margin:10px 0}
.opsi-strip img{max-width:100%;max-height:18vh;height:auto}
.selesai-box{text-align:center;margin:26px 0 60px}
.petunjuk p{margin:.7rem 0}
.contoh{background:#f8fafc;border-left:4px solid var(--pri);padding:10px 14px;margin:12px 0;border-radius:0 8px 8px 0}
.contoh-img{max-width:100%;height:auto;border:1px solid var(--bd);border-radius:8px}

/* Admin */
.admin-nav{background:#0f172a;color:#fff;padding:10px 16px;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center}
.admin-nav a{color:#cbd5e1;text-decoration:none}.admin-nav a:hover,.admin-nav a.aktif{color:#fff}
.admin-nav .sp{margin-left:auto}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:.78rem;font-weight:600;background:#e5e7eb}
.badge.ok{background:#dcfce7;color:#166534}.badge.run{background:#fef3c7;color:#92400e}.badge.rev{background:#fee2e2;color:#991b1b}
.stat{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:16px 0}
.stat div{background:#fff;border:1px solid var(--bd);border-radius:10px;padding:12px 14px}.stat b{display:block;font-size:1.6rem}
.scroll-x{overflow-x:auto}
.kv{display:grid;grid-template-columns:170px 1fr;gap:4px 12px}.kv dt{color:var(--mut)}.kv dd{margin:0;font-weight:600}
.iqbox{font-size:2.4rem;font-weight:800;color:var(--pri);line-height:1}
@media print{.admin-nav,.noprint{display:none!important}body{background:#fff}.card{box-shadow:none;border-color:#999;break-inside:avoid}}
