:root{--bg:#061321;--bg2:#081a2b;--panel:#0c2032;--panel2:#102a3f;--line:#1c4058;--cyan:#20d4f4;--teal:#24cfa1;--green:#42dc82;--orange:#ffad3d;--red:#ff5b4f;--text:#edf8ff;--muted:#8caabd;--shadow:0 18px 45px rgba(0,0,0,.25)}
*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 70% -20%,#12344f 0,transparent 32%),var(--bg);color:var(--text);font:14px/1.45 Inter,Segoe UI,Arial,sans-serif}button,input,select,textarea{font:inherit}a{color:var(--cyan);text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-size:25px;margin-bottom:0}h2{font-size:18px;margin-bottom:4px}.muted{color:var(--muted)}.eyebrow{display:block;color:var(--cyan);font-size:11px;letter-spacing:.14em;font-weight:800;margin-bottom:4px}.brand-mark{width:42px;height:48px;display:grid;place-items:center;border:3px solid var(--cyan);clip-path:polygon(50% 0,100% 18%,92% 76%,50% 100%,8% 76%,0 18%);background:rgba(32,212,244,.12);color:var(--cyan)}.brand-mark.large{width:72px;height:82px;font-size:30px}.company-lockup{display:flex;gap:12px;align-items:center}.company-lockup strong,.company-lockup small{display:block}.company-lockup small{color:var(--muted);font-size:11px;margin-top:3px}
.login-body{min-height:100vh;display:grid;place-items:center;padding:28px}.login-shell{width:min(1040px,100%);display:grid;grid-template-columns:1.15fr .85fr;overflow:hidden;border:1px solid var(--line);border-radius:24px;background:rgba(7,24,39,.94);box-shadow:0 30px 90px rgba(0,0,0,.5)}.login-brand{padding:70px;background:linear-gradient(150deg,rgba(13,60,86,.85),rgba(5,17,29,.95)),radial-gradient(circle,var(--cyan),transparent);display:flex;flex-direction:column;justify-content:center;min-height:620px}.login-pilot-image{width:112px;height:112px;object-fit:contain;object-position:left center;margin-bottom:8px;border-radius:14px}.login-brand h1{font-size:48px;line-height:1.08;margin:16px 0}.login-brand>p{max-width:540px;color:#b7d0df;font-size:17px}.login-points{display:flex;flex-wrap:wrap;gap:14px;color:var(--teal);margin-top:30px}.login-card{padding:52px 48px;display:flex;flex-direction:column;justify-content:center}.login-card h2{font-size:28px;margin:42px 0 4px}.auth-form{display:grid;gap:16px;margin-top:20px}.auth-form label,.report-form label,.filter-form label{display:grid;gap:7px;color:#bcd2de;font-weight:600}.auth-form input,.auth-form select,.auth-form textarea,.report-form input,.report-form select,.report-form textarea,.filter-form input{width:100%;border:1px solid var(--line);border-radius:10px;background:#071725;color:var(--text);padding:13px 14px;outline:none}.auth-form input:focus,.auth-form select:focus,.auth-form textarea:focus,.report-form textarea:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(32,212,244,.1)}.auth-form small{color:var(--muted);font-weight:400}.forgot-login-link{display:block;text-align:center;color:var(--cyan);font-size:12px}.demo-accounts{margin-top:22px;border-top:1px solid var(--line);padding-top:18px;color:var(--muted)}.demo-accounts summary{cursor:pointer;color:var(--cyan)}.demo-accounts p{margin:7px 0;font-size:12px}.demo-accounts code{color:#c7ecff}.alert{padding:12px 14px;border-radius:9px;margin:16px 0}.alert.danger{background:rgba(255,91,79,.12);border:1px solid rgba(255,91,79,.4);color:#ffaaa3}.alert.success{background:rgba(66,220,130,.12);border:1px solid rgba(66,220,130,.4);color:#8ef7b8}.alert.warning{background:rgba(255,173,61,.12);border:1px solid rgba(255,173,61,.4);color:#ffd383}.recovery-shell{width:min(1120px,100%)}.recovery-card{padding-top:34px;padding-bottom:34px}.recovery-card h2{margin-top:26px}.recovery-form{gap:11px}
.app-shell{min-height:100vh;display:grid;grid-template-columns:230px 1fr}.sidebar{position:sticky;top:0;height:100vh;padding:20px 13px;border-right:1px solid var(--line);background:rgba(5,17,29,.95);display:flex;flex-direction:column;z-index:10}.sidebar-brand{padding:0 8px 22px}.sidebar nav{display:grid;gap:5px}.nav-item{display:flex;align-items:center;gap:12px;color:#c6dae5;padding:12px 13px;border-radius:9px;border-left:3px solid transparent}.nav-item span{color:var(--cyan);font-size:18px;width:22px;text-align:center}.nav-item:hover,.nav-item.active{background:rgba(32,212,244,.09);border-left-color:var(--cyan);color:#fff}.system-ok{margin-top:auto;padding:15px;border:1px solid var(--line);background:#0a2134;border-radius:12px;display:grid;grid-template-columns:auto 1fr;gap:2px 8px}.system-ok span{color:var(--green);grid-row:1/3}.system-ok small{color:var(--muted)}.app-main{min-width:0}.topbar{position:sticky;top:0;z-index:8;min-height:82px;padding:14px 24px;border-bottom:1px solid var(--line);background:rgba(6,19,33,.93);backdrop-filter:blur(14px);display:flex;align-items:center;justify-content:space-between;gap:18px}.topbar-actions{display:flex;align-items:center;gap:14px}.location-filter{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--panel);padding:9px 12px;border-radius:9px}.location-filter select{border:0;background:transparent;color:var(--text);min-width:145px;outline:0}.location-filter option{background:var(--panel)}.clock{display:grid;border-left:1px solid var(--line);padding-left:16px}.clock strong{font-size:18px}.clock small{color:var(--muted)}.icon-button{position:relative;border:1px solid var(--line);color:var(--text);background:var(--panel);width:40px;height:40px;border-radius:50%;cursor:pointer}.icon-button b{position:absolute;right:-4px;top:-5px;background:var(--red);font-size:10px;border-radius:10px;padding:2px 5px}.profile-chip{display:flex;align-items:center;gap:9px}.profile-chip>span,.avatar-small,.avatar-large{display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,#1a779f,var(--cyan));color:#001722;font-weight:900}.profile-chip>span{width:38px;height:38px}.profile-chip strong,.profile-chip small{display:block;max-width:150px;white-space:nowrap}.profile-chip small{color:var(--cyan);font-size:11px}.logout-link{font-size:22px;color:#a8c3d1}.content{padding:22px;max-width:1900px;margin:auto}
.kpi-grid{display:grid;gap:12px;margin-bottom:16px}.kpi-grid.five{grid-template-columns:repeat(5,1fr)}.kpi,.panel{background:linear-gradient(145deg,rgba(16,42,63,.95),rgba(9,28,44,.97));border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}.kpi{padding:16px;display:grid;grid-template-columns:auto 1fr;gap:8px 13px;align-items:center}.kpi>span{font-size:28px;color:var(--cyan)}.kpi>div strong,.kpi>div small{display:block}.kpi>div strong{font-size:28px;line-height:1}.kpi>div small{color:#b8ceda;margin-top:5px}.kpi em{grid-column:1/-1;color:var(--green);font-size:11px;font-style:normal}.danger-kpi{border-color:rgba(255,91,79,.4)}.danger-kpi>span,.danger-kpi em{color:var(--red)}.panel{padding:17px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.panel-heading h2{margin:0}.btn{border:1px solid transparent;border-radius:8px;padding:10px 14px;font-weight:800;cursor:pointer;color:#03141d;background:#d9edf7}.btn.primary{background:linear-gradient(135deg,#19c8e8,#2ee1dc);color:#00131c}.btn.danger{background:linear-gradient(135deg,#ef4536,#ff735b);color:white}.btn.outline{background:transparent;border-color:#28749a;color:#68dcf5}.btn.small{padding:6px 10px;font-size:12px;background:var(--teal);color:#002119}.btn.wide{width:100%;margin-top:9px}.status{display:inline-flex;align-items:center;border-radius:6px;padding:4px 8px;font-size:10px;font-weight:800;text-transform:uppercase;font-style:normal}.status.online{color:#6af5a8;background:rgba(66,220,130,.12)}.status.offline{color:#a4b4bd;background:rgba(140,170,189,.12)}.status.warning{color:#ffd383;background:rgba(255,173,61,.12)}.status.danger{color:#ff8c84;background:rgba(255,91,79,.12)}.live-pill{color:var(--green);font-size:12px}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.super-grid{grid-template-columns:1.4fr 1.4fr 1fr}.admin-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:15px;margin-bottom:15px}.location-cards{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:11px}.location-card{border:1px solid var(--line);border-radius:11px;background:#091a2a;overflow:hidden;transition:.2s}.location-card:hover{transform:translateY(-2px);border-color:#3184aa}.location-card.has-alert{border-color:var(--red);box-shadow:0 0 0 2px rgba(255,91,79,.08)}.location-card header{height:38px;display:flex;align-items:center;gap:7px;padding:7px 9px}.location-card header .number{display:grid;place-items:center;width:21px;height:21px;border-radius:50%;background:var(--green);color:#052317;font-weight:900}.location-card.has-alert header .number{background:var(--red);color:white}.location-card header strong{font-size:11px}.location-card header em{margin-left:auto;color:var(--green);font-size:9px;font-style:normal}.location-card.has-alert header em{color:var(--red)}.camera-thumb{position:relative;height:112px;padding:8px;overflow:hidden;background-color:#153044;background-image:linear-gradient(25deg,transparent 35%,rgba(32,212,244,.18)),repeating-linear-gradient(90deg,transparent 0 38px,rgba(255,255,255,.035) 39px 40px)}.camera-thumb.scene-2{background-color:#263448}.camera-thumb.scene-3{background-color:#382826}.camera-thumb.scene-4{background-color:#253b43}.camera-thumb.scene-5{background-color:#1d3441}.camera-thumb>span{position:absolute;top:8px;right:8px;color:#73f9a7;font-size:9px}.camera-thumb>b{position:absolute;left:9px;bottom:8px;text-shadow:0 2px 4px #000}.scanline{position:absolute;left:0;right:0;height:2px;background:rgba(32,212,244,.6);box-shadow:0 0 12px var(--cyan);animation:scan 4s linear infinite}@keyframes scan{from{top:5%}to{top:95%}}.location-facts{padding:7px 9px}.location-facts p{display:flex;justify-content:space-between;gap:6px;margin:0;padding:5px 0;border-bottom:1px solid rgba(28,64,88,.55);font-size:10px}.location-facts p:last-child{border:0}.location-facts span{color:var(--muted)}.location-facts b{font-weight:700}.has-alert .location-facts p:last-child b{color:var(--red)}.critical-border{border-color:rgba(255,91,79,.65)}.unknown-face{height:145px;border-radius:10px;background:radial-gradient(circle at 50% 30%,#465661,#162431 56%,#0b1722);position:relative;overflow:hidden;display:grid;place-items:center;margin-bottom:13px}.face-silhouette{display:grid;place-items:center;width:80px;height:100px;border-radius:48% 48% 40% 40%;background:#253847;color:#93a9b5;font-size:40px}.face-box{position:absolute;width:105px;height:120px;border:2px solid var(--red);box-shadow:0 0 18px rgba(255,91,79,.3)}.danger-text{color:var(--red);font-size:16px}.incident-meta{margin:13px 0}.incident-meta p{display:flex;justify-content:space-between;margin:0;padding:5px 0;border-bottom:1px solid rgba(28,64,88,.6);font-size:11px}.incident-meta span{color:var(--muted)}.lower-grid{grid-template-columns:1.1fr 1fr 1.15fr}.list-stack{display:grid;gap:9px}.progress-row{display:grid;grid-template-columns:minmax(120px,1fr) 1fr auto;align-items:center;gap:9px}.progress-row strong,.progress-row small{display:block}.progress-row small{color:var(--muted);font-size:10px}.progress-track{height:7px;background:#071522;border-radius:8px;overflow:hidden}.progress-track span{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--teal))}.person-row,.incident-row,.report-row{display:flex;align-items:center;gap:9px;padding:8px;border:1px solid rgba(28,64,88,.65);border-radius:9px;background:rgba(4,18,30,.45)}.avatar-small{width:32px;height:32px;font-size:10px}.person-row>div,.incident-row>div,.report-row>div{flex:1;min-width:0}.person-row strong,.person-row small,.incident-row strong,.incident-row small,.report-row strong,.report-row small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-row small,.incident-row small,.report-row small{color:var(--muted);font-size:10px}.incident-row time{color:var(--muted);font-size:10px}.incident-row em{color:var(--orange);font-size:9px;font-style:normal;text-transform:uppercase}.severity{font-size:18px}.severity.high,.severity.critical{color:var(--red)}.route-map{height:260px;border:1px solid var(--line);border-radius:11px;position:relative;margin-bottom:15px;background-color:#0b2236;background-image:linear-gradient(30deg,transparent 42%,rgba(32,212,244,.08) 43% 44%,transparent 45%),linear-gradient(120deg,transparent 42%,rgba(32,212,244,.06) 43% 44%,transparent 45%);overflow:hidden}.route-line{position:absolute;left:18%;right:20%;top:48%;height:4px;background:var(--cyan);transform:rotate(-8deg);box-shadow:0 0 12px var(--cyan)}.map-point{position:absolute;display:grid;place-items:center;width:42px;height:42px;border:3px solid var(--cyan);background:#0a3146;border-radius:50%;font-size:18px;font-weight:900;box-shadow:0 0 16px rgba(32,212,244,.55)}.map-point small{position:absolute;top:45px;white-space:nowrap;font-size:10px}.map-point.p1{left:14%;top:56%}.map-point.p2{left:49%;top:28%}.map-point.p3{right:16%;top:52%}.danru-grid{grid-template-columns:1fr 1.25fr 1fr}.security-mobile{max-width:860px;margin:0 auto;display:grid;gap:15px}.security-hero{display:flex;align-items:center;gap:14px;padding:6px}.avatar-large{width:62px;height:62px;font-size:18px}.security-hero h2{font-size:25px}.online-dot{color:var(--green)}.alert-task{display:grid;grid-template-columns:1fr 260px;gap:18px;background:linear-gradient(130deg,rgba(110,24,25,.5),rgba(12,32,50,.98));border:1px solid var(--red);border-radius:15px;padding:20px}.alert-task-copy h2{color:#ff8a80;font-size:25px}.alert-task-copy p{font-size:16px}.alert-task-copy small{color:#d2b0ad}.camera-snapshot{border-radius:10px;position:relative;background:linear-gradient(140deg,#0c1117,#39434b);min-height:150px;display:grid;place-items:center}.camera-snapshot span{position:absolute;top:8px;left:8px;font-size:10px}.camera-snapshot b{color:var(--red)}.task-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:10px}.task-actions .btn{font-size:16px;padding:14px}.checkpoint-stepper{display:grid;grid-template-columns:repeat(3,1fr);margin:20px 0}.checkpoint-stepper>div{display:flex;align-items:center;justify-content:center;gap:9px;position:relative}.checkpoint-stepper>div:not(:last-child):after{content:"";position:absolute;right:-20%;width:40%;height:2px;background:#375064}.checkpoint-stepper b{display:grid;place-items:center;width:40px;height:40px;border:2px solid #536574;border-radius:50%}.checkpoint-stepper .done b{border-color:var(--cyan);color:var(--cyan)}.checkpoint-stepper span,.checkpoint-stepper small{display:block}.checkpoint-stepper small{color:var(--muted)}.checkpoint-card{background:#071a2a;border:1px solid var(--line);padding:17px;border-radius:11px}.report-shortcut{display:flex;align-items:center;gap:14px;color:var(--text)}.report-shortcut>span{font-size:30px;color:var(--cyan)}.report-shortcut>div{flex:1}.report-shortcut strong,.report-shortcut small{display:block}.report-shortcut small{color:var(--muted)}.user-monitoring>.location-cards{margin:15px 0}.system-list p{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0;margin:0}.system-list b{color:var(--green)}.incident-status-card{text-align:center;display:grid;place-items:center}.incident-status-card>span{font-size:50px;color:var(--red)}.incident-status-card h2{color:var(--red)}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:680px}th,td{text-align:left;padding:11px;border-bottom:1px solid var(--line)}th{color:#9eb8c8;font-size:11px;text-transform:uppercase}td{font-size:12px}.summary-cell{max-width:320px}.report-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:15px}.filter-form{display:flex;align-items:end;gap:8px}.filter-form input{padding:9px}.report-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:15px 0}.report-form-panel{margin:15px 0}.report-form{display:grid;grid-template-columns:220px 1fr 1fr auto;gap:12px;align-items:end}.report-form textarea{min-height:95px;resize:vertical}.toast-stack{position:fixed;right:18px;bottom:18px;z-index:100;display:grid;gap:8px;width:min(360px,calc(100vw - 36px))}.toast{padding:13px 15px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:10px;background:#0c2336;box-shadow:var(--shadow);animation:toastIn .2s ease}.toast.danger{border-left-color:var(--red)}.toast.success{border-left-color:var(--green)}@keyframes toastIn{from{transform:translateY(8px);opacity:0}}
.device-page,.command-page,.patrol-config{grid-template-columns:minmax(300px,.72fr) minmax(0,1.5fr)}.device-form,.command-form,.checkpoint-form{grid-template-columns:1fr;align-items:stretch}.device-form .btn,.command-form .btn,.checkpoint-form .btn{grid-column:auto}.coordinate-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.route-selector{margin:0 0 18px}.route-selector label{display:grid;gap:7px;color:#bcd2de;font-weight:600}.route-selector select{width:100%;border:1px solid var(--line);border-radius:10px;background:#071725;color:var(--text);padding:13px 14px}.center-button{display:block;text-align:center}
@media(max-width:1200px){.kpi-grid.five{grid-template-columns:repeat(3,1fr)}.location-cards{grid-template-columns:repeat(3,1fr)}.dashboard-grid,.danru-grid{grid-template-columns:1fr 1fr}.span-3{grid-column:span 2}.profile-chip div,.clock{display:none}.report-form{grid-template-columns:1fr 1fr}.report-form .btn{grid-column:1/-1}.device-form,.command-form,.checkpoint-form{grid-template-columns:1fr}}
@media(max-width:820px){.app-shell{display:block}.sidebar{position:fixed;left:0;right:0;top:auto;bottom:0;height:68px;padding:7px 8px;border:0;border-top:1px solid var(--line);flex-direction:row;z-index:30}.sidebar-brand,.system-ok{display:none}.sidebar nav{display:flex;justify-content:space-around;width:100%;overflow:auto}.nav-item{font-size:0;display:grid;place-items:center;padding:6px 10px;border:0}.nav-item span{font-size:22px}.topbar{padding:12px 14px}.topbar>div:first-child h1{font-size:18px}.location-filter,.profile-chip,.logout-link{display:none}.content{padding:14px 14px 86px}.kpi-grid.five,.report-summary-grid{grid-template-columns:1fr 1fr}.admin-layout,.dashboard-grid,.danru-grid,.device-page,.command-page,.patrol-config{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.location-cards{grid-template-columns:1fr 1fr}.incident-panel{order:-1}.alert-task{grid-template-columns:1fr}.camera-snapshot,.task-actions{grid-column:1}.report-header{display:block}.filter-form{margin-top:12px;flex-wrap:wrap}.report-form{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr}.login-brand{display:none}.login-card{padding:36px 24px;min-height:650px}}
@media(max-width:520px){.kpi-grid.five,.report-summary-grid,.location-cards{grid-template-columns:1fr}.topbar .eyebrow{display:none}.notification-button{margin-left:auto}.checkpoint-stepper span{display:none}.task-actions{grid-template-columns:1fr}.login-card h2{margin-top:30px}}
@media print{.sidebar,.topbar,.filter-form,.btn{display:none!important}.app-shell{display:block}.content{padding:0}.panel,.kpi{box-shadow:none;background:#fff;color:#111;border-color:#bbb}.muted,small{color:#555!important}body{background:#fff;color:#111}}

/* Modul personel, jadwal, pengumuman, dan branding login */
.login-brand-image{width:58px;height:58px;object-fit:contain;border-radius:10px;background:rgba(255,255,255,.04)}
.profile-chip{color:var(--text)}.profile-chip>img{width:38px;height:38px;object-fit:cover;border-radius:50%;border:2px solid var(--cyan)}
.profile-layout,.schedule-layout,.announcement-layout,.branding-layout{grid-template-columns:minmax(300px,.8fr) minmax(0,1.5fr)}
.profile-form,.schedule-form,.announcement-form,.branding-form{grid-template-columns:1fr;align-items:stretch}.profile-form .full-field{grid-column:1/-1}
.profile-photo-block{display:flex;align-items:center;gap:15px;padding:14px;margin-bottom:16px;border:1px solid var(--line);border-radius:12px;background:#071a2a}.profile-photo-block img,.profile-photo-placeholder{width:92px;height:92px;border-radius:16px;object-fit:cover;border:2px solid var(--cyan)}.profile-photo-placeholder{display:grid;place-items:center;background:linear-gradient(145deg,#1b607e,#22d4e8);color:#00161f;font-size:28px;font-weight:900}.profile-photo-block strong,.profile-photo-block small{display:block}.profile-photo-block small{color:var(--muted);margin-top:5px}
.verification-grid{display:grid;gap:12px}.verification-card{display:grid;grid-template-columns:auto minmax(150px,1fr) minmax(260px,.85fr);gap:14px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:12px;background:#071a2a}.verification-card>img,.small-avatar{width:68px;height:68px;border-radius:12px;object-fit:cover}.small-avatar{font-size:18px}.verification-copy h3{margin-bottom:3px}.verification-copy p,.verification-copy small{margin:0;color:var(--muted)}.verification-actions{display:grid;grid-template-columns:1fr auto auto;gap:7px}.verification-actions input{grid-column:1/-1;border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:9px}
.shift-cards{display:grid;gap:10px}.shift-card{display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,1.2fr) auto auto;align-items:center;gap:13px;padding:13px;border:1px solid var(--line);border-left:4px solid var(--orange);border-radius:11px;background:#071a2a}.shift-card.active{border-left-color:var(--green)}.shift-person{display:flex;align-items:center;gap:9px}.shift-person img,.duty-person img{width:38px;height:38px;object-fit:cover;border-radius:50%;border:2px solid var(--cyan)}.shift-person strong,.shift-person small,.shift-time strong,.shift-time span{display:block}.shift-person small,.shift-time span{color:var(--muted);font-size:11px}.inline-actions{display:flex;gap:6px}.schedule-view-only{grid-template-columns:1fr}
.announcement-list{display:grid;gap:11px}.announcement-card{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:11px;background:#071a2a}.announcement-card.important{border-left-color:var(--orange)}.announcement-card.urgent{border-left-color:var(--red);background:rgba(91,20,25,.22)}.announcement-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:rgba(32,212,244,.13);color:var(--cyan);font-weight:900}.announcement-card h3{margin:3px 0}.announcement-card p{margin-bottom:6px;color:#c8dbe5}.announcement-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}.announcement-card small{color:var(--muted)}.announcement-list.compact .announcement-card p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.duty-roster{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:10px}.duty-person{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:11px;background:#071a2a}.duty-person strong,.duty-person small,.duty-person em{display:block}.duty-person small{color:var(--muted);font-size:10px}.duty-person em{color:#bfe9f7;font-size:10px;font-style:normal;margin-top:4px}
.security-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:15px}.avatar-large.photo{object-fit:cover;border:2px solid var(--cyan)}
.login-branding-previews{display:grid;grid-template-columns:1fr 1fr;gap:14px}.pilot-preview-card,.login-preview{min-height:500px;padding:38px;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.pilot-preview-card{display:flex;flex-direction:column;justify-content:center;background:linear-gradient(150deg,rgba(13,60,86,.85),rgba(5,17,29,.95))}.pilot-preview-card img{width:112px;height:112px;object-fit:contain;object-position:left center;margin-bottom:10px;border-radius:14px}.pilot-preview-card>strong{color:var(--cyan);font-size:11px;letter-spacing:.14em}.pilot-preview-card h3{margin-top:14px;font-size:28px;line-height:1.08}.login-preview{background:#071725}.login-preview h2{font-size:28px;margin-top:38px}.login-company-image>img{width:72px;height:72px;object-fit:contain;border-radius:12px}.preview-input{height:46px;border-radius:9px;background:#dce6f5;margin:14px 0}.preview-button{padding:13px;border-radius:9px;background:linear-gradient(135deg,#19c8e8,#2ee1dc);color:#00131c;text-align:center;font-weight:900}.empty-state{text-align:center;color:var(--muted);padding:22px}.report-form input[type=file]{padding:10px}
.location-description{min-height:48px;padding:8px 9px;border-bottom:1px solid var(--line);color:var(--muted);font-size:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.location-management,.personnel-management{grid-template-columns:minmax(320px,.75fr) minmax(0,1.6fr)}.location-form,.personnel-form{grid-template-columns:1fr;align-items:stretch}.managed-location-list,.personnel-list{display:grid;gap:11px}.managed-location{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:start;padding:14px;border:1px solid var(--line);border-radius:12px;background:#071a2a}.managed-location.inactive{opacity:.62}.location-number{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:rgba(32,212,244,.13);color:var(--cyan);font-size:18px;font-weight:900}.location-title,.personnel-title{display:flex;align-items:center;gap:10px}.location-title h3,.personnel-title h3{margin:0}.managed-location p{margin:4px 0;color:#bcd2de}.managed-location small{color:var(--muted)}.location-summary{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}.location-summary span{padding:4px 7px;border-radius:6px;background:rgba(32,212,244,.08);color:#aeefff;font-size:10px}.location-actions{display:flex;gap:7px}.location-actions form{margin:0}.personnel-card{display:grid;grid-template-columns:auto minmax(220px,1fr) minmax(300px,.9fr);gap:14px;align-items:center;padding:14px;border:1px solid var(--line);border-left:4px solid var(--orange);border-radius:12px;background:#071a2a}.personnel-card.approved{border-left-color:var(--green)}.personnel-card.rejected{border-left-color:var(--red)}.personnel-card>img{width:68px;height:68px;border-radius:13px;object-fit:cover;border:2px solid var(--cyan)}.personnel-identity p{margin:4px 0;color:#bcd2de}.personnel-identity small,.personnel-identity em{display:block;color:var(--muted);font-size:11px;font-style:normal}.personnel-identity em{margin-top:5px;color:#bcebd0}.identity-verification{display:grid;grid-template-columns:1fr;gap:7px}.identity-verification label{display:grid;gap:4px;color:#bcd2de;font-size:11px}.identity-verification select,.identity-verification input{width:100%;border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:9px}.identity-verification>div{display:flex;gap:7px}.personnel-status-action{text-align:right}.profile-only{grid-template-columns:minmax(0,1fr)}.profile-only .span-2{grid-column:1}.two-column-form{grid-template-columns:1fr 1fr}

@media(max-width:1200px){.profile-form,.schedule-form,.announcement-form,.branding-form{grid-template-columns:1fr}.verification-card{grid-template-columns:auto 1fr}.verification-actions{grid-column:1/-1}.shift-card{grid-template-columns:1fr 1fr}.duty-roster{grid-template-columns:1fr}}
@media(max-width:820px){.profile-layout,.schedule-layout,.announcement-layout,.branding-layout{grid-template-columns:1fr}.login-branding-previews{grid-template-columns:1fr}.security-shortcuts{grid-template-columns:1fr}.shift-card{grid-template-columns:1fr}.inline-actions{justify-content:flex-start}.duty-person{grid-template-columns:auto 1fr}.duty-person>.status{grid-column:2}}
@media(max-width:1000px){.location-management,.personnel-management{grid-template-columns:1fr}.personnel-card{grid-template-columns:auto 1fr}.identity-verification,.personnel-status-action{grid-column:1/-1}.location-actions{grid-column:2}}
@media(max-width:620px){.managed-location,.personnel-card{grid-template-columns:1fr}.location-actions{grid-column:1}.two-column-form{grid-template-columns:1fr}}

/* OpenStreetMap untuk pengaturan Danru dan patroli Security */
.osm-map{height:430px;border:1px solid var(--line);border-radius:12px;background:#10283a;overflow:hidden;z-index:1}.security-map{height:360px;margin:12px 0 18px}.leaflet-container{font:12px/1.4 Inter,Segoe UI,Arial,sans-serif}.leaflet-control-attribution{font-size:9px}.checkpoint-map-icon{background:transparent;border:0}.checkpoint-map-icon span{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;border:3px solid #fff;background:#15384c;color:#fff;font-weight:900;box-shadow:0 4px 15px rgba(0,0,0,.45)}.checkpoint-map-icon.editable span{background:var(--cyan);color:#00202b}.checkpoint-map-icon.done span{background:var(--green);color:#042b19}.checkpoint-map-icon.next span{background:var(--orange);color:#382100;animation:mapPulse 1.5s infinite}.checkpoint-map-icon.pending span{background:#526979;color:#fff}@keyframes mapPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,173,61,.45)}50%{box-shadow:0 0 0 12px rgba(255,173,61,0)}}.map-help{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 18px}.map-help span{padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:#071a2a;color:#bfe8f7;font-size:11px}.checkpoint-distance{margin:12px 0;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#0a2134;color:var(--muted)}.checkpoint-distance.inside{border-color:rgba(66,220,130,.6);background:rgba(66,220,130,.1);color:#88f4b3}.checkpoint-distance.outside{border-color:rgba(255,173,61,.6);background:rgba(255,173,61,.08);color:#ffd383}.map-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.disabled-link{pointer-events:none;opacity:.45}.dynamic-stepper{overflow-x:auto;justify-content:start}.dynamic-stepper>div{min-width:150px}
.danru-dashboard-agenda-map{height:330px;margin:12px 0 16px}.danru-agenda-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#071a2a}.danru-agenda-meta strong,.danru-agenda-meta small{display:block}.danru-agenda-meta small{margin-top:3px;color:var(--muted)}
.hr-dashboard-grid{grid-template-columns:repeat(3,1fr);margin-bottom:15px}.hr-attendance-panel,.hr-payroll-profile-panel,.hr-payroll-panel{margin-bottom:15px}.hr-attendance-panel table small,.hr-payroll-panel table small{display:block;margin-top:4px;color:var(--muted)}.attendance-review-form{display:grid;grid-template-columns:120px minmax(150px,1fr) auto;gap:6px;min-width:390px}.attendance-review-form select,.attendance-review-form input,.payroll-generate-form input,.hr-payroll-panel input{min-height:36px;border:1px solid var(--line);border-radius:7px;background:#071a2a;color:var(--text);padding:7px}.payroll-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.payroll-profile-card{border:1px solid var(--line);border-radius:10px;background:#071a2a;padding:0 13px}.payroll-profile-card summary{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;padding:13px 0}.payroll-profile-card summary strong,.payroll-profile-card summary small{display:block}.payroll-profile-card summary small{color:var(--muted);margin-top:3px}.payroll-profile-form{grid-template-columns:repeat(3,1fr);padding:0 0 14px}.payroll-profile-form .btn{align-self:end}.hr-payroll-panel tfoot th{background:#0a263a;color:var(--cyan);font-size:14px}
.hr-attendance-policy-panel{margin-bottom:15px}.attendance-policy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.attendance-policy-card{border:1px solid var(--line);border-radius:10px;background:#071a2a;padding:0 13px}.attendance-policy-card summary{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;padding:13px 0}.attendance-policy-card summary strong,.attendance-policy-card summary small{display:block}.attendance-policy-card summary small{margin-top:3px;color:var(--muted)}.attendance-policy-card summary>b{color:var(--cyan);font-size:12px}.attendance-policy-form{grid-template-columns:repeat(3,1fr);padding:0 0 14px}.attendance-policy-form label small{display:block;color:var(--muted);margin-top:4px}.attendance-policy-form .btn{align-self:end}.attendance-window-note{display:block;margin:8px 0;padding:7px 9px;border:1px solid rgba(32,212,244,.25);border-radius:7px;background:rgba(32,212,244,.06);color:#8fdced}
.payslip-list-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.payslip-list-card{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;padding:15px;border:1px solid var(--line);border-radius:11px;background:#071a2a}.payslip-list-card h3{margin:8px 0 5px}.payslip-list-card strong,.payslip-list-card small,.payslip-list-card>div:last-child span,.payslip-list-card>div:last-child b{display:block}.payslip-list-card small,.payslip-list-card>div:last-child span{color:var(--muted)}.payslip-list-card>div:last-child{text-align:right}.payslip-list-card>div:last-child b{font-size:18px;color:var(--cyan);margin:5px 0}.payslip-list-card .btn{margin-top:10px}.payslip-print-page{min-height:100vh;background:#e8edf1;color:#17242d;padding:28px;font-family:Inter,Segoe UI,Arial,sans-serif}.payslip-toolbar{max-width:900px;margin:0 auto 15px;display:flex;justify-content:flex-end;gap:8px}.payslip-sheet{position:relative;max-width:900px;margin:auto;background:#fff;border-radius:4px;box-shadow:0 14px 50px rgba(0,0,0,.18);padding:38px 44px;overflow:hidden}.payslip-draft-mark{position:absolute;top:45%;left:22%;transform:rotate(-25deg);font-size:110px;font-weight:900;color:rgba(231,72,61,.08);letter-spacing:10px}.payslip-header{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;padding-bottom:22px;border-bottom:3px solid #0c9fc0}.payslip-brand-mark{display:grid;place-items:center;width:52px;height:58px;background:#07344b;color:#25d7f2;font-size:24px;clip-path:polygon(50% 0,95% 18%,88% 80%,50% 100%,12% 80%,5% 18%)}.payslip-header>div:nth-child(2) strong,.payslip-header>div:nth-child(2) span{display:block}.payslip-header>div:nth-child(2) strong{font-size:20px}.payslip-header>div:nth-child(2) span{color:#5f747f;margin-top:4px}.payslip-title{text-align:right}.payslip-title h1{font-size:25px;letter-spacing:2px;margin:0;color:#07344b}.payslip-title span{color:#0c9fc0;font-weight:800}.payslip-identity{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 28px;padding:22px 0}.payslip-identity div{border-bottom:1px solid #d8e1e6;padding-bottom:9px}.payslip-identity span,.payslip-identity strong{display:block}.payslip-identity span{font-size:11px;text-transform:uppercase;color:#72858f}.payslip-identity strong{margin-top:4px}.payslip-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px;background:#edf7fa;border-radius:8px}.payslip-summary div{text-align:center;border-right:1px solid #c8e1e8}.payslip-summary div:last-child{border:0}.payslip-summary span,.payslip-summary strong{display:block}.payslip-summary span{font-size:11px;color:#5f747f}.payslip-summary strong{margin-top:4px;color:#07344b}.payslip-components{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;margin-top:20px}.payslip-component-card{border:1px solid #d8e1e6;border-radius:8px;padding:14px}.payslip-component-card h2{font-size:15px;color:#07344b;margin:0 0 10px}.payslip-component-card p{display:flex;justify-content:space-between;gap:20px;margin:0;padding:8px 0;border-bottom:1px dashed #d8e1e6;font-size:12px}.payslip-component-card p.total{border-top:2px solid #9bc9d5;border-bottom:0;margin-top:8px;font-weight:800}.payslip-net{display:flex;align-items:center;justify-content:space-between;margin-top:20px;padding:16px 18px;border-radius:8px;background:#07344b;color:#fff}.payslip-net span{font-weight:800;letter-spacing:1px}.payslip-net strong{font-size:25px;color:#32dbee}.payslip-footer{display:grid;grid-template-columns:1fr 220px;gap:30px;align-items:end;margin-top:26px}.payslip-footer p{margin:0 0 5px}.payslip-footer small{color:#667b86}.payslip-signature{text-align:center}.payslip-signature span,.payslip-signature strong,.payslip-signature small{display:block}.payslip-signature>div{height:55px;border-bottom:1px solid #8798a1;margin-bottom:7px}.payslip-note{margin:26px 0 0;padding-top:12px;border-top:1px solid #d8e1e6;color:#72858f;font-size:10px;text-align:center}
@media(max-width:1100px){.hr-kpi-grid.five{grid-template-columns:repeat(3,1fr)}.hr-dashboard-grid{grid-template-columns:1fr}.payroll-profile-grid,.attendance-policy-grid,.payslip-list-grid{grid-template-columns:1fr}}
@media(max-width:720px){.hr-kpi-grid.five{grid-template-columns:1fr 1fr}.payroll-profile-form,.attendance-policy-form{grid-template-columns:1fr}.attendance-review-form{grid-template-columns:1fr;min-width:230px}.danru-agenda-meta{align-items:flex-start;flex-direction:column}.danru-dashboard-agenda-map{height:310px}.payslip-list-card{grid-template-columns:1fr}.payslip-list-card>div:last-child{text-align:left}.payslip-print-page{padding:8px}.payslip-sheet{padding:24px 20px}.payslip-header{grid-template-columns:auto 1fr}.payslip-title{grid-column:1/-1;text-align:left}.payslip-identity,.payslip-components{grid-template-columns:1fr}.payslip-summary{grid-template-columns:1fr 1fr}.payslip-footer{grid-template-columns:1fr}}
@page{size:A4;margin:12mm}@media print{.no-print{display:none!important}.payslip-print-page{background:#fff;padding:0}.payslip-sheet{max-width:none;margin:0;box-shadow:none;border-radius:0;padding:0;overflow:visible}.payslip-draft-mark{position:fixed}.payslip-components{break-inside:avoid}.payslip-footer{break-inside:avoid}}
@media(max-width:820px){.osm-map{height:360px}.security-map{height:320px}.map-action-grid{grid-template-columns:1fr}.dynamic-stepper{grid-template-columns:repeat(3,minmax(130px,1fr))}}

/* Pembuat rute patroli end-to-end */
.patrol-builder-grid{display:grid;grid-template-columns:minmax(310px,.7fr) minmax(0,1.65fr);gap:15px}.patrol-builder-side,.patrol-builder-main{display:grid;align-content:start;gap:15px}.compact-form{grid-template-columns:1fr;align-items:stretch}.checkpoint-edit-form{grid-template-columns:1fr 1fr;align-items:end}.checkpoint-edit-form textarea{min-height:70px}.form-actions{display:flex;gap:8px;align-items:center}.checkpoint-delete-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.checkpoint-delete-list form{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#071a2a}.assignment-form{grid-template-columns:1fr 1fr 1fr auto;align-items:end}.assignment-history{display:grid;gap:7px;margin-top:16px}.assignment-history>div{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:9px;border:1px solid var(--line);border-radius:8px;background:#071a2a}.assignment-history span{color:var(--muted);font-size:11px}
@media(max-width:1100px){.patrol-builder-grid{grid-template-columns:1fr}.patrol-builder-side{grid-template-columns:1fr 1fr}.assignment-form{grid-template-columns:1fr 1fr}.assignment-form .btn{grid-column:1/-1}.checkpoint-edit-form{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.patrol-builder-side,.checkpoint-edit-form,.assignment-form{grid-template-columns:1fr}.checkpoint-delete-list{grid-template-columns:1fr}.form-actions{display:grid}.assignment-history>div{grid-template-columns:1fr}.osm-map{height:330px}}

/* Penempatan personel oleh Admin */
.approved-placement-actions{display:grid;gap:8px}.approved-placement-actions .personnel-status-action{margin:0}.personnel-assignment-history{margin-top:16px}.personnel-assignment-history .status{margin-left:5px}

/* Inventaris dan camera wall dinamis */
.device-visibility{display:grid;grid-template-columns:1fr 1fr;gap:8px;border:1px solid var(--line);border-radius:10px;padding:12px}.device-visibility legend{padding:0 6px;color:#bcd2de;font-size:11px;font-weight:700}.device-visibility label{display:flex;align-items:center;gap:8px}.device-visibility input{width:auto}.device-visibility small{grid-column:1/-1;color:var(--muted)}.device-actions{display:flex;gap:6px}.device-actions form{margin:0}.device-archived{opacity:.52}.device-page td small{display:block;color:var(--muted);margin-top:4px}.visibility-dot{color:#708696;font-size:10px}.visibility-dot.visible{color:var(--green)}.stream-quick-setup{display:grid;gap:8px;margin-top:14px;padding:14px;border:1px dashed rgba(32,212,244,.35);border-radius:11px;background:rgba(32,212,244,.05)}.stream-quick-setup p,.stream-quick-setup small{margin:0;color:var(--muted);line-height:1.55}.stream-quick-setup .btn{justify-self:start}.stream-quick-setup code{color:var(--cyan)}.camera-wall-panel{margin:15px 0}.camera-wall{display:grid;grid-template-columns:repeat(4,minmax(210px,1fr));gap:10px}.camera-location-heading{grid-column:1/-1;display:flex;align-items:center;gap:9px;margin:8px 0 0;padding:8px 2px 2px;font-size:14px}.camera-location-heading span{padding:4px 7px;border-radius:6px;background:rgba(32,212,244,.12);color:var(--cyan);font-size:9px}.camera-screen{overflow:hidden;border:1px solid var(--line);border-radius:11px;background:#071725}.camera-screen.warning{border-color:var(--orange)}.camera-screen.offline{border-color:#516170;opacity:.75}.camera-screen-view{position:relative;aspect-ratio:16/9;overflow:hidden;background:#0b1f2d}.camera-screen-view video,.camera-screen-view iframe{width:100%;height:100%;display:block;border:0;object-fit:cover;background:#02070b}.camera-placeholder{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:4px;text-align:center;background:linear-gradient(145deg,rgba(4,15,23,.35),rgba(8,35,51,.8))}.camera-placeholder>span{font-size:28px;color:var(--cyan)}.camera-placeholder strong{font-size:11px;letter-spacing:.08em}.camera-placeholder small{max-width:190px;color:#8ca7b8;font-size:9px}.camera-live,.camera-code,.stream-protocol-badge{position:absolute;z-index:2;padding:4px 6px;border-radius:5px;background:rgba(2,12,18,.76);font-size:9px}.camera-live,.camera-code{top:8px}.camera-live{left:8px;color:var(--green)}.camera-live.not-live{color:var(--orange)}.camera-code{right:8px;color:#d5e7ef}.stream-protocol-badge{right:8px;bottom:8px;color:var(--cyan)}.stream-error{position:absolute;inset:auto 10px 10px;z-index:3;padding:10px;border:1px solid rgba(255,104,104,.4);border-radius:8px;background:rgba(36,8,12,.9);color:#ffd2d2;font-size:10px;text-align:center}.camera-screen footer{display:flex;align-items:center;gap:8px;padding:9px 10px}.camera-screen footer>div{min-width:0;flex:1}.camera-screen footer strong,.camera-screen footer small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.camera-screen footer strong{font-size:11px}.camera-screen footer small{color:var(--muted);font-size:9px}.camera-expand{width:30px;height:30px;border:1px solid var(--line);border-radius:7px;background:#0b2639;color:var(--text);cursor:pointer}.camera-screen:fullscreen{display:grid;place-items:center;background:#000;border:0;border-radius:0}.camera-screen:fullscreen .camera-screen-view{width:100vw;height:calc(100vh - 56px);aspect-ratio:auto}.camera-screen:fullscreen footer{position:fixed;left:0;right:0;bottom:0;background:#06131d}.camera-wall-empty{grid-column:1/-1}
.spotlight-camera-target{display:block;padding:0}.spotlight-camera-target video,.spotlight-camera-target iframe{width:100%;height:100%;display:block;border:0;object-fit:cover;background:#02070b}.spotlight-camera-target .camera-placeholder{inset:0}.spotlight-camera-target .camera-live{left:7px;right:auto;top:7px}.spotlight-camera-target .camera-code{right:7px;top:7px}.spotlight-camera-target .stream-protocol-badge{right:7px;bottom:7px}.spotlight-camera-target .stream-error{inset:auto 7px 7px;padding:6px;font-size:8px}.spotlight-camera-label{z-index:4!important;left:7px!important;right:auto!important;bottom:7px!important;max-width:62%;padding:4px 6px;border-radius:5px;background:rgba(2,12,18,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px}.spotlight-loading{height:100%;display:grid;place-content:center;justify-items:center;gap:5px;color:var(--muted)}.spotlight-loading span{font-size:23px;color:var(--cyan)}.camera-spotlight-select{min-width:72px;height:30px;padding:0 7px;border:1px solid #28749a;border-radius:7px;background:transparent;color:#68dcf5;font-size:9px;font-weight:800;cursor:pointer}.camera-spotlight-select.active{border-color:rgba(66,220,130,.55);background:rgba(66,220,130,.12);color:#7af1aa}.camera-spotlight-select:disabled{opacity:.55;cursor:wait}
.camera-position-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.camera-position-card{min-width:0}.camera-position-card header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.camera-position-meta{display:grid;gap:3px;padding:9px 11px;border-top:1px solid var(--line)}.camera-position-meta strong,.camera-position-meta small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.camera-position-meta strong{font-size:10px;color:var(--text)}.camera-position-meta small{font-size:8px;color:var(--muted)}.camera-position-control{display:grid;gap:2px;min-width:92px}.camera-position-control>span{font-size:7px;color:var(--muted);text-transform:uppercase}.camera-position-select{height:29px;min-width:92px;padding:0 24px 0 7px;border:1px solid #28749a;border-radius:7px;background:#082034;color:#68dcf5;font-size:9px;font-weight:800;cursor:pointer}.camera-position-select.active{border-color:rgba(66,220,130,.55);background:#0b3b35;color:#7af1aa}.camera-position-select:disabled{opacity:.55;cursor:wait}
.command-center-open{overflow:hidden}.command-center-popup{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:12px}.command-center-backdrop{position:absolute;inset:0;border:0;background:rgba(0,7,12,.92);backdrop-filter:blur(8px);cursor:default}.command-center-stage{position:relative;z-index:1;width:min(1880px,100%);height:calc(100vh - 24px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #255a76;border-radius:15px;background:#020b12;box-shadow:0 30px 100px #000}.command-center-popup:fullscreen{padding:0;background:#020b12}.command-center-popup:fullscreen .command-center-stage{width:100%;height:100%;border:0;border-radius:0}.command-center-header{min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 16px;border-bottom:1px solid #183d54;background:linear-gradient(90deg,#061a29,#09253a)}.command-center-header .brand-mark{width:34px;height:39px}.command-center-header .eyebrow{margin:0}.command-center-header-actions{display:flex;align-items:center;gap:10px}.command-center-clock{min-width:92px;color:var(--cyan);font-size:20px;font-weight:900;font-variant-numeric:tabular-nums}.command-center-close{width:38px;height:38px;border:1px solid rgba(255,91,79,.5);border-radius:9px;background:rgba(255,91,79,.1);color:#ff8c84;font-size:26px;line-height:1;cursor:pointer}.command-center-body{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:10px;padding:10px}.command-center-video-grid{min-height:0;display:grid;grid-template-columns:1.3fr 1fr 1fr;grid-template-rows:repeat(2,minmax(0,1fr));gap:8px}.videowall-slot{position:relative;min-width:0;min-height:0;overflow:hidden;border:1px solid #1c4058;border-radius:10px;background:radial-gradient(circle at center,#12334a,#040e16 70%)}.videowall-slot:first-child{grid-row:1/3}.videowall-view{position:absolute;inset:0 0 34px;overflow:hidden;background:#02070b}.videowall-view video,.videowall-view iframe{width:100%;height:100%;display:block;border:0;object-fit:cover;background:#02070b}.videowall-view .camera-placeholder{position:absolute;inset:0}.videowall-view .camera-live,.videowall-view .camera-code,.videowall-view .stream-protocol-badge{position:absolute}.videowall-slot>footer{position:absolute;z-index:6;left:0;right:0;bottom:0;height:34px;display:flex;align-items:center;gap:8px;padding:6px 9px;background:#071925;border-top:1px solid #17384d}.videowall-slot>footer strong{color:var(--cyan);font-size:9px}.videowall-slot>footer span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d7e9f2;font-size:10px}.videowall-empty{height:calc(100% - 34px);display:grid;place-content:center;justify-items:center;gap:6px;color:var(--muted)}.videowall-empty>span{font-size:28px;color:var(--cyan)}.command-center-notifications{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #1c4058;border-radius:10px;background:#061522}.command-center-notification-heading{display:flex;align-items:center;justify-content:space-between;padding:13px;border-bottom:1px solid #1c4058}.command-center-notification-heading h2{margin:0}.command-center-notification-heading>b{display:grid;place-items:center;min-width:30px;height:30px;padding:0 8px;border-radius:15px;background:var(--red);color:#fff}.command-center-notification-list{overflow:auto;padding:9px;display:grid;align-content:start;gap:8px}.command-center-notification{position:relative;display:grid;gap:6px;padding:10px 34px 10px 11px;border:1px solid #1c4058;border-left:4px solid var(--cyan);border-radius:9px;background:#081d2d}.command-center-notification.danger{border-left-color:var(--red);background:rgba(91,22,25,.35)}.command-center-notification.warning{border-left-color:var(--orange)}.command-center-notification.success{border-left-color:var(--green)}.command-center-notification>div{display:flex;justify-content:space-between;gap:8px}.command-center-notification strong{font-size:11px}.command-center-notification small,.command-center-notification p,.command-center-notification time{color:var(--muted);font-size:9px}.command-center-notification p{margin:0;line-height:1.4}.command-center-notification time{position:absolute;right:8px;bottom:8px}.command-center-notification-empty{padding:20px;color:var(--muted);text-align:center}
.command-center-standalone-body{min-height:100vh;overflow:hidden;background:#020b12}.command-center-standalone{width:100%;height:100vh;border:0;border-radius:0;box-shadow:none}.command-center-standalone:fullscreen{width:100%;height:100%;border:0}.standalone-close{display:grid;place-items:center;text-decoration:none}
@media(max-width:1250px){.command-center-body{grid-template-columns:minmax(0,1fr) 260px}.command-center-video-grid{grid-template-columns:1.2fr 1fr 1fr}.videowall-slot:first-child{grid-column:1;grid-row:1/3}}
@media(max-width:780px){.command-center-popup{padding:0}.command-center-stage{height:100vh;border-radius:0}.command-center-header{align-items:flex-start}.command-center-header-actions .btn{display:none}.command-center-body{overflow:auto;grid-template-columns:1fr}.command-center-video-grid{min-height:900px;grid-template-columns:1fr;grid-template-rows:repeat(5,170px)}.videowall-slot:first-child{grid-column:auto;grid-row:auto}.videowall-slot:nth-child(4),.videowall-slot:nth-child(5){display:block}.command-center-notifications{min-height:320px}.command-center-clock{font-size:15px}}
@media(max-width:1300px){.camera-wall{grid-template-columns:repeat(3,minmax(210px,1fr))}}
@media(max-width:950px){.camera-wall{grid-template-columns:repeat(2,minmax(210px,1fr))}}
@media(max-width:560px){.camera-wall{grid-template-columns:1fr}.device-visibility{grid-template-columns:1fr}.device-visibility small{grid-column:1}}
@media(max-width:1300px){.camera-position-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.camera-position-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.camera-position-grid{grid-template-columns:1fr}}

/* User Monitoring per lokasi */
.monitoring-user-management{grid-template-columns:minmax(320px,.72fr) minmax(0,1.6fr);margin-top:16px}.monitoring-user-list{display:grid;gap:10px}.monitoring-user-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:11px;background:#071a2a}.monitoring-user-card.inactive{opacity:.58;border-left-color:#637581}.monitoring-user-card>img{width:68px;height:68px;border-radius:12px;object-fit:cover}.monitoring-user-form{display:grid;grid-template-columns:1fr 1.2fr .8fr 1.2fr auto;gap:7px;align-items:end}.monitoring-user-form label{display:grid;gap:4px;color:#bcd2de;font-size:10px}.monitoring-user-form input,.monitoring-user-form select{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:8px}.monitoring-user-status{display:grid;justify-items:end;gap:7px}.monitoring-user-status small{max-width:130px;color:var(--muted);font-size:9px;text-align:right}.monitoring-user-status form{margin:0}
@media(max-width:1200px){.monitoring-user-management{grid-template-columns:1fr}.monitoring-user-form{grid-template-columns:1fr 1fr}.monitoring-user-form .btn{grid-column:1/-1}.monitoring-user-card{grid-template-columns:auto 1fr}.monitoring-user-status{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end}}
@media(max-width:650px){.monitoring-user-card,.monitoring-user-form{grid-template-columns:1fr}.monitoring-user-status{display:grid;justify-items:start}.monitoring-user-status small{text-align:left}}

/* Matriks hak tayang perangkat User */
.user-device-access-form{grid-column:1/-1;display:grid;gap:10px;padding-top:12px;border-top:1px solid var(--line)}.user-device-access-heading{display:flex;align-items:end;justify-content:space-between;gap:10px}.user-device-access-heading strong,.user-device-access-heading small{display:block}.user-device-access-heading small{color:var(--muted);font-size:10px}.user-device-options{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:7px}.device-access-option{display:flex;align-items:center;gap:8px;padding:9px;border:1px solid var(--line);border-radius:8px;background:#061522;cursor:pointer}.device-access-option:has(input:checked){border-color:var(--cyan);background:rgba(32,212,244,.08)}.device-access-option input{width:auto}.device-access-option>span{font-size:20px;color:var(--cyan)}.device-access-option div{min-width:0}.device-access-option strong,.device-access-option small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-access-option small{color:var(--muted);font-size:9px}.device-access-option.access_control>span{color:var(--orange)}.device-access-option.sensor>span{color:var(--green)}.user-device-panel{margin:15px 0}.user-device-grid{display:grid;grid-template-columns:repeat(3,minmax(210px,1fr));gap:9px}.user-device-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:10px;background:#071a2a}.user-device-card.access_control{border-left-color:var(--orange)}.user-device-card.sensor{border-left-color:var(--green)}.user-device-card.offline{opacity:.65}.user-device-icon{font-size:25px;color:var(--cyan)}.user-device-card.access_control .user-device-icon{color:var(--orange)}.user-device-card.sensor .user-device-icon{color:var(--green)}.user-device-card small,.user-device-card strong,.user-device-card em{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-device-card small{color:var(--muted);font-size:9px;text-transform:uppercase}.user-device-card em{color:#91aaba;font-size:9px;font-style:normal;margin-top:3px}
@media(max-width:1100px){.user-device-options,.user-device-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}}
@media(max-width:650px){.user-device-options,.user-device-grid{grid-template-columns:1fr}.user-device-access-heading{display:block}.user-device-access-heading small{margin-top:4px}}
.account-management-grid{display:grid;grid-template-columns:minmax(300px,.68fr) minmax(0,1.7fr);gap:15px;margin-bottom:15px}.account-admin-form{grid-template-columns:1fr}.managed-account-list{display:grid;gap:9px;max-height:760px;overflow:auto;padding-right:3px}.managed-account{border:1px solid var(--line);border-radius:11px;background:#071a2a;overflow:hidden}.managed-account.archived{opacity:.65}.managed-account summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:13px;cursor:pointer;list-style:none}.managed-account summary::-webkit-details-marker{display:none}.managed-account summary strong,.managed-account summary small{display:block}.managed-account summary small{color:var(--muted);font-size:10px}.account-role-badge{min-width:68px;text-align:center;border-radius:7px;padding:6px 8px;background:rgba(32,212,244,.12);color:var(--cyan);font-size:10px;font-weight:900}.account-role-badge.danru{color:var(--orange);background:rgba(255,173,61,.12)}.account-role-badge.security{color:var(--green);background:rgba(66,220,130,.12)}.account-role-badge.user{color:#d5b5ff;background:rgba(174,115,255,.12)}.account-edit-form{grid-template-columns:repeat(4,minmax(130px,1fr));gap:9px;padding:13px;border-top:1px solid var(--line)}.account-edit-form label{font-size:10px}.account-edit-form .account-active-toggle{display:flex;align-items:center;gap:8px}.account-active-toggle input{width:auto}.archive-account-action{display:flex;justify-content:flex-end;padding:0 13px 13px}.archived-account-note{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px;border-top:1px solid var(--line)}.archived-account-note p{margin:0;color:var(--muted);font-size:11px}.reset-request-list{display:grid;gap:9px}.reset-request-card{display:grid;grid-template-columns:minmax(240px,.9fr) minmax(0,1.35fr);gap:14px;align-items:center;padding:13px;border:1px solid var(--line);border-left:4px solid var(--orange);border-radius:10px;background:#071a2a}.reset-request-card.resolved{border-left-color:var(--green)}.reset-request-card.rejected{border-left-color:var(--red);opacity:.7}.reset-request-card strong,.reset-request-card small,.reset-request-card em{display:block}.reset-request-card small,.reset-request-card p{color:var(--muted);font-size:10px}.reset-request-card p{margin:5px 0}.reset-request-card em{color:#aeefff;font-size:10px;font-style:normal}.reset-resolution-form{display:grid;grid-template-columns:1.4fr .8fr auto;gap:8px;align-items:end}.reset-resolution-form label{display:grid;gap:4px;color:#bcd2de;font-size:10px}.reset-resolution-form select,.reset-resolution-form input{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:8px}.reset-resolution-form>div{display:flex;gap:6px}
@media(max-width:1200px){.account-management-grid{grid-template-columns:1fr}.account-edit-form{grid-template-columns:1fr 1fr}.reset-request-card{grid-template-columns:1fr}.reset-resolution-form{grid-template-columns:1fr 1fr}.reset-resolution-form>div{grid-column:1/-1}}
@media(max-width:650px){.managed-account summary,.account-edit-form,.reset-resolution-form{grid-template-columns:1fr}.managed-account summary .status{justify-self:start}.archived-account-note{display:block}.archived-account-note form{margin-top:10px}}
.provider-badge{display:inline-flex;margin-top:5px;padding:2px 6px;border-radius:5px;background:rgba(140,170,189,.12);color:var(--muted);font-size:8px;font-weight:900}.provider-badge.tuya{background:rgba(32,212,244,.13);color:var(--cyan)}.tuya-config-grid{display:grid;grid-template-columns:minmax(340px,.9fr) minmax(0,1.1fr);gap:15px;margin-bottom:15px}.tuya-settings-form{grid-template-columns:1fr}.tuya-enabled{display:flex!important;align-items:center;gap:9px;padding:11px;border:1px solid var(--line);border-radius:9px;background:#071a2a}.tuya-enabled input{width:auto}.tuya-connection-actions{display:flex;gap:8px;margin-top:12px}.tuya-connection-actions form{margin:0}.tuya-guide ol{display:grid;gap:9px;padding-left:22px;color:#c2d7e2}.tuya-guide li::marker{color:var(--cyan);font-weight:900}.tuya-device-list{display:grid;grid-template-columns:repeat(2,minmax(360px,1fr));gap:11px}.tuya-device-card{padding:13px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:11px;background:#071a2a}.tuya-device-card.offline{border-left-color:#637581}.tuya-device-identity{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px}.tuya-device-icon{display:grid;place-items:center;width:43px;height:43px;border-radius:10px;background:rgba(32,212,244,.11);color:var(--cyan);font-size:22px}.tuya-device-identity strong,.tuya-device-identity small,.tuya-device-identity code{display:block}.tuya-device-identity small{color:var(--muted);font-size:10px}.tuya-device-identity code{margin-top:3px;color:#78b9d3;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tuya-map-form{display:grid;grid-template-columns:1.2fr .8fr 1.4fr auto auto auto;gap:7px;align-items:end;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}.tuya-map-form label{display:grid;gap:4px;color:#bcd2de;font-size:9px}.tuya-map-form select,.tuya-map-form input{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:8px}.tuya-map-form .compact-check{display:flex;align-items:center;gap:4px;padding-bottom:8px}.compact-check input{width:auto}.tuya-imported-note{display:flex;align-items:center;gap:8px;margin-top:9px;color:var(--muted)}.tuya-imported-note small{font-size:9px}.tuya-imported-note a{margin-left:auto;font-size:10px}
@media(max-width:1250px){.tuya-device-list{grid-template-columns:1fr}.tuya-map-form{grid-template-columns:1fr 1fr}.tuya-stream-field{grid-column:1/-1}.tuya-map-form .btn{grid-column:1/-1}}
@media(max-width:900px){.tuya-config-grid{grid-template-columns:1fr}}
@media(max-width:650px){.tuya-map-form{grid-template-columns:1fr}.tuya-stream-field,.tuya-map-form .btn{grid-column:auto}.tuya-device-identity{grid-template-columns:auto 1fr}.tuya-device-identity .status{grid-column:1/-1;justify-self:start}.tuya-connection-actions{display:grid}}

/* Agenda patroli rutin dan KPI GPS/verifikasi muka */
.alert.info{background:rgba(32,212,244,.1);border:1px solid rgba(32,212,244,.35);color:#9cecff}
.routine-form{grid-template-columns:1fr;align-items:stretch}.routine-slot-list{display:grid;gap:8px}.routine-slot-row{display:grid;grid-template-columns:34px 1.2fr 1fr .7fr .7fr;gap:8px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:10px;background:#071a2a}.routine-slot-row>b{display:grid;place-items:center;width:30px;height:30px;margin-bottom:8px;border:2px solid var(--cyan);border-radius:50%;color:var(--cyan)}.kpi-formula-note{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:11px;border:1px dashed #28749a;border-radius:9px;color:var(--muted)}.kpi-formula-note strong{color:var(--text);margin-right:auto}.kpi-formula-note span{padding:4px 8px;border-radius:12px;background:rgba(32,212,244,.09);color:#a9eafa;font-size:11px}.routine-history{display:grid;gap:9px;margin-top:18px}.routine-history-card{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,1.3fr) auto auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:10px;background:#071a2a}.routine-history-card strong,.routine-history-card small{display:block}.routine-history-card small{color:var(--muted)}.routine-slot-chips{display:flex;flex-wrap:wrap;gap:5px}.routine-slot-chips span{padding:4px 7px;border-radius:10px;background:rgba(32,212,244,.1);color:#a6ecf8;font-size:10px}.legacy-session-history{margin-top:14px;color:var(--muted)}.legacy-session-history summary{cursor:pointer;color:var(--cyan)}
.patrol-kpi-summary{grid-template-columns:repeat(4,1fr)}.kpi-table td small{display:block;margin-top:3px;color:var(--muted)}.kpi-table td:first-child{min-width:180px}.kpi-score{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;font-size:14px;font-weight:900;border:3px solid}.kpi-score.good{color:var(--green);border-color:var(--green);background:rgba(66,220,130,.08)}.kpi-score.medium{color:var(--orange);border-color:var(--orange);background:rgba(255,173,61,.08)}.kpi-score.low{color:var(--red);border-color:var(--red);background:rgba(255,91,79,.08)}.kpi-review-row td{padding:7px 11px 14px;background:rgba(32,212,244,.035)}.kpi-review-form{display:flex;justify-content:flex-end;align-items:end;gap:8px}.kpi-review-form label{display:grid;gap:5px;min-width:300px;color:var(--muted)}.kpi-review-form input{border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:8px}.evidence-panel{margin-top:15px}.evidence-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.evidence-card{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#071a2a}.evidence-card img,.evidence-placeholder{width:100%;height:180px;object-fit:cover}.evidence-placeholder{display:grid;place-items:center;color:var(--muted);background:linear-gradient(135deg,#0c273b,#07131e)}.evidence-card>div:last-child{padding:12px}.evidence-card p{margin:5px 0;color:#bdd2dd;font-size:11px}.evidence-card small,.evidence-card a{display:block;margin-top:6px;color:var(--muted)}.evidence-card a{color:var(--cyan)}
@media(max-width:1100px){.routine-slot-row{grid-template-columns:34px 1fr 1fr}.routine-slot-row label:nth-last-child(-n+2){grid-column:span 1}.routine-history-card{grid-template-columns:1fr auto}.routine-slot-chips{grid-column:1/-1}.patrol-kpi-summary,.evidence-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.routine-slot-row,.routine-history-card,.patrol-kpi-summary,.evidence-grid{grid-template-columns:1fr}.routine-slot-row>b{margin:0}.kpi-review-form{display:grid;justify-content:stretch}.kpi-review-form label{min-width:0}.kpi-report-header .filter-form{display:grid}.kpi-report-header .filter-form .btn{width:100%}}

/* Roster piket otomatis */
.auto-roster-panel{align-self:start}.auto-roster-form{grid-template-columns:1fr;align-items:stretch}.roster-basic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.roster-member-selector,.roster-slot-list{padding:13px;border:1px solid var(--line);border-radius:11px;background:rgba(5,20,32,.45)}.roster-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.roster-section-heading strong,.roster-section-heading small{display:block}.roster-section-heading small{color:var(--muted);font-weight:400}.roster-member-grid{display:grid;grid-template-columns:repeat(2,minmax(210px,1fr));gap:7px}.roster-member-option{display:grid!important;grid-template-columns:auto auto 1fr;align-items:center;gap:8px;padding:9px;border:1px solid var(--line);border-radius:9px;background:#071a2a;cursor:pointer}.roster-member-option:has(input:checked){border-color:#268caf;background:rgba(32,212,244,.08)}.roster-member-option input{width:auto}.roster-member-option strong,.roster-member-option small{display:block}.roster-member-option small{color:var(--muted);font-size:10px;font-weight:400}.roster-slot-list{display:grid;gap:8px}.roster-slot-list>.roster-section-heading{margin-bottom:0}.roster-slot-row{display:grid;grid-template-columns:34px 1.2fr .7fr .7fr 1fr;gap:8px;align-items:end}.roster-slot-row>b{display:grid;place-items:center;width:30px;height:30px;margin-bottom:8px;border:2px solid var(--cyan);border-radius:50%;color:var(--cyan)}.roster-estimate{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:12px;border:1px dashed #28749a;border-radius:10px;background:rgba(32,212,244,.04)}.roster-estimate span{color:#bcd8e5}.roster-estimate em{color:var(--orange);font-size:11px;font-style:normal}.manual-shift-details{margin-top:18px;padding-top:13px;border-top:1px solid var(--line)}.manual-shift-details summary{cursor:pointer;color:var(--cyan);font-weight:800}.manual-shift-details .schedule-form{margin-top:13px}.roster-history-list{display:grid;grid-template-columns:repeat(2,minmax(300px,1fr));gap:9px}.roster-history-card{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-left:4px solid var(--cyan);border-radius:10px;background:#071a2a}.roster-history-card.inactive{opacity:.7;border-left-color:#657988}.roster-history-title{display:flex;justify-content:space-between;gap:10px}.roster-history-title strong,.roster-history-title small{display:block}.roster-history-title small{color:var(--muted);font-size:10px}.roster-member-names{color:var(--muted);font-size:10px}.roster-member-names b{color:#c8dce7}.roster-slot-chips{display:flex;flex-wrap:wrap;gap:5px}.roster-slot-chips span{padding:5px 8px;border-radius:12px;background:rgba(32,212,244,.09);color:#b5eaf4;font-size:10px}.roster-stat-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.roster-stat-row span{padding:7px;border-radius:8px;background:#0b2538;color:var(--muted);font-size:10px}.roster-stat-row b{display:block;color:var(--text);font-size:15px}.auto-shift-label{display:block;margin-top:4px;color:var(--cyan)!important;font-size:9px!important;text-transform:uppercase;letter-spacing:.05em}.schedule-list-heading{align-items:flex-end}.compact-schedule-filter{margin-left:auto}.compact-schedule-filter select{width:100%;border:1px solid var(--line);border-radius:8px;background:#071725;color:var(--text);padding:7px 9px}.shift-card.off{border-left-color:#6a8ca1;background:rgba(8,30,44,.75)}
@media(max-width:1250px){.roster-basic-grid{grid-template-columns:1fr 1fr}.roster-member-grid{grid-template-columns:1fr}.roster-slot-row{grid-template-columns:34px 1fr 1fr}.roster-slot-row label:last-child{grid-column:2/-1}.roster-history-list{grid-template-columns:1fr}}

/* Jadwal shift v17: alur form bertahap dan kalender harian yang mudah dipindai. */
.schedule-page{display:grid;gap:16px}.schedule-page>.panel{min-width:0}.auto-roster-panel{padding:22px}.auto-roster-panel>.panel-heading{padding-bottom:16px;border-bottom:1px solid rgba(28,64,88,.8)}.auto-roster-panel>.panel-heading p,.schedule-list-heading p{margin:5px 0 0;color:var(--muted);max-width:720px}.roster-step{padding:18px;border:1px solid var(--line);border-radius:13px;background:linear-gradient(145deg,rgba(7,27,43,.92),rgba(9,34,52,.7))}.roster-step-heading{display:flex;align-items:center;gap:11px;margin-bottom:14px}.roster-step-heading>b{flex:0 0 32px;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(135deg,var(--cyan),var(--teal));color:#001721;font-size:15px}.roster-step-heading strong,.roster-step-heading small{display:block}.roster-step-heading small{margin-top:2px;color:var(--muted);font-size:11px;font-weight:400}.roster-step .roster-section-heading{margin-bottom:12px}.roster-step .roster-section-heading .roster-step-heading{margin-bottom:0}.roster-member-selector,.roster-slot-list{padding:18px}.roster-member-grid{grid-template-columns:repeat(3,minmax(210px,1fr))}.roster-slot-row{padding:10px;border-radius:10px;background:rgba(4,18,29,.62)}.roster-submit-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:16px;border:1px solid rgba(36,207,161,.35);border-radius:13px;background:rgba(36,207,161,.055)}.roster-submit-row .roster-estimate{border:0;background:transparent;padding:0}.roster-submit-button{min-width:230px;min-height:48px}.roster-history-panel{grid-column:auto}.roster-history-panel>.panel-heading{margin-bottom:12px}
.schedule-calendar-panel{grid-column:auto;padding:22px}.schedule-list-heading{align-items:flex-start}.schedule-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:13px 0 16px;border-top:1px solid rgba(28,64,88,.6)}.compact-schedule-filter{margin:0;flex-wrap:wrap}.schedule-legend{display:flex;gap:14px;color:var(--muted);font-size:11px}.schedule-legend span{display:flex;align-items:center;gap:6px}.schedule-legend i{width:9px;height:9px;border-radius:50%}.legend-work{background:var(--orange)}.legend-off{background:#8caabd}.schedule-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.schedule-summary-grid>div{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#081b2b}.schedule-summary-grid span{grid-row:1/3;color:var(--cyan);font-size:20px}.schedule-summary-grid strong{font-size:21px;line-height:1}.schedule-summary-grid small{color:var(--muted)}.schedule-summary-grid .off-summary{border-color:rgba(140,170,189,.45);background:linear-gradient(135deg,rgba(81,111,130,.17),rgba(8,27,43,.9))}.schedule-summary-grid .off-summary span{color:#c3d5df}.shift-calendar{display:grid;gap:14px}.shift-day-group{overflow:hidden;border:1px solid var(--line);border-radius:13px;background:rgba(5,19,31,.45)}.shift-day-group.today{border-color:rgba(32,212,244,.6);box-shadow:0 0 0 2px rgba(32,212,244,.06)}.shift-day-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line);background:rgba(13,40,59,.72)}.shift-day-header>div{display:flex;align-items:center;gap:11px}.shift-day-header strong,.shift-day-header small{display:block}.shift-day-header small{color:var(--muted);font-size:10px;margin-top:2px}.shift-date-number{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#10344b;color:var(--cyan);font-size:17px;font-weight:900}.shift-day-grid{display:grid;grid-template-columns:repeat(4,minmax(210px,1fr));gap:10px;padding:11px}.shift-calendar-card{position:relative;display:flex;flex-direction:column;gap:11px;min-height:245px;padding:13px;border:1px solid rgba(28,64,88,.9);border-top:4px solid var(--orange);border-radius:11px;background:linear-gradient(150deg,#0a2133,#071826)}.shift-calendar-card.active{border-top-color:var(--green)}.shift-calendar-card.completed{border-top-color:#66879a}.shift-calendar-card.off{border-color:rgba(140,170,189,.45);border-top-color:#91a9b7;background:linear-gradient(150deg,rgba(38,61,75,.72),rgba(8,25,38,.96))}.shift-calendar-card.cancelled{opacity:.58}.shift-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.shift-name-pill{display:inline-flex;align-items:center;gap:5px;color:#ffd383;font-size:11px;font-weight:900;text-transform:uppercase}.shift-calendar-card.off .shift-name-pill{color:#d8e6ed;font-size:13px;letter-spacing:.06em}.shift-calendar-card.off .shift-name-pill b{font-size:18px}.shift-calendar-card .shift-person{padding-bottom:10px;border-bottom:1px solid rgba(28,64,88,.58)}.shift-calendar-card .shift-person small{font-size:10px}.shift-card-details{display:grid;grid-template-columns:1fr 1fr;gap:8px}.shift-card-details span{display:block;padding:8px;border-radius:8px;background:rgba(4,17,27,.58)}.shift-card-details small,.shift-card-details b{display:block}.shift-card-details small{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.05em}.shift-card-details b{margin-top:2px;font-size:11px}.off-message{display:grid;gap:3px;min-height:60px;padding:10px;border:1px dashed rgba(166,192,205,.4);border-radius:9px;background:rgba(132,159,174,.07)}.off-message strong{color:#e0ecf2}.off-message span{color:#a9c0cc;font-size:10px}.shift-card-location{display:flex;align-items:center;gap:5px;color:var(--muted);margin-top:auto}.shift-card-location span{color:var(--cyan)}.manual-shift-label{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.05em}.shift-card-actions{padding-top:9px;border-top:1px solid rgba(28,64,88,.58)}
@media(max-width:1500px){.shift-day-grid{grid-template-columns:repeat(3,minmax(210px,1fr))}.roster-member-grid{grid-template-columns:repeat(2,minmax(210px,1fr))}}
@media(max-width:1100px){.shift-day-grid{grid-template-columns:repeat(2,minmax(210px,1fr))}.schedule-toolbar{align-items:flex-start;flex-direction:column}.roster-submit-row{grid-template-columns:1fr}.roster-submit-button{width:100%}}
@media(max-width:760px){.auto-roster-panel,.schedule-calendar-panel{padding:14px}.roster-basic-grid,.roster-member-grid,.shift-day-grid,.schedule-summary-grid{grid-template-columns:1fr}.roster-slot-row{grid-template-columns:32px 1fr}.roster-slot-row label{grid-column:2}.schedule-list-heading{display:block}.schedule-list-heading>.muted{display:block;margin-top:8px}.compact-schedule-filter{display:grid;width:100%;grid-template-columns:1fr 1fr}.compact-schedule-filter .btn{width:100%}.schedule-legend{flex-wrap:wrap}.shift-calendar-card{min-height:0}.roster-step{padding:14px}}

/* Layout v18: pemanfaatan lebar desktop tanpa kolom kosong. */
.roster-heading-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.layout-version{display:inline-flex;padding:4px 8px;border:1px solid rgba(32,212,244,.38);border-radius:6px;color:var(--cyan);background:rgba(32,212,244,.07);font-size:9px;font-weight:900;letter-spacing:.08em}.roster-builder-grid{display:grid;grid-template-columns:minmax(460px,.82fr) minmax(620px,1.18fr);gap:14px;align-items:start}.roster-builder-main,.roster-builder-side{display:grid;gap:14px}.roster-builder-grid .roster-basic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-builder-grid .roster-member-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}.roster-builder-side{position:sticky;top:104px}.roster-builder-side .roster-slot-row{grid-template-columns:34px minmax(120px,1.15fr) minmax(105px,.75fr) minmax(105px,.75fr) minmax(120px,1fr)}.roster-builder-side .roster-submit-row{grid-template-columns:minmax(0,1fr) auto}.roster-builder-side .roster-estimate{grid-template-columns:1fr}.roster-help-card{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border-radius:10px;border:1px solid rgba(32,212,244,.22);background:rgba(32,212,244,.045)}.roster-help-card strong{flex:0 0 auto;color:var(--cyan)}.roster-help-card span{color:var(--muted);font-size:11px}.roster-history-panel{padding:0;overflow:hidden}.roster-history-panel[open]{padding-bottom:16px}.roster-history-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 20px;cursor:pointer;list-style:none}.roster-history-summary::-webkit-details-marker{display:none}.roster-history-copy,.roster-history-copy strong,.roster-history-copy small{display:block}.roster-history-copy small{margin-top:3px;color:var(--muted);font-size:11px}.roster-history-summary>span:last-child{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:11px}.roster-history-summary>span:last-child b{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:#0b2a40;color:var(--cyan);font-size:16px;transition:.2s}.roster-history-panel[open] .roster-history-summary>span:last-child b{transform:rotate(180deg)}.roster-history-panel .roster-history-list{padding:0 16px}.roster-history-panel[open] .roster-history-list{padding-top:14px;border-top:1px solid var(--line)}
@media(max-width:1450px){.roster-builder-grid{grid-template-columns:minmax(400px,.8fr) minmax(560px,1.2fr)}.roster-builder-side .roster-slot-row{grid-template-columns:32px 1fr 1fr}.roster-builder-side .roster-slot-row label:last-child{grid-column:2/-1}.roster-builder-grid .roster-member-grid{grid-template-columns:1fr}}
@media(max-width:1120px){.roster-builder-grid{grid-template-columns:1fr}.roster-builder-side{position:static}.roster-builder-grid .roster-member-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}}
@media(max-width:760px){.roster-builder-grid .roster-basic-grid,.roster-builder-grid .roster-member-grid{grid-template-columns:1fr}.roster-heading-badges{justify-content:flex-start}.roster-history-summary{align-items:flex-start;padding:14px}.roster-history-copy small{max-width:230px}.roster-builder-side .roster-slot-row{grid-template-columns:32px 1fr}.roster-builder-side .roster-slot-row label,.roster-builder-side .roster-slot-row label:last-child{grid-column:2}.roster-builder-side .roster-submit-row{grid-template-columns:1fr}}
@media(max-width:700px){.roster-basic-grid,.roster-slot-row,.roster-estimate{grid-template-columns:1fr}.roster-slot-row>b{margin:0}.roster-slot-row label:last-child{grid-column:auto}.roster-section-heading{align-items:flex-start}.roster-stat-row{grid-template-columns:1fr 1fr}}

/* Videowall v30: pilihan 4, 8, 16, atau 32 CCTV untuk Admin. */
.admin-cctv-heading{align-items:flex-start;margin-bottom:12px}.admin-cctv-heading>div{min-width:0}.admin-cctv-heading small{display:block;max-width:760px;margin-top:4px}.admin-cctv-toolbar{display:grid;grid-template-columns:minmax(220px,280px) auto minmax(220px,1fr);align-items:end;gap:10px;margin-bottom:14px;padding:11px 12px;border:1px solid rgba(32,212,244,.24);border-radius:10px;background:rgba(3,17,27,.45)}.admin-cctv-toolbar label{display:grid;gap:5px;min-width:0}.admin-cctv-toolbar label>span{color:var(--muted);font-size:9px;text-transform:uppercase;font-weight:800}.admin-cctv-toolbar select{display:block;width:100%;height:38px;border:1px solid #28749a;border-radius:8px;background:#082034;color:#68dcf5;padding:0 32px 0 10px;font-weight:900}.admin-cctv-toolbar .btn{display:inline-flex;align-items:center;justify-content:center;min-width:170px;height:38px;padding:0 16px;white-space:nowrap}.admin-cctv-toolbar>small{align-self:center;color:var(--muted);font-size:10px;line-height:1.4}.camera-position-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.camera-position-control{min-width:112px}.camera-position-select{min-width:112px}.videowall-layout-switcher{display:flex;align-items:center;gap:5px;padding:4px;border:1px solid #1c4058;border-radius:9px;background:#03111b}.videowall-layout-switcher a{display:grid;place-items:center;min-width:31px;height:30px;border-radius:6px;color:#7d9aac;font-size:11px;font-weight:900}.videowall-layout-switcher a:hover,.videowall-layout-switcher a.active{background:linear-gradient(135deg,#19c8e8,#2ee1dc);color:#00131c}.command-center-video-grid.layout-4{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.command-center-video-grid.layout-8{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.command-center-video-grid.layout-16{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr))}.command-center-video-grid.layout-32{grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));gap:5px}.command-center-video-grid.layout-4 .videowall-slot:first-child,.command-center-video-grid.layout-8 .videowall-slot:first-child,.command-center-video-grid.layout-16 .videowall-slot:first-child,.command-center-video-grid.layout-32 .videowall-slot:first-child{grid-column:auto;grid-row:auto}.videowall-layout-32 .command-center-body{grid-template-columns:minmax(0,1fr) 260px;gap:6px;padding:6px}.command-center-video-grid.layout-16 .videowall-view,.command-center-video-grid.layout-32 .videowall-view{inset:0 0 25px}.command-center-video-grid.layout-16 .videowall-slot>footer,.command-center-video-grid.layout-32 .videowall-slot>footer{height:25px;padding:3px 6px}.command-center-video-grid.layout-16 .videowall-slot>footer strong,.command-center-video-grid.layout-32 .videowall-slot>footer strong{font-size:7px}.command-center-video-grid.layout-16 .videowall-slot>footer span,.command-center-video-grid.layout-32 .videowall-slot>footer span{font-size:8px}.command-center-video-grid.layout-16 .camera-live,.command-center-video-grid.layout-16 .camera-code,.command-center-video-grid.layout-16 .stream-protocol-badge,.command-center-video-grid.layout-32 .camera-live,.command-center-video-grid.layout-32 .camera-code,.command-center-video-grid.layout-32 .stream-protocol-badge{font-size:7px;padding:3px 5px}.command-center-video-grid.layout-32 .camera-placeholder strong{font-size:8px}.command-center-video-grid.layout-32 .camera-placeholder small{display:none}.command-center-video-grid.layout-32 .videowall-empty{height:calc(100% - 25px)}
@media(max-width:1200px){.admin-cctv-toolbar{grid-template-columns:minmax(200px,1fr) auto}.admin-cctv-toolbar>small{grid-column:1/-1}.camera-position-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1000px){.videowall-layout-switcher{order:2;width:100%}.command-center-header{flex-wrap:wrap}.command-center-header-actions{flex-wrap:wrap;justify-content:flex-end}.command-center-video-grid.layout-8{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr))}.command-center-video-grid.layout-16{grid-template-columns:repeat(4,minmax(0,1fr))}.command-center-video-grid.layout-32{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(8,minmax(0,1fr))}}
@media(max-width:780px){.camera-position-grid{grid-template-columns:1fr}.admin-cctv-toolbar{grid-template-columns:1fr}.admin-cctv-toolbar .btn,.admin-cctv-toolbar>small{grid-column:auto;width:100%}.command-center-video-grid.layout-4,.command-center-video-grid.layout-8,.command-center-video-grid.layout-16,.command-center-video-grid.layout-32{grid-template-columns:1fr;grid-template-rows:none;grid-auto-rows:180px;min-height:auto}.videowall-layout-32 .command-center-body{grid-template-columns:1fr}.videowall-layout-switcher{order:0;width:auto}.command-center-header-actions{justify-content:flex-start}.command-center-header-actions .videowall-layout-switcher{display:flex}}

/* Branding global v30.2: logo upload Super Admin dipakai di seluruh modul. */
.sidebar-company-logo{flex:0 0 48px;width:48px;height:54px;object-fit:contain;object-position:center;border-radius:8px}.sidebar-brand>div:last-child{min-width:0}.sidebar-brand>div:last-child strong{overflow-wrap:anywhere;line-height:1.25}.command-center-brand-logo{flex:0 0 44px;width:44px;height:46px;object-fit:contain;object-position:center;border-radius:7px}.payslip-brand-logo{width:58px;height:58px;object-fit:contain;object-position:center;border-radius:6px}.login-brand-image{object-fit:contain}
@media(max-width:520px){.payslip-brand-logo{width:50px;height:50px}}

/* Identitas cetak global v30.3. */
.global-print-identity,.global-print-footer{display:none}.payslip-header>div:nth-child(2) small{display:block;color:#667b86;font-size:10px;line-height:1.35;margin-top:3px}
@media print{
  html,body{background:#fff!important;color:#111!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sidebar,.topbar,.filter-form,.btn,.toast-stack,.report-form-panel,.kpi-review-row,.attendance-review-form,.no-print,form{display:none!important}
  .app-shell,.app-main{display:block!important;min-height:0}.content{max-width:none!important;margin:0!important;padding:0!important}
  .global-print-identity{display:grid!important;grid-template-columns:auto minmax(0,1fr) minmax(180px,.65fr);align-items:center;gap:12px;margin:0 0 14px;padding:0 0 12px;border-bottom:3px solid #0c9fc0;color:#17242d;break-inside:avoid}
  .global-print-identity>img{width:64px;height:64px;object-fit:contain;object-position:center}.global-print-fallback{display:grid;place-items:center;width:58px;height:64px;background:#07344b;color:#25d7f2;font-size:24px}
  .global-print-company strong,.global-print-company span,.global-print-company small,.global-print-document strong,.global-print-document span,.global-print-document small{display:block}.global-print-company strong{font-size:19px;color:#07344b}.global-print-company span{font-size:11px;font-weight:700;color:#0c9fc0}.global-print-company small{margin-top:2px;color:#5f747f!important;font-size:9px}.global-print-company small:empty{display:none}
  .global-print-document{text-align:right}.global-print-document strong{font-size:17px;text-transform:uppercase;color:#07344b}.global-print-document span{margin-top:4px;font-size:10px}.global-print-document small{margin-top:3px;color:#5f747f!important;font-size:9px}
  .global-print-footer{display:flex!important;justify-content:space-between;gap:20px;margin-top:16px;padding-top:8px;border-top:1px solid #9cb2bd;color:#5f747f;font-size:9px;break-inside:avoid}.global-print-footer b{color:#07344b;white-space:nowrap}
  .panel,.kpi{box-shadow:none!important;background:#fff!important;color:#111!important;border-color:#aebbc2!important;break-inside:auto}.panel-heading,.report-header{break-after:avoid}.kpi{break-inside:avoid}.eyebrow{color:#087e98!important}.status{border:1px solid #9db0b8}.table-wrap{overflow:visible!important}table{width:100%!important;font-size:9px;border-collapse:collapse}th,td{padding:6px!important;border-color:#adbcc3!important}thead{display:table-header-group}tr{break-inside:avoid}.report-summary-grid,.kpi-grid{break-inside:avoid}.osm-map{break-inside:avoid}
}

/* HR v33: setiap modul menjadi tab terpisah dan seluruh form mempunyai grid khusus. */
body[data-role="hr_admin"] .content{max-width:1680px}
.hr-section-nav{position:sticky;top:94px;z-index:6;display:flex;align-items:center;gap:7px;margin:0 0 16px;padding:7px;overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:rgba(6,23,37,.94);box-shadow:0 10px 28px rgba(0,0,0,.18);scrollbar-width:thin}
.hr-section-nav a{flex:0 0 auto;padding:9px 14px;border:1px solid transparent;border-radius:8px;color:#9db8c7;font-size:12px;font-weight:800;white-space:nowrap}
.hr-section-nav a:hover{color:#fff;background:rgba(32,212,244,.07)}
.hr-section-nav a.active{border-color:rgba(32,212,244,.38);background:linear-gradient(135deg,rgba(25,200,232,.18),rgba(46,225,220,.1));color:#79e8fa}
.hr-scope-explainer{display:grid;grid-template-columns:minmax(230px,.42fr) minmax(0,1fr);align-items:center;gap:18px;margin-bottom:15px;padding:20px}
.hr-scope-explainer h2{margin-bottom:0}.hr-scope-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hr-scope-cards article{min-width:0;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:rgba(4,18,29,.48)}
.hr-scope-cards b{color:var(--cyan)}.hr-scope-cards p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.5}
.hr-kpi-grid .kpi{min-width:0}.hr-kpi-grid .kpi>div{min-width:0}.hr-kpi-grid .kpi small,.hr-kpi-grid .kpi em{overflow-wrap:anywhere}
.hr-role-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 15px}
.hr-role-strip article{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:rgba(7,26,42,.82)}
.hr-role-strip span{color:var(--muted);font-size:11px}.hr-role-strip strong{color:var(--cyan);font-size:18px}
.hr-overview-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.hr-overview-actions>a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;color:var(--text);transition:.2s}
.hr-overview-actions>a:hover{transform:translateY(-2px);border-color:#3184aa}.hr-overview-actions>a>span{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:rgba(32,212,244,.1);color:var(--cyan);font-weight:900}
.hr-overview-actions strong,.hr-overview-actions small{display:block}.hr-overview-actions small{margin-top:3px;color:var(--muted);font-size:10px}.hr-overview-actions>a>b{color:var(--cyan);font-size:22px}
.hr-work-schedule-panel,.hr-attendance-policy-panel,.hr-attendance-panel,.hr-payroll-profile-panel,.hr-payroll-panel{margin-bottom:15px;min-width:0}
.hr-work-schedule-panel>.panel-heading,.hr-attendance-panel>.panel-heading,.hr-payroll-panel>.panel-heading{align-items:flex-start}
.hr-work-schedule-panel>.panel-heading>div:first-child,.hr-attendance-panel>.panel-heading>div:first-child,.hr-payroll-panel>.panel-heading>div:first-child{min-width:0}
.hr-work-schedule-panel>.panel-heading small,.hr-attendance-policy-panel>.panel-heading small,.hr-attendance-panel>.panel-heading small,.hr-payroll-profile-panel>.panel-heading small,.hr-payroll-panel>.panel-heading small{display:block;max-width:780px;margin-top:4px;color:var(--muted)}
.hr-work-schedule-panel .inline-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.hr-work-schedule-panel .inline-actions .btn{white-space:nowrap}
.hr-schedule-workspace{display:grid;grid-template-columns:minmax(420px,1.02fr) minmax(380px,.98fr);gap:14px;align-items:start}
.hr-individual-shift-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;padding:16px;border:1px solid var(--line);border-radius:12px;background:rgba(5,20,32,.62)}
.hr-individual-shift-form label{display:grid;align-content:start;gap:6px;min-width:0;color:#bcd2de;font-size:11px;font-weight:700}
.hr-individual-shift-form label>small{color:var(--muted);font-size:9px;font-weight:400;line-height:1.4}
.hr-individual-shift-form input,.hr-individual-shift-form select{display:block;width:100%;min-width:0;min-height:42px;border:1px solid var(--line);border-radius:9px;background:#071725;color:var(--text);padding:10px 11px;outline:none}
.hr-individual-shift-form input:focus,.hr-individual-shift-form select:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(32,212,244,.1)}
.hr-manual-form-heading{grid-column:1/-1;padding-bottom:10px;border-bottom:1px solid var(--line)}.hr-manual-form-heading strong,.hr-manual-form-heading small{display:block}.hr-manual-form-heading small{margin-top:3px;color:var(--muted);font-size:9px}.hr-individual-shift-form .hr-shift-notes{grid-column:1/-1}.hr-individual-shift-form>.btn{grid-column:1/-1;min-height:44px}
.hr-upcoming-shifts{min-width:0;padding:14px;border:1px solid var(--line);border-radius:12px;background:rgba(5,20,32,.42)}
.hr-subheading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.hr-subheading strong,.hr-subheading small{display:block}.hr-subheading small{margin-top:2px;color:var(--muted);font-size:10px}
.hr-upcoming-list{display:grid;gap:8px;max-height:570px;overflow:auto;padding-right:3px;scrollbar-width:thin}
.hr-upcoming-card{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:10px;border:1px solid rgba(28,64,88,.75);border-left:3px solid var(--orange);border-radius:10px;background:#071a2a}
.hr-upcoming-card.off{border-left-color:#91a9b7}.hr-upcoming-card time{display:grid;place-items:center;padding:5px;border-radius:8px;background:#0b2a40;color:var(--cyan)}.hr-upcoming-card time b{font-size:17px;line-height:1}.hr-upcoming-card time span{font-size:9px;text-transform:uppercase}
.hr-upcoming-card>div{min-width:0}.hr-upcoming-card>div strong,.hr-upcoming-card>div small,.hr-upcoming-card>div span{display:block;overflow-wrap:anywhere}.hr-upcoming-card>div small{color:var(--muted);font-size:9px}.hr-upcoming-card>div span{margin-top:3px;color:#bed7e3;font-size:10px}.hr-upcoming-card form{margin:0}
.attendance-policy-grid,.payroll-profile-grid{align-items:start}.attendance-policy-card,.payroll-profile-card{min-width:0;overflow:hidden}
.attendance-policy-card summary,.payroll-profile-card summary{list-style:none}.attendance-policy-card summary::-webkit-details-marker,.payroll-profile-card summary::-webkit-details-marker{display:none}
.attendance-policy-card summary>span,.payroll-profile-card summary>span{min-width:0}.attendance-policy-card summary>span strong,.attendance-policy-card summary>span small,.payroll-profile-card summary>span strong,.payroll-profile-card summary>span small{overflow-wrap:anywhere}
.attendance-policy-card summary>b,.payroll-profile-card summary>b{flex:0 0 auto;text-align:right;white-space:nowrap}
.attendance-policy-form,.payroll-profile-form{align-items:end}.attendance-policy-form .btn,.payroll-profile-form .btn{grid-column:1/-1;justify-self:start}
.hr-attendance-table,.hr-payroll-table{padding-bottom:4px;border:1px solid rgba(28,64,88,.55);border-radius:10px;scrollbar-width:thin}
.hr-attendance-table table{min-width:1050px}.hr-payroll-table table{min-width:920px}.hr-attendance-table th,.hr-payroll-table th{background:#0a263a;white-space:nowrap}
.hr-attendance-table td,.hr-payroll-table td{vertical-align:top}.hr-person-cell strong,.hr-person-cell small,.hr-shift-cell strong,.hr-shift-cell small,.hr-shift-cell em{display:block}.hr-shift-cell em{margin-top:4px;color:var(--cyan);font-size:10px;font-style:normal}
.hr-time-pair{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:5px}.hr-time-pair span{padding:6px 8px;border-radius:7px;background:rgba(4,17,27,.55)}.hr-time-pair small,.hr-time-pair b{display:block}.hr-time-pair small{margin:0!important;font-size:8px!important;text-transform:uppercase}.hr-time-pair b{margin-top:2px}
.hr-gps-stack{display:grid;grid-template-columns:1fr 1fr;gap:6px}.hr-gps-stack>span{display:grid;gap:3px}.hr-gps-stack .status{justify-content:center}.hr-gps-stack small{text-align:center;margin:0!important}
.attendance-review-form{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:6px;min-width:250px}.attendance-review-form input[name="attendance_notes"]{grid-column:1/-1;width:100%}.attendance-review-form .btn{min-width:72px}
.hr-payroll-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.hr-payroll-actions form{display:flex;margin:0}.hr-payroll-actions input[type="month"]{min-width:145px}.hr-payroll-panel tfoot th{white-space:nowrap}
.account-create-panel .personnel-form{grid-template-columns:1fr;align-items:stretch}.account-create-panel .personnel-form .btn{grid-column:auto;width:100%;min-height:44px}
.hr-personnel-management{grid-template-columns:minmax(330px,.68fr) minmax(0,1.65fr);align-items:start}.hr-personnel-management>.account-create-panel{position:sticky;top:104px}.hr-personnel-management>.span-2{grid-column:auto;min-width:0}.hr-personnel-management .personnel-card>*{min-width:0}.hr-personnel-management .approved-placement-actions{min-width:0}
.payslip-list-panel,.profile-editor{min-width:0}.payslip-list-card>*{min-width:0}.payslip-list-card strong,.payslip-list-card small{overflow-wrap:anywhere}
.roster-estimate small{display:block;margin-top:3px;color:var(--cyan);font-size:10px}
@media(max-width:1450px){.hr-personnel-management{grid-template-columns:1fr}.hr-personnel-management>.account-create-panel{position:static}.hr-personnel-management>.span-2{grid-column:1}.hr-personnel-management .personnel-card{grid-template-columns:auto minmax(210px,1fr) minmax(280px,.85fr)}}
@media(max-width:1250px){.hr-overview-actions{grid-template-columns:1fr 1fr}.hr-schedule-workspace{grid-template-columns:1fr}.hr-upcoming-list{max-height:430px}.hr-personnel-management .personnel-card{grid-template-columns:auto 1fr}.hr-personnel-management .identity-verification,.hr-personnel-management .approved-placement-actions,.hr-personnel-management .personnel-status-action{grid-column:1/-1}}
@media(max-width:1150px){.hr-scope-explainer{grid-template-columns:1fr}.hr-role-strip{grid-template-columns:1fr 1fr}.hr-kpi-grid.five{grid-template-columns:repeat(2,minmax(0,1fr))}.hr-kpi-grid.five .kpi:last-child{grid-column:1/-1}.attendance-policy-grid,.payroll-profile-grid{grid-template-columns:1fr}}
@media(max-width:820px){.hr-section-nav{top:76px}.hr-work-schedule-panel>.panel-heading,.hr-attendance-policy-panel>.panel-heading,.hr-attendance-panel>.panel-heading,.hr-payroll-profile-panel>.panel-heading,.hr-payroll-panel>.panel-heading{display:grid;align-items:start}.hr-work-schedule-panel .inline-actions{justify-content:flex-start}.hr-payroll-actions{justify-content:flex-start}.hr-personnel-management .personnel-card{grid-template-columns:1fr}.hr-personnel-management .identity-verification,.hr-personnel-management .approved-placement-actions,.hr-personnel-management .personnel-status-action{grid-column:auto}}
@media(max-width:720px){.hr-scope-cards,.hr-role-strip,.hr-overview-actions,.hr-individual-shift-form,.hr-kpi-grid.five{grid-template-columns:1fr}.hr-kpi-grid.five .kpi:last-child{grid-column:auto}.hr-individual-shift-form .hr-shift-notes,.hr-individual-shift-form>.btn{grid-column:auto}.hr-upcoming-card{grid-template-columns:42px minmax(0,1fr)}.hr-upcoming-card form,.hr-upcoming-card>.status{grid-column:1/-1}.hr-upcoming-card .btn{width:100%}.attendance-policy-form,.payroll-profile-form{grid-template-columns:1fr}.attendance-review-form{grid-template-columns:1fr;min-width:210px}.attendance-review-form input[name="attendance_notes"]{grid-column:auto}.hr-scope-explainer{padding:14px}.hr-section-nav{margin-left:-4px;margin-right:-4px}.hr-work-schedule-panel .inline-actions{display:grid}.hr-work-schedule-panel .inline-actions .btn{width:100%}}

/* Payslip v34: footer statistik dan tombol tidak boleh berbagi garis teks. */
.payslip-list-card{display:flex;flex-direction:column;align-items:stretch;gap:12px;min-height:205px;padding:18px}
.payslip-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;min-width:0}
.payslip-card-head>div{min-width:0}.payslip-card-head h3{margin:9px 0 0}.payslip-card-net{flex:0 0 auto;text-align:right}
.payslip-card-net span,.payslip-card-net b{display:block}.payslip-card-net span{color:var(--muted)}.payslip-card-net b{margin-top:5px;color:var(--cyan);font-size:18px}
.payslip-card-person{min-width:0}.payslip-card-person strong,.payslip-card-person small{display:block;overflow-wrap:anywhere}.payslip-card-person small{margin-top:3px;color:var(--muted);line-height:1.45}
.payslip-card-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;min-width:0;margin-top:auto;padding-top:12px;border-top:1px solid rgba(28,64,88,.7)}
.payslip-card-footer small{display:block;min-width:0;color:var(--muted);line-height:1.45;overflow-wrap:anywhere}.payslip-card-footer .btn{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;margin:0;white-space:nowrap}
@media(max-width:650px){.payslip-card-head{gap:10px}.payslip-card-footer{align-items:stretch;flex-direction:column}.payslip-card-footer .btn{width:100%}}

/* User Panic Button v35: alarm darurat dengan tekan-tahan dan status pengiriman. */
.user-panic-panel{display:grid;grid-template-columns:minmax(280px,1.15fr) minmax(300px,.85fr);align-items:center;gap:26px;margin:14px 0 16px;padding:24px;border-color:rgba(255,91,79,.55);background:radial-gradient(circle at 84% 48%,rgba(255,64,72,.16),transparent 34%),linear-gradient(135deg,#0d2438,#091a2b)}
.user-panic-panel.is-active{box-shadow:inset 0 0 0 1px rgba(255,91,79,.22),0 0 28px rgba(255,50,60,.1)}
.user-panic-copy h2{font-size:28px;margin-bottom:7px}.user-panic-copy p{max-width:680px;margin-bottom:15px;color:#c2d4df;line-height:1.6}
.panic-routing-list{display:flex;flex-wrap:wrap;gap:8px}.panic-routing-list span{padding:7px 10px;border:1px solid rgba(255,91,79,.3);border-radius:999px;background:rgba(255,91,79,.08);color:#ffb0aa;font-size:10px;font-weight:800}
.panic-button-form{display:grid;justify-items:center;gap:10px;min-width:0}
.panic-hold-button{position:relative;isolation:isolate;display:grid;place-items:center;align-content:center;width:190px;height:190px;border:9px solid #7f1722;border-radius:50%;outline:0;background:radial-gradient(circle at 36% 28%,#ff7771 0,#ee293a 35%,#a5091c 72%,#690914 100%);box-shadow:0 0 0 7px rgba(255,58,67,.1),0 18px 40px rgba(0,0,0,.45),inset 0 6px 12px rgba(255,255,255,.18),inset 0 -12px 24px rgba(70,0,8,.4);color:#fff;cursor:pointer;touch-action:none;user-select:none;transition:transform .15s,filter .15s,box-shadow .15s}
.panic-hold-button:hover{filter:brightness(1.08)}.panic-hold-button:focus-visible{box-shadow:0 0 0 5px #fff,0 0 0 10px rgba(255,58,67,.65),0 18px 40px rgba(0,0,0,.45)}
.panic-hold-button:active,.panic-hold-button.is-holding{transform:scale(.96);box-shadow:0 0 0 11px rgba(255,58,67,.18),0 10px 28px rgba(0,0,0,.48),inset 0 8px 22px rgba(70,0,8,.34)}
.panic-hold-button:disabled{cursor:not-allowed;filter:saturate(.72);opacity:.9}.panic-hold-button.is-sending{animation:panic-pulse .85s infinite alternate}.panic-hold-button.is-active{animation:none}
.panic-button-ring{position:absolute;z-index:-1;inset:-22px;border:2px solid rgba(255,83,79,.38);border-radius:50%;opacity:0;transform:scale(.88)}.panic-hold-button.is-holding .panic-button-ring,.panic-hold-button.is-sending .panic-button-ring{animation:panic-ring 1s infinite}
.panic-hold-button strong,.panic-hold-button small{display:block;pointer-events:none}.panic-hold-button strong{font-size:40px;line-height:1;letter-spacing:.04em;text-shadow:0 2px 8px rgba(80,0,0,.55)}.panic-hold-button small{max-width:125px;margin-top:10px;color:#fff;font-size:9px;font-weight:900;letter-spacing:.08em;line-height:1.35}
.panic-hold-progress{width:min(260px,100%);height:7px;overflow:hidden;border-radius:999px;background:#06131f}.panic-hold-progress>span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ffb02e,#ff403f);box-shadow:0 0 10px rgba(255,64,63,.6)}
.panic-button-help{display:block;max-width:360px;color:var(--muted);font-size:10px;text-align:center;line-height:1.5}.panic-live-status{display:flex;align-items:center;justify-content:center;gap:8px;min-height:28px;text-align:center}.panic-live-status span{color:#bdd1dd;font-size:10px}.panic-live-status .status.danger{background:rgba(255,91,79,.14);color:#ff9b94}
@keyframes panic-ring{0%{opacity:.75;transform:scale(.88)}100%{opacity:0;transform:scale(1.18)}}@keyframes panic-pulse{from{filter:brightness(.92)}to{filter:brightness(1.2)}}
@media(max-width:900px){.user-panic-panel{grid-template-columns:1fr}.user-panic-copy{text-align:center}.user-panic-copy p{margin-left:auto;margin-right:auto}.panic-routing-list{justify-content:center}}
@media(max-width:520px){.user-panic-panel{padding:18px 13px}.panic-hold-button{width:164px;height:164px}.panic-hold-button strong{font-size:34px}.panic-live-status{align-items:stretch;flex-direction:column}}
.panic-incident-visual{background:radial-gradient(circle,rgba(255,49,58,.28),rgba(5,18,30,.94))}.panic-incident-visual .face-silhouette{display:grid;place-items:center;color:#fff;font-size:28px;font-weight:950}.panic-incident-description{padding:9px 10px;border-left:3px solid var(--red);background:rgba(255,91,79,.08);color:#ffd0cd;font-size:10px;line-height:1.5}.panic-command-visual{display:grid;align-content:center;justify-items:center;gap:7px;padding:20px;background:radial-gradient(circle,rgba(255,48,57,.34),rgba(4,15,26,.96))}.panic-command-visual>span{font-size:34px;font-weight:950}.panic-command-visual>small{display:block;max-width:440px;color:#ffd5d2;font-size:10px;text-align:center;line-height:1.45}

/* Sidebar v36: menu dikelompokkan per fungsi dan hanya modul aktif yang dibuka. */
.app-shell{grid-template-columns:255px 1fr}.sidebar{padding-left:12px;padding-right:12px}.sidebar-navigation{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 3px 8px 0;scrollbar-width:thin;scrollbar-color:#1c526f transparent}
.nav-group{border:1px solid transparent;border-radius:10px}.nav-group+ .nav-group{margin-top:4px}.nav-group>summary{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px 9px;border-radius:9px;color:#9db6c4;cursor:pointer;list-style:none;user-select:none}.nav-group>summary::-webkit-details-marker{display:none}.nav-group>summary>span{color:var(--cyan);font-size:17px;text-align:center}.nav-group>summary>b{min-width:0;font-size:11px;letter-spacing:.035em}.nav-group>summary>i{color:#648494;font-size:11px;font-style:normal;transition:transform .18s}.nav-group[open]>summary>i{transform:rotate(180deg)}.nav-group>summary:hover,.nav-group.active>summary{background:rgba(32,212,244,.055);color:#e9f8ff}.nav-group.active{border-color:rgba(32,212,244,.11);background:rgba(5,21,34,.38)}
.nav-submenu{display:grid;gap:2px;padding:1px 4px 6px 12px}.nav-subitem{min-height:36px;padding:8px 9px;border-left-width:2px;font-size:11px}.nav-subitem>span{width:18px;font-size:15px}.nav-subitem>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650}.nav-subitem.active{background:linear-gradient(90deg,rgba(32,212,244,.13),rgba(32,212,244,.035));font-weight:850}
.admin-device-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 15px}.admin-device-tabs>a{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1px 10px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:linear-gradient(145deg,rgba(16,42,63,.92),rgba(9,28,44,.95));color:var(--text);box-shadow:var(--shadow);transition:.18s}.admin-device-tabs>a:hover{transform:translateY(-2px);border-color:#3184aa}.admin-device-tabs>a>span{grid-row:1/3;color:var(--cyan);font-size:24px}.admin-device-tabs>a>b{font-size:12px}.admin-device-tabs>a>small{color:var(--muted);font-size:9px}.admin-device-summary{margin:0 0 15px}.admin-device-summary>.panel-heading{align-items:flex-start}.admin-device-summary>.panel-heading small{display:block;margin-top:4px}.admin-device-grid{grid-template-columns:repeat(4,minmax(210px,1fr))}
@media(max-width:1280px){.admin-device-grid{grid-template-columns:repeat(3,minmax(200px,1fr))}}
@media(max-width:1000px){.admin-device-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-device-grid{grid-template-columns:repeat(2,minmax(190px,1fr))}}
@media(max-width:820px){.app-shell{display:block}.sidebar-navigation{display:flex!important;overflow-x:auto;overflow-y:hidden;padding:0;width:100%}.nav-group{display:contents}.nav-group>summary{display:none}.nav-group>.nav-submenu,.nav-group:not([open])>.nav-submenu{display:flex!important;flex:0 0 auto;padding:0}.nav-subitem{min-width:54px;min-height:52px;padding:6px 9px;border:0}.nav-subitem>b{display:none}.nav-subitem>span{font-size:21px}.admin-device-summary{scroll-margin-top:90px}}
@media(max-width:580px){.admin-device-tabs,.admin-device-grid{grid-template-columns:1fr 1fr}.admin-device-tabs>a{padding:10px}.admin-device-tabs>a>span{font-size:20px}.admin-device-grid{grid-template-columns:1fr}}

/* Jadwal v37: kontrol unduh roster per lokasi dan periode. */
.schedule-export-form{display:grid;grid-template-columns:minmax(220px,1fr) minmax(145px,.42fr) minmax(190px,.56fr) auto auto;align-items:end;gap:9px;margin:0 0 15px;padding:13px 14px;border:1px solid rgba(32,212,244,.28);border-radius:11px;background:linear-gradient(135deg,rgba(12,46,67,.92),rgba(6,25,40,.97));box-shadow:0 12px 28px rgba(0,0,0,.16)}.hr-work-schedule-panel>.schedule-export-form{margin-top:-2px}.schedule-export-copy{display:flex;align-items:center;gap:11px;min-width:0}.schedule-export-copy>span{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:9px;background:rgba(32,212,244,.12);color:var(--cyan);font-size:21px}.schedule-export-copy strong,.schedule-export-copy small{display:block}.schedule-export-copy small{margin-top:2px;color:var(--muted);font-size:9px}.schedule-export-form label{display:grid;gap:5px;min-width:0;color:#bcd2de;font-size:10px;font-weight:750}.schedule-export-form input,.schedule-export-form select{display:block;width:100%;min-width:0;height:38px;border:1px solid var(--line);border-radius:8px;background:#061522;color:var(--text);padding:7px 9px;outline:none}.schedule-export-form input:focus,.schedule-export-form select:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(32,212,244,.09)}.schedule-export-form>.btn{display:inline-flex;align-items:center;justify-content:center;min-height:38px;white-space:nowrap}
@media(max-width:1180px){.schedule-export-form{grid-template-columns:minmax(220px,1fr) minmax(145px,.5fr) minmax(190px,.7fr)}.schedule-export-form>.btn{grid-row:2}.schedule-export-form>.btn:nth-last-child(2){grid-column:2}.schedule-export-form>.btn:last-child{grid-column:3}}
@media(max-width:720px){.schedule-export-form{grid-template-columns:1fr}.schedule-export-form>.btn,.schedule-export-form>.btn:nth-last-child(2),.schedule-export-form>.btn:last-child{grid-column:auto;grid-row:auto;width:100%}}
