:root{--navy:#12243c;--blue:#275dc5;--mint:#eaf8f4;--bg:#f3f6fb;--border:#dfe6f0;--muted:#64748b;--text:#18283e;--shadow:0 10px 35px rgba(20,40,73,.055)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif}a{color:var(--blue);text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-size:26px;letter-spacing:-.8px}h2{font-size:19px;letter-spacing:-.3px}.muted{color:var(--muted)}.auth{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 5%,#dcecfb,transparent 42%),#ecf2f9}.login-card{background:white;border:1px solid var(--border);padding:38px;border-radius:22px;box-shadow:0 22px 70px #203d6120;width:min(430px,92vw);text-align:center}.login-card form{text-align:left}.brand-icon{width:62px;height:62px;border-radius:20px;margin:auto;background:var(--navy);color:#fff;font-size:37px;line-height:62px}.eyebrow{text-transform:uppercase;color:#6283a7;letter-spacing:2px;font-size:11px;margin:18px 0 3px;font-weight:700}.login-card small{display:block;color:var(--muted);margin-top:21px}.topbar{background:var(--navy);color:white;padding:16px max(22px,calc((100vw - 1220px)/2));display:flex;justify-content:space-between;align-items:center;gap:12px}.topbar b{font-size:21px}.topbar .sub{font-size:11px;color:#aabbcb}.topbar a{color:white}.page{max-width:1220px;margin:32px auto;padding:0 22px 50px}.page-heading{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:22px}.page-heading p{margin:0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:25px}.stat{background:white;border:1px solid var(--border);border-radius:16px;padding:18px 22px}.stat strong{font-size:27px;display:block}.stat span{color:var(--muted);font-size:13px}.panel{background:#fff;border:1px solid var(--border);border-radius:18px;padding:25px;box-shadow:var(--shadow);margin-bottom:22px}.panel-title{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:16px}.panel-title h2{margin:0}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.two{grid-template-columns:repeat(2,1fr)}label{display:block;font-size:13px;font-weight:650;margin-bottom:13px;color:#394b62}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #d5dfeb;border-radius:10px;background:#fff;font:inherit;color:var(--text);outline:none;margin-top:7px}input:focus,select:focus,textarea:focus{border-color:#4983dd;box-shadow:0 0 0 3px #4983dd18}input[type=file]{padding:9px}.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;border-radius:10px;background:white;border:1px solid var(--border);padding:10px 16px;color:var(--navy);font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.danger{color:#b42336}.full{width:100%}.hint{font-size:12px;color:var(--muted)}.pill{border-radius:100px;background:var(--mint);color:#13745b;font-weight:700;padding:6px 12px;font-size:12px}.alert{background:#fff0f0;border:1px solid #ffd2d2;color:#982630;padding:12px;border-radius:10px;margin:10px 0}.success{background:#e8faf3;border-color:#b2e5d0;color:#126d52}.witness-header{border-bottom:1px solid var(--border);padding-bottom:14px;margin-bottom:20px}.witness-header .num{display:inline-grid;place-items:center;border-radius:11px;background:#e8f0ff;color:#275dc5;width:37px;height:37px;font-weight:800;margin-right:8px}.upload-zone{border:1px dashed #b4c5df;background:#f7faff;border-radius:13px;padding:16px;margin-bottom:18px}.upload-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.upload-top input{max-width:310px}.upload-preview{width:260px;max-width:100%;border-radius:8px;display:none;margin-top:12px}.section-label{font-size:12px;font-weight:800;color:#627c9a;letter-spacing:1px;text-transform:uppercase;margin:20px 0 12px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:650px}th,td{padding:13px;border-bottom:1px solid var(--border);text-align:left;font-size:13px}th{font-size:12px;color:#688096;background:#f8fafd}td.actions{white-space:nowrap}.hidden{display:none!important}.status{font-size:12px;margin:10px 0;color:#42546a}.footer-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.loading{opacity:.65;pointer-events:none}@media(max-width:760px){.topbar{padding:14px 20px}.page{margin:22px auto;padding:0 13px 30px}.stats,.grid,.two{grid-template-columns:1fr}.panel{padding:18px}.page-heading{align-items:flex-start}.page-heading h1{font-size:22px}.upload-top{align-items:flex-start}.topbar .sub{display:none}}

.court-logo{display:block;width:100px;height:124px;object-fit:contain;margin:0 auto 15px}.top-logo{height:44px;width:37px;object-fit:contain;vertical-align:middle;margin-right:9px}.auth-link{margin:17px 0 0}.login-card{max-height:94vh;overflow:auto}.topbar a{margin-left:5px}

/* SI-SAKSI V3: scoped auth logo; overrides CSS that stretched logo on hosting */
body.auth { min-height:100svh; display:flex; align-items:center; justify-content:center; padding:22px 12px; }
body.auth .login-card { width:min(430px,100%); padding:25px 30px; max-height:none; overflow:visible; }
body.auth .login-card img.court-logo { display:block !important; width:88px !important; max-width:88px !important; height:110px !important; max-height:110px !important; object-fit:contain !important; margin:0 auto 12px !important; }
body.auth .login-card h1 { margin:0 0 10px; font-size:23px; }
@media(max-width:600px) { body.auth .login-card{padding:22px 19px;} body.auth .login-card img.court-logo{width:76px !important;max-width:76px !important;height:94px !important;max-height:94px !important;} }

/* OCR KTP V4: pemilihan crop sentuh langsung di kamera HP */
.ktp-crop-tools{margin-top:14px;padding:12px;background:#fff;border:1px solid var(--border);border-radius:12px}.ktp-crop-tools[hidden],.ocr-debug[hidden]{display:none!important}.ktp-crop-canvas{width:100%;height:auto;max-height:390px;object-fit:contain;display:block;touch-action:none;cursor:crosshair;background:#152034;border-radius:8px;margin:10px auto}.crop-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}.ocr-debug{border:1px solid #cbd9ee;padding:10px;border-radius:10px;margin:10px 0}.ocr-debug pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;max-height:220px;overflow:auto}.upload-zone .status{white-space:normal}

/* V10 — kamera landscape berbingkai */
.camera-panel{margin:14px 0;padding:14px;background:#ecf4ff;border:1px solid #b8d3f6;border-radius:14px}.camera-heading{font-size:13px;font-weight:750;text-align:center;margin-bottom:10px}.camera-window{position:relative;width:100%;aspect-ratio:1.586;background:#0d1728;border-radius:12px;overflow:hidden}.camera-window video{width:100%;height:100%;object-fit:cover}.camera-guide{position:absolute;inset:4.5%;border:3px solid #a8ffbf;border-radius:14px;pointer-events:none;box-shadow:0 0 0 120px #0005}.guide-top,.guide-nik,.guide-name{position:absolute;left:5%;font-size:clamp(10px,2vw,16px);font-weight:800;color:#dcfff0;text-shadow:0 1px 3px #000;padding:2px 5px;background:#0006;border-radius:5px}.guide-top{top:4%;left:auto;right:4%}.guide-nik{top:22%}.guide-name{top:33%}.camera-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.camera-actions .btn{flex:1}.camera-window::after{content:' ';position:absolute;inset:0;border:1px solid #c2f8d3;border-radius:12px;pointer-events:none}@media(max-width:760px){.camera-panel{padding:10px}.camera-guide{inset:3%}.camera-actions .btn{font-size:12px;white-space:normal}}

/* SI-SAKSI V14: dashboard sidebar profesional */
.app-shell{background:#f4f7fc;color:#1a2a41}.app-shell .sidebar{position:fixed;top:0;bottom:0;left:0;width:264px;background:#14253d;color:#e6f0fa;display:flex;flex-direction:column;padding:22px 15px;z-index:80;box-shadow:4px 0 24px #12233f18}.side-brand{display:flex;align-items:center;gap:13px;padding:5px 12px 23px;border-bottom:1px solid #ffffff1a;margin-bottom:18px}.side-brand img{width:43px;height:53px;object-fit:contain}.side-brand strong{display:block;font-size:22px;letter-spacing:.6px}.side-brand small{display:block;font-size:10px;letter-spacing:1.7px;color:#a9bcd2}.side-section{font-size:10px;font-weight:800;letter-spacing:1.5px;color:#7994b2;padding:20px 15px 10px}.side-link{display:flex;align-items:center;gap:13px;padding:12px 15px;margin:3px 0;border-radius:11px;color:#c3d2e3!important;font-weight:600;font-size:13px;transition:.2s}.side-link:hover,.side-link.active{background:#28559b;color:white!important}.side-ico{display:inline-grid;place-items:center;width:19px;font-size:20px}.count-bubble{margin-left:auto;background:#e8a849;color:#111e31;border-radius:30px;padding:1px 7px}.side-bottom{margin-top:auto;padding-top:16px;border-top:1px solid #ffffff20}.user-bubble{display:flex;gap:11px;align-items:center;padding:10px}.user-bubble>span{height:38px;width:38px;border-radius:12px;display:grid;place-items:center;background:#365d92;color:white;font-weight:900}.user-bubble strong{display:block;font-size:12px;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-bubble small{color:#a6b8ce;font-size:11px}.logout-link{margin-top:10px}.main-area{margin-left:264px;min-height:100vh;display:flex;flex-direction:column}.app-top{min-height:75px;background:#fff;border-bottom:1px solid #e3e9f2;display:flex;align-items:center;justify-content:space-between;padding:15px 34px;gap:15px}.app-top strong{display:block;font-size:20px;letter-spacing:-.5px}.eyebrow-lite{font-size:10px;color:#8191a7;letter-spacing:1.2px;font-weight:800}.top-user{font-size:12px;color:#718199;display:flex;align-items:center;gap:9px}.user-name{font-weight:700;color:#33445e;margin-left:15px}.live-dot{width:8px;height:8px;border-radius:50%;background:#28ba89}.app-content{width:100%;max-width:1440px;margin:0 auto;padding:32px;flex:1}.app-content .panel{box-shadow:0 5px 23px #1a33550a;border-radius:17px;padding:25px}.app-view.hidden{display:none!important}.welcome{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(115deg,#182f4d,#285fa2);border-radius:20px;padding:30px 32px;color:#fff;margin-bottom:22px}.welcome h1{color:white;font-size:30px;margin:5px 0}.welcome p{margin:0;color:#dae5f5;max-width:590px}.welcome .btn{background:#fff;color:#205093;border:none}.kicker{font-size:10px;font-weight:800;letter-spacing:1.6px;color:#6b8fb9}.welcome .kicker{color:#add8fa}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-bottom:22px}.metric{display:flex;align-items:center;gap:18px;background:white;padding:22px;border:1px solid #e3eaf3;border-radius:17px}.metric-icon{height:52px;width:52px;border-radius:15px;display:grid;place-items:center;font-size:25px}.metric-icon.blue{background:#e6f0ff;color:#2864bf}.metric-icon.teal{background:#dff8ee;color:#129771}.metric-icon.amber{background:#fff1da;color:#c08728}.metric strong{font-size:30px;display:block;line-height:1.2}.metric small,.metric span{display:block;color:#76859a;font-size:12px}.metric small{font-weight:700;color:#52637b}.page-heading{margin:0 0 22px}.page-heading h1{margin:5px 0 3px}.step{display:inline-grid;place-items:center;background:#eaf1ff;color:#275dc5;width:37px;height:37px;border-radius:11px;margin-right:8px;font-size:14px}.form-chip{background:#f0f6ff;border-radius:9px;color:#285fa2;padding:5px 11px;font-size:11px;font-weight:700}.required{color:#db4b51}.app-content label{font-size:13px;color:#40536e}.app-content input,.app-content select{margin-top:7px;padding:12px;border-radius:10px}.app-content input[readonly]{background:#eff4fa;color:#3d5c84}.info-line{background:#eff6ff;border-left:3px solid #4b85d6;color:#376194;padding:10px 14px;font-size:12px;border-radius:5px}.app-content .section-label{border-bottom:1px solid #edf1f6;padding:0 0 9px;margin-top:28px}.other-field{margin-top:7px!important}.form-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:30px}.form-footer>div{display:flex;gap:10px}.app-content .pill{white-space:nowrap}.toolbar-row{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px}.search-label{width:min(380px,100%);margin:0}.mini{font-size:12px;padding:7px 11px;margin:2px}.app-footer{padding:18px 32px;color:#8390a4;font-size:11px;border-top:1px solid #e4eaf2;display:flex;justify-content:space-between}.mobile-bar,.sidebar-overlay{display:none}.app-content table{min-width:620px}@media(max-width:1080px){.metric-grid{grid-template-columns:1fr}.app-top{padding:14px 20px}.app-content{padding:22px}}@media(max-width:820px){.main-area{margin-left:0}.sidebar{transform:translateX(-105%);transition:transform .2s}.nav-open .sidebar{transform:translateX(0)}.nav-open .sidebar-overlay{display:block;position:fixed;inset:0;background:#07132399;z-index:70}.mobile-bar{display:flex;position:sticky;top:0;background:#14253d;color:white;align-items:center;gap:12px;padding:10px 16px;z-index:60}.mobile-bar button{background:#ffffff20;border:0;border-radius:8px;color:white;padding:7px 12px;font-size:22px}.mobile-bar b{font-size:16px}.mobile-bar span{margin-left:auto;font-size:11px;color:#adbed4}.app-top{min-height:60px}.top-user{display:none}.welcome{flex-direction:column;align-items:flex-start;padding:24px}.welcome h1{font-size:24px}.form-footer{align-items:flex-start;flex-direction:column}.app-content .panel{padding:18px}.app-footer span{display:none}}
/* V15: pilihan pihak saksi dan cetak */
.party-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.party-card{display:flex!important;align-items:center;gap:13px;padding:17px 18px;border:1px solid #d6e1f0;border-radius:14px;background:#f8fbff;cursor:pointer}.party-card:has(input:checked){border-color:#2563c8;background:#ebf3ff;box-shadow:0 0 0 2px #2461ce25}.party-card input{width:18px!important;height:18px;margin:0!important;flex-shrink:0}.party-card b{display:block;font-size:14px;color:#183253}.party-card small{display:block;margin-top:4px;color:#72839a;font-size:12px}@media(max-width:700px){.party-picker{grid-template-columns:1fr}}

/* V16 wilayah dropdown */
.wilayah-notice{grid-column:1/-1;background:#f1f7ff;color:#48617d;border:1px solid #dce8f7;border-radius:10px;padding:10px 13px;font-size:12px}.witness select:disabled{background:#f2f5f9;color:#7f8b9c;cursor:not-allowed}

/* SI-SAKSI V17 - tabel dan export */
.export-toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-bottom:22px;padding:16px;background:#f5f8ff;border:1px solid #dbe5f3;border-radius:12px}
.export-toolbar label{min-width:220px;margin:0}.export-toolbar input{margin-top:6px}.export-toolbar small{margin-left:auto}
.export-toolbar .btn:disabled{opacity:.45;cursor:not-allowed}
#historyTable,#printTable{width:100%!important}
#historyTable td,#printTable td{vertical-align:middle}
.dt-container .dt-layout-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0}.dt-container select,.dt-container input{width:auto;display:inline-block;max-width:100%}
tr[hidden]{display:none!important}
@media(max-width:760px){.export-toolbar{align-items:stretch}.export-toolbar label,.export-toolbar .btn{width:100%}.export-toolbar small{margin:0}}
