/* asm.css — gaya modul Manajemen Asesmen, disamakan dengan modul BK (bk/assets/bk.css + blok CSS di bk.js):
   kartu putih bergaris tipis, judul 1rem/900, tabel kepala navy, tombol teal solid, lencana pil,
   dan kotak rekap "timbul" (keycap 3D: gradasi, kilau kapsul, bayangan tebal, watermark ikon miring).
   Semua kelas berawalan "asm-" karena Tailwind aplikasi adalah CSS statis. */
.asm{padding:0;max-width:none;margin:0;color:#334155;font-size:.78rem}
.asm *{box-sizing:border-box}
.asm-loading{padding:60px 0;text-align:center;color:#94a3b8;font-weight:600}

/* ---- kepala halaman ---- */
.asm-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.35rem;flex-wrap:wrap}
.asm-title{font-size:1rem;font-weight:900;color:#0f172a;margin:0;display:flex;align-items:center;gap:.5rem}
.asm-title i{display:none}
.asm-sub{margin:2px 0 0;font-size:.7rem;color:#64748b}
.asm-desc{margin:2px 0 1rem;font-size:.7rem;color:#64748b;line-height:1.5}

/* ---- kartu & judul seksi ---- */
.asm-box{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:1rem;margin-bottom:1rem;box-shadow:0 4px 18px rgba(15,23,42,.07)}
.asm-h3{font-size:.9rem;font-weight:900;margin:0;color:#0f172a;display:flex;align-items:center;gap:.5rem}
.asm-h3 i{color:#0f766e}
.asm-note{font-size:.7rem;color:#64748b}
.asm-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.asm-flexgrow{flex:1}

/* ---- chip / lencana ---- */
.asm-chip{display:inline-flex;align-items:center;font-size:.62rem;font-weight:900;padding:.2rem .55rem;border-radius:999px;background:#e2e8f0;color:#475569;text-transform:uppercase}
.asm-chip.ok{background:#dcfce7;color:#166534}.asm-chip.busy{background:#fef3c7;color:#92400e}.asm-chip.err{background:#fee2e2;color:#991b1b}
.asm-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.asm-chip.draf{background:#fef3c7;color:#92400e}.asm-chip.pub{background:#ccfbf1;color:#0f766e}
.asm-kode{font-size:.62rem;font-weight:900;background:#ccfbf1;color:#0f766e;border-radius:999px;padding:.15rem .5rem;margin-left:4px;text-transform:uppercase}
.asm-flags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.asm-flag{font-size:.68rem;font-weight:800;border-radius:999px;padding:.25rem .65rem}
.asm-flag.red{background:#fee2e2;color:#991b1b}.asm-flag.blue{background:#dbeafe;color:#1e40af}

/* ---- isian ---- */
.asm-in{border:1px solid #cbd5e1;border-radius:.5rem;padding:.6rem .7rem;font-size:.78rem;width:100%;min-width:0;background:#fff;color:#0f172a;transition:.15s}
.asm-in:focus{outline:none;border-color:#0f766e;box-shadow:0 0 0 2px rgba(15,118,110,.1)}
.asm-in:disabled{background:#f1f5f9;color:#94a3b8}
.asm-search{max-width:420px}.asm-sel{width:auto;min-width:150px}.asm-num{width:80px;text-align:center}

/* ---- tombol ---- */
.asm-btn{background:#0f766e;color:#fff;border:0;border-radius:.55rem;padding:.55rem .8rem;font-size:.72rem;font-weight:800;cursor:pointer;white-space:nowrap;transition:.15s;display:inline-flex;align-items:center;gap:.35rem;justify-content:center}
.asm-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.06)}
.asm-btn:disabled{cursor:not-allowed}
.asm-btn.ghost{background:#f1f5f9;color:#334155}
.asm-btn.ghost:hover:not(:disabled){background:#e2e8f0;filter:none}
.asm-btn.green{background:#16a34a;color:#fff}
.asm-btn.red{background:#fee2e2;color:#b91c1c}
.asm-btn.red:hover:not(:disabled){background:#fecaca;filter:none}
.asm-ic{border:0;background:#f1f5f9;border-radius:.5rem;width:30px;height:30px;cursor:pointer;color:#475569;margin:0 2px;transition:.15s}
.asm-ic:hover:not(:disabled){background:#ccfbf1;color:#0f766e}.asm-ic:disabled{opacity:.35;cursor:default}.asm-ic.red{color:#dc2626;background:#fee2e2}.asm-ic.red:hover:not(:disabled){background:#fecaca;color:#b91c1c}

/* ---- tabel ---- */
.asm-scroll{overflow-x:auto;max-height:62vh;overflow-y:auto;border:1px solid #e5e7eb;border-radius:.75rem;background:#fff}
.asm-tbl-wrap{overflow-x:auto;margin-top:6px}
.asm-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:.75rem}
.asm-tbl th{background:#0f172a;color:#fff;text-align:left;padding:.65rem;font-size:.68rem;font-weight:800;text-transform:uppercase;position:sticky;top:0;z-index:1}
.asm-tbl thead th:first-child{border-top-left-radius:.6rem}.asm-tbl thead th:last-child{border-top-right-radius:.6rem}
.asm-tbl td{padding:.65rem;border-bottom:1px solid #e5e7eb;vertical-align:middle}
.asm-tbl tbody tr:last-child td{border-bottom:0}
:where(.asm-tbl>tbody>tr:nth-child(odd)){background:#f1f6fc}
:where(.asm-tbl>tbody>tr:hover){background:#e6f0fb}
.asm-tbl tr.on{background:#f0fdfa}.asm-tbl tr.bad{background:#fef2f2}
.asm-tbl .c,.c{text-align:center}.w40{width:1%}.w120{width:128px}
/* teks tabel tidak turun baris; kolom pendek mengikuti isi, kolom bertulisan panjang diberi class wrap */
.asm-tbl th,.asm-tbl td{white-space:nowrap}.asm-tbl td[colspan],.asm-tbl th.wrap,.asm-tbl td.wrap{white-space:normal}
.asm-tbl.asm-rg{table-layout:auto}.asm-tbl.asm-rg select{width:100%;min-width:9.5rem}

/* ---- kotak rekap "timbul" — SAMA dengan .bkn-tile di bk.js: gradasi 160deg, bayangan tebal (keycap),
        kilau kapsul di atas, watermark ikon miring -12deg. Warna lewat --c1 (terang) --c2 (utama) --sh (tebal bawah). ---- */
.asm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));column-gap:.85rem;row-gap:1.1rem}
.asm-stats>div{--c1:#5aa2ff;--c2:#1d63e0;--sh:#154aa8;position:relative;overflow:hidden;display:block;min-height:96px;margin:0 0 6px;padding:.9rem 1rem 1rem;text-align:left;color:#fff;border:0;border-radius:1rem;
 background:linear-gradient(160deg,var(--c1) 0%,var(--c2) 100%);
 box-shadow:0 6px 0 var(--sh),0 14px 18px -4px rgba(15,23,42,.38),inset 0 2px 1px rgba(255,255,255,.5),inset 0 -8px 12px rgba(0,0,0,.16)}
.asm-stats>div:before{content:"";position:absolute;left:7%;right:7%;top:3px;height:42%;border-radius:999px;background:linear-gradient(180deg,rgba(255,255,255,.38),rgba(255,255,255,0));pointer-events:none}
.asm-stats>div:after{content:attr(data-ic);font-family:"Font Awesome 6 Free","Font Awesome 5 Free",FontAwesome;font-weight:900;position:absolute;right:-.3rem;bottom:-.6rem;z-index:0;font-size:4.7rem;line-height:1;color:#fff;opacity:.22;transform:rotate(-12deg);pointer-events:none;text-shadow:2px 3px 0 rgba(0,0,0,.28),-1px -1px 0 rgba(255,255,255,.5)}
.asm-stats b{position:relative;display:block;font-size:1.9rem;line-height:1.05;font-weight:900;color:#fff;z-index:1;text-shadow:0 2px 0 rgba(0,0,0,.25),0 0 2px rgba(255,255,255,.35)}
.asm-stats span{position:relative;display:block;margin-top:.3rem;padding-right:2.2rem;font-size:.66rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff;z-index:1;text-shadow:0 1px 0 rgba(0,0,0,.25)}
.asm-stats>div:nth-child(8n+2){--c1:#ffb457;--c2:#f97316;--sh:#b25208}
.asm-stats>div:nth-child(8n+3){--c1:#fb7a8a;--c2:#dc2626;--sh:#951b1b}
.asm-stats>div:nth-child(8n+4){--c1:#c78bff;--c2:#7c3aed;--sh:#561fae}
.asm-stats>div:nth-child(8n+5){--c1:#34d6c1;--c2:#0d9488;--sh:#0a665e}
.asm-stats>div:nth-child(8n+6){--c1:#5eea8c;--c2:#16a34a;--sh:#0d7132}
.asm-stats>div:nth-child(8n+7){--c1:#f77fbd;--c2:#db2777;--sh:#97154f}
.asm-stats>div:nth-child(8n+8){--c1:#fde068;--c2:#d99a06;--sh:#8f6204}
.asm-stats.hd-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
.asm-stats.hd-stats>.hd-h{--c1:#5eea8c;--c2:#16a34a;--sh:#0d7132}
.asm-stats.hd-stats>.hd-s{--c1:#5aa2ff;--c2:#1d63e0;--sh:#154aa8}
.asm-stats.hd-stats>.hd-i{--c1:#fde068;--c2:#d99a06;--sh:#8f6204}
.asm-stats.hd-stats>.hd-a{--c1:#fb7a8a;--c2:#dc2626;--sh:#951b1b}
.asm-stats.hd-stats>.hd-b{--c1:#a8b3c4;--c2:#64748b;--sh:#3f4a5c}

/* ---- pesan ---- */
.asm-warn{margin:.75rem 0 0;padding:.75rem .9rem .75rem 1.9rem;background:#fffbeb;border:1px solid #fde68a;border-radius:.6rem;color:#92400e;font-size:.75rem}
.asm-okmsg{margin:.75rem 0 0;padding:.75rem;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.6rem;color:#166534;font-size:.75rem;font-weight:700}
.asm-err{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.asm-empty{text-align:center;color:#94a3b8;padding:36px}.asm-empty i{font-size:38px;margin-bottom:10px;color:#99f6e4}

/* ---- pilihan kelas, tanggal, tab ---- */
.asm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.asm-kelas{display:flex;align-items:center;gap:8px;border:1px solid #e5e7eb;border-radius:.6rem;padding:10px 12px;cursor:pointer;background:#fff;transition:.15s}
.asm-kelas:hover{border-color:#5eead4;box-shadow:0 4px 12px rgba(15,23,42,.07)}
.asm-kelas.on{border-color:#0f766e;background:#f0fdfa}
.asm-kelas span{display:flex;flex-direction:column;line-height:1.2}.asm-kelas small{color:#64748b;font-size:11px}
.asm-dates{display:flex;gap:8px;flex-wrap:wrap}
.asm-date{border:1px solid #e5e7eb;background:#fff;border-radius:.6rem;padding:8px 14px;cursor:pointer;display:flex;flex-direction:column;text-align:left;line-height:1.25;transition:.15s}
.asm-date:hover{border-color:#5eead4;transform:translateY(-1px)}
.asm-date b{font-size:12px;color:#0f172a}.asm-date span{font-size:11.5px;color:#64748b}
.asm-date.on{border-color:#0f766e;background:linear-gradient(145deg,#0f766e,#0d9488);box-shadow:0 6px 14px -6px rgba(15,118,110,.7)}.asm-date.on b,.asm-date.on span{color:#fff}
.asm-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.asm-tab{border:1px solid #e5e7eb;background:#fff;padding:.45rem .9rem;font-weight:800;font-size:.72rem;color:#64748b;cursor:pointer;border-radius:99px;transition:.15s}
.asm-tab:hover{border-color:#5eead4;color:#0f766e}
.asm-tab small{font-weight:700;color:#94a3b8;margin-left:4px}
.asm-tab.on{background:#0f766e;border-color:#0f766e;color:#fff}.asm-tab.on small{color:#99f6e4}

/* ---- toast ---- */
.asm-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;transition:.25s;z-index:99999;background:#0f172a;color:#fff;padding:11px 20px;border-radius:12px;font-size:13px;font-weight:600;max-width:90vw;box-shadow:0 10px 28px rgba(15,23,42,.35)}
.asm-toast.show{opacity:1;transform:translate(-50%,0)}.asm-toast.err{background:#b91c1c}
@media (max-width:767px){.asm-search{max-width:none}.asm-tbl{font-size:.72rem}.asm-title{font-size:1.05rem}.asm-box{padding:.85rem}.asm-stats{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:.65rem;row-gap:.9rem}.asm-stats>div{min-height:88px;padding:.75rem .8rem .85rem}.asm-stats b{font-size:1.5rem}.asm-stats span{font-size:.6rem;padding-right:1.6rem}.asm-stats>div:after{font-size:3.6rem}}
@media print{.asm{display:none}}

/* ---- publikasi, tampilan penampil (akun pengawas/panitia/peserta) ---- */
.asm-pubrow{display:flex;align-items:center;gap:12px;border:1px solid #e5e7eb;border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#fff}
.asm-pubrow.on{border-color:#5eead4;background:#f0fdfa}
.asm-pubrow>i{font-size:18px;color:#0f766e;width:38px;height:38px;border-radius:.6rem;background:#ccfbf1;display:flex;align-items:center;justify-content:center}
.asm-pubtxt{flex:1;display:flex;flex-direction:column;line-height:1.35}.asm-pubtxt small{color:#64748b;font-size:12px}
.asm-state{font-weight:800}.asm-state.draf{color:#b45309}.asm-state.pub{color:#0f766e}
.asm-switch{position:relative;width:46px;height:26px;flex-shrink:0;display:inline-block}
.asm-switch input{opacity:0;width:0;height:0}
.asm-switch span{position:absolute;inset:0;background:#cbd5e1;border-radius:99px;cursor:pointer;transition:.2s}
.asm-switch span:before{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.asm-switch input:checked+span{background:#0f766e}.asm-switch input:checked+span:before{transform:translateX(20px)}
.asm-switch input:focus-visible+span{outline:2px solid #0f766e;outline-offset:2px}
.asm-day{background:#fff;border:1px solid #e5e7eb;border-left:5px solid #0f766e;border-radius:12px;padding:12px 14px;margin-bottom:12px;box-shadow:0 4px 18px rgba(15,23,42,.06)}
.asm-day.today{border-left-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 2px rgba(37,99,235,.15)}
.asm-day.past{opacity:.6}
.asm-day-h{font-size:14px;margin-bottom:8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.asm-ses{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.asm-ses li{display:flex;align-items:center;gap:10px}
.asm-ses .n{width:28px;height:28px;border-radius:50%;background:linear-gradient(145deg,#14b8a6,#0f766e);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.asm-ses li div{display:flex;flex-direction:column;line-height:1.3}.asm-ses small{color:#64748b;font-size:12px}

/* ---- ruang, peserta, denah duduk ---- */
.asm-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-top:8px}
.asm-opt{display:flex;align-items:flex-start;gap:9px;border:1px solid #e5e7eb;border-radius:.6rem;padding:11px 13px;cursor:pointer;background:#fff;transition:.15s}
.asm-opt:hover{border-color:#5eead4}
.asm-opt.on{border-color:#0f766e;background:#f0fdfa}
.asm-opt input{margin-top:3px;accent-color:#0f766e}
.asm-opt span{display:flex;flex-direction:column;line-height:1.3}.asm-opt small{color:#64748b;font-size:11.5px;margin-top:2px}
.asm-front{background:#0f172a;border-radius:9px;text-align:center;font-weight:800;font-size:12px;color:#fff;padding:8px;margin:4px 0 12px;letter-spacing:.04em;text-transform:uppercase}
.asm-denah{display:grid;gap:8px}
.asm-seat{border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:7px 6px;display:flex;flex-direction:column;align-items:center;text-align:center;line-height:1.25;min-width:0;transition:.15s}
.asm-seat:hover{border-color:#5eead4;box-shadow:0 4px 10px rgba(15,23,42,.08)}
.asm-seat b{font-size:13px;color:#0f766e}.asm-seat span{font-size:11.5px;color:#0f172a;word-break:break-word}.asm-seat small{font-size:10.5px;color:#64748b}
.asm-seat.me{background:linear-gradient(145deg,#0f766e,#0d9488);border-color:#0f766e}.asm-seat.me b,.asm-seat.me span,.asm-seat.me small{color:#fff}
.asm-seat.dup{background:#fef9c3;border-color:#eab308}
.asm-seat.kosong{border-style:dashed;background:transparent;min-height:60px}
.asm-seat .sf{width:44px;aspect-ratio:2/3;margin:4px 0;border:1px solid #cbd5e1;border-radius:4px;background:#f8fafc;display:flex;align-items:center;justify-content:center;color:#cbd5e1;font-size:16px;overflow:hidden}
.asm-seat .sf img{width:100%;height:100%;object-fit:cover}
.asm-seat.me .sf{border-color:#fff}
.asm-front{position:relative;padding-left:64px;padding-right:64px}.asm-front .pt{position:absolute;top:50%;transform:translateY(-50%);background:#f59e0b;color:#0f172a;border-radius:6px;padding:2px 9px;font-size:10px;letter-spacing:.06em}.asm-front .pt.kiri{left:8px}.asm-front .pt.kanan{right:8px}
@media (max-width:640px){.asm-seat span{font-size:10px}.asm-seat b{font-size:11px}}

/* ---- cetak nomor ruang / meja ---- */
.asm-rtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));column-gap:.85rem;row-gap:1.1rem}
.asm-rt{position:relative;overflow:hidden;border-radius:1rem;padding:14px 12px;margin-bottom:6px;color:#fff;text-align:center;background:linear-gradient(160deg,var(--c1),var(--c2));display:flex;flex-direction:column;gap:2px;align-items:center;box-shadow:0 6px 0 rgba(0,0,0,.28),0 14px 18px -4px rgba(15,23,42,.38),inset 0 2px 1px rgba(255,255,255,.5),inset 0 -8px 12px rgba(0,0,0,.16)}
.asm-rt:before{content:"";position:absolute;left:7%;right:7%;top:3px;height:36%;border-radius:999px;background:linear-gradient(180deg,rgba(255,255,255,.34),rgba(255,255,255,0));pointer-events:none}
.asm-rt>*{position:relative;z-index:1}
.asm-rt span{font-size:11px;font-weight:800;letter-spacing:3px}.asm-rt b{font-size:34px;line-height:1.1;word-break:break-all}.asm-rt small{font-size:11px;margin-bottom:6px}
.asm-rt .asm-btn{padding:5px 12px;background:rgba(255,255,255,.95);color:#0f172a;box-shadow:none}

/* ---- jadwal pengawas & kartu nomor meja ---- */
.asm-tbl.pj td{min-width:170px;vertical-align:top}.asm-tbl.pj td.bad{background:#fef2f2;outline:1px solid #fecaca}
.asm-tbl .asm-me,.asm-me{background:#ccfbf1;box-shadow:inset 4px 0 0 #0f766e}
.asm-mebox{border-color:#93c5fd}.asm-mebox .asm-h3 i{color:#2563eb}
.asm-mjcard{max-width:420px;margin:0 auto 16px;border:1px solid #e5e7eb;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 10px 26px rgba(15,23,42,.12)}
.asm-mjcard .mjh{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(100deg,#0f766e,#2563eb);color:#fff;padding:12px 16px;font-weight:800}
.asm-mjcard .mjh b{font-size:28px;background:#fff;color:#0f766e;border-radius:9px;padding:0 12px;line-height:1.35}
.asm-mjcard .mjb{display:flex;gap:14px;padding:16px}
.asm-mjcard .mjf{width:20mm;height:30mm;flex-shrink:0;border:1px solid #475569;display:flex;align-items:center;justify-content:center;font-size:11px;color:#94a3b8;text-align:center;overflow:hidden;background:#f8fafc}
.asm-mjcard .mjf img{width:100%;height:100%;object-fit:cover}
.asm-mjcard .mjd{display:flex;flex-direction:column;gap:3px;min-width:0;line-height:1.3}.asm-mjcard .mjd b{font-size:15px;color:#0f172a;word-break:break-word}.asm-mjcard .mjd span{font-size:12.5px;color:#475569}

/* ---- daftar hadir peserta, berita acara, daftar hadir pengawas ---- */
.asm-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.asm-kv>div{background:#f8fafc;border:1px solid #e5e7eb;border-left:4px solid #0f766e;border-radius:10px;padding:8px 12px;line-height:1.3}
.asm-kv small{display:block;font-size:10.5px;font-weight:800;text-transform:uppercase;color:#64748b}.asm-kv b{font-size:13.5px;color:#0f172a;word-break:break-word}
.asm-scan{border:2px dashed #99f6e4;border-radius:14px;padding:12px 14px;background:#f0fdfa;transition:.15s}
.asm-scan.on{border-color:#16a34a;background:#f0fdf4}
.asm-scan label{display:block;font-size:12px;font-weight:800;color:#0f766e;margin-bottom:6px}.asm-scan.on label{color:#166534}
.asm-scan input{font-size:16px;padding:10px 12px}
.asm-fb{display:flex;gap:12px;align-items:center;margin-top:12px;border-radius:14px;padding:14px 16px;border:1px solid #e5e7eb;background:#f8fafc;color:#64748b}
.asm-fb>i{font-size:34px;flex-shrink:0}.asm-fb div{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.asm-fb b{font-size:16px;word-break:break-word}.asm-fb span{font-size:13px}
.asm-fb.ok{background:#dcfce7;border-color:#86efac;color:#166534}.asm-fb.dup{background:#fef9c3;border-color:#fde047;color:#854d0e}
.asm-fb.bad{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.asm-fb.room{background:#ffedd5;border-color:#fdba74;color:#9a3412}
.hd-tbl td{vertical-align:middle}.hd-tbl .w60{width:64px}.hd-tbl .w100{width:104px}.hd-tbl .w180{width:190px}
.hd-tbl tr.st-H{background:#f0fdf4}.hd-tbl tr.st-S{background:#eff6ff}.hd-tbl tr.st-I{background:#fffbeb}.hd-tbl tr.st-A{background:#fef2f2}
.hd-tbl tr.unsaved{outline:2px solid #f59e0b;outline-offset:-2px}
.hd-tbl .hd-t{font-variant-numeric:tabular-nums;white-space:nowrap}.hd-tbl .hd-t small{display:block;color:#94a3b8;font-size:10.5px}
.hd-tbl tr.asm-flash{animation:asmflash 1.5s ease-out}
@keyframes asmflash{0%{background:#86efac}100%{background:#f0fdf4}}
.ba-time{width:140px}
.ba-slots{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.ba-slot{border:1px solid #e5e7eb;border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px;background:#fff;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.ba-sh{display:flex;justify-content:space-between;align-items:center;gap:6px}
.ba-ph{aspect-ratio:4/3;background:#0f172a;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#94a3b8;text-align:center;overflow:hidden;font-size:13px}
.ba-ph img{width:100%;height:100%;object-fit:contain;display:block}.ba-ph i{font-size:30px;margin-bottom:6px}
.ba-sn{color:#166534;font-size:11.5px}.ba-sn.bad{color:#b45309;font-weight:700}
.asm-cam{position:fixed;inset:0;z-index:99998;background:rgba(2,6,23,.8);display:flex;align-items:center;justify-content:center;padding:10px}
.asm-cam-box{background:#fff;border-radius:1rem;box-shadow:0 20px 50px rgba(0,0,0,.25);width:100%;max-width:560px;max-height:96vh;overflow:auto;display:flex;flex-direction:column}
.asm-cam-h{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:linear-gradient(120deg,#0f766e,#2563eb);color:#fff}
.asm-cam-x{border:0;background:transparent;color:#fff;font-size:18px;cursor:pointer;padding:2px 6px}
.asm-cam-view{background:#000;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;overflow:hidden}
.asm-cam-view video,.asm-cam-view img{width:100%;height:100%;object-fit:contain;display:block}
.asm-cam-err{margin:10px 14px 0;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:9px;padding:8px 10px;font-size:12.5px}
.asm-cam-tip{margin:8px 14px 0;font-size:12px;color:#64748b}
.asm-cam-bar{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;padding:12px 14px 14px}

/* ---- tukar / ganti pengawas ---- */
.asm-tk{display:grid;grid-template-columns:1fr 34px 1fr;gap:12px;align-items:start}
.asm-tk-col{min-width:0}.asm-tk-mid{align-self:center;text-align:center;color:#0f766e;font-size:15px;padding-top:24px}
.asm-tk-list{margin-top:8px;max-height:300px;overflow:auto;border:1px solid #e5e7eb;border-radius:12px;padding:8px;background:#f8fafc}
.asm-tk-day{margin-bottom:10px}.asm-tk-day:last-child{margin-bottom:0}
.asm-tk-dh{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;color:#0f172a;cursor:pointer;padding:3px 2px}
.asm-tk-dh small{font-weight:400;color:#64748b}
.asm-tk-it{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;margin:3px 0 3px 14px;border:1px solid #e5e7eb;border-radius:9px;background:#fff;cursor:pointer;font-size:12.5px;transition:.15s}
.asm-tk-it span{display:flex;flex-direction:column;line-height:1.3}.asm-tk-it small{color:#64748b;font-size:11.5px}
.asm-tk-it:has(input:checked){border-color:#0f766e;background:#f0fdfa}
.asm-tk input[type=checkbox]{accent-color:#0f766e}
.asm-tk-log{margin:0;padding-left:18px;font-size:12.5px;color:#334155}.asm-tk-log li{margin:4px 0}
@media(max-width:700px){.asm-tk{grid-template-columns:1fr}.asm-tk-mid{display:none}}

/* ---- Berita acara: peserta yang mengalami kendala / pelanggaran ---- */
.kj-jenis{display:flex;gap:6px;margin-bottom:8px}
.kj-jb{border:1px solid #cbd5e1;background:#fff;color:#334155;border-radius:999px;padding:.4rem 1rem;font-size:.78rem;font-weight:700;cursor:pointer}
.kj-jb.on.kendala{background:#fef3c7;border-color:#f59e0b;color:#92400e}.kj-jb.on.langgar{background:#fee2e2;border-color:#ef4444;color:#991b1b}
.kj-sug{border:1px solid #cbd5e1;border-radius:.6rem;background:#fff;margin-top:4px;max-height:300px;overflow:auto;box-shadow:0 8px 20px rgba(15,23,42,.1)}
.kj-sug button{display:flex;width:100%;justify-content:space-between;align-items:center;gap:8px;text-align:left;padding:.6rem .75rem;border:0;border-bottom:1px solid #f1f5f9;background:#fff;cursor:pointer;font-size:.8rem;color:#0f172a}
.kj-sug button:last-child{border-bottom:0}.kj-sug button:hover,.kj-sug button:focus{background:#eff6ff;outline:0}
.kj-sug small,.kj-sel small,.kj-nm small{color:#64748b;font-size:.7rem;font-weight:600}
.kj-hint,.kj-none{padding:.55rem .75rem;font-size:.74rem;color:#92400e;background:#fffbeb}.kj-none{border:1px solid #e5e7eb;border-radius:.6rem;margin-top:4px;color:#64748b;background:#f8fafc}
.kj-sel{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:.6rem .8rem;border:1px solid #93c5fd;background:#eff6ff;border-radius:.6rem;margin-bottom:8px}
.kj-sel>div{display:flex;flex-direction:column;gap:2px;font-size:.85rem}
#kj-form textarea{display:block}
.kj-h4{margin:14px 0 6px;font-size:.8rem;color:#334155}
.kj-list,#kj-list{display:flex;flex-direction:column;gap:8px}
.kj-item{border:1px solid #e5e7eb;border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:6px;background:#fff}
.kj-ih{display:flex;align-items:center;gap:8px}.kj-nm{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;font-size:.82rem}
.kj-tag{font-size:.68rem;font-weight:800;border-radius:999px;padding:.2rem .6rem;white-space:nowrap}
.kj-tag.kendala{background:#fef3c7;color:#92400e}.kj-tag.langgar{background:#fee2e2;color:#991b1b}
.kj-x{padding:.35rem .6rem}.kj-empty{margin:0}
