:root{--orange:#F47C20;--orange-dark:#D9610B;--orange-soft:#FFF1E7;--ink:#202020;--muted:#6C6C6C;--bg:#F5F5F3;--surface:#fff;--border:#252525;--divider:#DFDFDA;--success:#22A06B;--danger:#DC3C3C;--warning:#E5A000;--info:#3578E5;--radius:10px;--shadow:4px 4px 0 #252525}*{box-sizing:border-box}html,body{margin:0;font-family:Inter,Arial,Helvetica,sans-serif;color:var(--ink);background:var(--bg);font-size:14px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px 1fr}.sidebar{background:#fff;border-right:2px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{padding:22px 18px;border-bottom:1px solid var(--divider);display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border:2px solid var(--border);background:var(--orange);display:grid;place-items:center;font-weight:700;border-radius:50%}.brand-mark.large{width:52px;height:52px}.brand strong{display:block;font-size:13px}.brand span{font-size:12px;color:var(--muted)}.sidebar nav{padding:16px 12px;display:grid;gap:8px}.sidebar nav a{padding:11px 12px;border:2px solid transparent;border-radius:8px;display:flex;gap:10px;align-items:center}.sidebar nav a:hover{background:var(--orange-soft)}.sidebar nav a.active{background:var(--orange);border-color:var(--border);box-shadow:2px 2px 0 var(--border);font-weight:500}.sidebar-bottom{margin-top:auto;padding:16px;border-top:1px solid var(--divider);display:flex;justify-content:space-between;font-size:12px;text-transform:capitalize}.main{min-width:0}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--divider);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:5}.topbar>div:first-of-type{display:grid}.topbar span{font-size:12px;color:var(--muted)}.user-chip{margin-left:auto;display:flex;align-items:center;gap:9px}.user-chip>div:last-child{display:grid}.avatar{width:36px;height:36px;background:var(--orange-soft);border:1.5px solid var(--border);border-radius:50%;display:grid;place-items:center;font-weight:600}.menu-toggle{display:none;border:0;background:transparent;font-size:20px}.content{padding:24px;max-width:1600px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:20px}.page-head h1{margin:0 0 6px;font-size:24px;font-weight:600}.page-head p,.muted{margin:0;color:var(--muted)}.neo-card{background:#fff;border:2px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:14px;margin-bottom:20px}.kpi{padding:18px;min-height:116px}.kpi span{color:var(--muted)}.kpi strong{display:block;font-size:28px;margin:8px 0 5px}.kpi small{color:var(--muted)}.panel{background:#fff;border:1px solid var(--divider);border-radius:var(--radius);padding:20px;margin-bottom:20px}.panel-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel h2{font-size:17px;margin:0 0 4px}.panel p{margin:0;color:var(--muted)}.attention{border:2px solid var(--orange);background:var(--orange-soft);display:flex;align-items:center;justify-content:space-between}.attention strong{display:block;font-size:32px;margin:7px 0}.attention span,.attention small{display:block}.stepper{display:flex;align-items:center;gap:12px}.step{flex:1;padding:14px;border:1.5px solid var(--divider);border-radius:8px;display:grid;gap:3px;text-align:center}.step span{font-size:12px;color:var(--muted)}.step.active{border:2px solid var(--orange);background:var(--orange-soft)}.step.done{border-color:var(--success)}.bars{display:grid;gap:13px}.bar-row{display:grid;grid-template-columns:55px 1fr 80px;gap:12px;align-items:center}.bar-row>div,.progress{height:8px;background:#ecece8;border-radius:999px;overflow:hidden}.bar-row i,.progress i{display:block;height:100%;background:var(--orange);border-radius:999px}.btn{min-height:40px;padding:9px 14px;border:2px solid var(--border);border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-weight:500;background:#fff}.btn.primary{background:var(--orange);box-shadow:3px 3px 0 var(--border)}.btn.primary:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--border)}.btn.secondary:hover{background:var(--orange-soft)}.btn.wide{width:100%}.alert{padding:12px 14px;border-radius:8px;margin-bottom:16px;border:1.5px solid}.alert.success{background:#eaf8f2;border-color:var(--success)}.alert.danger{background:#fff0f0;border-color:var(--danger)}.filterbar{display:grid;grid-template-columns:minmax(240px,1fr) 180px 190px auto;gap:10px;margin-bottom:16px}.filterbar input,.filterbar select,.form-grid input,.form-grid select,.form-grid textarea,.login-card input,.public-card input{width:100%;border:1.5px solid var(--border);border-radius:8px;background:#fff;padding:10px 12px;min-height:42px;outline:none}.filterbar input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.login-card input:focus,.public-card input:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}.table-wrap{overflow:auto;border:1px solid var(--divider);border-radius:8px}table{border-collapse:collapse;width:100%;min-width:760px;background:#fff}th,td{padding:12px 13px;border-bottom:1px solid #e8e8e4;text-align:left;white-space:nowrap}th{font-size:12px;background:#fafaf8;font-weight:600;position:sticky;top:0}td small{display:block;color:var(--muted);margin-top:3px}.center{text-align:center}.empty{text-align:center;color:var(--muted);padding:34px}.badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:11px;border:1px solid var(--divider)}.badge.orange{background:var(--orange-soft);border-color:#f0b27e}.status-aktif{background:#eaf8f2;border-color:#a5d9c4}.status-baru{background:#eef4ff;border-color:#b9cbee}.status-meninggal,.status-tms{background:#fff0f0;border-color:#efb1b1}.status-pindah{background:#fff7e3;border-color:#efd28b}.status-ganda,.status-perlu_verifikasi{background:#fff1e7;border-color:#efb381}.table-note{font-size:12px;margin-top:12px!important}.form-panel h2{margin-top:6px;border-bottom:1px solid var(--divider);padding-bottom:10px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:16px 0 24px}.form-grid label,.login-card label,.public-card label{display:grid;gap:7px;font-size:13px;font-weight:500}.span-2{grid-column:span 2}.form-actions{display:flex;justify-content:flex-end;gap:10px}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}.login-brand{background:var(--orange);padding:7vw;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;border-right:2px solid var(--border);position:relative;overflow:hidden}.login-brand h1{font-size:42px;line-height:1.02;margin:10px 0 18px}.login-brand p{font-weight:600;margin:18px 0 0}.login-brand span{line-height:1.7}.ballot-art{position:absolute;right:-40px;bottom:-55px;width:260px;height:260px;border:3px solid var(--border);border-radius:50%;background:#fff;display:grid;place-items:center;font-size:110px}.login-panel{display:grid;place-items:center;padding:28px}.login-card{width:min(430px,100%);padding:30px}.login-card h2{margin-top:0}.login-card form,.public-card form{display:grid;gap:16px;margin-top:22px}.login-note{margin-top:22px;background:var(--orange-soft);border:1px solid #f1b681;border-radius:8px;padding:12px;font-size:12px}.public-admin-link{display:block;margin-top:18px;color:var(--muted);text-decoration:underline;text-align:center}.public-body{background:linear-gradient(90deg,var(--orange) 0 32%,var(--bg) 32%)}.public-shell{min-height:100vh;width:min(980px,92vw);margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.public-brand{display:flex;align-items:flex-start;gap:16px}.public-brand small{font-weight:600}.public-brand h1{font-size:38px;margin:7px 0}.public-brand p{margin:0}.public-card{padding:30px}.public-card h2{margin:0}.result-box{margin-top:18px;padding:16px;border:1.5px solid;border-radius:9px;display:grid;gap:8px}.result-box.success{background:#eaf8f2;border-color:var(--success)}.result-box.warning{background:#fff7e3;border-color:var(--warning)}.result-box dl{display:grid;grid-template-columns:100px 1fr;gap:8px 12px;margin:8px 0 0}.result-box dt{color:var(--muted)}.result-box dd{margin:0;font-weight:500}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(3,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:820px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;z-index:20;width:260px;transition:.18s}.sidebar.open{left:0}.menu-toggle{display:block}.content{padding:16px}.kpi-grid{grid-template-columns:repeat(2,1fr)}.panel-grid{grid-template-columns:1fr}.filterbar{grid-template-columns:1fr 1fr}.stepper{overflow:auto}.login-shell,.public-shell{grid-template-columns:1fr}.login-brand{min-height:42vh;padding:40px}.login-brand h1{font-size:34px}.ballot-art{width:160px;height:160px;font-size:70px}.public-body{background:var(--bg)}.public-brand{padding-top:40px}.public-shell{gap:22px;align-content:center}.public-card{margin-bottom:40px}}@media(max-width:560px){.kpi-grid{grid-template-columns:1fr 1fr}.kpi{min-height:105px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.filterbar{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}.user-chip>div:last-child{display:none}.login-brand{min-height:36vh}.public-brand h1{font-size:30px}}

/* Responsive upgrade v1.1 */
.readonly-field{background:#f1f1ee!important;color:var(--muted)}
.wrap-cell{white-space:normal;min-width:180px;max-width:300px;line-height:1.45}
.bottom-nav{display:none}
.sidebar-overlay{display:none}

@media(max-width:1100px){
  .topbar{padding:0 18px}
  .content{padding:20px}
  .panel{padding:18px}
}

@media(max-width:820px){
  body.menu-open{overflow:hidden}
  .sidebar{box-shadow:8px 0 0 rgba(37,37,37,.14)}
  .sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(20,20,20,.35);z-index:15;opacity:0;pointer-events:none;transition:.18s}
  .sidebar-overlay.show{opacity:1;pointer-events:auto}
  .topbar{height:64px;padding:0 14px;z-index:10}
  .topbar>div:first-of-type strong{max-width:54vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .topbar>div:first-of-type span{max-width:55vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .content{padding:16px 14px 92px}
  .page-head{margin-bottom:16px}
  .page-head h1{font-size:22px}
  .panel{padding:14px;border-radius:10px}
  .bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;height:72px;background:#fff;border-top:2px solid var(--border);z-index:14;padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));box-shadow:0 -4px 0 rgba(37,37,37,.05)}
  .bottom-nav a{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:8px;color:var(--muted);font-size:19px;position:relative}
  .bottom-nav a small{font-size:10px;line-height:1;font-weight:500;white-space:nowrap}
  .bottom-nav a.active{color:var(--ink);background:var(--orange-soft)}
  .bottom-nav .bottom-add{transform:translateY(-15px);background:var(--orange);color:var(--ink);border:2px solid var(--border);box-shadow:3px 3px 0 var(--border);width:58px;height:58px;justify-self:center;border-radius:16px}
  .bottom-nav .bottom-add span{font-size:28px;line-height:20px}
  .bottom-nav .bottom-add small{font-size:9px}
  .bottom-nav .bottom-add.active{background:var(--orange-dark);color:#fff}
  .desktop-action{display:none}
  .form-grid{gap:13px}
  .form-panel h2{font-size:16px;margin-top:10px}
  .form-actions{padding-bottom:4px}
}

@media(max-width:680px){
  .filterbar{grid-template-columns:1fr 1fr}
  .filterbar input{grid-column:1/-1}
  .filterbar button{grid-column:1/-1}
  .voter-table-wrap{border:0;background:transparent;overflow:visible}
  .voter-table{min-width:0;background:transparent;display:block}
  .voter-table thead{display:none}
  .voter-table tbody{display:grid;gap:12px}
  .voter-table tr{display:block;background:#fff;border:2px solid var(--border);border-radius:10px;box-shadow:3px 3px 0 var(--border);padding:9px 12px}
  .voter-table tr.empty-row{box-shadow:none;border:1px solid var(--divider)}
  .voter-table td{display:grid;grid-template-columns:minmax(115px,39%) 1fr;align-items:start;gap:10px;padding:8px 2px;border-bottom:1px dashed var(--divider);white-space:normal;text-align:left!important;min-width:0;max-width:none}
  .voter-table td:last-child{border-bottom:0}
  .voter-table td::before{content:attr(data-label);font-size:11px;color:var(--muted);font-weight:600;text-transform:none}
  .voter-table td.empty{display:block;text-align:center!important;border:0;padding:24px 8px}
  .voter-table td.empty::before{display:none}
  .voter-table td[data-label="Nama"]{font-size:15px}
  .wrap-cell{min-width:0;max-width:none}
  .table-note{line-height:1.5}
}

@media(max-width:560px){
  .topbar .avatar{width:32px;height:32px}
  .kpi-grid{gap:10px}
  .kpi{padding:14px;min-height:98px}
  .kpi strong{font-size:24px}
  .filterbar{grid-template-columns:1fr}
  .filterbar input,.filterbar button{grid-column:auto}
  .panel-grid{gap:14px}
  .stepper{gap:8px;padding-bottom:4px}
  .step{min-width:125px}
  .form-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:8px}
  .btn{min-height:44px}
  .public-shell{width:min(100% - 24px,980px)}
  .public-brand{padding:28px 4px 0}
  .public-card{padding:22px 18px}
}

/* SiPandu v1.2 — role privacy + dedicated tablet layout */
.nav-glyph{width:20px;text-align:center;font-size:17px;font-weight:500;flex:0 0 20px}
.page-actions{display:flex;gap:10px;align-items:center}
.text-link{font-size:12px;text-decoration:underline;color:var(--muted)}
.admin-scope{border:2px solid var(--border);background:var(--orange-soft)}
.admin-scope .scope-icon{font-size:28px}.admin-scope h2{margin-top:10px}.admin-scope p{line-height:1.6;color:var(--ink)}
.scope-meta{margin-top:22px;padding-top:16px;border-top:1px solid #e8bd98;display:flex;align-items:center;justify-content:space-between}.scope-meta strong{font-size:28px}
.admin-dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(260px,1fr)}
.monitoring-kpis,.admin-kpis{grid-template-columns:repeat(4,minmax(150px,1fr))}
.aggregate-table{min-width:650px}.aggregate-table th,.aggregate-table td{vertical-align:middle}
.account-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,2.2fr);gap:20px;align-items:start}
.account-layout .panel{min-width:0}.account-form{position:sticky;top:92px}.form-stack{display:grid;gap:14px}.form-stack label{display:grid;gap:7px;font-size:13px;font-weight:500}
.form-stack input,.form-stack select{width:100%;border:1.5px solid var(--border);border-radius:8px;background:#fff;padding:10px 12px;min-height:42px;outline:none}
.form-stack input:focus,.form-stack select:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}
.inline-form{margin:0}.btn-sm{min-height:34px;padding:6px 9px;font-size:12px}code{background:#f2f2ef;border:1px solid var(--divider);padding:3px 6px;border-radius:5px}
.import-panel{display:grid;gap:22px}.import-steps{display:flex;gap:10px;align-items:center;overflow:auto;padding-bottom:4px}.import-steps span{white-space:nowrap;padding:8px 12px;border:1px solid var(--divider);border-radius:999px;font-size:12px}.import-steps span.active{background:var(--orange);border:2px solid var(--border);font-weight:600}.import-steps i{font-style:normal;color:var(--muted)}
.upload-zone{border:2px dashed var(--border);border-radius:12px;background:var(--orange-soft);padding:34px;text-align:center}.upload-zone h2{font-size:20px}.upload-zone p{margin:8px auto 20px;max-width:680px;line-height:1.6}.upload-icon{width:58px;height:58px;margin:0 auto 12px;border:2px solid var(--border);border-radius:14px;background:#fff;box-shadow:3px 3px 0 var(--border);display:grid;place-items:center;font-size:30px}
.upload-form{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap}.file-field{display:flex;align-items:center;min-height:42px;padding:0 12px;border:1.5px solid var(--border);border-radius:8px;background:#fff;cursor:pointer}.file-field input{max-width:260px}.file-field span{display:none}
.import-help{padding:18px;border:1px solid var(--divider);border-radius:10px}.import-help h3{margin:0 0 12px}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip-list span{padding:6px 9px;border-radius:999px;background:#fff;border:1px solid var(--divider);font-size:12px}.import-help p{margin-top:14px;line-height:1.55}
.import-summary{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:14px;margin-bottom:20px}.import-summary .valid{border-color:var(--success)}.import-summary .invalid{border-color:var(--danger)}.import-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:16px}.error-text{white-space:normal;min-width:190px;line-height:1.4}
.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}

/* Tablet: 761px–1180px. Compact navigation rail, no bottom navbar. */
@media (min-width:761px) and (max-width:1180px){
  .app-shell{grid-template-columns:86px minmax(0,1fr)}
  .sidebar{position:sticky;left:auto;width:auto;z-index:8;box-shadow:none;transition:none;overflow:hidden}
  .brand{padding:16px 10px;justify-content:center}.brand-copy{display:none}.brand-mark{width:42px;height:42px}
  .sidebar nav{padding:14px 9px;gap:9px}.sidebar nav a{padding:11px 8px;justify-content:center;gap:0;min-height:46px}.sidebar nav a span{display:none}.nav-glyph{font-size:20px;width:24px;flex-basis:24px}
  .sidebar-bottom{padding:12px 8px;justify-content:center}.sidebar-bottom span{display:none}.sidebar-bottom a{font-size:11px;text-decoration:underline}
  .menu-toggle{display:none!important}.sidebar-overlay{display:none!important}.bottom-nav{display:none!important}
  .topbar{height:68px;padding:0 18px}.topbar-context strong{max-width:44vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-context span{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .content{padding:18px;max-width:none}.page-head{align-items:center}.page-head h1{font-size:22px}.panel{padding:17px}
  .kpi-grid,.monitoring-kpis,.admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.kpi{min-height:108px;padding:16px}.kpi strong{font-size:26px}
  .panel-grid,.admin-dashboard-grid{grid-template-columns:1fr}.account-layout{grid-template-columns:1fr}.account-form{position:static}
  .form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.filterbar{grid-template-columns:minmax(220px,1fr) 160px 170px auto}
  .stepper{overflow:auto;padding-bottom:5px}.step{min-width:140px}.table-wrap{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}
  .voter-table{min-width:1850px}.account-list table{min-width:980px}.import-preview-wrap table{min-width:980px}
  .public-shell{width:min(920px,90vw);gap:28px}.public-brand h1{font-size:32px}
}

/* Phone only: off-canvas sidebar + bottom navbar. */
@media (max-width:760px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{position:fixed;left:-270px;top:0;z-index:20;width:260px;height:100vh;transition:.18s;box-shadow:8px 0 0 rgba(37,37,37,.14)}
  .sidebar.open{left:0}.brand-copy{display:block}.sidebar nav a{justify-content:flex-start;gap:10px}.sidebar nav a span{display:inline}.sidebar-bottom span{display:inline}
  body.menu-open{overflow:hidden}.sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(20,20,20,.35);z-index:15;opacity:0;pointer-events:none;transition:.18s}.sidebar-overlay.show{opacity:1;pointer-events:auto}
  .menu-toggle{display:block}.topbar{height:64px;padding:0 14px;z-index:10}.topbar-context strong{max-width:52vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-context span{max-width:54vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .content{padding:15px 13px 92px}.bottom-nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;left:0;right:0;bottom:0;min-height:72px;background:#fff;border-top:2px solid var(--border);z-index:14;padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));box-shadow:0 -4px 0 rgba(37,37,37,.05)}
  .bottom-nav a{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:8px;color:var(--muted);font-size:19px;position:relative}.bottom-nav a small{font-size:10px;line-height:1;font-weight:500;white-space:nowrap}.bottom-nav a.active{color:var(--ink);background:var(--orange-soft)}
  .bottom-nav .bottom-add{transform:translateY(-15px);background:var(--orange);color:var(--ink);border:2px solid var(--border);box-shadow:3px 3px 0 var(--border);width:58px;height:58px;justify-self:center;border-radius:16px}.bottom-nav .bottom-add span{font-size:28px;line-height:20px}.bottom-nav .bottom-add small{font-size:9px}.bottom-nav .bottom-add.active{background:var(--orange-dark);color:#fff}
  .desktop-action{display:none!important}.page-head{align-items:flex-start;flex-direction:column}.panel{padding:14px}.kpi-grid,.monitoring-kpis,.admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.panel-grid,.admin-dashboard-grid,.account-layout{grid-template-columns:1fr}.account-form{position:static}
  .form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.filterbar{grid-template-columns:1fr}.stepper{overflow:auto}.step{min-width:125px}
  .import-summary{grid-template-columns:1fr 1fr}.import-summary article:first-child{grid-column:1/-1}.upload-zone{padding:24px 14px}.upload-form{display:grid}.file-field{width:100%;overflow:hidden}.file-field input{max-width:100%;font-size:12px}.import-actions{display:grid;grid-template-columns:1fr}.import-actions form,.import-actions button,.import-actions a{width:100%}
  .account-list table,.aggregate-table{min-width:760px}
}

@media (max-width:680px){
  .voter-table-wrap{border:0;background:transparent;overflow:visible}.voter-table{min-width:0;background:transparent;display:block}.voter-table thead{display:none}.voter-table tbody{display:grid;gap:12px}.voter-table tr{display:block;background:#fff;border:2px solid var(--border);border-radius:10px;box-shadow:3px 3px 0 var(--border);padding:9px 12px}.voter-table tr.empty-row{box-shadow:none;border:1px solid var(--divider)}.voter-table td{display:grid;grid-template-columns:minmax(115px,39%) 1fr;align-items:start;gap:10px;padding:8px 2px;border-bottom:1px dashed var(--divider);white-space:normal;text-align:left!important;min-width:0;max-width:none}.voter-table td:last-child{border-bottom:0}.voter-table td::before{content:attr(data-label);font-size:11px;color:var(--muted);font-weight:600}.voter-table td.empty{display:block;text-align:center!important;border:0;padding:24px 8px}.voter-table td.empty::before{display:none}.wrap-cell{min-width:0;max-width:none}
}
.template-links{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 0 12px}
@media(max-width:560px){.template-links{display:grid;grid-template-columns:1fr 1fr}.template-links .btn{padding:8px;font-size:11px}}

/* SiPandu v1.3 — workflow, snapshots, audit trail */
.eyebrow{display:block;font-size:10px;letter-spacing:.08em;font-weight:600;color:var(--muted);margin-bottom:5px}.badge.locked{background:#f0f0ed;border-color:#b9b9b2}.current-kpi{background:var(--orange-soft);border-color:var(--orange)}
.workflow-hero{padding:22px 24px;margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:20px}.workflow-hero h2{margin:4px 0 7px;font-size:22px}.workflow-hero p{margin:0;color:var(--muted)}.workflow-lock{padding:8px 11px;border:1px solid #e7b486;background:var(--orange-soft);border-radius:999px;font-size:12px;white-space:nowrap}.workflow-lock.done{background:#eaf8f2;border-color:#a5d9c4}
.workflow-stepper{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}.workflow-step{background:#fff;border:1px solid var(--divider);border-radius:10px;padding:15px;min-width:0}.workflow-step.active{border:2px solid var(--orange);background:var(--orange-soft);box-shadow:3px 3px 0 var(--border)}.workflow-step.done{border-color:#8acbb5}.workflow-step-top{display:flex;align-items:center;justify-content:space-between}.workflow-step strong{display:block;font-size:24px;margin:12px 0 3px}.workflow-step small{color:var(--muted);display:block;min-height:32px}.workflow-step a{display:inline-block;margin-top:11px;font-size:11px;text-decoration:underline;color:var(--muted)}
.workflow-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.9fr);gap:20px}.action-callout{border:2px solid var(--border);background:var(--orange-soft);border-radius:10px;padding:18px;display:flex;align-items:center;justify-content:space-between;gap:18px}.action-callout strong{display:block;margin-bottom:5px}.action-callout p{line-height:1.55}.establish-form{display:grid;grid-template-columns:1fr 210px auto;gap:12px;align-items:end}.establish-form label{display:grid;gap:7px;font-size:13px;font-weight:500}.establish-form input{width:100%;min-height:42px;border:1.5px solid var(--border);border-radius:8px;padding:9px 11px;background:#fff}.form-hint{margin-top:12px!important;font-size:12px}.compact-list{margin:8px 0 0;padding-left:18px;display:grid;gap:4px}.locked-state{display:flex;align-items:flex-start;gap:14px;padding:17px;background:#f3f3f0;border:1px solid var(--divider);border-radius:10px}.locked-state>span{font-size:28px}.locked-state strong{display:block;margin-bottom:5px}
.readiness-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.readiness-grid>div{border:1px solid var(--divider);border-radius:8px;padding:12px}.readiness-grid span{display:block;color:var(--muted);font-size:11px}.readiness-grid strong{display:block;font-size:21px;margin-top:5px}.readiness-grid .warn{background:#fff0f0;border-color:#efb1b1}.compact-table{min-width:900px}.progress-cell{display:flex;align-items:center;gap:8px;min-width:130px}.progress-cell .progress{flex:1}.progress-cell small{margin:0;color:var(--muted)}
.data-stage-strip,.stage-context{background:#fff;border:1px solid var(--divider);border-left:5px solid var(--orange);border-radius:8px;padding:12px 15px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.data-stage-strip strong{font-size:18px;display:block}.data-stage-strip small{display:block;color:var(--muted);margin-top:2px}.stage-context{justify-content:flex-start}.stage-context>div strong{display:block}.stage-context p{margin:3px 0 0;color:var(--muted);font-size:12px}.voter-filter{grid-template-columns:minmax(260px,1fr) 140px 190px auto}.row-actions{display:flex;gap:6px}.readonly-field{background:#f4f4f1!important;color:#666}
.profile-head{padding:20px 22px;margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:20px}.profile-head h2{margin:4px 0 6px;font-size:24px}.profile-head p{margin:0;color:var(--muted)}.profile-badges{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.detail-list{display:grid;grid-template-columns:160px 1fr;gap:0;margin:14px 0 0}.detail-list dt,.detail-list dd{padding:10px 0;border-bottom:1px dashed var(--divider)}.detail-list dt{color:var(--muted)}.detail-list dd{margin:0;font-weight:500;min-width:0;overflow-wrap:anywhere}.snapshot-strip{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px}.snapshot-strip>div{border:1px solid var(--divider);border-radius:8px;padding:12px;display:grid;gap:5px}.snapshot-strip b{font-size:16px}.snapshot-strip span,.snapshot-strip small{font-size:11px;color:var(--muted)}
.timeline{display:grid}.timeline article{position:relative;display:grid;grid-template-columns:18px 1fr;gap:10px;padding:0 0 20px}.timeline article:not(:last-child)::before{content:"";position:absolute;left:6px;top:13px;bottom:-4px;width:1px;background:var(--divider)}.timeline-dot{width:13px;height:13px;border-radius:50%;background:var(--orange);border:2px solid var(--border);margin-top:3px;z-index:1}.timeline-title{display:flex;justify-content:space-between;gap:10px}.timeline-title small{color:var(--muted)}.timeline p{margin:4px 0!important;font-size:12px}.change-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.change-chips span{font-size:10px;padding:4px 7px;border:1px solid var(--divider);background:#fafaf8;border-radius:999px}.mobile-detail-action{display:none}
.archive-toolbar{display:grid;grid-template-columns:140px minmax(260px,1fr) auto;gap:10px;margin-bottom:14px}.archive-toolbar input,.archive-toolbar select{min-height:42px;border:1.5px solid var(--border);border-radius:8px;padding:9px 11px;background:#fff}.archive-banner{display:flex;gap:12px;align-items:center;background:#f3f3f0;border:1px solid var(--divider);border-radius:8px;padding:11px 13px;margin-bottom:14px}.archive-banner strong{display:block}.archive-banner p{font-size:11px!important;margin-top:2px!important}.archive-table{min-width:1780px}

/* Tablet refinement v1.3 */
@media (min-width:761px) and (max-width:1180px){
  .workflow-grid{grid-template-columns:1fr}.workflow-stepper{grid-template-columns:repeat(4,minmax(130px,1fr));overflow:auto;padding:3px 3px 8px}.workflow-step{min-width:140px}.establish-form{grid-template-columns:1fr 1fr}.establish-form .btn{grid-column:1/-1}.detail-grid{grid-template-columns:1fr}.snapshot-strip{grid-template-columns:repeat(4,minmax(130px,1fr));overflow:auto}.voter-filter{grid-template-columns:minmax(200px,1fr) 130px 160px auto}.monitoring-table{min-width:1080px}.profile-head{align-items:flex-start}.archive-toolbar{grid-template-columns:130px minmax(220px,1fr) auto}
  .topbar .user-chip>div:last-child{display:none}.topbar-context strong{max-width:56vw}.topbar-context span{max-width:58vw}
}

@media (max-width:760px){
  .workflow-hero,.profile-head{align-items:flex-start;flex-direction:column}.workflow-lock{align-self:flex-start}.workflow-stepper{display:flex;overflow:auto;padding:3px 3px 9px}.workflow-step{min-width:160px}.workflow-grid,.detail-grid{grid-template-columns:1fr}.action-callout{align-items:flex-start;flex-direction:column}.action-callout form,.action-callout .btn{width:100%}.establish-form{grid-template-columns:1fr}.readiness-grid{grid-template-columns:1fr 1fr}.snapshot-strip{display:flex;overflow:auto}.snapshot-strip>div{min-width:145px}.detail-list{grid-template-columns:120px 1fr}.timeline-title{display:grid}.mobile-detail-action{display:block;margin-top:-6px;margin-bottom:18px}.archive-toolbar{grid-template-columns:1fr}.data-stage-strip{align-items:flex-start}.voter-filter{grid-template-columns:1fr}
}

@media (max-width:520px){.readiness-grid{grid-template-columns:1fr}.workflow-hero h2{font-size:19px}.profile-head h2{font-size:21px}.detail-list{grid-template-columns:1fr}.detail-list dt{border-bottom:0;padding-bottom:2px}.detail-list dd{padding-top:2px}.page-head h1{font-size:21px}}

/* SiPandu v1.4 — Master TPS, recap, print & export */
.btn.danger{background:#fff0f0;border-color:var(--danger);color:#9f2020}.btn.danger:hover{background:#ffe2e2}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none!important;transform:none!important}.muted-note{font-size:11px;color:var(--muted)}.muted-row{opacity:.68;background:#fafaf8}
.tps-kpis,.report-kpis{grid-template-columns:repeat(4,minmax(130px,1fr))}.tps-layout{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:20px;align-items:start}.tps-form-panel{position:sticky;top:92px}.stack-form{display:grid;gap:14px}.stack-form label{display:grid;gap:7px;font-size:13px;font-weight:500}.stack-form input,.stack-form textarea,.report-stage-form select{width:100%;border:1.5px solid var(--border);border-radius:8px;background:#fff;padding:10px 12px;min-height:42px;outline:none}.stack-form input:focus,.stack-form textarea:focus,.report-stage-form select:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}.tps-table{min-width:980px}.tps-actions{min-width:210px;align-items:center}.tps-actions form{display:inline-flex;margin:0}.tps-actions .btn{white-space:nowrap}
.report-stage-panel{padding:15px 18px}.report-stage-form{display:grid;grid-template-columns:minmax(280px,1fr) 220px;gap:16px;align-items:end}.report-stage-form label{display:grid;gap:7px;font-size:12px;font-weight:500}.report-source{border-left:4px solid var(--orange);padding:4px 0 4px 13px}.report-source span,.report-source small{display:block;color:var(--muted);font-size:11px}.report-source strong{display:block;margin:3px 0}.document-actions{display:grid;grid-template-columns:repeat(5,minmax(160px,1fr));gap:12px}.doc-card{min-height:92px;border:2px solid var(--border);border-radius:10px;background:#fff;padding:14px;display:flex;align-items:flex-start;gap:11px;box-shadow:2px 2px 0 var(--border);transition:.14s}.doc-card:hover{background:var(--orange-soft);transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--border)}.doc-card>span{width:34px;height:34px;border:1.5px solid var(--border);border-radius:8px;background:var(--orange-soft);display:grid;place-items:center;font-size:17px;flex:0 0 auto}.doc-card strong,.doc-card small{display:block}.doc-card small{color:var(--muted);font-size:11px;margin-top:5px;line-height:1.35}.doc-card.highlight{background:var(--orange-soft)}.doc-card.disabled{opacity:.55;box-shadow:none;border-color:var(--divider);cursor:not-allowed}.doc-card.disabled:hover{transform:none;background:#fff}.report-table{min-width:700px}.report-total td{background:#faf7f2;border-top:2px solid var(--border)}.empty-state{text-align:center;padding:40px 18px}.empty-state strong{display:block;font-size:18px;margin-bottom:7px}.empty-state p{max-width:520px;margin:auto!important}.page-actions{flex-wrap:wrap}

@media (min-width:761px) and (max-width:1180px){
  .tps-layout{grid-template-columns:1fr}.tps-form-panel{position:static}.tps-kpis,.report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.document-actions{grid-template-columns:repeat(3,minmax(170px,1fr))}.report-stage-form{grid-template-columns:minmax(220px,1fr) 200px}.tps-table{min-width:920px}
}

@media (max-width:760px){
  .tps-layout{grid-template-columns:1fr}.tps-form-panel{position:static}.tps-kpis,.report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.document-actions{grid-template-columns:1fr 1fr}.doc-card{min-height:86px}.report-stage-form{grid-template-columns:1fr}.report-source{border-left:0;border-top:4px solid var(--orange);padding:10px 0 0}.page-actions{width:100%}.page-actions .btn{flex:1}.tps-table-wrap{overflow:auto}
}

@media (max-width:520px){
  .document-actions{grid-template-columns:1fr}.tps-kpis,.report-kpis{grid-template-columns:1fr 1fr}.doc-card{min-height:auto}.tps-actions{min-width:180px;flex-wrap:wrap}.tps-actions .btn{min-height:34px;padding:6px 9px;font-size:11px}
}

/* SiPandu v1.5 — Identitas, Branding & Administrasi Dokumen */
.brand-image{width:42px;height:42px;border:2px solid var(--border);border-radius:50%;background:#fff;display:grid;place-items:center;overflow:hidden;flex:0 0 42px}.brand-image img{width:100%;height:100%;object-fit:contain;padding:3px}.login-logo{width:72px;height:72px;border:2px solid var(--border);border-radius:16px;background:#fff;box-shadow:4px 4px 0 var(--border);display:grid;place-items:center;overflow:hidden}.login-logo img{width:100%;height:100%;object-fit:contain;padding:6px}.login-appname{display:inline-flex;padding:5px 9px;border:1px solid var(--divider);background:var(--orange-soft);border-radius:999px;font-size:11px;margin-bottom:12px}.public-logo{width:58px;height:58px;border:2px solid var(--border);border-radius:14px;background:#fff;box-shadow:3px 3px 0 var(--border);display:grid;place-items:center;overflow:hidden;flex:0 0 58px}.public-logo img{width:100%;height:100%;object-fit:contain;padding:5px}.public-tagline{display:block;margin-top:10px;font-size:12px;line-height:1.5;max-width:390px}.public-card-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--divider)}.public-card-head span{font-weight:600}.public-card-head small{color:var(--muted)}.public-contact{margin-top:18px;padding-top:14px;border-top:1px solid var(--divider);display:grid;gap:4px;font-size:11px}.public-contact span,.public-contact small{color:var(--muted);line-height:1.45}
.settings-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,.85fr);gap:20px;align-items:start}.settings-form{min-width:0}.settings-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.settings-fields label{display:grid;gap:7px;font-size:13px;font-weight:500}.settings-fields input,.settings-fields textarea{width:100%;border:1.5px solid var(--border);border-radius:8px;background:#fff;padding:10px 12px;min-height:42px;outline:none}.settings-fields textarea{resize:vertical;line-height:1.45}.settings-fields input:focus,.settings-fields textarea:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-soft)}.logo-setting-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.logo-setting-grid.one{grid-template-columns:1fr}.logo-setting{border:1px solid var(--divider);border-radius:10px;padding:14px;display:grid;grid-template-columns:82px 1fr;gap:14px;align-items:start;background:#fafaf8}.logo-preview{width:78px;height:78px;border:2px solid var(--border);border-radius:12px;background:#fff;display:grid;place-items:center;overflow:hidden}.logo-preview img{width:100%;height:100%;object-fit:contain;padding:6px}.logo-preview span{font-size:18px;font-weight:600;color:var(--muted)}.logo-setting strong,.logo-setting small{display:block}.logo-setting small{font-size:11px;color:var(--muted);margin:4px 0 10px;line-height:1.4}.logo-setting input[type=file]{display:block;width:100%;font-size:11px}.check-row{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:7px!important;margin-top:9px;font-size:11px!important;font-weight:400!important;color:var(--muted)}.check-row input{width:auto!important;min-height:auto!important}.settings-actions{display:flex;justify-content:flex-end;margin-top:20px}.settings-preview{position:sticky;top:92px;border:2px solid var(--border);background:var(--orange-soft)}.settings-preview .eyebrow{font-size:10px;letter-spacing:.08em;color:var(--muted);font-weight:600}.preview-brand-row{display:flex;align-items:center;gap:11px;margin:16px 0}.preview-brand-row img{width:50px;height:50px;object-fit:contain;border:1.5px solid var(--border);border-radius:10px;background:#fff;padding:4px}.preview-brand-row>div:last-child{display:grid}.preview-brand-row small{color:var(--muted)}.settings-preview h2{font-size:22px;margin:14px 0 7px}.settings-preview>p{line-height:1.55;color:var(--ink)}.mini-definition{display:grid;grid-template-columns:88px 1fr;gap:8px 10px;margin:18px 0}.mini-definition dt{color:var(--muted)}.mini-definition dd{margin:0;font-weight:500}.alert.compact{font-size:11px;margin:16px 0 0}.warning-soft{background:#fff7e3;border:1.5px solid var(--warning)}.document-preview-head{display:grid;grid-template-columns:52px 1fr 52px;gap:9px;align-items:center;margin:16px 0;border-bottom:3px double var(--border);padding-bottom:11px;text-align:center}.document-preview-head img,.doc-logo-placeholder{width:50px;height:50px;object-fit:contain;border:1px solid var(--divider);background:#fff;border-radius:7px;padding:3px}.doc-logo-placeholder{display:grid;place-items:center;font-size:10px;color:var(--muted)}.document-preview-head>div:nth-child(2){display:grid;gap:2px}.document-preview-head small{font-size:8px}.document-preview-head strong{font-size:12px}.document-preview-head span{font-size:8px}.document-preview-body{text-align:center;display:grid;gap:6px}.document-preview-body>strong{font-size:12px;text-decoration:underline}.document-preview-body>span{font-size:9px}.preview-signatures{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:46px}.preview-signatures>div{display:grid;gap:3px}.preview-signatures small{color:var(--muted);font-size:9px}.preview-signatures b{font-size:10px;border-top:1px solid var(--border);padding-top:4px}.settings-preview .brand-mark{width:50px;height:50px;border-radius:10px}

@media (min-width:761px) and (max-width:1180px){
  .settings-grid{grid-template-columns:1fr}.settings-preview{position:static}.logo-setting-grid{grid-template-columns:1fr 1fr}.settings-preview{max-width:none}.brand-image{width:42px;height:42px;flex-basis:42px}.sidebar .brand-image{margin:auto}
}
@media (max-width:760px){
  .settings-grid{grid-template-columns:1fr}.settings-preview{position:static}.settings-fields{grid-template-columns:1fr}.settings-fields .span-2{grid-column:auto}.logo-setting-grid{grid-template-columns:1fr}.settings-actions .btn{width:100%}.login-logo{width:58px;height:58px}.public-logo{width:52px;height:52px;flex-basis:52px}.public-tagline{max-width:none}
}
@media (max-width:520px){
  .logo-setting{grid-template-columns:64px 1fr}.logo-preview{width:62px;height:62px}.document-preview-head{grid-template-columns:44px 1fr 44px}.document-preview-head img,.doc-logo-placeholder{width:42px;height:42px}.settings-preview{padding:16px}
}

/* SiPandu v1.6 — Production Dashboard & Quality Control */
.inline-form{display:inline-flex;margin:0}.production-kpis,.quality-kpis,.quality-admin-kpis{grid-template-columns:repeat(6,minmax(130px,1fr))}.quality-critical{border-color:#8f2020!important;background:#fff7f7}.quality-critical strong,.text-danger{color:var(--danger)}.quality-warning{border-color:#d69b14!important;background:#fffaf0}.quality-status-strip{display:flex;justify-content:space-between;align-items:center;gap:18px;background:var(--orange-soft);border:2px solid var(--border);border-radius:var(--radius);box-shadow:3px 3px 0 var(--border);padding:15px 18px;margin-bottom:18px}.quality-status-strip>div:first-child{display:grid;gap:3px}.quality-status-strip .eyebrow{font-size:10px;letter-spacing:.07em;color:var(--muted);font-weight:600}.quality-status-strip small{color:var(--muted)}.quality-health{display:flex;align-items:center;gap:12px}.quality-health span{font-size:12px;color:var(--muted)}.quality-health strong{font-size:28px}.quality-overview-grid{grid-template-columns:minmax(0,1.5fr) minmax(260px,.7fr)}.quality-rule-list{display:grid;grid-template-columns:1fr 1fr;gap:9px}.quality-rule{border:1px solid var(--divider);border-radius:8px;padding:11px 12px;display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fafaf8}.quality-rule:hover{border-color:var(--border);background:var(--orange-soft)}.quality-rule.has-issue{border-color:#e5a972;background:#fff9f3}.quality-rule span{display:grid;gap:3px}.quality-rule small{color:var(--muted);font-size:10px}.quality-rule strong{font-size:18px}.quality-policy{border:2px solid var(--border);background:#fff}.quality-filter{grid-template-columns:minmax(240px,1fr) 170px 240px auto}.quality-table{min-width:1240px}.quality-kritis{background:#fff0f0;border-color:#efb1b1;color:#8f2020}.quality-peringatan{background:#fff7e3;border-color:#efd28b;color:#7a5907}.quality-table td:nth-child(2),.quality-table td:nth-child(4){text-align:center}.quality-table .row-actions{display:flex;gap:6px}.qc-mini-panel{border:2px solid var(--border);box-shadow:3px 3px 0 var(--border)}.qc-mini-list{display:grid;gap:0;border:1px solid var(--divider);border-radius:8px;overflow:hidden}.qc-mini-list>div{display:flex;justify-content:space-between;gap:12px;padding:11px 12px;background:#fff;border-bottom:1px solid var(--divider)}.qc-mini-list>div:last-child{border-bottom:0}.qc-mini-list span{color:var(--muted);font-size:12px}.qc-mini-list strong{font-size:16px}.privacy-note{margin-top:12px;background:var(--orange-soft);border-radius:8px;padding:9px 10px;font-size:11px;color:var(--muted)}.quality-admin-table{min-width:1420px}.quality-admin-table th,.quality-admin-table td{font-size:12px}.quality-admin-table td:nth-child(n+3):nth-child(-n+11){text-align:center}.quality-admin-table .badge{white-space:nowrap}

@media (min-width:761px) and (max-width:1180px){
  .production-kpis,.quality-kpis,.quality-admin-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .quality-overview-grid{grid-template-columns:1fr}.quality-rule-list{grid-template-columns:1fr 1fr}.quality-filter{grid-template-columns:1fr 1fr}.quality-filter button{width:100%}
  .quality-status-strip{margin-bottom:18px}.quality-admin-table{min-width:1350px}
}
@media (max-width:760px){
  .production-kpis,.quality-kpis,.quality-admin-kpis{grid-template-columns:1fr 1fr}.quality-status-strip{align-items:flex-start}.quality-health{display:grid;justify-items:end;gap:2px}.quality-rule-list{grid-template-columns:1fr}.quality-overview-grid{grid-template-columns:1fr}.quality-filter{grid-template-columns:1fr}.quality-status-strip{box-shadow:2px 2px 0 var(--border)}
  .quality-table-wrap{overflow:visible;border:0;background:transparent}.quality-table{min-width:0;display:block;background:transparent}.quality-table thead{display:none}.quality-table tbody{display:grid;gap:12px}.quality-table tr{display:grid;border:2px solid var(--border);border-radius:10px;background:#fff;box-shadow:3px 3px 0 var(--border);padding:8px 12px}.quality-table tr:has(.empty){box-shadow:none;border:1px solid var(--divider)}.quality-table td{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;white-space:normal;border-bottom:1px solid #ecece8;padding:9px 0;text-align:right!important}.quality-table td:last-child{border-bottom:0}.quality-table td::before{content:attr(data-label);font-size:11px;color:var(--muted);font-weight:500;text-align:left;flex:0 0 95px}.quality-table td.wrap-cell{min-width:0;max-width:none}.quality-table td .row-actions{justify-content:flex-end;flex-wrap:wrap}.quality-table td small{text-align:right}
}
@media (max-width:520px){
  .production-kpis,.quality-kpis,.quality-admin-kpis{grid-template-columns:1fr 1fr}.quality-status-strip{flex-direction:column}.quality-health{display:flex;width:100%;justify-content:space-between}.quality-table td::before{flex-basis:82px}.quality-table td{gap:10px}.qc-mini-list>div{padding:10px}
}
.quality-detail-list{display:grid;gap:9px}.quality-detail-list>div{display:grid;grid-template-columns:100px 1fr;gap:12px;align-items:start;border:1px solid var(--divider);border-radius:8px;padding:11px;background:#fafaf8}.quality-detail-list>div>div{display:grid;gap:4px}.quality-detail-list small{color:var(--muted);line-height:1.4}.qc-clear{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid #a5d9c4;background:#eaf8f2;border-radius:9px}.qc-clear>span{width:36px;height:36px;border:1.5px solid var(--success);border-radius:50%;display:grid;place-items:center;font-weight:700}.qc-clear>div{display:grid;gap:3px}.qc-clear small{color:var(--muted)}
@media(max-width:520px){.quality-detail-list>div{grid-template-columns:1fr}.quality-detail-list .badge{justify-self:start}}
.quality-gate-note{margin-top:14px!important;padding:10px 12px;border-radius:8px;background:#eaf8f2;color:#346655!important;font-size:11px;line-height:1.45}.readiness-date{font-size:14px!important;line-height:1.2}

/* v1.7 Production hardening & server-side data view */
.server-table-meta,.server-pagination,.system-maintenance,.backup-callout{display:flex;align-items:center;justify-content:space-between;gap:12px}.server-table-meta{margin:12px 0;color:var(--text-muted,#666)}.server-pagination{margin-top:16px;justify-content:center}.server-pagination button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.voter-table tbody.is-loading{opacity:.55}.ajax-filter #voterSearch{min-width:280px;flex:1}.system-health-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.system-maintenance{margin-bottom:18px}.backup-callout{align-items:flex-start;background:#fff8f3;border:2px solid #252525;border-radius:10px;padding:16px;box-shadow:2px 2px 0 #252525;flex-wrap:wrap}.backup-callout code{background:#202020;color:#fff;padding:8px 10px;border-radius:6px}.badge.security-info{background:#eaf2ff}.badge.security-warning{background:#fff0c2}.badge.security-critical{background:#ffe1e1}.maintenance-screen{min-height:calc(100vh - 160px);display:grid;place-items:center;padding:32px}.maintenance-card{max-width:640px;text-align:center;padding:40px}.maintenance-card h1{margin:18px 0 10px}.maintenance-card p{line-height:1.7;margin-bottom:22px}
@media (max-width:1180px){.system-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ajax-filter #voterSearch{min-width:0;width:100%}}
@media (max-width:760px){.server-table-meta{align-items:flex-start}.server-pagination{position:sticky;bottom:78px;background:#f5f5f3;padding:8px;border-radius:10px;z-index:4}.server-pagination .btn{min-height:40px}.system-health-grid{grid-template-columns:1fr}.system-maintenance{align-items:flex-start;flex-direction:column}.backup-callout{flex-direction:column}.ajax-filter{display:grid;grid-template-columns:1fr 1fr}.ajax-filter #voterSearch{grid-column:1/-1}.ajax-filter #voterReload{grid-column:1/-1}}


/* SiPandu v1.8 — cleaner operational UI */
.compact-head p{margin-top:4px;max-width:520px}.settings-grid-single{grid-template-columns:minmax(0,900px)}
.change-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:10px;margin:0 0 14px}.change-tab{display:flex;justify-content:space-between;align-items:center;text-decoration:none;color:var(--ink);background:#fff;border:1.5px solid var(--border);border-radius:9px;padding:11px 13px}.change-tab strong{font-size:18px}.change-tab.active{background:var(--orange);box-shadow:2px 2px 0 var(--border)}.change-filter{grid-template-columns:minmax(220px,1fr) minmax(150px,190px) 100px auto}.responsive-change-table table{min-width:1050px}.responsive-change-table td.wrap-cell{max-width:280px}
.login-minimal-shell{min-height:100vh;display:grid;grid-template-columns:1fr;place-items:center;background:var(--bg);padding:24px}.login-minimal-card{width:min(410px,100%);padding:28px;background:#fff;box-shadow:3px 3px 0 var(--border)}.minimal-brand,.minimal-public-head{display:flex;align-items:center;gap:11px}.minimal-brand>div:last-child,.minimal-public-head>div:last-child{display:grid;gap:1px}.minimal-brand span,.minimal-public-head span{font-size:11px;color:var(--muted)}.minimal-logo{width:46px;height:46px;border:1.5px solid var(--border);border-radius:10px;background:#fff;display:grid;place-items:center;overflow:hidden;flex:0 0 46px}.minimal-logo img{width:100%;height:100%;object-fit:contain;padding:4px}.minimal-logo-text{background:var(--orange);font-weight:600}.login-title,.public-title{margin:24px 0 18px}.login-title h1,.public-title h1{font-size:27px;margin:0 0 5px}.login-title p,.public-title p{margin:0;color:var(--muted);font-size:12px}.login-minimal-card form,.public-minimal-card form{display:grid;gap:14px;margin-top:0}.minimal-link{display:block;text-align:center;margin-top:20px;font-size:12px;color:var(--muted);text-decoration:none}.minimal-link:hover{color:var(--ink)}
.public-body.public-minimal{background:var(--bg)}.public-minimal-shell{min-height:100vh;width:100%;display:grid;grid-template-columns:1fr;place-items:center;padding:24px}.public-minimal-card{width:min(460px,100%);padding:28px;background:#fff;box-shadow:3px 3px 0 var(--border)}.public-minimal-card .result-box{margin-top:16px}.public-minimal-card .result-box dl{grid-template-columns:76px 1fr}.public-minimal-card .alert{margin-bottom:14px}
.page-head>div>p,.panel-head p,.section-head p{line-height:1.4}.panel-head p,.section-head p{max-width:600px}.doc-card small{line-height:1.25}
@media(max-width:1180px) and (min-width:761px){.change-filter{grid-template-columns:1fr 180px 90px auto}.settings-grid-single{grid-template-columns:1fr}}
@media(max-width:760px){.change-tabs{grid-template-columns:1fr 1fr}.change-filter{grid-template-columns:1fr 1fr}.change-filter>input:first-child{grid-column:1/-1}.change-filter .btn{width:100%}.responsive-change-table table{min-width:0}.responsive-change-table thead{display:none}.responsive-change-table tbody,.responsive-change-table tr,.responsive-change-table td{display:block;width:100%}.responsive-change-table tr{border:1px solid var(--divider);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#fff}.responsive-change-table td{border:0;padding:5px 0;display:grid;grid-template-columns:110px 1fr;gap:8px}.responsive-change-table td:before{content:attr(data-label);font-size:11px;color:var(--muted)}.responsive-change-table td.center{text-align:left}.responsive-change-table .row-actions{justify-content:flex-start}.login-minimal-shell,.public-minimal-shell{padding:16px}.login-minimal-card,.public-minimal-card{padding:22px;box-shadow:2px 2px 0 var(--border)}}
@media(max-width:480px){.change-tabs{grid-template-columns:1fr}.change-filter{grid-template-columns:1fr}.change-filter>input:first-child{grid-column:auto}.responsive-change-table td{grid-template-columns:96px 1fr}.login-title h1,.public-title h1{font-size:24px}}

.change-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:10px;margin:-6px 0 18px}.change-shortcuts a{background:#fff;border:1.5px solid var(--border);border-radius:9px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between}.change-shortcuts a:hover{background:var(--orange-soft)}.change-shortcuts strong{font-size:20px}.change-shortcuts span{font-size:12px;color:var(--muted)}@media(max-width:520px){.change-shortcuts{grid-template-columns:1fr 1fr}.change-shortcuts a{padding:11px}.change-shortcuts strong{font-size:18px}}

/* v1.9 Operator Productivity */
.operation-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.operation-tabs a{padding:10px 13px;border:1.5px solid var(--border);border-radius:9px;background:#fff}.operation-tabs a.active{background:var(--orange);box-shadow:2px 2px 0 var(--border)}
.bulk-action-box{display:grid;grid-template-columns:160px 1fr;gap:18px;align-items:center;border:2px solid var(--border);border-radius:10px;padding:14px 16px;background:var(--orange-soft);margin-bottom:14px}.bulk-action-box>div{display:grid;gap:3px}.bulk-action-box>div strong{font-size:20px}.bulk-action-box form{display:grid;grid-template-columns:minmax(150px,190px) minmax(220px,1fr) auto;gap:10px}.bulk-action-box input,.bulk-action-box select{min-height:42px}
.advanced-filter{border:1px solid var(--divider);border-radius:9px;background:#fafaf8;margin:10px 0 14px}.advanced-filter summary{cursor:pointer;padding:11px 13px;font-weight:500;user-select:none}.advanced-filter[open] summary{border-bottom:1px solid var(--divider)}.advanced-filter-grid,.bulk-filterbar{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;gap:9px;padding:11px}.bulk-filterbar{grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(110px,.7fr)) 90px auto}.bulk-filterbar input,.bulk-filterbar select,.advanced-filter-grid select{min-width:0}
.bulk-responsive-table table{min-width:900px}.bulk-responsive-table th:first-child,.bulk-responsive-table td:first-child{width:48px;text-align:center}.bulk-responsive-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--orange)}
.bulk-upload-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end;margin:14px 0}.bulk-import-panel .template-links{margin-bottom:10px}.clean-note{max-width:680px}.clean-note h2{margin-top:0}.muted{color:var(--muted)}
.change-tabs.three-tabs{grid-template-columns:repeat(3,minmax(0,220px))}.change-summary-table{min-width:860px}.change-summary-table td:nth-child(n+4),.change-summary-table th:nth-child(n+4){text-align:center}.total-row{background:var(--orange-soft)}
@media(max-width:1180px) and (min-width:761px){.bulk-action-box{grid-template-columns:130px 1fr}.bulk-action-box form{grid-template-columns:170px 1fr auto}.bulk-filterbar{grid-template-columns:1fr 1fr 1fr}.bulk-filterbar #bulkSearch{grid-column:1/-1}.advanced-filter-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.operation-tabs{display:grid;grid-template-columns:1fr 1fr}.operation-tabs a:last-child{grid-column:1/-1}.bulk-action-box{grid-template-columns:1fr;position:sticky;top:72px;z-index:4;box-shadow:2px 2px 0 var(--border)}.bulk-action-box form{grid-template-columns:1fr}.bulk-filterbar,.advanced-filter-grid{grid-template-columns:1fr 1fr}.bulk-filterbar #bulkSearch{grid-column:1/-1}.bulk-filterbar #bulkReload,.advanced-filter-grid #voterClearRegion{grid-column:1/-1;width:100%}.bulk-responsive-table{overflow:visible;border:0}.bulk-responsive-table table{min-width:0;display:block}.bulk-responsive-table thead{display:none}.bulk-responsive-table tbody{display:grid;gap:10px}.bulk-responsive-table tr{display:grid;border:1.5px solid var(--border);border-radius:9px;background:#fff;padding:9px 12px}.bulk-responsive-table td{display:grid;grid-template-columns:95px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid var(--divider);text-align:left!important}.bulk-responsive-table td:last-child{border-bottom:0}.bulk-responsive-table td:before{content:attr(data-label);font-size:11px;color:var(--muted)}.bulk-responsive-table td:first-child{width:auto}.change-tabs.three-tabs{grid-template-columns:1fr}.bulk-upload-form{grid-template-columns:1fr}}
@media(max-width:480px){.operation-tabs{grid-template-columns:1fr}.operation-tabs a:last-child{grid-column:auto}.bulk-filterbar,.advanced-filter-grid{grid-template-columns:1fr}.bulk-filterbar #bulkSearch{grid-column:auto}}

/* SiPandu v2.0 — UX Finalization */
.settings-grid-single{display:block;width:100%}.settings-grid-single .settings-form{width:100%;max-width:none}.settings-grid-single .settings-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-grid-single .settings-fields .span-2{grid-column:1/-1}.settings-grid-single .logo-setting-grid.one{grid-template-columns:minmax(0,1fr)}
.system-clean-control{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:78px}.system-clean-control h2{margin:0}.system-clean-control form{margin-left:auto}
.v20-kpi-grid{grid-template-columns:repeat(4,minmax(150px,1fr))}.v20-kpi-grid .kpi{min-height:104px}.v20-kpi-grid .kpi strong{margin-bottom:0}.v20-stage-panel{padding-bottom:18px}.stage-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.stage-summary-grid>div{border:1px solid var(--divider);background:#fafaf8;border-radius:9px;padding:12px 14px;display:flex;align-items:baseline;gap:8px}.stage-summary-grid span{font-size:12px;color:var(--muted)}.stage-summary-grid strong{font-size:22px;margin-left:auto}.stage-summary-grid small{font-size:10px;color:var(--muted)}
.v20-dashboard-grid{grid-template-columns:minmax(0,1.65fr) minmax(300px,.8fr)}.work-queue{display:grid;grid-template-columns:1fr 1fr;gap:9px}.work-queue a{border:1px solid var(--divider);border-radius:9px;padding:12px;background:#fafaf8;display:flex;justify-content:space-between;align-items:center}.work-queue a:hover{background:var(--orange-soft);border-color:#efb381}.work-queue span{font-size:12px;color:var(--muted)}.work-queue strong{font-size:20px}.v20-stage-counts .stage-summary-grid>div{background:#fff}.admin-dashboard-grid{align-items:start}
@media(max-width:1180px) and (min-width:761px){.settings-grid-single .settings-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-grid-single .settings-fields .span-2{grid-column:1/-1}.v20-kpi-grid{grid-template-columns:repeat(2,1fr)}.v20-dashboard-grid{grid-template-columns:1fr}.stage-summary-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.settings-grid-single .settings-fields{grid-template-columns:1fr}.settings-grid-single .settings-fields .span-2{grid-column:auto}.system-clean-control{align-items:stretch;flex-direction:column}.system-clean-control form,.system-clean-control .btn{width:100%;margin:0}.v20-kpi-grid{grid-template-columns:1fr 1fr}.v20-kpi-grid .kpi{min-height:98px}.stage-summary-grid{grid-template-columns:1fr 1fr}.stage-summary-grid>div{padding:10px 11px}.work-queue{grid-template-columns:1fr 1fr}.v20-dashboard-grid{grid-template-columns:1fr}}
@media(max-width:480px){.stage-summary-grid,.work-queue{grid-template-columns:1fr}.v20-kpi-grid{grid-template-columns:1fr 1fr}}


/* SiPandu v2.1 — Hari H & Master Desa */
.master-desa-kpis{grid-template-columns:repeat(2,minmax(140px,220px));justify-content:start}.master-desa-layout{display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:20px;align-items:start}.master-desa-form{position:sticky;top:92px}.master-desa-table table{min-width:780px}.master-desa-table .row-actions form{display:inline-flex;margin:0}.optional{font-size:10px;color:var(--muted);font-weight:400;margin-left:4px}.mobile-only-action{display:none}
@media(max-width:1180px) and (min-width:761px){.master-desa-layout{grid-template-columns:1fr}.master-desa-form{position:static}.master-desa-table table{min-width:720px}}
@media(max-width:760px){.master-desa-kpis{grid-template-columns:1fr 1fr}.master-desa-layout{grid-template-columns:1fr}.master-desa-form{position:static}.mobile-only-action{display:inline-flex}.master-desa-table{overflow:visible;border:0}.master-desa-table table{display:block;min-width:0}.master-desa-table thead{display:none}.master-desa-table tbody{display:grid;gap:10px}.master-desa-table tr{display:grid;border:1.5px solid var(--border);border-radius:10px;background:#fff;padding:10px 12px}.master-desa-table td{display:grid;grid-template-columns:92px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid var(--divider);text-align:left!important}.master-desa-table td:last-child{border-bottom:0}.master-desa-table td:before{content:attr(data-label);font-size:11px;color:var(--muted)}.master-desa-table .row-actions{justify-content:flex-start;flex-wrap:wrap}}

/* v2.2 Smart Re-Import DP4 */
.v22-import-state{display:flex;margin-bottom:14px}.v22-current{min-width:220px;padding:15px 18px;display:grid;gap:2px}.v22-current span,.v22-current small{color:var(--muted);font-size:11px}.v22-current strong{font-size:30px;line-height:1.1}
.v22-import-panel{max-width:none}.v22-import-form{display:grid;gap:16px}.v22-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.v22-mode-card{border:2px solid var(--border);border-radius:10px;background:#fff;padding:14px;display:flex;gap:10px;align-items:flex-start;cursor:pointer;box-shadow:2px 2px 0 var(--border)}.v22-mode-card:has(input:checked){background:var(--orange-soft);box-shadow:4px 4px 0 var(--border)}.v22-mode-card input{margin-top:3px}.v22-mode-card span{display:grid;gap:4px}.v22-mode-card b{font-size:14px}.v22-mode-card small{font-size:11px;color:var(--muted);line-height:1.35}.v22-mode-card.disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.v22-upload-zone{margin-top:0}.v22-mode-banner{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;margin-bottom:14px}.v22-mode-banner>div{display:grid;gap:2px}.v22-mode-banner span:not(.badge),.v22-mode-banner small{font-size:11px;color:var(--muted)}.v22-mode-banner strong{font-size:18px}.v22-compare-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:12px;margin-bottom:16px}.v22-compare-grid .kpi{min-height:98px}.compare-new{background:#eaf8f2;color:#246b4b}.compare-changed{background:#fff4e5;color:#8a5710}.compare-unchanged{background:#f2f2ef;color:#555}.compare-invalid{background:#fff0f0;color:#8f2020}.v22-import-actions{align-items:flex-end}.v22-commit-form{display:grid;gap:9px;justify-items:end}.v22-confirm{max-width:470px;display:flex;gap:8px;align-items:flex-start;font-size:11px;color:var(--muted);line-height:1.4}.v22-confirm input{margin-top:2px}.v22-history table{min-width:860px}.v22-history td:nth-child(n+4):nth-child(-n+6),.v22-history th:nth-child(n+4):nth-child(-n+6){text-align:center}
@media(max-width:1180px) and (min-width:761px){.v22-mode-grid{grid-template-columns:1fr}.v22-compare-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.v22-import-state{display:grid}.v22-current{min-width:0}.v22-mode-grid,.v22-compare-grid{grid-template-columns:1fr 1fr}.v22-mode-card:last-child{grid-column:1/-1}.v22-import-actions{display:grid;gap:12px}.v22-commit-form{justify-items:stretch}.v22-confirm{max-width:none}.v22-history{overflow:hidden}}
@media(max-width:480px){.v22-compare-grid{grid-template-columns:1fr 1fr}.v22-mode-grid{grid-template-columns:1fr}.v22-mode-card:last-child{grid-column:auto}}

/* =========================================================
   SiPandu v3.0 — Neo Electoral Refined / UI-UX Final Polish
   Visual-only layer. Backend workflow and permissions remain unchanged.
   ========================================================= */
:root{
  --orange:#F47C20;--orange-dark:#D9610B;--orange-soft:#FFF1E7;--orange-xsoft:#FFF8F3;
  --ink:#222222;--muted:#6F6F6A;--bg:#F4F4F1;--surface:#FFFFFF;--surface-soft:#FAFAF8;
  --border:#292929;--divider:#E3E2DD;--field:#C9C7C1;
  --success:#228A61;--danger:#D94242;--warning:#D99A14;--info:#3578E5;
  --radius:12px;--radius-sm:9px;--radius-lg:16px;
  --shadow:3px 3px 0 #292929;--shadow-sm:2px 2px 0 #292929;
}
*{scrollbar-width:thin;scrollbar-color:#C9C7C1 transparent}
html{background:var(--bg);-webkit-text-size-adjust:100%}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px;line-height:1.5;font-weight:400;color:var(--ink);background:var(--bg);text-rendering:optimizeLegibility}
button,input,select,textarea{font-family:inherit;color:inherit}
strong,b,h1,h2,h3,h4,th{font-weight:600}
::selection{background:#FFD1AE;color:var(--ink)}
:focus-visible{outline:3px solid rgba(244,124,32,.28);outline-offset:2px}
.ui-icon{width:20px;height:20px;display:block;flex:0 0 auto}

/* Shell / navigation */
.app-shell{grid-template-columns:244px minmax(0,1fr);min-height:100dvh}
.sidebar{border-right:1.5px solid var(--border);background:#fff;z-index:12}
.brand{min-height:72px;padding:14px 16px;border-bottom:1px solid var(--divider);gap:11px}
.brand-image,.brand-mark{width:40px;height:40px;flex-basis:40px;border:1.5px solid var(--border);box-shadow:none;border-radius:11px}
.brand-mark{background:var(--orange);font-size:16px}
.brand-copy{min-width:0}.brand-copy strong{font-size:13px;letter-spacing:.01em;white-space:nowrap}.brand-copy>span{font-size:11px;color:var(--muted)}.brand-year{font-size:11px;font-weight:500;color:var(--muted)}
.sidebar-nav{padding:13px 10px 18px!important;gap:5px!important;overflow-y:auto;overscroll-behavior:contain}
.sidebar nav a{min-height:43px;padding:9px 10px;border:1.5px solid transparent;border-radius:10px;gap:10px;color:#4E4E4A;transition:background .14s,border-color .14s,transform .14s,box-shadow .14s}
.sidebar nav a:hover{background:var(--orange-xsoft);color:var(--ink)}
.sidebar nav a.active{background:var(--orange);color:var(--ink);border-color:var(--border);box-shadow:var(--shadow-sm);font-weight:500}
.sidebar nav a.active:hover{background:var(--orange)}
.nav-glyph{width:19px!important;height:19px!important;flex-basis:19px!important;font-size:inherit!important}
.sidebar-bottom{padding:12px 12px;border-top:1px solid var(--divider);gap:8px;align-items:center}.role-label{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-link{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.logout-link:hover{color:var(--danger)}.logout-icon{width:16px;height:16px}
.main{min-width:0;background:var(--bg)}
.topbar{height:64px;padding:0 22px;border-bottom:1px solid var(--divider);background:rgba(255,255,255,.96);backdrop-filter:saturate(140%) blur(8px);z-index:10}
.topbar-context{min-width:0}.topbar-context strong{font-size:13px;font-weight:600}.topbar-context span{font-size:11px;margin-top:1px}.user-chip{gap:10px}.avatar{width:34px;height:34px;border:1.5px solid var(--border);background:var(--orange-soft);font-size:12px}.user-chip strong{font-size:12px}.user-chip span{font-size:10px}.menu-toggle{width:38px;height:38px;place-items:center;border:1px solid var(--divider);border-radius:10px;background:#fff;padding:8px}.menu-toggle .ui-icon{width:20px;height:20px}
.content{padding:24px clamp(18px,2.25vw,34px) 34px;max-width:1720px;width:100%}

/* Page hierarchy */
.page-head{margin-bottom:18px;align-items:center;min-height:46px}.page-head h1{font-size:23px;line-height:1.2;margin:0 0 4px;letter-spacing:-.012em}.page-head p{font-size:12px;line-height:1.4}.page-actions{gap:8px;flex-wrap:wrap;justify-content:flex-end}.text-link{font-size:11px;text-decoration:none;color:var(--muted)}.text-link:hover{color:var(--orange-dark);text-decoration:underline}
.eyebrow{font-size:10px!important;letter-spacing:.08em;font-weight:600;color:var(--muted)}

/* Surfaces */
.neo-card{border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff}
.panel{border:1px solid var(--divider);border-radius:var(--radius);padding:18px;background:#fff;margin-bottom:18px;box-shadow:none}
.panel-head{margin-bottom:14px;gap:12px}.panel h2,.panel-head h2{font-size:16px;line-height:1.3;margin:0}.panel p,.panel-head p{font-size:11px;line-height:1.45;margin-top:2px}.panel-grid{gap:18px}
.alert{padding:11px 13px;margin-bottom:14px;border-width:1px;border-radius:10px;font-size:12px;line-height:1.45}.alert.success{background:#EDF8F3}.alert.danger{background:#FFF1F1}.warning-soft{border-color:#E7CB8D;background:#FFF9EA}

/* KPIs */
.kpi-grid{gap:12px;margin-bottom:18px}.kpi{position:relative;min-height:102px;padding:15px 16px;overflow:hidden}.kpi::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--orange)}.kpi span{font-size:11px;color:var(--muted)}.kpi strong{font-size:27px;line-height:1.1;margin:10px 0 3px;letter-spacing:-.025em}.kpi small{font-size:10px}.v20-kpi-grid .kpi,.v22-compare-grid .kpi{min-height:96px}
.stage-summary-grid{gap:8px}.stage-summary-grid>div{border-color:var(--divider);background:var(--surface-soft);border-radius:10px;padding:11px 12px}.stage-summary-grid span{font-size:11px}.stage-summary-grid strong{font-size:20px;font-weight:600}.work-queue{gap:8px}.work-queue a{min-height:58px;border-color:var(--divider);border-radius:10px;padding:10px 12px;background:var(--surface-soft)}.work-queue a:hover{background:var(--orange-xsoft);border-color:#E6A773}.work-queue span{font-size:11px}.work-queue strong{font-size:18px}
.change-shortcuts{gap:10px;margin-bottom:18px}.change-shortcuts a{border:1.5px solid var(--border);box-shadow:var(--shadow-sm);border-radius:11px;padding:12px 14px}.change-shortcuts a:hover{background:var(--orange-xsoft)}

/* Buttons */
.btn{min-height:40px;padding:8px 13px;border:1.5px solid var(--border);border-radius:9px;font-size:12px;font-weight:500;line-height:1.2;gap:7px;transition:transform .12s,box-shadow .12s,background .12s,border-color .12s}
.btn.primary{background:var(--orange);box-shadow:var(--shadow-sm)}.btn.primary:hover{background:#F88732;transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--border)}.btn.primary:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--border)}
.btn.secondary{background:#fff}.btn.secondary:hover{background:var(--orange-xsoft);border-color:#8B8983}.btn.danger{background:#FFF4F4;border-color:#C75858;color:#A42D2D}.btn-sm{min-height:34px;padding:6px 9px;font-size:11px}.btn:disabled{opacity:.45;filter:saturate(.35)}

/* Forms */
.form-grid,.settings-fields{gap:14px}.form-grid label,.form-stack label,.stack-form label,.settings-fields label,.login-card label,.public-card label{font-size:11px;font-weight:500;gap:6px;color:#4E4E4A}
.filterbar input,.filterbar select,.advanced-filter-grid select,.bulk-filterbar input,.bulk-filterbar select,.form-grid input,.form-grid select,.form-grid textarea,.form-stack input,.form-stack select,.stack-form input,.stack-form textarea,.settings-fields input,.settings-fields select,.settings-fields textarea,.login-card input,.public-card input,.archive-toolbar input,.archive-toolbar select,.report-stage-form select,.establish-form input{width:100%;min-height:42px;border:1.5px solid var(--field);border-radius:9px;background:#fff;padding:9px 11px;font-size:12px;line-height:1.25;outline:none;box-shadow:none;transition:border-color .12s,box-shadow .12s,background .12s}
textarea{line-height:1.5;resize:vertical}
.filterbar input:hover,.filterbar select:hover,.advanced-filter-grid select:hover,.bulk-filterbar input:hover,.bulk-filterbar select:hover,.form-grid input:hover,.form-grid select:hover,.form-stack input:hover,.form-stack select:hover,.stack-form input:hover,.stack-form textarea:hover,.settings-fields input:hover,.settings-fields select:hover,.settings-fields textarea:hover{border-color:#92908B}
.filterbar input:focus,.filterbar select:focus,.advanced-filter-grid select:focus,.bulk-filterbar input:focus,.bulk-filterbar select:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.form-stack input:focus,.form-stack select:focus,.stack-form input:focus,.stack-form textarea:focus,.settings-fields input:focus,.settings-fields select:focus,.settings-fields textarea:focus,.login-card input:focus,.public-card input:focus,.archive-toolbar input:focus,.archive-toolbar select:focus,.report-stage-form select:focus,.establish-form input:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(244,124,32,.13)}
.readonly-field{background:#F3F3F0!important;color:#777!important;border-color:#DDDCD7!important}.form-actions,.settings-actions{padding-top:4px;gap:8px}.settings-actions{display:flex;justify-content:flex-end;margin-top:18px}
.check-row{font-size:11px!important;font-weight:400!important}.check-row input,input[type="checkbox"],input[type="radio"]{accent-color:var(--orange)}

/* Tables / data density */
.table-wrap{border:1px solid var(--divider);border-radius:10px;background:#fff;box-shadow:none}.table-wrap::-webkit-scrollbar{height:8px}.table-wrap::-webkit-scrollbar-thumb{background:#C8C6C0;border-radius:999px}
table{font-size:12px}th,td{padding:10px 11px;border-bottom:1px solid #ECEBE7}th{height:42px;background:#F8F8F6;color:#5F5E59;font-size:10.5px;font-weight:600;letter-spacing:.02em;top:0;z-index:2}tbody tr{transition:background .12s}tbody tr:hover{background:#FFFAF6}tbody tr:last-child td{border-bottom:0}td strong{font-weight:600}.wrap-cell{line-height:1.4}.empty{padding:32px 14px;font-size:12px}.server-table-meta,.server-pagination{font-size:11px}.server-pagination{padding-top:12px;gap:8px}.row-actions{gap:5px;flex-wrap:nowrap}.row-actions .btn{white-space:nowrap}
.filterbar{gap:8px;margin-bottom:10px}.advanced-filter{margin:8px 0 12px;border-color:var(--divider);border-radius:10px;background:#FBFBF9}.advanced-filter summary{padding:9px 11px;font-size:11px;color:#555}.advanced-filter-grid{gap:8px;padding:10px}.advanced-filter-grid select,.bulk-filterbar select{display:block;color:var(--ink)}.server-table-meta{min-height:30px;display:flex;align-items:center;justify-content:space-between;color:var(--muted)}
.badge{min-height:24px;padding:4px 7px;border-radius:999px;font-size:10px;font-weight:500;line-height:1.1}.badge.orange{background:var(--orange-soft);border-color:#E8AE7F}.status-aktif{background:#EDF8F3}.status-baru{background:#EFF5FF}.status-meninggal,.status-tms{background:#FFF2F2}.status-pindah{background:#FFF8E8}.status-ganda,.status-perlu_verifikasi{background:#FFF3EA}

/* Workflow and data context */
.data-stage-strip,.stage-context{border:1px solid var(--divider);border-left:4px solid var(--orange);border-radius:10px;padding:10px 13px;margin-bottom:12px;background:#fff}.data-stage-strip strong{font-size:16px}.data-stage-strip small,.stage-context p{font-size:10.5px}.stepper{gap:8px}.step{padding:11px;border:1px solid var(--divider);border-radius:10px;background:#fff}.step.active{border:1.5px solid var(--orange);background:var(--orange-xsoft);box-shadow:none}.step.done{border-color:#A8D7C5;background:#F7FCFA}.step span{font-size:10px}.workflow-stepper{gap:9px}.workflow-step{border-color:var(--divider);border-radius:11px;padding:13px}.workflow-step.active{border:1.5px solid var(--orange);box-shadow:var(--shadow-sm);background:var(--orange-xsoft)}.workflow-step strong{font-size:21px;margin:9px 0 2px}.workflow-step small{font-size:10.5px}.action-callout{border:1.5px solid var(--border);border-radius:11px;padding:15px;background:var(--orange-xsoft);box-shadow:var(--shadow-sm)}

/* Feature cards */
.doc-card,.v22-mode-card{border:1.5px solid var(--border);box-shadow:var(--shadow-sm);border-radius:11px}.doc-card:hover,.v22-mode-card:has(input:checked){box-shadow:3px 3px 0 var(--border)}
.upload-zone{border:1.5px dashed #8D8B85;background:#FFFAF6;border-radius:12px;padding:28px}.upload-icon{border:1.5px solid var(--border);box-shadow:var(--shadow-sm);border-radius:11px}.import-steps span{padding:7px 10px;font-size:10.5px}.import-steps span.active{border:1.5px solid var(--border);background:var(--orange);font-weight:500}
.bulk-action-box{border:1.5px solid var(--border);box-shadow:var(--shadow-sm);border-radius:11px;background:var(--orange-xsoft)}
.profile-head{padding:17px 19px}.profile-head h2{font-size:21px}.detail-list dt,.detail-list dd{padding:8px 0;font-size:12px}.snapshot-strip>div{border-radius:10px;background:var(--surface-soft)}
.logo-setting{border:1px solid var(--divider);border-radius:11px;background:var(--surface-soft)}.logo-preview{border:1.5px solid var(--border);box-shadow:none}.settings-preview{box-shadow:var(--shadow-sm)}

/* Login & public: deliberately minimal */
.login-minimal-shell,.public-minimal-shell{background:var(--bg);padding:28px 18px;min-height:100dvh}.login-minimal-shell::before,.public-minimal-shell::before{content:"";position:fixed;left:0;right:0;top:0;height:5px;background:var(--orange)}
.login-minimal-card,.public-minimal-card{width:min(400px,100%);padding:28px;border:1.5px solid var(--border);border-radius:14px;box-shadow:4px 4px 0 var(--border)}.public-minimal-card{width:min(440px,100%)}
.minimal-logo{width:42px;height:42px;flex-basis:42px;border:1.5px solid var(--border);border-radius:10px}.minimal-logo-text{background:var(--orange);font-size:14px}.minimal-brand strong,.minimal-public-head strong{font-size:13px}.minimal-brand span,.minimal-public-head span{font-size:10px}.login-title,.public-title{margin:22px 0 17px}.login-title h1,.public-title h1{font-size:25px;letter-spacing:-.015em}.login-title p,.public-title p{font-size:11px}.login-minimal-card form,.public-minimal-card form{gap:12px}.minimal-link{margin-top:17px;font-size:11px}.result-box{border-width:1px;border-radius:10px;font-size:12px}.result-box.success{background:#F1FAF6}.result-box.warning{background:#FFF9EB}

/* Admin/Desa special layouts */
.account-layout,.tps-layout,.master-desa-layout{gap:18px}.account-form,.tps-form-panel,.master-desa-form{top:82px}.settings-grid-single .settings-form{padding:20px}.settings-grid-single .settings-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.system-clean-control{min-height:66px}.qc-mini-list>div{border-radius:10px;background:var(--surface-soft)}

/* Desktop wide */
@media(min-width:1440px){
  .content{padding-left:32px;padding-right:32px}.v20-kpi-grid{grid-template-columns:repeat(4,minmax(170px,1fr))}.settings-grid-single .settings-fields{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* Tablet 769–1199: compact rail + true tablet layouts */
@media(min-width:769px) and (max-width:1199px){
  .app-shell{grid-template-columns:76px minmax(0,1fr)}
  .sidebar{overflow:visible}.brand{height:64px;min-height:64px;padding:10px;justify-content:center}.brand-copy{display:none}.brand-image,.brand-mark{width:40px;height:40px;flex-basis:40px}
  .sidebar-nav{padding:10px 8px 14px!important;gap:6px!important;overflow-y:auto}.sidebar nav a{min-height:44px;padding:10px;justify-content:center;gap:0;border-radius:10px}.sidebar nav a span{display:none}.nav-glyph{width:20px!important;height:20px!important;flex-basis:20px!important}.sidebar nav a.active{box-shadow:2px 2px 0 var(--border)}
  .sidebar-bottom{justify-content:center;padding:10px 8px}.role-label,.logout-link span{display:none}.logout-link .logout-icon{width:19px;height:19px}
  .topbar{height:62px;padding:0 16px}.topbar .user-chip>div:last-child{display:none}.topbar-context strong{max-width:56vw}.topbar-context span{max-width:58vw}.content{padding:18px 18px 28px;max-width:none}
  .page-head{margin-bottom:15px}.page-head h1{font-size:21px}.panel{padding:16px;margin-bottom:16px}.kpi-grid,.monitoring-kpis,.admin-kpis,.v20-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi{min-height:94px;padding:14px}.kpi strong{font-size:24px}
  .panel-grid,.admin-dashboard-grid,.v20-dashboard-grid,.account-layout,.tps-layout,.master-desa-layout,.workflow-grid,.detail-grid{grid-template-columns:1fr}.account-form,.tps-form-panel,.master-desa-form{position:static}.form-grid,.settings-fields,.settings-grid-single .settings-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-grid-single .settings-fields .span-2{grid-column:1/-1}
  .filterbar{grid-template-columns:minmax(220px,1fr) 145px 145px auto}.voter-filter{grid-template-columns:minmax(220px,1fr) 130px 145px auto}.advanced-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.advanced-filter-grid .btn{grid-column:1/-1;width:max-content}
  .table-wrap{max-width:calc(100vw - 112px);-webkit-overflow-scrolling:touch}.voter-table{min-width:1760px}.account-list table{min-width:900px}.monitoring-table{min-width:1020px}
  .stepper,.workflow-stepper,.snapshot-strip{overflow:auto;padding-bottom:5px}.step{min-width:130px}.workflow-step{min-width:145px}.document-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.stage-summary-grid{grid-template-columns:repeat(2,1fr)}
  .v22-mode-grid{grid-template-columns:1fr}.v22-compare-grid{grid-template-columns:repeat(3,1fr)}
}

/* Phone */
@media(max-width:768px){
  .app-shell{grid-template-columns:1fr}.sidebar{width:min(286px,86vw);left:-310px;border-right:1.5px solid var(--border);box-shadow:10px 0 0 rgba(34,34,34,.10)}.sidebar.open{left:0}.brand{min-height:68px}.brand-copy{display:block}.sidebar-nav{padding:10px 10px 16px!important}.sidebar nav a{justify-content:flex-start;gap:10px}.sidebar nav a span{display:inline}.sidebar-bottom{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.role-label,.logout-link span{display:inline}
  .topbar{height:58px;padding:0 11px}.menu-toggle{display:grid;width:36px;height:36px;padding:7px}.topbar-context strong{max-width:55vw;font-size:12px}.topbar-context span{max-width:58vw;font-size:9.5px}.avatar{width:32px;height:32px}.content{padding:13px 11px calc(84px + env(safe-area-inset-bottom));max-width:none}
  .page-head{margin-bottom:13px;gap:8px}.page-head h1{font-size:20px}.page-head p{font-size:10.5px}.panel{padding:13px;margin-bottom:13px;border-radius:11px}.panel-head{margin-bottom:11px}.panel h2,.panel-head h2{font-size:15px}
  .kpi-grid,.monitoring-kpis,.admin-kpis,.v20-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:13px}.kpi{min-height:88px;padding:12px 13px;border-radius:11px;box-shadow:2px 2px 0 var(--border)}.kpi::before{height:3px}.kpi strong{font-size:22px;margin:8px 0 2px}.kpi span{font-size:10px}
  .panel-grid,.admin-dashboard-grid,.v20-dashboard-grid,.account-layout,.tps-layout,.master-desa-layout,.workflow-grid,.detail-grid{grid-template-columns:1fr;gap:12px}.form-grid,.settings-fields,.settings-grid-single .settings-fields{grid-template-columns:1fr;gap:11px}.span-2,.settings-grid-single .settings-fields .span-2{grid-column:auto}.settings-grid-single .settings-form{padding:14px}.settings-actions,.form-actions{display:grid;grid-template-columns:1fr}.settings-actions .btn,.form-actions .btn{width:100%}
  .btn{min-height:42px}.filterbar,.voter-filter,.archive-toolbar,.report-stage-form{grid-template-columns:1fr}.advanced-filter-grid,.bulk-filterbar{grid-template-columns:1fr 1fr}.advanced-filter-grid .btn,.bulk-filterbar #bulkSearch{grid-column:1/-1}.server-table-meta{font-size:10px}.server-pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.server-pagination .btn{padding:6px 8px}
  .bottom-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-flow:initial;grid-auto-columns:auto;min-height:66px;height:auto;border-top:1.5px solid var(--border);padding:4px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));box-shadow:0 -5px 16px rgba(31,31,31,.06);background:rgba(255,255,255,.98)}.bottom-nav a{min-height:52px;border-radius:9px;gap:2px;color:#77746E}.bottom-nav a small{font-size:9.5px;font-weight:500}.bottom-nav .bottom-icon,.bottom-nav a>.ui-icon{width:20px;height:20px}.bottom-nav a.active{background:var(--orange-soft);color:var(--ink)}.bottom-nav .bottom-add{transform:translateY(-9px);width:50px;height:50px;min-height:50px;border:1.5px solid var(--border);border-radius:14px;box-shadow:2px 2px 0 var(--border);background:var(--orange)}.bottom-nav .bottom-add>.ui-icon{width:22px;height:22px}.bottom-nav .bottom-add small{font-size:8.5px}
  .change-shortcuts{gap:8px;margin-bottom:13px}.change-shortcuts a{padding:10px 11px;box-shadow:2px 2px 0 var(--border)}.work-queue{grid-template-columns:1fr 1fr;gap:7px}.work-queue a{min-height:54px}.stage-summary-grid{grid-template-columns:1fr 1fr;gap:7px}.stage-summary-grid>div{padding:9px 10px}.stage-summary-grid strong{font-size:18px}
  .stepper{display:flex;overflow:auto;padding-bottom:5px}.step{min-width:120px;padding:9px}.workflow-stepper{display:flex}.workflow-step{min-width:150px}.data-stage-strip{padding:9px 11px}.data-stage-strip strong{font-size:15px}
  .upload-zone{padding:20px 12px}.upload-zone h2{font-size:17px}.upload-zone p{font-size:11px;line-height:1.45}.v22-mode-grid{grid-template-columns:1fr}.v22-mode-card:last-child{grid-column:auto}.v22-compare-grid{grid-template-columns:1fr 1fr}.v22-current{min-width:0}.document-actions{grid-template-columns:1fr 1fr}
  .login-minimal-shell,.public-minimal-shell{padding:18px 12px}.login-minimal-card,.public-minimal-card{padding:22px 18px;border-radius:13px;box-shadow:3px 3px 0 var(--border)}
}

/* Phone data tables become readable cards */
@media(max-width:680px){
  .voter-table-wrap,.responsive-change-table,.bulk-responsive-table,.master-desa-table{overflow:visible;border:0;background:transparent}.voter-table tr,.responsive-change-table tr,.bulk-responsive-table tr,.master-desa-table tr{border:1px solid var(--divider)!important;box-shadow:2px 2px 0 #D8D6D0!important;border-radius:11px!important;padding:9px 11px!important}.voter-table td,.responsive-change-table td,.bulk-responsive-table td,.master-desa-table td{grid-template-columns:105px minmax(0,1fr)!important;padding:6px 1px!important;border-bottom:1px dashed var(--divider)!important;font-size:11.5px}.voter-table td::before,.responsive-change-table td::before,.bulk-responsive-table td::before,.master-desa-table td::before{font-size:9.5px!important;font-weight:600!important;color:#77746E!important}.voter-table td:last-child,.responsive-change-table td:last-child,.bulk-responsive-table td:last-child,.master-desa-table td:last-child{border-bottom:0!important}.row-actions{flex-wrap:wrap}
}

@media(max-width:440px){
  .kpi-grid,.monitoring-kpis,.admin-kpis,.v20-kpi-grid{grid-template-columns:1fr 1fr}.work-queue,.stage-summary-grid,.document-actions{grid-template-columns:1fr}.advanced-filter-grid,.bulk-filterbar{grid-template-columns:1fr}.advanced-filter-grid .btn,.bulk-filterbar #bulkSearch{grid-column:auto}.server-pagination{grid-template-columns:1fr 1fr}.server-pagination span{grid-column:1/-1;grid-row:1;text-align:center}.v22-compare-grid{grid-template-columns:1fr 1fr}
}

/* v3.0.2 — Navigation, Footer & SweetAlert polish */
.main{min-height:100dvh;display:flex;flex-direction:column}
.content{flex:1 0 auto}
.sidebar-bottom{justify-content:flex-start;min-height:45px}
.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:0}
.topbar-actions .user-chip{margin-left:0}
.topbar-logout{min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 10px;border:1px solid var(--divider);border-radius:9px;background:#fff;color:#5f5d58;font-size:11px;font-weight:500;transition:background .12s,border-color .12s,color .12s,transform .12s}
.topbar-logout:hover{background:#fff3f3;border-color:#e7b1b1;color:#a52e2e}
.topbar-logout:active{transform:translateY(1px)}
.topbar-logout .logout-icon{width:17px;height:17px}
.app-footer{flex:0 0 auto;min-height:58px;border-top:1px solid var(--divider);background:#fff;padding:12px clamp(18px,2.25vw,34px);display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--muted);font-size:10.5px;line-height:1.35}
.app-footer>div{display:grid;gap:2px}.app-footer strong{color:#4c4a46;font-size:11px;font-weight:600}.app-footer>span{text-align:right}
.minimal-footer{width:100%;max-width:520px;text-align:center;color:var(--muted);font-size:10px;line-height:1.4;padding:14px 8px 0}
.login-minimal-shell,.public-minimal-shell{grid-template-rows:minmax(0,1fr) auto;align-items:center;justify-items:center}
.login-minimal-card,.public-minimal-card{align-self:center}
.app-flash[hidden]{display:none!important}

/* Local SweetAlert-style dialogs. Kept self-hosted so CSP remains script-src 'self'. */
.sipandu-swal-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px;background:rgba(24,24,22,.34);backdrop-filter:blur(2px);opacity:0;transition:opacity .14s ease}
.sipandu-swal-overlay.show{opacity:1}
.sipandu-swal{width:min(410px,100%);background:#fff;border:1.5px solid var(--border);border-radius:14px;box-shadow:5px 5px 0 rgba(37,37,37,.92);padding:24px;text-align:center;transform:translateY(5px) scale(.985);transition:transform .14s ease;outline:0}
.sipandu-swal-overlay.show .sipandu-swal{transform:none}
.sipandu-swal>.sipandu-swal-icon{width:48px;height:48px;margin:0 auto 13px;border:1.5px solid currentColor;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:600}
.sipandu-swal-icon.is-success{color:var(--success);background:#edf8f3}.sipandu-swal-icon.is-error{color:var(--danger);background:#fff1f1}.sipandu-swal-icon.is-warning{color:#b87500;background:#fff8e8}.sipandu-swal-icon.is-info,.sipandu-swal-icon.is-question{color:var(--info);background:#eef5ff}
.sipandu-swal h2{font-size:18px;line-height:1.25;margin:0 0 8px;font-weight:600}.sipandu-swal p{margin:0 auto;color:var(--muted);font-size:12px;line-height:1.55;max-width:330px;white-space:pre-line}
.sipandu-swal-actions{display:flex;justify-content:center;gap:8px;margin-top:20px}.sipandu-swal-actions.reverse{flex-direction:row}
.sipandu-swal-btn{min-height:39px;padding:8px 14px;border:1.5px solid var(--border);border-radius:9px;background:#fff;font-size:12px;font-weight:500;cursor:pointer}.sipandu-swal-btn.cancel:hover{background:#f4f4f1}.sipandu-swal-btn.confirm{background:var(--orange);box-shadow:2px 2px 0 var(--border)}.sipandu-swal-btn.confirm:hover{background:#f88732}
.sipandu-swal-toast{position:fixed;z-index:1001;right:18px;top:78px;width:min(360px,calc(100vw - 28px));background:#fff;border:1.5px solid var(--border);border-radius:12px;box-shadow:3px 3px 0 rgba(37,37,37,.88);padding:11px 13px;display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:center;opacity:0;transform:translateY(-8px);transition:opacity .16s,transform .16s}
.sipandu-swal-toast.show{opacity:1;transform:none}.sipandu-swal-toast>.sipandu-swal-icon{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:600}.sipandu-swal-toast.is-success>.sipandu-swal-icon{background:#edf8f3;color:var(--success)}.sipandu-swal-toast.is-error>.sipandu-swal-icon{background:#fff1f1;color:var(--danger)}.sipandu-swal-toast.is-warning>.sipandu-swal-icon{background:#fff8e8;color:#b87500}.sipandu-swal-toast.is-info>.sipandu-swal-icon{background:#eef5ff;color:var(--info)}
.sipandu-swal-toast>div{display:grid;gap:2px;min-width:0}.sipandu-swal-toast strong{font-size:11.5px}.sipandu-swal-toast span{font-size:10.5px;color:var(--muted);line-height:1.4}

@media(min-width:769px) and (max-width:1199px){
  .sidebar-bottom{justify-content:center}.role-label{display:none}
  .topbar-actions{gap:7px}.topbar-logout{width:36px;height:36px;min-height:36px;padding:8px}.topbar-logout span{display:none}.topbar-logout .logout-icon{width:18px;height:18px}
  .app-footer{padding-left:18px;padding-right:18px}
}
@media(max-width:768px){
  .topbar-actions{gap:6px}.topbar .user-chip{display:none}.topbar-logout{width:34px;height:34px;min-height:34px;padding:7px;border-color:var(--divider)}.topbar-logout span{display:none}.topbar-logout .logout-icon{width:18px;height:18px}
  .app-footer{margin-bottom:66px;padding:12px 12px 13px;display:grid;grid-template-columns:1fr;gap:3px;text-align:center}.app-footer>div{gap:1px}.app-footer>span{text-align:center}.content{padding-bottom:20px}
  .sipandu-swal{padding:21px 17px;border-radius:13px}.sipandu-swal h2{font-size:17px}.sipandu-swal-actions{display:grid;grid-template-columns:1fr 1fr}.sipandu-swal-btn{width:100%}.sipandu-swal-toast{top:68px;right:10px;width:calc(100vw - 20px)}
  .minimal-footer{padding-top:11px}
}
@media(max-width:440px){
  .topbar-context strong{max-width:64vw}.topbar-context span{max-width:64vw}
  .sipandu-swal-actions{grid-template-columns:1fr}.sipandu-swal-actions.reverse .cancel{order:2}.sipandu-swal-actions.reverse .confirm{order:1}
}
.topbar-context{flex:1 1 auto;min-width:0}
@media(max-width:768px){.topbar{gap:8px}.topbar-context strong,.topbar-context span{max-width:100%}}


/* v3.0.3 — Operation form consistency & timezone polish */
.bulk-action-box input,
.bulk-action-box select{
  width:100%;
  min-width:0;
  min-height:42px;
  height:42px;
  border:1.5px solid var(--field);
  border-radius:9px;
  background:#fff;
  padding:9px 11px;
  font-size:12px;
  line-height:1.25;
  outline:none;
  box-shadow:none;
  transition:border-color .12s,box-shadow .12s,background .12s;
}
.bulk-action-box input::placeholder{color:#9A9790;opacity:1}
.bulk-action-box input:hover,
.bulk-action-box select:hover{border-color:#92908B}
.bulk-action-box input:focus,
.bulk-action-box select:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(244,124,32,.13)}
.bulk-action-box .btn{min-height:42px;height:42px;align-self:stretch}
@media(max-width:760px){
  .bulk-action-box input,.bulk-action-box select,.bulk-action-box .btn{height:44px;min-height:44px}
}

/* v3.1 — Production Integrity polish */
.logout-form{margin:0;display:inline-flex}
.user-chip-link{text-decoration:none;color:inherit}
.password-panel{max-width:720px;margin-inline:auto}
.password-panel .form-grid{align-items:end}
@media(max-width:768px){.password-panel{max-width:none}}

/* v3.2.2 — TMS categories */
.status-di_bawah_umur,.status-tidak_dikenal{background:#FFF8E8;border-color:#E8C979}.status-tni,.status-polri{background:#F2F1FF;border-color:#C8C2E8}.tms-guide{margin:12px 0 16px}.tms-guide-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:10px;margin:12px 0}.tms-guide-grid p{margin:0;padding:10px 12px;border:1px solid var(--divider);border-radius:8px;background:#fafaf8;display:grid;gap:4px}.tms-guide-grid strong{font-weight:600}.tms-guide-grid span{font-size:12px;color:var(--muted);line-height:1.45}@media(max-width:1199px){.tms-guide-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media(max-width:768px){.tms-guide-grid{grid-template-columns:1fr}}

/* v3.3.0 — Public tracking DP4→DPT + aggregate TPS monitoring */
.public-tracking-shell{align-items:start;padding-top:32px;padding-bottom:24px}
.public-tracking-card{width:min(760px,100%)}
.public-info-note{display:grid;gap:4px;margin:0 0 16px;padding:11px 13px;border:1px solid #E5B783;border-left:4px solid var(--orange);border-radius:10px;background:#FFF9F3;font-size:11px;line-height:1.45}
.public-info-note strong{font-size:12px;font-weight:600}.public-info-note span{color:var(--muted)}
.public-tracking-form{grid-template-columns:1fr 1fr}.public-tracking-form .btn{grid-column:1/-1}
.result-box.danger{background:#FFF2F2;border-color:#D97979}
.public-voter-result{gap:12px}.public-result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.public-result-head>div{display:grid;gap:3px}.public-result-head>div>strong{font-size:14px}.public-result-head>div>span{font-size:11px;color:var(--muted)}
.public-voter-result dl{grid-template-columns:92px 1fr!important;margin-top:0!important}.public-voter-result dd{white-space:normal}
.public-status-note{padding:9px 11px;border:1px solid #E2C59E;border-radius:9px;background:#FFF9F1;color:#645849;font-size:10.5px;line-height:1.45}.public-status-note.warning-note{border-color:#DFC77C;background:#FFF9E8}.public-status-note.danger-note{border-color:#E2A1A1;background:#FFF4F4;color:#7C3B3B}
.public-stage-track{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:2px}.public-stage-step{min-height:74px;border:1px solid var(--divider);border-radius:9px;padding:9px 8px;display:grid;align-content:start;gap:3px;background:#FAFAF8}.public-stage-step b{font-size:11px}.public-stage-step span{font-size:9.5px;color:var(--muted);line-height:1.3}.public-stage-step small{font-size:8.5px;color:#777}.public-stage-step.done{border-color:#A8D7C5;background:#F4FBF8}.public-stage-step.current{border:1.5px solid var(--orange);background:var(--orange-xsoft)}.public-stage-step.final{border:1.5px solid var(--success);background:#EDF8F3}.public-stage-step.future{opacity:.65}
.monitoring-tps-table{min-width:900px}.monitoring-tps-table td:nth-child(6),.monitoring-tps-table td:nth-child(7),.monitoring-tps-table td:nth-child(8),.monitoring-tps-table th:nth-child(6),.monitoring-tps-table th:nth-child(7),.monitoring-tps-table th:nth-child(8){text-align:center}
#rekap-tps{scroll-margin-top:82px}
@media(max-width:760px){.public-tracking-shell{padding-top:18px}.public-tracking-form{grid-template-columns:1fr}.public-tracking-form .btn{grid-column:auto}.public-stage-track{grid-template-columns:1fr 1fr}.public-result-head{gap:8px}.monitoring-tps-table{min-width:820px}}
@media(max-width:440px){.public-stage-track{grid-template-columns:1fr}.public-voter-result dl{grid-template-columns:82px 1fr!important}.public-tracking-card{padding:20px 16px!important}}


/* v3.3.1 — Dashboard TPS Information */
.dashboard-kpi-five{grid-template-columns:repeat(5,minmax(140px,1fr))}
.dashboard-tps-panel{scroll-margin-top:82px}
.dashboard-tps-head{margin-bottom:12px}
.dashboard-tps-filter,.monitoring-tps-filter{display:flex;align-items:center;gap:9px;margin-bottom:12px;padding:10px 12px;border:1px solid var(--divider);border-radius:10px;background:#FAFAF8}
.dashboard-tps-filter label,.monitoring-tps-filter label{font-size:11px;color:var(--muted);white-space:nowrap}
.dashboard-tps-filter select,.monitoring-tps-filter select{width:min(320px,100%);height:40px;min-height:40px;border:1.5px solid var(--field);border-radius:9px;background:#fff;padding:8px 34px 8px 11px;font-size:12px;outline:none}
.dashboard-tps-filter select:focus,.monitoring-tps-filter select:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(244,124,32,.13)}
.dashboard-tps-selected,.monitoring-tps-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}
.dashboard-tps-selected>div,.monitoring-tps-mini>div{border:1px solid var(--divider);border-radius:9px;background:#FAFAF8;padding:10px 12px;display:grid;gap:3px}
.dashboard-tps-selected span,.monitoring-tps-mini span{font-size:10px;color:var(--muted)}
.dashboard-tps-selected strong,.monitoring-tps-mini strong{font-size:18px;font-weight:600}
.dashboard-tps-summary-table{min-width:760px}.dashboard-tps-detail-table{min-width:620px}.dashboard-desa-tps-table{min-width:640px}
.dashboard-tps-summary-table td:nth-child(n+3):not(:last-child),.dashboard-tps-summary-table th:nth-child(n+3):not(:last-child),.dashboard-tps-detail-table td:nth-child(n+4),.dashboard-tps-detail-table th:nth-child(n+4),.dashboard-desa-tps-table td:nth-child(n+4),.dashboard-desa-tps-table th:nth-child(n+4){text-align:center}
.dashboard-no-tps td{background:#FFF9F1}
.monitoring-tps-head{margin-bottom:12px}
@media(max-width:1180px) and (min-width:761px){.dashboard-kpi-five{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.dashboard-kpi-five{grid-template-columns:1fr 1fr}.dashboard-tps-filter,.monitoring-tps-filter{align-items:stretch;flex-direction:column}.dashboard-tps-filter select,.monitoring-tps-filter select,.dashboard-tps-filter .btn,.monitoring-tps-filter .btn{width:100%}.dashboard-tps-selected,.monitoring-tps-mini{grid-template-columns:1fr 1fr}.dashboard-desa-tps-table{min-width:580px}}
@media(max-width:440px){.dashboard-tps-selected,.monitoring-tps-mini{grid-template-columns:1fr 1fr}}

/* v3.3.2 — Template DPS/DPT + public NIK only */
.public-tracking-form{grid-template-columns:1fr}
.public-tracking-form .btn{grid-column:auto}
.public-full-name{font-size:13px!important;color:var(--text)!important;font-weight:500;letter-spacing:.01em}

/* =========================================================
   SiPandu v3.3.4 — Logo & Header Identity Polish
   Visual-only: frameless official logo + refined application identity.
   ========================================================= */

/* Official uploaded logo: float naturally, never look like a card/badge. */
.brand-image{
  width:48px;height:48px;flex:0 0 48px;
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;overflow:visible!important;padding:0!important;
  display:grid;place-items:center;
}
.brand-image img{
  display:block;width:auto!important;height:auto!important;max-width:100%;max-height:100%;
  object-fit:contain!important;padding:0!important;border:0!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;
  filter:drop-shadow(0 2px 2px rgba(24,24,24,.10));
}
/* Fallback initial remains intentionally styled when no logo is uploaded. */
.brand-mark{
  width:42px;height:42px;flex-basis:42px;border:1.5px solid var(--border)!important;
  border-radius:11px!important;background:var(--orange)!important;
}
.brand{min-height:76px;padding:13px 16px;gap:13px}
.brand-copy{display:grid;gap:2px;line-height:1.15}
.brand-title{display:flex!important;align-items:baseline;gap:7px;min-width:0;font-size:14px!important;font-weight:600;letter-spacing:.015em}
.brand-title>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand-title .brand-year{font-size:12px!important;font-weight:400!important;color:#77736d!important;letter-spacing:.01em}
.brand-subtitle{font-size:10.5px!important;color:var(--muted);letter-spacing:.01em}

/* Header context: quieter hierarchy with a small electoral accent. */
.topbar{height:66px;padding-inline:22px;background:rgba(255,255,255,.98)}
.topbar-context{position:relative;padding-left:12px;display:grid!important;align-content:center;gap:1px}
.topbar-context::before{content:"";position:absolute;left:0;top:50%;width:3px;height:30px;transform:translateY(-50%);background:var(--orange);border-radius:999px}
.topbar-context strong{font-size:14px!important;line-height:1.2;font-weight:600}
.topbar-context>span{font-size:10.5px!important;line-height:1.25;color:var(--muted)}
.topbar-actions{padding-left:8px}

/* Login / Public identity: uploaded logo is also frameless. */
.minimal-logo:not(.minimal-logo-text){
  width:54px;height:54px;flex:0 0 54px;
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;overflow:visible!important;padding:0!important;
}
.minimal-logo:not(.minimal-logo-text) img{
  display:block;width:auto!important;height:auto!important;max-width:100%;max-height:100%;
  object-fit:contain!important;padding:0!important;border:0!important;border-radius:0!important;
  background:transparent!important;box-shadow:none!important;
  filter:drop-shadow(0 2px 2px rgba(24,24,24,.10));
}
.minimal-logo-text{width:44px;height:44px;flex-basis:44px;border:1.5px solid var(--border);border-radius:10px;background:var(--orange)}
.minimal-brand,.minimal-public-head{gap:14px;align-items:center}
.minimal-brand-copy{min-width:0;display:grid;gap:3px!important}
.minimal-brand-copy>strong{display:flex!important;align-items:baseline;gap:7px;font-size:14px!important;font-weight:600;line-height:1.15;letter-spacing:.015em}
.minimal-brand-copy>strong>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.minimal-brand-copy .identity-year{font-size:11px;color:#77736d;font-weight:400;letter-spacing:.01em}
.minimal-brand-copy>span{font-size:10.5px!important;color:var(--muted);line-height:1.3}

/* Keep branding previews faithful to the real frameless header. */
.preview-brand-row img{
  width:54px;height:54px;object-fit:contain;border:0!important;border-radius:0!important;
  background:transparent!important;padding:0!important;filter:drop-shadow(0 2px 2px rgba(24,24,24,.10));
}

@media(min-width:769px) and (max-width:1199px){
  .brand{height:66px;min-height:66px;padding:8px;justify-content:center}
  .brand-copy{display:none!important}
  .brand-image{width:46px;height:46px;flex-basis:46px}
  .brand-mark{width:40px;height:40px;flex-basis:40px}
  .topbar{height:64px;padding-inline:16px}
  .topbar-context{padding-left:10px}
  .topbar-context::before{height:26px;width:3px}
}
@media(max-width:768px){
  .brand{min-height:70px;padding:10px 14px;gap:12px}
  .brand-copy{display:grid!important}
  .brand-image{width:46px;height:46px;flex-basis:46px}
  .brand-title{font-size:13px!important}.brand-title .brand-year{font-size:11px!important}.brand-subtitle{font-size:10px!important}
  .topbar{height:60px;padding-inline:11px}
  .topbar-context{padding-left:9px}
  .topbar-context::before{height:24px;width:2.5px}
  .topbar-context strong{font-size:12.5px!important}.topbar-context>span{font-size:9.5px!important}
  .minimal-logo:not(.minimal-logo-text){width:50px;height:50px;flex-basis:50px}
}
@media(max-width:420px){
  .brand-image{width:42px;height:42px;flex-basis:42px}
  .brand-title{max-width:190px}
  .minimal-logo:not(.minimal-logo-text){width:46px;height:46px;flex-basis:46px}
  .minimal-brand-copy>strong{font-size:13px!important}
}

/* =========================================================
   SiPandu v3.3.7 — Responsive Layout Consolidation
   Canonical desktop / tablet / phone behavior.
   device-phone and device-tablet are JS fallbacks for mobile
   browsers that expose a desktop-like viewport width.
   ========================================================= */
html,body{max-width:100%;overflow-x:hidden}
img,svg{max-width:100%}
.main,.content,.panel,.table-wrap{min-width:0}

/* Tablet canonical layout (also applied by device detection fallback). */
.device-tablet .app-shell{grid-template-columns:76px minmax(0,1fr)!important}
.device-tablet .sidebar{position:sticky!important;left:auto!important;top:0!important;width:auto!important;height:100dvh!important;overflow:visible!important;box-shadow:none!important;transition:none!important}
.device-tablet .brand{height:66px!important;min-height:66px!important;padding:8px!important;justify-content:center!important}
.device-tablet .brand-copy{display:none!important}
.device-tablet .brand-image{width:46px!important;height:46px!important;flex-basis:46px!important}
.device-tablet .brand-mark{width:40px!important;height:40px!important;flex-basis:40px!important}
.device-tablet .sidebar-nav{padding:10px 8px 14px!important;gap:6px!important;overflow-y:auto!important}
.device-tablet .sidebar nav a{min-height:44px!important;padding:10px!important;justify-content:center!important;gap:0!important}
.device-tablet .sidebar nav a span{display:none!important}
.device-tablet .sidebar-bottom{justify-content:center!important;padding:10px 8px!important}
.device-tablet .role-label{display:none!important}
.device-tablet .menu-toggle,.device-tablet .sidebar-overlay,.device-tablet .bottom-nav{display:none!important}
.device-tablet .topbar{height:64px!important;padding:0 16px!important}
.device-tablet .topbar .user-chip>div:last-child{display:none!important}
.device-tablet .content{padding:18px 18px 28px!important;max-width:none!important;margin:0!important}
.device-tablet .page-head h1{font-size:21px!important}
.device-tablet .kpi-grid,.device-tablet .monitoring-kpis,.device-tablet .admin-kpis,.device-tablet .v20-kpi-grid,.device-tablet .dashboard-kpi-five{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important}
.device-tablet .panel-grid,.device-tablet .admin-dashboard-grid,.device-tablet .v20-dashboard-grid,.device-tablet .account-layout,.device-tablet .tps-layout,.device-tablet .master-desa-layout,.device-tablet .workflow-grid,.device-tablet .detail-grid{grid-template-columns:1fr!important}
.device-tablet .form-grid,.device-tablet .settings-fields,.device-tablet .settings-grid-single .settings-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.device-tablet .table-wrap{max-width:calc(100vw - 112px)!important;overflow:auto!important;-webkit-overflow-scrolling:touch}
.device-tablet .voter-table{min-width:1760px!important}
.device-tablet .advanced-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.device-tablet .app-footer{padding-left:18px!important;padding-right:18px!important}

/* Phone canonical layout. */
.device-phone .app-shell{display:block!important;grid-template-columns:1fr!important;min-height:100dvh!important}
.device-phone .main{width:100%!important;min-width:0!important}
.device-phone .sidebar{position:fixed!important;left:-320px!important;top:0!important;z-index:40!important;width:min(292px,86vw)!important;height:100dvh!important;max-height:100dvh!important;overflow:hidden!important;border-right:1.5px solid var(--border)!important;box-shadow:10px 0 24px rgba(30,30,30,.12)!important;transition:left .2s ease!important}
.device-phone .sidebar.open{left:0!important}
.device-phone .brand{min-height:68px!important;padding:10px 14px!important;justify-content:flex-start!important}
.device-phone .brand-copy{display:grid!important}
.device-phone .sidebar-nav{padding:9px 10px 14px!important;overflow-y:auto!important;overscroll-behavior:contain!important}
.device-phone .sidebar nav a{min-height:44px!important;padding:10px 11px!important;justify-content:flex-start!important;gap:10px!important}
.device-phone .sidebar nav a span{display:inline!important}
.device-phone .sidebar-bottom{padding:10px 12px calc(12px + env(safe-area-inset-bottom))!important}
.device-phone .role-label{display:inline!important}
.device-phone.menu-open{overflow:hidden!important}
.device-phone .sidebar-overlay{display:block!important;position:fixed!important;inset:0!important;background:rgba(20,20,20,.36)!important;z-index:35!important;opacity:0!important;pointer-events:none!important;transition:opacity .18s!important}
.device-phone .sidebar-overlay.show{opacity:1!important;pointer-events:auto!important}
.device-phone .topbar{height:58px!important;padding:0 10px!important;gap:8px!important;position:sticky!important;top:0!important;z-index:30!important}
.device-phone .menu-toggle{display:grid!important;width:36px!important;height:36px!important;min-width:36px!important;padding:7px!important}
.device-phone .topbar-context{padding-left:8px!important;min-width:0!important;overflow:hidden!important}
.device-phone .topbar-context::before{height:23px!important;width:2.5px!important}
.device-phone .topbar-context strong,.device-phone .topbar-context>span{max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
.device-phone .topbar-context strong{font-size:12.5px!important}
.device-phone .topbar-context>span{font-size:9.5px!important}
.device-phone .topbar-actions{gap:5px!important;padding-left:0!important}
.device-phone .topbar .user-chip{display:none!important}
.device-phone .topbar-logout{width:34px!important;height:34px!important;min-height:34px!important;padding:7px!important}
.device-phone .topbar-logout span{display:none!important}
.device-phone .content{width:100%!important;max-width:none!important;margin:0!important;padding:12px 10px calc(90px + env(safe-area-inset-bottom))!important}
.device-phone .page-head{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:8px!important;min-height:0!important;margin-bottom:12px!important}
.device-phone .page-head h1{font-size:20px!important;line-height:1.18!important;margin-bottom:3px!important}
.device-phone .page-head p{font-size:10.5px!important;line-height:1.35!important}
.device-phone .page-actions{width:100%!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
.device-phone .page-actions.desktop-action{display:none!important}
.device-phone .page-actions .btn{width:100%!important;min-width:0!important;white-space:normal!important;text-align:center!important}
.device-phone .panel{padding:13px!important;margin-bottom:12px!important;border-radius:11px!important}
.device-phone .panel-head{align-items:flex-start!important;gap:8px!important;margin-bottom:11px!important}
.device-phone .panel-head h2{font-size:15px!important}
.device-phone .panel-head p{font-size:10.5px!important}
.device-phone .neo-card{box-shadow:2px 2px 0 var(--border)!important}
.device-phone .kpi-grid,.device-phone .monitoring-kpis,.device-phone .admin-kpis,.device-phone .v20-kpi-grid,.device-phone .dashboard-kpi-five{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important;margin-bottom:12px!important}
.device-phone .kpi{min-height:84px!important;padding:11px 12px!important}
.device-phone .kpi::before{height:3px!important}
.device-phone .kpi span{font-size:9.5px!important}
.device-phone .kpi strong{font-size:21px!important;margin:7px 0 2px!important}
.device-phone .kpi small{font-size:9px!important}
.device-phone .panel-grid,.device-phone .admin-dashboard-grid,.device-phone .v20-dashboard-grid,.device-phone .account-layout,.device-phone .tps-layout,.device-phone .master-desa-layout,.device-phone .workflow-grid,.device-phone .detail-grid{grid-template-columns:1fr!important;gap:11px!important}
.device-phone .form-grid,.device-phone .settings-fields,.device-phone .settings-grid-single .settings-fields,.device-phone .filterbar,.device-phone .voter-filter,.device-phone .archive-toolbar,.device-phone .report-stage-form,.device-phone .establish-form,.device-phone .public-tracking-form,.device-phone .advanced-filter-grid,.device-phone .bulk-filterbar,.device-phone .bulk-action-box form{grid-template-columns:1fr!important;gap:9px!important}
.device-phone .span-2,.device-phone .settings-grid-single .settings-fields .span-2,.device-phone .advanced-filter-grid .btn,.device-phone .bulk-filterbar #bulkSearch{grid-column:auto!important}
.device-phone input,.device-phone select,.device-phone textarea{font-size:16px!important} /* prevents iOS/Android form zoom */
.device-phone .filterbar input,.device-phone .filterbar select,.device-phone .form-grid input,.device-phone .form-grid select,.device-phone .form-grid textarea,.device-phone .settings-fields input,.device-phone .settings-fields select,.device-phone .settings-fields textarea{min-height:44px!important}
.device-phone .form-actions,.device-phone .settings-actions{display:grid!important;grid-template-columns:1fr!important;gap:8px!important}
.device-phone .form-actions .btn,.device-phone .settings-actions .btn{width:100%!important}
.device-phone .btn{min-height:44px!important;padding:9px 11px!important}
.device-phone .table-wrap{width:100%!important;max-width:100%!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch!important}
.device-phone table{max-width:none}
.device-phone .server-pagination{display:grid!important;grid-template-columns:1fr auto 1fr!important;gap:6px!important;align-items:center!important}
.device-phone .server-pagination .btn{min-width:0!important;padding:7px!important}
.device-phone .server-pagination span{text-align:center!important;font-size:9.5px!important}
.device-phone .change-tabs,.device-phone .operation-tabs{display:flex!important;overflow-x:auto!important;gap:7px!important;padding:1px 1px 6px!important;scroll-snap-type:x proximity!important;-webkit-overflow-scrolling:touch!important}
.device-phone .change-tabs>a,.device-phone .operation-tabs>a{flex:0 0 auto!important;min-width:145px!important;scroll-snap-align:start!important}
.device-phone .change-tabs.three-tabs>a{min-width:132px!important}
.device-phone .stepper,.device-phone .workflow-stepper,.device-phone .snapshot-strip{display:flex!important;overflow-x:auto!important;gap:8px!important;padding-bottom:6px!important;scroll-snap-type:x proximity!important;-webkit-overflow-scrolling:touch!important}
.device-phone .step,.device-phone .workflow-step,.device-phone .snapshot-strip>div{flex:0 0 auto!important;min-width:128px!important;scroll-snap-align:start!important}
.device-phone .document-actions{grid-template-columns:1fr!important;gap:8px!important}
.device-phone .work-queue,.device-phone .stage-summary-grid,.device-phone .dashboard-tps-selected,.device-phone .monitoring-tps-mini{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
.device-phone .dashboard-tps-filter,.device-phone .monitoring-tps-filter{display:grid!important;grid-template-columns:1fr!important;align-items:stretch!important;gap:8px!important;padding:9px!important}
.device-phone .dashboard-tps-filter select,.device-phone .monitoring-tps-filter select,.device-phone .dashboard-tps-filter .btn,.device-phone .monitoring-tps-filter .btn{width:100%!important}
.device-phone .change-shortcuts{grid-template-columns:1fr 1fr!important;gap:7px!important}
.device-phone .app-footer{margin-bottom:calc(66px + env(safe-area-inset-bottom))!important;padding:11px 10px 12px!important;display:grid!important;grid-template-columns:1fr!important;gap:2px!important;text-align:center!important}
.device-phone .app-footer>span{text-align:center!important}
.device-phone .bottom-nav{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;position:fixed!important;left:0!important;right:0!important;bottom:0!important;z-index:32!important;min-height:64px!important;height:auto!important;padding:4px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left))!important;border-top:1.5px solid var(--border)!important;background:rgba(255,255,255,.985)!important;box-shadow:0 -5px 16px rgba(31,31,31,.07)!important}
.device-phone .bottom-nav a{min-width:0!important;min-height:50px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:2px!important;border-radius:9px!important;color:#77746E!important}
.device-phone .bottom-nav a small{font-size:9px!important;line-height:1!important;white-space:nowrap!important}
.device-phone .bottom-nav a.active{background:var(--orange-soft)!important;color:var(--ink)!important}
.device-phone .bottom-nav .bottom-add{width:48px!important;height:48px!important;min-height:48px!important;transform:translateY(-8px)!important;border-radius:14px!important;background:var(--orange)!important;box-shadow:2px 2px 0 var(--border)!important}
.device-phone .bottom-nav .bottom-icon,.device-phone .bottom-nav a>.ui-icon{width:20px!important;height:20px!important}

/* Dashboard tables become native-feeling cards on phone. */
.device-phone .dashboard-desa-tps .table-wrap,.device-phone .dashboard-tps-panel .aggregate-table-wrap,.device-phone .dashboard-progress-wrap{overflow:visible!important;border:0!important;background:transparent!important}
.device-phone .dashboard-desa-tps-table,.device-phone .dashboard-tps-summary-table,.device-phone .dashboard-tps-detail-table,.device-phone .dashboard-progress-table{display:block!important;min-width:0!important;background:transparent!important}
.device-phone .dashboard-desa-tps-table thead,.device-phone .dashboard-tps-summary-table thead,.device-phone .dashboard-tps-detail-table thead,.device-phone .dashboard-progress-table thead{display:none!important}
.device-phone .dashboard-desa-tps-table tbody,.device-phone .dashboard-tps-summary-table tbody,.device-phone .dashboard-tps-detail-table tbody,.device-phone .dashboard-progress-table tbody{display:grid!important;gap:8px!important}
.device-phone .dashboard-desa-tps-table tr,.device-phone .dashboard-tps-summary-table tr,.device-phone .dashboard-tps-detail-table tr,.device-phone .dashboard-progress-table tr{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important;padding:10px!important;border:1px solid var(--divider)!important;border-radius:10px!important;background:#fff!important;box-shadow:1px 1px 0 #D8D6D0!important}
.device-phone .dashboard-desa-tps-table td,.device-phone .dashboard-tps-summary-table td,.device-phone .dashboard-tps-detail-table td,.device-phone .dashboard-progress-table td{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:6px!important;padding:4px 2px!important;border:0!important;white-space:normal!important;text-align:left!important;font-size:11px!important;min-width:0!important}
.device-phone .dashboard-desa-tps-table td:first-child,.device-phone .dashboard-tps-summary-table td:first-child,.device-phone .dashboard-tps-detail-table td:first-child,.device-phone .dashboard-progress-table td:first-child{display:none!important}
.device-phone .dashboard-desa-tps-table td:nth-child(2),.device-phone .dashboard-desa-tps-table td:nth-child(3),.device-phone .dashboard-tps-detail-table td:nth-child(2),.device-phone .dashboard-tps-detail-table td:nth-child(3),.device-phone .dashboard-tps-summary-table td:nth-child(2),.device-phone .dashboard-progress-table td:nth-child(2){grid-column:1/-1!important}
.device-phone .dashboard-desa-tps-table td:nth-child(4)::before,.device-phone .dashboard-tps-detail-table td:nth-child(4)::before{content:"L";color:var(--muted);font-size:9px}
.device-phone .dashboard-desa-tps-table td:nth-child(5)::before,.device-phone .dashboard-tps-detail-table td:nth-child(5)::before{content:"P";color:var(--muted);font-size:9px}
.device-phone .dashboard-desa-tps-table td:nth-child(6)::before,.device-phone .dashboard-tps-detail-table td:nth-child(6)::before{content:"Total";color:var(--muted);font-size:9px}
.device-phone .dashboard-tps-summary-table td:nth-child(3)::before{content:"TPS";color:var(--muted);font-size:9px}
.device-phone .dashboard-tps-summary-table td:nth-child(4)::before{content:"L";color:var(--muted);font-size:9px}
.device-phone .dashboard-tps-summary-table td:nth-child(5)::before{content:"P";color:var(--muted);font-size:9px}
.device-phone .dashboard-tps-summary-table td:nth-child(6)::before{content:"Total";color:var(--muted);font-size:9px}
.device-phone .dashboard-tps-summary-table td:nth-child(7){grid-column:1/3!important}.device-phone .dashboard-tps-summary-table td:nth-child(7)::before{content:"Belum TPS";color:var(--muted);font-size:9px}
.device-phone .dashboard-tps-summary-table td:nth-child(8){grid-column:3/4!important;justify-content:flex-end!important}
.device-phone .dashboard-progress-table td:nth-child(3)::before{content:"L";color:var(--muted);font-size:9px}
.device-phone .dashboard-progress-table td:nth-child(4)::before{content:"P";color:var(--muted);font-size:9px}
.device-phone .dashboard-progress-table td:nth-child(5)::before{content:"Total";color:var(--muted);font-size:9px}
.device-phone .dashboard-progress-table td:nth-child(6){grid-column:1/2!important}.device-phone .dashboard-progress-table td:nth-child(7){grid-column:2/4!important;justify-content:flex-end!important}

/* Normal phone viewport receives the same rules even before JS device detection. */
@media(max-width:768px){
  body:not(.device-tablet){overflow-x:hidden}
}

@media(max-width:420px){
  .device-phone .content{padding-left:8px!important;padding-right:8px!important}
  .device-phone .page-actions{grid-template-columns:1fr!important}
  .device-phone .kpi-grid,.device-phone .monitoring-kpis,.device-phone .admin-kpis,.device-phone .v20-kpi-grid,.device-phone .dashboard-kpi-five{gap:7px!important}
  .device-phone .kpi{padding:10px!important}.device-phone .kpi strong{font-size:20px!important}
  .device-phone .work-queue,.device-phone .stage-summary-grid,.device-phone .dashboard-tps-selected,.device-phone .monitoring-tps-mini{grid-template-columns:1fr 1fr!important}
  .device-phone .change-shortcuts{grid-template-columns:1fr!important}
}

/* Dynamic by-name tables must also become cards when phone mode is
   detected by device capability (even if the browser viewport is wide). */
.device-phone .voter-table-wrap,.device-phone .responsive-change-table,.device-phone .bulk-responsive-table,.device-phone .master-desa-table{overflow:visible!important;border:0!important;background:transparent!important}
.device-phone .voter-table,.device-phone .responsive-change-table table,.device-phone .bulk-responsive-table table,.device-phone .master-desa-table table{display:block!important;min-width:0!important;width:100%!important;background:transparent!important}
.device-phone .voter-table thead,.device-phone .responsive-change-table thead,.device-phone .bulk-responsive-table thead,.device-phone .master-desa-table thead{display:none!important}
.device-phone .voter-table tbody,.device-phone .responsive-change-table tbody,.device-phone .bulk-responsive-table tbody,.device-phone .master-desa-table tbody{display:grid!important;gap:9px!important}
.device-phone .voter-table tr,.device-phone .responsive-change-table tr,.device-phone .bulk-responsive-table tr,.device-phone .master-desa-table tr{display:block!important;width:100%!important;background:#fff!important;border:1px solid var(--divider)!important;border-radius:10px!important;box-shadow:1px 1px 0 #D8D6D0!important;padding:8px 10px!important;margin:0!important}
.device-phone .voter-table td,.device-phone .responsive-change-table td,.device-phone .bulk-responsive-table td,.device-phone .master-desa-table td{display:grid!important;grid-template-columns:minmax(92px,34%) minmax(0,1fr)!important;align-items:start!important;gap:8px!important;width:100%!important;max-width:none!important;min-width:0!important;padding:6px 1px!important;border:0!important;border-bottom:1px dashed var(--divider)!important;white-space:normal!important;text-align:left!important;font-size:11.5px!important;overflow-wrap:anywhere!important}
.device-phone .voter-table td:last-child,.device-phone .responsive-change-table td:last-child,.device-phone .bulk-responsive-table td:last-child,.device-phone .master-desa-table td:last-child{border-bottom:0!important}
.device-phone .voter-table td::before,.device-phone .responsive-change-table td::before,.device-phone .bulk-responsive-table td::before,.device-phone .master-desa-table td::before{content:attr(data-label);font-size:9.5px!important;font-weight:600!important;color:#77746E!important}
.device-phone .voter-table td.empty,.device-phone .responsive-change-table td.empty,.device-phone .bulk-responsive-table td.empty,.device-phone .master-desa-table td.empty{display:block!important;text-align:center!important;padding:22px 8px!important;border:0!important}
.device-phone .voter-table td.empty::before,.device-phone .responsive-change-table td.empty::before,.device-phone .bulk-responsive-table td.empty::before,.device-phone .master-desa-table td.empty::before{display:none!important}
.device-phone .row-actions{justify-content:flex-start!important;flex-wrap:wrap!important;gap:6px!important}
.device-phone .row-actions .btn{min-height:36px!important;padding:7px 9px!important}

/* ================================================================
   SiPandu v3.3.8 — Typography Readability Polish
   Slightly larger type scale for desktop, tablet and phone without
   changing the established responsive structure from v3.3.7.
   ================================================================ */
html,body{font-size:15px;line-height:1.48}
.sidebar nav a{font-size:14px}
.brand strong{font-size:14px}.brand span,.topbar span{font-size:13px}
.topbar-context strong{font-size:14px}.topbar-context span{font-size:12px}
.page-head h1{font-size:26px}.page-head p,.muted{font-size:14px}
.panel h2{font-size:18px}.panel p{font-size:14px}
.kpi span{font-size:13px}.kpi strong{font-size:30px}.kpi small{font-size:13px}
.btn{font-size:14px}.btn-sm{font-size:13px}
.filterbar input,.filterbar select,.form-grid input,.form-grid select,.form-grid textarea,
.form-stack input,.form-stack select,.form-stack textarea,.stack-form input,.stack-form select,.stack-form textarea,
.settings-fields input,.settings-fields select,.settings-fields textarea,.login-card input,.public-card input{font-size:14px}
.form-grid label,.form-stack label,.stack-form label,.settings-fields label,.login-card label,.public-card label,
.establish-form label,.report-stage-form label{font-size:13.5px}
table{font-size:13.5px}th{font-size:12.5px}.table-note,.server-table-meta,.server-pagination{font-size:12.5px}
.badge{font-size:11.5px}.eyebrow{font-size:11px}.muted-note{font-size:12px}
.step span{font-size:11.5px}.workflow-step small,.snapshot-strip span,.snapshot-strip small{font-size:12px}
.readiness-grid span,.report-source span,.report-source small,.doc-card small{font-size:12px}
.advanced-filter summary{font-size:12.5px}.advanced-filter-grid input,.advanced-filter-grid select{font-size:14px}
.app-footer{font-size:12px}.app-footer strong{font-size:12.5px}.minimal-footer{font-size:11.5px}
.login-title p,.public-title p,.minimal-link{font-size:12.5px}.minimal-brand span,.minimal-public-head span{font-size:11.5px}
.result-box{font-size:13.5px}.public-info-note{font-size:12.5px}.public-info-note strong{font-size:13.5px}
.public-result-head>div>strong{font-size:15px}.public-result-head>div>span{font-size:12px}
.public-status-note{font-size:12px}.public-stage-step b{font-size:12px}.public-stage-step span{font-size:10.5px}.public-stage-step small{font-size:9.5px}
.dashboard-tps-filter label,.monitoring-tps-filter label{font-size:12.5px}.dashboard-tps-filter select,.monitoring-tps-filter select{font-size:13.5px}
.dashboard-tps-selected span,.monitoring-tps-mini span{font-size:11.5px}
.sipandu-swal p,.sipandu-swal-actions button{font-size:13.5px}.sipandu-swal-toast strong{font-size:12.5px}.sipandu-swal-toast span{font-size:11.5px}

/* Tablet: preserve the rail layout but make reading comfortable from a
   normal arm's-length distance. */
@media (min-width:769px) and (max-width:1199px){
  html,body{font-size:15.5px}
  .page-head h1{font-size:25px}
  .panel h2{font-size:18px}
  .kpi span{font-size:13px}.kpi strong{font-size:28px}
  table{font-size:13.5px}th{font-size:12.5px}
  .filterbar input,.filterbar select,.form-grid input,.form-grid select,.form-grid textarea,
  .form-stack input,.form-stack select,.form-stack textarea,.stack-form input,.stack-form select,.stack-form textarea{font-size:14.5px}
}

/* Phone: mobile cards previously became too compact. Keep the mobile-first
   structure, but raise both value text and metadata labels. */
@media(max-width:768px){
  html,body{font-size:15.5px}
  .device-phone .page-head h1,.page-head h1{font-size:22px!important}
  .device-phone .page-head p,.page-head p{font-size:12.5px!important;line-height:1.5}
  .device-phone .topbar-context strong{font-size:13.5px!important}
  .device-phone .topbar-context span{font-size:11px!important}
  .device-phone .panel h2{font-size:17px!important}
  .device-phone .panel p{font-size:12.5px!important;line-height:1.5}
  .device-phone .kpi strong{font-size:24px!important}
  .device-phone .kpi span{font-size:11.5px!important}
  .device-phone .kpi small{font-size:11.5px!important}
  .device-phone .btn{font-size:13.5px!important}
  .device-phone input,.device-phone select,.device-phone textarea{font-size:16px!important}
  .device-phone .form-grid label,.device-phone .form-stack label,.device-phone .stack-form label,
  .device-phone .settings-fields label{font-size:13px!important}
  .device-phone .bottom-nav a small{font-size:10.5px!important}
  .device-phone .bottom-nav .bottom-add small{font-size:9.5px!important}
  .device-phone .badge{font-size:11px!important}
  .device-phone .server-table-meta,.device-phone .server-pagination{font-size:12px!important}
  .device-phone .voter-table td,.device-phone .responsive-change-table td,
  .device-phone .bulk-responsive-table td,.device-phone .master-desa-table td{font-size:13.5px!important;line-height:1.45}
  .device-phone .voter-table td::before,.device-phone .responsive-change-table td::before,
  .device-phone .bulk-responsive-table td::before,.device-phone .master-desa-table td::before{font-size:11px!important;line-height:1.35}
  .device-phone .dashboard-desa-tps-table td,.device-phone .dashboard-tps-summary-table td,
  .device-phone .dashboard-tps-detail-table td,.device-phone .dashboard-progress-table td{font-size:13px!important;line-height:1.4}
  .device-phone .dashboard-desa-tps-table td:nth-child(4)::before,.device-phone .dashboard-tps-detail-table td:nth-child(4)::before,
  .device-phone .dashboard-desa-tps-table td:nth-child(5)::before,.device-phone .dashboard-tps-detail-table td:nth-child(5)::before,
  .device-phone .dashboard-desa-tps-table td:nth-child(6)::before,.device-phone .dashboard-tps-detail-table td:nth-child(6)::before,
  .device-phone .dashboard-tps-summary-table td:nth-child(3)::before,.device-phone .dashboard-tps-summary-table td:nth-child(4)::before,
  .device-phone .dashboard-tps-summary-table td:nth-child(5)::before,.device-phone .dashboard-tps-summary-table td:nth-child(6)::before,
  .device-phone .dashboard-tps-summary-table td:nth-child(7)::before,.device-phone .dashboard-progress-table td:nth-child(3)::before,
  .device-phone .dashboard-progress-table td:nth-child(4)::before,.device-phone .dashboard-progress-table td:nth-child(5)::before{font-size:10.5px!important}
  .device-phone .app-footer{font-size:11.5px!important}.device-phone .app-footer strong{font-size:12px!important}
}

@media(max-width:420px){
  .device-phone .kpi strong{font-size:23px!important}
  .device-phone .page-head h1{font-size:21px!important}
}

/* ================================================================
   SiPandu v3.3.9 — Login & Public Identity Motion Polish
   Centered official identity + restrained motion for public entry pages.
   ================================================================ */
.login-minimal-card .minimal-brand,
.public-tracking-card .minimal-public-head{
  width:100%;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:10px;
  text-align:center;
}
.login-minimal-card .minimal-brand-copy,
.public-tracking-card .minimal-brand-copy{
  width:100%;
  justify-items:center;
  text-align:center;
  gap:4px!important;
}
.login-minimal-card .minimal-brand-copy>strong,
.public-tracking-card .minimal-brand-copy>strong{
  width:100%;
  justify-content:center;
  align-items:baseline;
  flex-wrap:wrap;
  gap:7px;
  font-size:16px!important;
  line-height:1.2;
}
.login-minimal-card .minimal-brand-copy>strong>span:first-child,
.public-tracking-card .minimal-brand-copy>strong>span:first-child{
  overflow:visible;
  text-overflow:clip;
  white-space:normal;
}
.login-minimal-card .minimal-brand-copy>span,
.public-tracking-card .minimal-brand-copy>span{
  max-width:280px;
  font-size:12.5px!important;
  line-height:1.45;
  text-align:center;
}
.login-minimal-card .minimal-logo:not(.minimal-logo-text),
.public-tracking-card .minimal-logo:not(.minimal-logo-text){
  width:66px;
  height:66px;
  flex-basis:66px;
}
.login-minimal-card .minimal-logo-text,
.public-tracking-card .minimal-logo-text{
  width:56px;
  height:56px;
  flex-basis:56px;
  font-size:17px;
}
.login-minimal-card .login-title,
.public-tracking-card .public-title{
  text-align:center;
  margin-top:20px;
}
.login-minimal-card .login-title p,
.public-tracking-card .public-title p{
  max-width:100%;
  margin-inline:auto;
  text-wrap:balance;
}

/* Entrance motion is intentionally restrained and does not alter layout. */
.login-minimal-card,
.public-tracking-card{
  transform-origin:50% 44%;
  animation:sipandu-entry-card .48s cubic-bezier(.2,.72,.25,1) both;
}
.login-minimal-card .minimal-brand,
.public-tracking-card .minimal-public-head{
  animation:sipandu-entry-identity .58s cubic-bezier(.2,.72,.25,1) .07s both;
}
.login-minimal-card .login-title,
.public-tracking-card .public-title{
  animation:sipandu-entry-soft .42s ease-out .13s both;
}
.login-minimal-card form,
.public-tracking-card .public-info-note,
.public-tracking-card .public-tracking-form{
  animation:sipandu-entry-soft .42s ease-out .18s both;
}
.login-minimal-card .minimal-link,
.public-tracking-card .minimal-link{
  animation:sipandu-entry-soft .42s ease-out .24s both;
}
.login-minimal-card .minimal-logo:not(.minimal-logo-text),
.public-tracking-card .minimal-logo:not(.minimal-logo-text){
  animation:sipandu-logo-float 5.2s ease-in-out 1.05s infinite;
}
.public-tracking-card .result-box,
.public-tracking-card .public-voter-result{
  animation:sipandu-result-in .36s cubic-bezier(.2,.72,.25,1) both;
}
.login-minimal-shell::before,
.public-minimal-shell::before{
  transform-origin:left center;
  animation:sipandu-accent-in .52s cubic-bezier(.2,.72,.25,1) both;
}

@keyframes sipandu-entry-card{
  from{opacity:0;transform:translateY(10px) scale(.992)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes sipandu-entry-identity{
  from{opacity:0;transform:translateY(7px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes sipandu-entry-soft{
  from{opacity:0;transform:translateY(5px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes sipandu-result-in{
  from{opacity:0;transform:translateY(6px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes sipandu-logo-float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-2px)}
}
@keyframes sipandu-accent-in{
  from{transform:scaleX(0);opacity:.55}
  to{transform:scaleX(1);opacity:1}
}

@media(max-width:768px){
  .login-minimal-card .minimal-logo:not(.minimal-logo-text),
  .public-tracking-card .minimal-logo:not(.minimal-logo-text){width:58px;height:58px;flex-basis:58px}
  .login-minimal-card .minimal-logo-text,
  .public-tracking-card .minimal-logo-text{width:52px;height:52px;flex-basis:52px}
  .login-minimal-card .minimal-brand-copy>strong,
  .public-tracking-card .minimal-brand-copy>strong{font-size:15px!important}
  .login-minimal-card .minimal-brand-copy>span,
  .public-tracking-card .minimal-brand-copy>span{font-size:12px!important}
  .login-minimal-card .login-title,
  .public-tracking-card .public-title{margin-top:18px}
}

@media(prefers-reduced-motion:reduce){
  .login-minimal-card,
  .public-tracking-card,
  .login-minimal-card .minimal-brand,
  .public-tracking-card .minimal-public-head,
  .login-minimal-card .login-title,
  .public-tracking-card .public-title,
  .login-minimal-card form,
  .public-tracking-card .public-info-note,
  .public-tracking-card .public-tracking-form,
  .login-minimal-card .minimal-link,
  .public-tracking-card .minimal-link,
  .login-minimal-card .minimal-logo:not(.minimal-logo-text),
  .public-tracking-card .minimal-logo:not(.minimal-logo-text),
  .public-tracking-card .result-box,
  .public-tracking-card .public-voter-result,
  .login-minimal-shell::before,
  .public-minimal-shell::before{
    animation:none!important;
  }
}

/* =====================================================================
   SIPANDU v3.6.0 — Soft Neo KPU Clean UI
   Clean soft-neobrutalist language: saturated KPU orange + white,
   Roboto Regular only, subtle borders/shadows, standard app typography.
   ===================================================================== */
:root{
  --orange:#F36F21;
  --orange-dark:#D85B12;
  --orange-soft:#FFF2E9;
  --orange-pale:#FFF9F5;
  --ink:#252525;
  --muted:#6F6A66;
  --bg:#F8F7F5;
  --surface:#FFFFFF;
  --border:#E6DED8;
  --divider:#EEE8E3;
  --radius:14px;
  --shadow:0 8px 24px rgba(79,55,40,.08);
  --shadow-sm:0 4px 14px rgba(79,55,40,.07);
  --shadow-lg:0 18px 46px rgba(79,55,40,.12);
}
html,body{
  font-family:'Roboto',Arial,sans-serif!important;
  font-size:15px;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  font-synthesis:none;
}
body,body *{font-family:'Roboto',Arial,sans-serif!important;font-weight:400!important}
body{background-image:none!important;letter-spacing:0!important}
strong,b,h1,h2,h3,h4,h5,h6,th,dt,label{font-weight:400!important}
::selection{background:var(--orange);color:#fff}

/* App shell */
.app-shell{grid-template-columns:264px minmax(0,1fr)}
.sidebar{
  background:var(--orange)!important;
  border-right:1px solid rgba(124,67,33,.14)!important;
  box-shadow:6px 0 24px rgba(82,48,28,.07)!important;
}
.brand{
  min-height:82px;
  padding:15px 16px;
  gap:12px;
  background:#fff!important;
  border-bottom:1px solid var(--border)!important;
}
.brand-image,.brand-mark{
  width:50px!important;height:50px!important;flex:0 0 50px!important;
  border:0!important;border-radius:0!important;background:transparent!important;
  box-shadow:none!important;overflow:visible!important;
}
.brand-image img{width:100%;height:100%;object-fit:contain;padding:0!important;filter:none!important}
.brand-mark{display:grid;place-items:center;background:var(--orange-soft)!important;border-radius:12px!important;color:var(--orange-dark);font-size:18px}
.brand-copy{display:grid;gap:3px;min-width:0}
.brand-title{font-size:16px!important;line-height:1.2;color:var(--ink)!important}
.brand-title .brand-year{display:inline-flex;margin-left:5px;padding:2px 6px;background:var(--orange-soft);color:var(--orange-dark);border:1px solid #FFD5BC;border-radius:999px;font-size:10.5px!important;vertical-align:2px}
.brand-subtitle{font-size:12px!important;color:var(--muted)!important}
.sidebar nav,.sidebar-nav{padding:15px 12px 18px;gap:6px}
.sidebar nav a,.sidebar-nav a{
  min-height:44px;padding:10px 12px;border:1px solid transparent!important;border-radius:10px!important;
  background:transparent;color:#fff!important;font-size:13.5px!important;box-shadow:none!important;
  transition:background .15s ease,border-color .15s ease,transform .15s ease;
}
.sidebar nav a:hover,.sidebar-nav a:hover{background:rgba(255,255,255,.14)!important;border-color:rgba(255,255,255,.22)!important;transform:none!important;box-shadow:none!important}
.sidebar nav a.active,.sidebar-nav a.active{background:#fff!important;color:var(--orange-dark)!important;border-color:#fff!important;box-shadow:0 5px 14px rgba(97,53,26,.10)!important;transform:none!important}
.sidebar nav a svg,.sidebar-nav a svg{stroke:currentColor!important}
.sidebar nav a.active svg,.sidebar-nav a.active svg{stroke:var(--orange-dark)!important}
.nav-glyph{width:18px;height:18px;flex:0 0 18px}
.sidebar-bottom{margin:12px;padding:9px 11px;border:1px solid rgba(255,255,255,.20)!important;border-radius:10px;background:rgba(255,255,255,.12)!important;color:#fff;box-shadow:none!important;font-size:11.5px}

/* Topbar */
.topbar{height:70px;padding:0 24px;background:#fff!important;border-bottom:1px solid var(--border)!important;box-shadow:0 2px 12px rgba(55,45,39,.045)!important;z-index:8}
.topbar-context strong{font-size:14.5px!important;color:var(--ink)!important}
.topbar-context>span{font-size:12px!important;color:var(--muted)!important}
.avatar{width:38px;height:38px;background:var(--orange-soft)!important;color:var(--orange-dark)!important;border:1px solid #FFD8C0!important;border-radius:11px!important;box-shadow:none!important}
.user-chip strong{font-size:12.5px!important}.user-chip span{font-size:11px!important}
.topbar-logout,.menu-toggle{border:1px solid var(--border)!important;border-radius:10px!important;box-shadow:none!important;background:#fff!important;color:var(--ink)!important}
.topbar-logout{min-height:38px;padding:8px 11px}.topbar-logout:hover,.menu-toggle:hover{background:var(--orange-soft)!important;border-color:#FFD1B4!important;transform:none!important;box-shadow:none!important}
.menu-toggle{width:40px;height:40px}

/* Main canvas + typography */
.content{padding:26px 26px 36px;max-width:1680px}
.page-head{margin-bottom:20px;align-items:center}
.page-head h1{font-size:25px!important;line-height:1.2!important;color:var(--ink)!important;letter-spacing:0!important}
.page-head p{font-size:13.5px!important;color:var(--muted)!important;line-height:1.55}
.panel h2,.panel-head h2{font-size:18px!important;line-height:1.3!important;color:var(--ink)!important;letter-spacing:0!important}
.panel p{font-size:13.5px!important;color:var(--muted)!important;line-height:1.55}

/* Cards, panels and KPI */
.neo-card,.panel,.kpi,.doc-card,.workflow-step,.quality-health,.quality-rule,.stage-summary-grid>div,.monitoring-kpi,.settings-card,.action-callout,.bulk-action-box,.v22-mode-card,
.work-queue a,.dashboard-tps-selected>div,.monitoring-tps-mini>div,.qc-mini-list>div,.snapshot-strip>div,.readiness-grid>div,.quality-detail-list>div,.logo-setting,.settings-preview,.backup-callout,.system-maintenance,.v22-current,.v22-mode-banner{
  border:1px solid var(--border)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow-sm)!important;background:#fff!important;
}
.panel{padding:20px;margin-bottom:20px}
.panel-head{padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid var(--divider)!important}
.kpi-grid{gap:14px;margin-bottom:22px}
.kpi{padding:17px;min-height:112px;position:relative;overflow:hidden;background:#fff!important}
.kpi::after{content:"";position:absolute;right:-18px;bottom:-24px;width:70px;height:70px;border:0!important;border-radius:50%;background:var(--orange-soft);opacity:.95}
.kpi:nth-child(3n+1){background:#fff!important;color:var(--ink)!important}
.kpi:nth-child(3n+1)::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--orange)}
.kpi span{font-size:12px!important;color:var(--muted)!important;text-transform:none!important;letter-spacing:0!important}
.kpi strong{font-size:29px!important;color:var(--ink)!important;letter-spacing:0!important;margin:8px 0 3px;position:relative;z-index:1}
.kpi small{font-size:11.5px!important;color:var(--muted)!important;position:relative;z-index:1}
.attention,.data-stage-strip,.stage-context,.public-info-note,.quality-status-strip,.quality-policy,.privacy-note,.quality-gate-note,.backup-callout{
  border:1px solid #FFD2B6!important;background:var(--orange-soft)!important;box-shadow:none!important;color:var(--ink)!important;border-left:3px solid var(--orange)!important;border-radius:10px!important;
}
.stage-summary-grid>div:nth-child(odd),.work-queue a:nth-child(odd),.dashboard-tps-selected>div:nth-child(odd),.monitoring-tps-mini>div:nth-child(odd){background:#fff!important}

/* Buttons */
.btn,.sipandu-swal-btn{
  min-height:42px;padding:9px 14px;border:1px solid var(--border)!important;border-radius:10px!important;
  background:#fff!important;color:var(--ink)!important;font-size:13.5px!important;box-shadow:none!important;
  transition:background .15s ease,border-color .15s ease,transform .08s ease;
}
.btn:hover,.sipandu-swal-btn:hover{background:#FAF8F7!important;border-color:#D8CDC5!important;transform:none!important;box-shadow:none!important}
.btn:active,.sipandu-swal-btn:active{transform:translateY(1px)!important;box-shadow:none!important}
.btn.primary,.sipandu-swal-btn.confirm{background:var(--orange)!important;color:#fff!important;border-color:var(--orange)!important;box-shadow:none!important}
.btn.primary:hover,.sipandu-swal-btn.confirm:hover{background:var(--orange-dark)!important;border-color:var(--orange-dark)!important}
.btn.secondary{background:#fff!important}.btn.danger{background:#FFF4F1!important;border-color:#F1D3C9!important;color:#B84228!important}

/* Forms */
.filterbar input,.filterbar select,.advanced-filter-grid input,.advanced-filter-grid select,.bulk-filterbar input,.bulk-filterbar select,
.form-grid input,.form-grid select,.form-grid textarea,.form-stack input,.form-stack select,.form-stack textarea,.stack-form input,.stack-form select,.stack-form textarea,
.settings-fields input,.settings-fields select,.settings-fields textarea,.login-card input,.public-card input,.archive-toolbar input,.archive-toolbar select,
.report-stage-form select,.establish-form input,.neo-login-card input,.neo-public-search-form input{
  min-height:44px;border:1px solid #DDD5CF!important;border-radius:10px!important;background:#fff!important;color:var(--ink)!important;box-shadow:none!important;font-size:14px!important;
}
.filterbar input:focus,.filterbar select:focus,.advanced-filter-grid input:focus,.advanced-filter-grid select:focus,.bulk-filterbar input:focus,.bulk-filterbar select:focus,
.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.form-stack input:focus,.form-stack select:focus,.form-stack textarea:focus,
.stack-form input:focus,.stack-form select:focus,.stack-form textarea:focus,.settings-fields input:focus,.settings-fields select:focus,.settings-fields textarea:focus,
.login-card input:focus,.public-card input:focus,.archive-toolbar input:focus,.archive-toolbar select:focus,.report-stage-form select:focus,.establish-form input:focus,
.neo-login-card input:focus,.neo-public-search-form input:focus{
  outline:0!important;border-color:var(--orange)!important;box-shadow:0 0 0 3px rgba(243,111,33,.12)!important;
}
.form-grid label,.form-stack label,.stack-form label,.settings-fields label,.login-card label,.public-card label,.neo-login-card label,.neo-public-search-form label{font-size:13px!important;color:var(--ink)!important}
.readonly-field{background:#F7F5F3!important;border-color:#E6DED8!important}

/* Tables */
.table-wrap{overflow:auto;border:1px solid var(--border)!important;border-radius:12px!important;box-shadow:var(--shadow-sm)!important;background:#fff!important}
table{font-size:13.5px!important;color:var(--ink)!important;background:#fff!important}
th,td{padding:11px 12px;border-bottom:1px solid var(--divider)!important}
th{height:44px;background:var(--orange-soft)!important;color:#5A3B2A!important;font-size:12.5px!important;letter-spacing:0!important;border-bottom:1px solid #FFD8C1!important}
thead th+th{border-left:1px solid #F2E9E3!important}
tbody tr:hover td{background:#FFFBF8!important}
.total-row td,.report-total td{background:var(--orange-pale)!important;border-top:1px solid #FFD8C1!important}
.badge{border:1px solid #E3DAD4!important;border-radius:999px!important;box-shadow:none!important;background:#F8F6F4!important;font-size:11.5px!important;letter-spacing:0!important;color:var(--ink)!important}
.badge.orange,.badge.status-aktif{background:var(--orange-soft)!important;color:var(--orange-dark)!important;border-color:#FFD2B5!important}

/* Secondary components */
.advanced-filter{border:1px solid var(--border)!important;border-radius:12px!important;background:#fff!important;box-shadow:none!important;overflow:hidden}
.advanced-filter summary{background:#FAF8F6!important;border-bottom-color:var(--divider)!important;color:var(--ink)!important}
.advanced-filter[open] summary{background:var(--orange-soft)!important;border-bottom:1px solid #FFD8C1!important}
.operation-tabs a,.change-tab{border:1px solid var(--border)!important;border-radius:10px!important;background:#fff!important;box-shadow:none!important}
.operation-tabs a.active,.change-tab.active{background:var(--orange-soft)!important;color:var(--orange-dark)!important;border-color:#FFD2B5!important;box-shadow:none!important}
.work-queue a:hover,.doc-card:hover{background:var(--orange-pale)!important;transform:none!important;box-shadow:var(--shadow-sm)!important}
.doc-card>span{border:0!important;background:var(--orange-soft)!important;color:var(--orange-dark)!important;box-shadow:none!important}
.report-source{border-left:3px solid var(--orange)!important;background:var(--orange-pale)!important;padding:9px 12px!important;border-radius:0 9px 9px 0!important}
.workflow-hero{border:1px solid #FFD0B2!important;background:linear-gradient(135deg,var(--orange),#F9813B)!important;box-shadow:var(--shadow)!important;border-radius:14px!important;color:#fff!important}
.workflow-hero *{color:inherit!important}.workflow-lock{border:1px solid rgba(255,255,255,.5)!important;background:rgba(255,255,255,.14)!important;box-shadow:none!important;color:#fff!important}
.locked-state{border:1px solid var(--border)!important;background:#F7F5F3!important;box-shadow:none!important}
.logo-preview,.preview-brand-row img,.document-preview-head img,.doc-logo-placeholder{border:0!important;box-shadow:none!important;background:transparent!important}
.settings-preview{background:var(--orange-soft)!important}.settings-preview .eyebrow,.settings-preview small{color:var(--muted)!important}
.server-pagination{background:transparent!important}.server-pagination .btn{background:#fff!important}.server-pagination .btn:not(:disabled):hover{background:var(--orange-soft)!important}
.empty,.empty-state{background:#fff!important;color:var(--muted)!important}

/* Bottom navigation */
.bottom-nav{border-top:1px solid var(--border)!important;background:rgba(255,255,255,.985)!important;box-shadow:0 -7px 24px rgba(62,48,40,.07)!important}
.bottom-nav a{color:var(--muted)!important;border:0!important;border-radius:10px!important}
.bottom-nav a.active{background:var(--orange-soft)!important;color:var(--orange-dark)!important;box-shadow:none!important}
.bottom-nav .bottom-add{background:var(--orange)!important;color:#fff!important;border:0!important;box-shadow:0 6px 16px rgba(243,111,33,.24)!important}
.bottom-nav a small{font-size:10.5px!important}

/* Login — clean orange/white soft neo */
.login-shell.neo-login-shell{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr);background:#fff;position:relative;overflow:hidden}
.neo-login-hero{position:relative;display:flex;align-items:center;justify-content:center;padding:48px clamp(28px,6vw,88px);background:var(--orange);border-right:1px solid rgba(125,63,28,.13)!important;overflow:hidden}
.neo-login-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 15% 18%,rgba(255,255,255,.18),transparent 28%),radial-gradient(circle at 85% 80%,rgba(255,255,255,.13),transparent 30%);opacity:1}
.neo-login-shape{display:none!important}
.neo-login-hero-inner{position:relative;z-index:2;width:min(650px,100%);text-align:center;display:grid;justify-items:center}
.neo-login-logo,.neo-public-logo{width:100px;height:100px;display:grid;place-items:center;margin-bottom:18px;background:transparent!important;border:0!important;box-shadow:none!important;overflow:visible!important}
.neo-login-logo img,.neo-public-logo img{width:100%;height:100%;object-fit:contain;filter:none!important}
.neo-login-logo.fallback,.neo-public-logo.fallback{width:82px;height:82px;background:#fff!important;color:var(--orange-dark)!important;border:0!important;border-radius:20px!important;box-shadow:0 10px 24px rgba(111,56,26,.12)!important;font-size:30px!important}
.neo-kicker{display:inline-flex;align-items:center;padding:6px 11px;border:1px solid rgba(255,255,255,.48)!important;border-radius:999px;background:rgba(255,255,255,.16)!important;color:#fff!important;box-shadow:none!important;font-size:11.5px!important;letter-spacing:.02em!important;text-transform:none!important}
.neo-login-hero h1{margin:16px 0 8px;font-size:clamp(38px,5vw,62px)!important;line-height:1!important;letter-spacing:0!important;color:#fff!important}
.neo-login-hero h1 span{display:inline-block;background:transparent!important;padding:0!important;border:0!important;box-shadow:none!important;transform:none!important}
.neo-login-hero p{max-width:540px;margin:14px auto 0;font-size:15px!important;line-height:1.65!important;color:rgba(255,255,255,.92)!important}
.neo-stage-strip{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:24px 0 0}
.neo-stage-strip span{display:inline-flex;padding:7px 11px;border:1px solid rgba(255,255,255,.30)!important;border-radius:9px;background:rgba(255,255,255,.12)!important;color:#fff!important;box-shadow:none!important;font-size:11.5px!important}
.neo-login-features{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;margin-top:24px}
.neo-login-feature{padding:13px 12px;border:1px solid rgba(255,255,255,.30)!important;border-radius:12px;background:rgba(255,255,255,.12)!important;text-align:left;box-shadow:none!important;color:#fff!important}
.neo-login-feature strong{display:block;font-size:12.5px!important;margin-bottom:4px}.neo-login-feature span{font-size:11px!important;color:rgba(255,255,255,.85)!important;line-height:1.4}
.neo-login-panel{display:grid;grid-template-rows:minmax(0,1fr) auto;align-items:center;justify-items:center;padding:38px 28px;background:#fff;position:relative}
.neo-login-panel::before{display:none!important}
.neo-login-card{width:min(440px,100%);padding:30px;border:1px solid var(--border)!important;border-radius:16px!important;background:#fff;box-shadow:var(--shadow-lg)!important;position:relative}
.neo-login-card::before{display:none!important}
.neo-login-title{margin-bottom:22px}.neo-login-title h2{font-size:27px!important;line-height:1.15!important;margin:0 0 7px;letter-spacing:0!important}.neo-login-title p{margin:0;color:var(--muted)!important;font-size:13px!important;line-height:1.5}
.neo-login-card form{display:grid;gap:15px}.neo-login-card label{display:grid;gap:7px;font-size:13px!important}.neo-login-card input{min-height:48px!important;font-size:15px!important}.neo-login-card .btn{min-height:48px;font-size:14px!important}
.neo-public-cta{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:20px;padding-top:18px;border-top:1px solid var(--divider)!important;font-size:12px!important;color:var(--muted)!important}.neo-public-cta a{color:var(--orange-dark)!important;text-decoration:none!important}.neo-public-cta a:hover{text-decoration:underline!important}
.neo-login-footer{padding:18px 16px 0;text-align:center;color:var(--muted)!important;font-size:11.5px!important}
@keyframes softRise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.neo-login-hero-inner,.neo-login-card{animation:softRise .35s ease both}.neo-login-card{animation-delay:.05s}

/* Public portal — clear, clean and inviting */
body.neo-public-body{background:#fff!important;background-image:none!important}
.neo-public-page{min-height:100dvh;background:#fff!important}
.neo-public-hero{position:relative;overflow:hidden;background:var(--orange)!important;border-bottom:0!important;padding:38px 18px 78px}
.neo-public-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 25%,rgba(255,255,255,.18),transparent 26%),radial-gradient(circle at 82% 70%,rgba(255,255,255,.13),transparent 28%);opacity:1}
.neo-public-hero-inner{position:relative;z-index:2;width:min(760px,100%);margin:auto;text-align:center;display:grid;justify-items:center}
.neo-public-hero .neo-kicker{color:#fff!important}
.neo-public-hero h1{margin:10px 0 8px;font-size:clamp(38px,5vw,58px)!important;line-height:1.02!important;letter-spacing:0!important;color:#fff!important}.neo-public-hero h1 span{color:#fff!important}
.neo-public-hero p{max-width:680px;margin:8px auto 0;color:rgba(255,255,255,.92)!important;font-size:14.5px!important;line-height:1.6!important}
.neo-public-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin-top:20px}.neo-public-meta span{padding:6px 10px;border:1px solid rgba(255,255,255,.28)!important;border-radius:999px;background:rgba(255,255,255,.12)!important;color:#fff!important;box-shadow:none!important;font-size:10.5px!important}
.neo-public-main{position:relative;z-index:3;width:min(940px,92vw);margin:-44px auto 0;padding-bottom:30px}
.neo-public-search-card{padding:24px;border:1px solid var(--border)!important;border-radius:16px!important;background:#fff!important;box-shadow:var(--shadow-lg)!important}
.neo-public-search-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.neo-public-search-head h2{font-size:23px!important;line-height:1.2!important;margin:0 0 5px}.neo-public-search-head p{margin:0;color:var(--muted)!important;font-size:13px!important;line-height:1.5}
.neo-public-search-badge{display:inline-flex;padding:6px 10px;border:1px solid #FFD1B5!important;border-radius:999px;background:var(--orange-soft)!important;color:var(--orange-dark)!important;font-size:10.5px!important;letter-spacing:0!important;white-space:nowrap}
.neo-public-journey{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:20px}.neo-public-journey div{padding:10px 8px;border:1px solid var(--border)!important;border-radius:10px;background:#fff!important;box-shadow:none!important;text-align:center}.neo-public-journey strong{display:block;color:var(--orange-dark)!important;font-size:13px!important}.neo-public-journey span{display:block;margin-top:2px;color:var(--muted)!important;font-size:10.5px!important}
.neo-public-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.neo-public-search-form label{font-size:13px!important;display:grid;gap:7px}.neo-public-search-form input{min-height:50px!important;font-size:16px!important;letter-spacing:.01em!important}.neo-public-search-form .btn{min-width:160px;min-height:50px;font-size:14px!important}
.neo-public-privacy{display:flex;gap:7px;margin-top:13px;padding:10px 12px;border-radius:10px;background:var(--orange-pale)!important;color:var(--muted)!important;font-size:11.5px!important;line-height:1.45;border:1px solid #F5E4D8!important}.neo-public-privacy b{color:var(--ink)!important}
.neo-public-results{display:grid;gap:14px;margin-top:16px}.result-box,.public-voter-result{border:1px solid var(--border)!important;border-radius:14px!important;background:#fff!important;box-shadow:var(--shadow-sm)!important}.public-voter-result{padding:18px!important}.public-result-head{padding-bottom:12px;border-bottom:1px solid var(--divider)!important}.public-result-head strong{font-size:15px!important}.public-full-name{font-size:13px!important}.public-voter-result dl{gap:8px 13px}.public-voter-result dt{color:var(--muted)!important}.public-voter-result dd{color:var(--ink)!important}
.public-status-note{border:1px solid #FFD2B5!important;border-radius:10px!important;background:var(--orange-soft)!important;color:var(--ink)!important}.public-stage-track{gap:8px}.public-stage-step{border:1px solid var(--border)!important;border-radius:10px!important;background:#fff!important;box-shadow:none!important}.public-stage-step.current,.public-stage-step.final{background:var(--orange-soft)!important;border-color:#FFD2B5!important}.public-stage-step.done{background:#FAF8F6!important}.public-stage-step b{font-size:12px!important}.public-stage-step span{color:var(--ink)!important}.public-stage-step small{font-size:10px!important;color:var(--muted)!important}
.neo-public-bottom{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:22px;padding:15px 2px 0;color:var(--muted)!important;font-size:11.5px!important}.neo-public-bottom a{color:var(--orange-dark)!important;text-decoration:none!important}.neo-public-bottom a:hover{text-decoration:underline!important}
.neo-public-footer{background:#fff!important;color:var(--muted)!important;border-top:1px solid var(--border)!important;padding:18px;text-align:center;font-size:11.5px!important}.neo-public-footer strong{color:var(--orange-dark)!important}

/* Responsive */
@media(min-width:769px) and (max-width:1199px){
  .app-shell,.device-tablet .app-shell{grid-template-columns:80px minmax(0,1fr)!important}
  .sidebar,.device-tablet .sidebar{background:var(--orange)!important;border-right:1px solid rgba(124,67,33,.14)!important}
  .brand,.device-tablet .brand{height:70px!important;min-height:70px!important;padding:9px!important}.brand-copy{display:none!important}.brand-image,.brand-mark{width:46px!important;height:46px!important;flex-basis:46px!important}
  .sidebar nav,.device-tablet .sidebar nav{padding:12px 10px!important;gap:8px!important}.sidebar nav a,.device-tablet .sidebar nav a{width:50px!important;height:46px!important;margin:auto!important;padding:0!important;justify-content:center!important;border:1px solid transparent!important;border-radius:10px!important;box-shadow:none!important}.sidebar nav a span,.device-tablet .sidebar nav a span{display:none!important}.sidebar-bottom{display:none!important}
  .topbar,.device-tablet .topbar{height:68px!important}.content,.device-tablet .content{padding:22px 20px 30px!important}.page-head h1{font-size:24px!important}
  .login-shell.neo-login-shell{grid-template-columns:1fr 420px}.neo-login-hero{padding:38px 30px}.neo-login-features{grid-template-columns:1fr}.neo-login-feature:nth-child(n+3){display:none}
}
@media(max-width:820px){
  .sidebar{width:264px;left:-274px;border-right:1px solid rgba(124,67,33,.14)!important}.sidebar.open{left:0}.sidebar-overlay.show{background:rgba(37,37,37,.28)}
  .brand-copy{display:grid!important}.sidebar nav a span{display:inline!important}.content{padding:18px 14px calc(92px + env(safe-area-inset-bottom))!important}.page-head h1{font-size:23px!important}
  .login-shell.neo-login-shell{grid-template-columns:1fr;overflow:visible}.neo-login-hero{min-height:auto;padding:34px 20px 36px;border-right:0!important}.neo-login-logo{width:82px;height:82px}.neo-login-hero h1{font-size:39px!important}.neo-login-hero p{font-size:13.5px!important;max-width:520px}.neo-login-features{grid-template-columns:repeat(3,1fr);margin-top:20px}.neo-login-panel{padding:28px 18px 24px}.neo-login-card{width:min(520px,100%);padding:26px;box-shadow:var(--shadow)!important}
  .neo-public-hero{padding-top:30px}.neo-public-main{width:min(94vw,760px)}
}
@media(max-width:620px){
  html,body{font-size:15px!important}.topbar{height:64px!important;padding:0 10px!important}.content{padding-inline:11px!important}.page-head h1{font-size:22px!important}.page-head p{font-size:13px!important}.panel{padding:15px!important}.panel h2{font-size:17px!important}.btn{min-height:44px!important}
  .kpi-grid{gap:10px}.kpi{min-height:102px!important;padding:14px!important}.kpi strong{font-size:25px!important}.kpi span{font-size:11.5px!important}.kpi small{font-size:11px!important}
  input,select,textarea,.device-phone input,.device-phone select,.device-phone textarea{font-size:16px!important}
  .device-phone .voter-table tr,.device-phone .responsive-change-table tr,.device-phone .bulk-responsive-table tr,.device-phone .master-desa-table tr,.voter-table tr,.responsive-change-table tr,.bulk-responsive-table tr,.master-desa-table tr{border:1px solid var(--border)!important;box-shadow:var(--shadow-sm)!important;border-radius:11px!important;background:#fff!important}
  .neo-login-hero{padding:28px 15px 30px}.neo-login-logo{width:72px;height:72px;margin-bottom:12px}.neo-login-hero h1{font-size:34px!important}.neo-login-hero p{font-size:13px!important;margin-top:12px}.neo-stage-strip{margin-top:18px;gap:6px}.neo-stage-strip span{padding:5px 8px;font-size:10px!important}.neo-login-features{grid-template-columns:1fr;gap:8px}.neo-login-feature{padding:10px}.neo-login-panel{padding:22px 12px}.neo-login-card{padding:24px 18px}.neo-login-title h2{font-size:25px!important}
  .neo-public-hero{padding:26px 12px 68px}.neo-public-logo{width:74px;height:74px}.neo-public-hero h1{font-size:34px!important}.neo-public-hero p{font-size:13px!important}.neo-public-main{width:94vw;margin-top:-40px}.neo-public-search-card{padding:20px 15px}.neo-public-search-head{display:block}.neo-public-search-badge{display:inline-flex;margin-top:11px}.neo-public-search-form{grid-template-columns:1fr}.neo-public-search-form .btn{width:100%;min-width:0}.neo-public-journey{grid-template-columns:1fr 1fr}.neo-public-bottom{flex-direction:column;text-align:center}.public-voter-result{padding:15px!important}
}
@media(max-width:420px){
  .kpi-grid{grid-template-columns:1fr 1fr!important}.page-head h1{font-size:21px!important}.neo-login-hero h1{font-size:30px!important}.neo-login-logo{width:64px;height:64px}.neo-login-card{box-shadow:var(--shadow-sm)!important}.neo-public-hero h1{font-size:30px!important}.neo-public-search-head h2{font-size:21px!important}.public-stage-track{grid-template-columns:1fr!important}
}

/* Force regular Roboto everywhere, including legacy utility classes. */
body .fw-bold,body .fw-semibold,body .font-bold,body strong,body b,body th,body h1,body h2,body h3,body h4,body h5,body h6{font-weight:400!important}
:focus-visible{outline:2px solid rgba(243,111,33,.72)!important;outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}


/* =====================================================================
   SIPANDU v3.6.1 — Soft Neo KPU Premium Polish
   Premium = cleaner hierarchy, more breathing room, clearer actions.
   Roboto 400 remains default; 700 is reserved for requested emphasis only.
   ===================================================================== */
:root{
  --premium-border:#E9E1DB;
  --premium-shadow:0 12px 34px rgba(82,54,36,.075);
  --premium-shadow-hover:0 16px 38px rgba(82,54,36,.105);
}

/* Requested emphasis: these are the only intentional bold display texts. */
body .premium-emphasis{
  font-family:'Roboto',Arial,sans-serif!important;
  font-weight:700!important;
}

/* Premium login balance */
.neo-login-card{
  border-color:var(--premium-border)!important;
  box-shadow:var(--premium-shadow)!important;
  padding:32px!important;
}
.neo-login-title{margin-bottom:24px!important;text-align:center}
.neo-login-card form{gap:16px!important}
.neo-login-card label{
  text-align:center!important;
  justify-items:stretch;
  color:#514943!important;
}
.neo-login-card input{
  text-align:center!important;
  border-color:#DED5CE!important;
  background:#FFFEFD!important;
  letter-spacing:0!important;
}
.neo-login-card input::placeholder{color:#9A918B;opacity:1;text-align:center}
.neo-login-card input:focus{
  background:#fff!important;
  border-color:var(--orange)!important;
  box-shadow:0 0 0 4px rgba(243,111,33,.10)!important;
}
.neo-login-card .btn.primary{
  border:1px solid var(--orange)!important;
  box-shadow:0 8px 20px rgba(243,111,33,.18)!important;
}
.neo-login-card .btn.primary:hover{box-shadow:0 11px 24px rgba(243,111,33,.23)!important;transform:translateY(-1px)!important}

/* Secondary CTA button shared by Login and Public pages. */
.btn.premium-secondary{
  min-height:48px;
  padding:10px 16px!important;
  border:1px solid #F3B186!important;
  border-radius:11px!important;
  background:#fff!important;
  color:var(--orange-dark)!important;
  box-shadow:0 5px 14px rgba(97,53,26,.065)!important;
  text-decoration:none!important;
  font-size:13.5px!important;
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease!important;
}
.btn.premium-secondary:hover{
  background:var(--orange-soft)!important;
  border-color:#F09A61!important;
  box-shadow:0 8px 20px rgba(97,53,26,.09)!important;
  transform:translateY(-1px)!important;
  text-decoration:none!important;
}
.btn.premium-secondary:active{transform:translateY(0)!important}

.neo-public-cta{
  display:grid!important;
  gap:10px!important;
  margin-top:22px!important;
  padding-top:20px!important;
}
.neo-public-cta span{text-align:center}
.neo-public-cta .btn{width:100%}

/* Public page: premium card and stronger primary title hierarchy. */
.neo-public-hero h1 .premium-emphasis{color:#fff!important}
.neo-public-search-card{
  border-color:var(--premium-border)!important;
  box-shadow:var(--premium-shadow)!important;
  padding:26px!important;
}
.neo-public-search-card:hover{box-shadow:var(--premium-shadow-hover)!important}
.neo-public-search-form input{border-color:#DED5CE!important;background:#FFFEFD!important}
.neo-public-search-form input:focus{background:#fff!important;box-shadow:0 0 0 4px rgba(243,111,33,.10)!important}
.neo-public-search-form .btn.primary{border:1px solid var(--orange)!important;box-shadow:0 8px 20px rgba(243,111,33,.18)!important}
.neo-public-bottom{
  padding:18px 0 0!important;
  border-top:1px solid var(--divider)!important;
  margin-top:24px!important;
}
.neo-public-bottom .premium-secondary{flex:0 0 auto;min-width:190px}

/* Small premium finishing touches across app without adding visual noise. */
.panel,.kpi,.table-wrap,.advanced-filter{
  border-color:var(--premium-border)!important;
}
.panel{box-shadow:0 5px 18px rgba(65,48,37,.045)!important}
.kpi{box-shadow:0 6px 20px rgba(65,48,37,.05)!important}
.sidebar nav a.active,.sidebar-nav a.active{box-shadow:0 7px 20px rgba(97,53,26,.11)!important}
.topbar{box-shadow:0 4px 18px rgba(55,45,39,.045)!important}

@media(max-width:620px){
  .neo-login-card{padding:25px 18px!important}
  .neo-public-search-card{padding:20px 15px!important}
  .neo-public-bottom .premium-secondary{width:100%;min-width:0}
}


/* =========================================================
   SIMPEL-DONG v3.6.2 — Identity & Public NIK Alignment
   ========================================================= */
.app-name-emphasis,
.brand-title .brand-name-emphasis{
  font-family:'Roboto',Arial,sans-serif!important;
  font-weight:700!important;
}
.neo-login-hero h1 .app-name-emphasis{font-weight:700!important;}
.neo-login-card .btn .app-name-emphasis,
.neo-login-footer .app-name-emphasis,
.neo-public-footer .app-name-emphasis,
.neo-public-bottom .app-name-emphasis{font-weight:700!important;}
.neo-public-search-form input[name="nik"]{
  text-align:center!important;
  font-variant-numeric:tabular-nums;
  letter-spacing:.045em!important;
}
.neo-public-search-form input[name="nik"]::placeholder{
  text-align:center!important;
  letter-spacing:.01em!important;
}

.app-short-name-input{font-weight:700!important;}

/* =====================================================================
   SIMPEL-DONG v3.6.3 — Full-height sidebar rail alignment
   Keep the navigation panel sticky, while the orange sidebar rail belongs
   to the whole application grid so it always reaches the page/footer end.
   ===================================================================== */
.app-shell{
  min-height:100dvh;
  align-items:stretch;
  background:linear-gradient(
    90deg,
    var(--orange) 0,
    var(--orange) 263px,
    rgba(124,67,33,.14) 263px,
    rgba(124,67,33,.14) 264px,
    var(--bg) 264px,
    var(--bg) 100%
  );
}
.sidebar{
  align-self:start;
  z-index:10;
}
.main{
  min-height:100dvh;
  background:var(--bg);
}

/* Tablet rail: the visual orange column continues for the full document,
   even though the compact icon navigation itself remains sticky. */
.device-tablet .app-shell{
  min-height:100dvh!important;
  align-items:stretch!important;
  background:linear-gradient(
    90deg,
    var(--orange) 0,
    var(--orange) 75px,
    rgba(124,67,33,.14) 75px,
    rgba(124,67,33,.14) 76px,
    var(--bg) 76px,
    var(--bg) 100%
  )!important;
}
.device-tablet .sidebar{align-self:start!important;z-index:10!important}

/* On phones the sidebar is an off-canvas drawer; do not leave a permanent
   orange rail behind the page. */
.device-phone .app-shell{background:var(--bg)!important}

/* Keep the footer edge visually continuous with the full-height rail. */
.app-footer{
  position:relative;
  border-top:1px solid var(--border)!important;
}


/* SIMPEL-DONG v3.6.4 — Excel report controls */
@media(min-width:1101px){
  .report-stage-form{grid-template-columns:minmax(220px,1fr) minmax(240px,1fr) 220px!important}
  .document-actions{grid-template-columns:repeat(4,minmax(180px,1fr))!important}
}
@media(min-width:821px) and (max-width:1100px){
  .report-stage-form{grid-template-columns:1fr 1fr!important}
  .report-stage-form .report-source{grid-column:1/-1!important}
}
