:root{
  --bg:#03060f; --s1:#0a0f1e; --s2:#0d1526; --bdr:#1a2236;
  --blue:#2563eb; --bluel:#3b82f6; --green:#10b981;
  --amber:#f59e0b; --red:#ef4444; --purple:#8b5cf6;
  --pri:#f1f5f9; --sec:#94a3b8; --mut:#475569;
  --backdrop-bg:rgba(0,0,0,.75); --spin-track:rgba(255,255,255,.2);
  --row-hover:rgba(37,99,235,.04);
}
html[data-theme="light"]{
  --bg:#f1f5f9; --s1:#ffffff; --s2:#f8fafc; --bdr:#e2e8f0;
  --pri:#0f172a; --sec:#475569; --mut:#94a3b8;
  --backdrop-bg:rgba(0,0,0,.45); --spin-track:rgba(0,0,0,.12);
  --row-hover:rgba(37,99,235,.05);
}
*{margin:0;padding:0;box-sizing:border-box}
html{font-family:'Cairo',sans-serif;font-size:14px}
body{background:var(--bg);color:var(--pri);min-height:100vh;direction:rtl}
.hide{display:none!important}
.w-full{width:100%}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border-radius:8px;border:none;cursor:pointer;font-family:'Cairo',sans-serif;font-size:13px;font-weight:700;transition:opacity .15s;white-space:nowrap}
.btn:hover{opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--blue);color:#fff}
.btn-danger{background:var(--red);color:#fff}
.btn-success{background:var(--green);color:#fff}
.btn-warning{background:#d97706;color:#fff}
.btn-outline{background:transparent;color:var(--sec);border:1px solid var(--bdr)}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-icon{padding:6px;border-radius:8px;background:transparent;border:none;cursor:pointer;color:var(--sec);font-size:16px;transition:background .15s}
.btn-icon:hover{background:var(--s2)}

/* ── Inputs ── */
input,select,textarea{background:var(--s2);border:1px solid var(--bdr);border-radius:8px;color:var(--pri);font-family:'Cairo',sans-serif;font-size:13px;padding:9px 12px;width:100%;outline:none;transition:border-color .15s}
input:focus,select:focus,textarea:focus{border-color:var(--blue)}
input::placeholder,textarea::placeholder{color:var(--mut)}
select option{background:var(--s2)}
label{font-size:12px;color:var(--sec);margin-bottom:4px;display:block;font-weight:600}
.fg{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pw-wrap{position:relative}
.pw-wrap input{padding-left:40px}
.pw-eye{position:absolute;left:10px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--sec);font-size:16px;padding:2px}

/* ── Cards ── */
.card{background:var(--s1);border:1px solid var(--bdr);border-radius:12px;padding:16px}

/* ── Badges ── */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700}

/* ── Toggle ── */
.toggle-wrap{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:10px;border:1px solid;margin-bottom:8px;cursor:pointer;transition:background .15s}
.permission-module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:16px}
.permission-module-grid .toggle-wrap{margin:0;min-height:46px;font-size:12px}
@media(max-width:680px){.permission-module-grid{grid-template-columns:1fr}}
.toggle{width:44px;height:24px;border-radius:12px;position:relative;cursor:pointer;border:none;flex-shrink:0;transition:background .2s}
.toggle::after{content:'';position:absolute;width:18px;height:18px;background:#fff;border-radius:50%;top:3px;left:3px;transition:transform .2s}
.toggle.on{background:var(--green)}.toggle.on::after{transform:translateX(20px)}
.toggle.off{background:var(--mut)}

/* ── Chips ── */
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chip{padding:4px 12px;border-radius:20px;font-size:12px;border:1px solid var(--bdr);background:var(--s2);color:var(--sec);cursor:pointer;transition:all .15s;font-family:'Cairo',sans-serif}
.chip.active{background:rgba(37,99,235,.2);border-color:rgba(37,99,235,.5);color:var(--bluel)}

/* ── Section label ── */
.sec-lbl{font-size:11px;color:var(--mut);font-weight:700;letter-spacing:.3px;border-bottom:1px solid var(--bdr);padding-bottom:6px;margin:14px 0 10px}

/* ── Topbar ── */
#topbar{background:var(--s1);border-bottom:1px solid var(--bdr);padding:10px 20px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100}
.logo{width:40px;height:40px;background:#061225;border:1px solid rgba(59,130,246,.35);border-radius:11px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;box-shadow:0 3px 12px rgba(2,10,25,.28)}
.logo img{width:100%;height:100%;object-fit:cover;display:block}
.tbar-name{font-weight:900;font-size:15px}
.tbar-sub{font-size:10px;color:var(--sec)}
.tbar-right{display:flex;gap:8px;align-items:center;margin-right:auto}
.tbar-user{font-size:12px;color:var(--sec);display:flex;align-items:center;gap:6px}
.online-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0}
.workspace-menu-btn{font-size:21px;border:1px solid var(--bdr);background:var(--s2)}
.app-version-btn{background:rgba(37,99,235,.12);color:var(--bluel);border:1px solid rgba(37,99,235,.28)}

/* ── XS Manager workspace ── */
.workspace-shell{display:flex;align-items:stretch;min-height:calc(100vh - 61px)}
.workspace-sidebar{position:sticky;top:61px;align-self:flex-start;width:252px;height:calc(100vh - 61px);background:var(--s1);border-left:1px solid var(--bdr);display:flex;flex-direction:column;z-index:90;transition:width .2s ease,transform .2s ease;overflow:hidden}
.workspace-content{min-width:0;flex:1}
.workspace-side-head{height:68px;padding:11px 12px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--bdr)}
.workspace-side-brand{display:flex;align-items:center;gap:9px;min-width:0;flex:1}
.workspace-side-brand img{width:38px;height:38px;border-radius:10px;object-fit:cover;flex:none}
.workspace-side-brand span{display:grid;min-width:0}.workspace-side-brand b{font-size:14px}.workspace-side-brand small{font-size:10px;color:var(--sec);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.workspace-side-nav{flex:1;overflow-y:auto;padding:9px 8px;scrollbar-width:thin}
.workspace-side-nav button,.workspace-side-footer button{width:100%;min-height:43px;border:0;border-radius:9px;background:transparent;color:var(--sec);display:flex;align-items:center;gap:11px;padding:8px 11px;font:600 12px 'Cairo',sans-serif;cursor:pointer;text-align:right;white-space:nowrap}
.workspace-side-nav button:hover,.workspace-side-footer button:hover{background:var(--s2);color:var(--pri)}
.workspace-side-nav button.active{background:rgba(37,99,235,.13);color:var(--bluel)}
.workspace-side-nav button i,.workspace-side-footer button i{font-style:normal;width:22px;text-align:center;font-size:16px;flex:none}
.workspace-side-group{margin-top:10px;padding-top:7px;border-top:1px solid var(--bdr)}
.workspace-side-label{font-size:10px;color:var(--mut);font-weight:800;padding:5px 12px}
.workspace-side-group-toggle{color:var(--pri)!important;font-weight:800!important}
.workspace-side-group-toggle b{font-size:16px;margin-right:auto;transition:transform .18s ease}
.workspace-side-group-body{display:grid;gap:1px}
.workspace-side-group-body{padding-inline-start:12px}
.workspace-side-group-body button{font-size:11px;white-space:normal;line-height:1.6}
.workspace-shell.sidebar-collapsed .workspace-side-group-body{padding-inline-start:0}
.radius-overview-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.radius-overview-metrics strong{display:block;font-size:24px;color:var(--bluel)}
.radius-page,.radius-catalog-panel{background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:22px;margin-top:16px;color:var(--pri)}
.radius-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 20px}
.radius-heading h2{font-size:24px;line-height:1.5;font-weight:800;margin:0}
.radius-eyebrow{display:block;font-size:12px;color:var(--sec);margin-bottom:3px}
.radius-serverbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 18px;border:1px solid var(--bdr);background:var(--s1);border-radius:12px}
.radius-server-select{display:flex;align-items:center;gap:12px;flex:0 1 400px;font-size:13px;color:var(--sec)}
.radius-server-select select{min-width:0;flex:1}
.radius-runtime-state{font-size:12px;color:var(--sec);flex:1}
.radius-catalog-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}
.radius-result-count{font-size:13px;color:var(--sec)}
.radius-pagination{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding-top:18px;font-size:12px;color:var(--sec)}
.radius-status-chip{display:inline-block;background:var(--s2);border:1px solid var(--bdr);border-radius:6px;padding:3px 9px;font-size:12px;color:var(--sec)}
.radius-catalog-panel #rc-feedback:empty{display:none}
.radius-catalog-panel #rc-feedback:not(:empty){padding:10px;margin-bottom:12px;background:var(--s2);border-radius:8px}
.radius-catalog-panel #rc-form-container:empty{display:none}
.radius-catalog-panel #rc-form-container:not(:empty){padding:20px;background:var(--s2);border:1px solid var(--bdr);border-radius:10px;margin-bottom:20px}
.radius-catalog-panel #rc-form{max-width:720px;margin-inline:auto}
.radius-catalog-panel #rc-form h3{margin-bottom:16px}
.radius-empty-state{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px}
.radius-empty-state strong{font-size:18px}.radius-empty-state p{color:var(--sec);max-width:480px;line-height:1.9}
.radius-empty-icon{font-size:30px;color:var(--blue);background:var(--s2);border-radius:14px;width:60px;height:60px;display:grid;place-items:center}
#rp-notice{font-size:12px;color:var(--sec);margin-bottom:18px;line-height:1.8}
.radius-page-toolbar{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:16px 0}
.radius-page-toolbar label{display:flex;flex-direction:column;gap:6px;min-width:180px;color:var(--sec);font-size:12px}
.radius-page-toolbar label:first-child{flex:1;max-width:380px}
#rp-tools{margin-inline-start:auto}
.radius-page-toolbar input,.radius-page-toolbar select{padding:10px;border:1px solid var(--border,#dee6ef);border-radius:8px;background:var(--bg,#fff);color:inherit}
.radius-metric{padding:18px;text-align:start;border:1px solid var(--bdr);border-radius:12px;background:var(--s2);color:inherit;cursor:pointer;font:inherit}
.radius-metric:hover{border-color:var(--bluel,#2860ee)}
.radius-metric small{display:block;margin-top:10px;opacity:.65}
.radius-page-summary{display:flex;gap:18px;flex-wrap:wrap;padding:20px 0;margin:12px 0;border-bottom:1px solid var(--border,#dee6ef)}
.radius-table-scroll{overflow-x:auto}
.radius-data-table{width:100%;border-collapse:collapse;text-align:start}
.radius-data-table td,.radius-data-table th{padding:16px 14px;text-align:start;border-bottom:1px solid var(--bdr);vertical-align:middle;font-size:13px}
.radius-data-table th{background:var(--s2);color:var(--sec);font-size:12px;font-weight:600;white-space:nowrap}
.radius-data-table td strong{font-weight:600}.radius-data-table tbody tr:hover{background:var(--row-hover)}
.radius-data-table td.radius-table-empty{text-align:center;color:var(--sec);padding:45px 16px}
.radius-data-table small{display:block;margin-top:5px;opacity:.75}
.radius-data-table .radius-row-actions{min-width:195px}
.radius-row-actions .btn{margin:3px;font-size:12px}
@media(max-width:800px){.radius-overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.radius-server-select{flex:1 1 100%}}
@media(max-width:650px){.radius-page,.radius-catalog-panel{padding:12px}.radius-heading h2{font-size:20px}.radius-serverbar{padding:12px}.radius-page-toolbar label{min-width:0;flex:1 1 140px}.radius-data-table{min-width:650px}}
@media(max-width:650px){form.radius-page-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end}form.radius-page-toolbar label:first-child{grid-column:1/-1;max-width:none;width:100%}form.radius-page-toolbar #rp-tools{grid-column:1/-1;margin-inline-start:0}.radius-table-scroll::before{content:'اسحب الجدول أفقيًا لعرض بقية الأعمدة';display:block;position:sticky;right:0;font-size:11px;color:var(--sec);padding:8px 0 12px}}
.workspace-side-group.folded .workspace-side-group-body{display:none}
.workspace-side-group.folded .workspace-side-group-toggle b{transform:rotate(90deg)}
.workspace-side-footer{padding:8px;border-top:1px solid var(--bdr)}
.workspace-side-scrim{display:none}
.workspace-shell.sidebar-collapsed .workspace-sidebar{width:72px}
.workspace-shell.sidebar-collapsed .workspace-side-brand span,.workspace-shell.sidebar-collapsed .workspace-side-nav button span,.workspace-shell.sidebar-collapsed .workspace-side-footer button span,.workspace-shell.sidebar-collapsed .workspace-side-label,.workspace-shell.sidebar-collapsed .workspace-side-group-toggle b{display:none}
.workspace-shell.sidebar-collapsed .workspace-side-head{padding-inline:9px}.workspace-shell.sidebar-collapsed .workspace-side-head>.btn-icon{display:none}
.workspace-shell.sidebar-collapsed .workspace-side-nav button,.workspace-shell.sidebar-collapsed .workspace-side-footer button{justify-content:center;padding-inline:7px}
.workspace-content>.tab-nav:first-of-type,#admin-tab-nav{display:none!important}
.vpn-page-intro{margin-bottom:14px;padding:18px 20px;border-radius:14px;background:linear-gradient(135deg,rgba(37,99,235,.16),rgba(16,185,129,.08));border:1px solid rgba(59,130,246,.24)}
.vpn-page-intro span{color:var(--bluel);font-size:11px;font-weight:800}.vpn-page-intro h2{font-size:23px;margin:3px 0}.vpn-page-intro p{color:var(--sec);font-size:12px}
#vpn-page-host>.monitoring-gateways-modal{display:block!important;max-width:none;margin:0;padding:18px;border-radius:14px}
#vpn-page-host .vpn-page-footer{display:none}
.about-brand-card{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--bdr);border-radius:12px;background:var(--s2);margin-bottom:12px}
.about-brand-card img{width:52px;height:52px;border-radius:13px;object-fit:cover}.about-brand-card div{display:grid;gap:2px}.about-brand-card b{font-size:17px}.about-brand-card small{color:var(--sec);font-size:11px;line-height:1.6}
.about-developer{padding:11px 13px;border-radius:9px;background:rgba(37,99,235,.09);border:1px solid rgba(37,99,235,.22);color:var(--bluel);font-size:12px;font-weight:800;margin-bottom:14px;text-align:center}
.tenant-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:13px}
.tenant-card{background:var(--s1);border:1px solid var(--bdr);border-top:3px solid var(--tenant-state);border-radius:13px;padding:16px;display:grid;gap:12px}
.tenant-card header,.tenant-card footer{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;flex-wrap:wrap}.tenant-card h3{font-size:16px}.tenant-card header small{display:block;color:var(--bluel);font-size:11px;text-align:right;margin-top:2px}.tenant-state{padding:3px 9px;border-radius:999px;background:color-mix(in srgb,var(--tenant-state) 12%,transparent);color:var(--tenant-state);font-size:10px;font-weight:800}
.tenant-expiry{padding:10px 11px;border:1px solid var(--bdr);border-radius:9px;background:var(--s2);display:grid;gap:2px}.tenant-expiry b{font-size:12px}.tenant-expiry small{color:var(--mut);font-size:10px}.tenant-expiry.expired,.tenant-expiry.disabled{border-color:rgba(239,68,68,.25)}.tenant-expiry.expiring{border-color:rgba(245,158,11,.3)}
.tenant-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.tenant-stats div{padding:8px;text-align:center;border-radius:8px;background:var(--s2);border:1px solid var(--bdr)}.tenant-stats b,.tenant-stats small{display:block}.tenant-stats b{font-size:18px}.tenant-stats small,.tenant-card>p{font-size:10px;color:var(--sec)}

/* ── Tab nav ── */
.tab-nav{background:var(--s1);border-bottom:1px solid var(--bdr);display:flex;padding:0 20px;overflow-x:auto}
.tab-btn{padding:12px 16px;border:none;background:transparent;color:var(--sec);font-family:'Cairo',sans-serif;font-size:13px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;white-space:nowrap}
.tab-btn.active{color:var(--blue);border-bottom-color:var(--blue)}

/* ── Search bar ── */
.search-bar{background:var(--s1);border-bottom:1px solid var(--bdr);padding:10px 20px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.device-name-link{appearance:none;border:0;background:transparent;padding:0;color:var(--txt);font:inherit;font-weight:800;cursor:pointer;text-align:inherit}
.device-name-link:hover,.device-name-link:focus-visible{color:var(--blue);text-decoration:underline;text-underline-offset:3px;outline:none}
#search-input{flex:1;min-width:200px;max-width:360px}
#count-lbl{font-size:12px;color:var(--sec)}

/* ── Main content ── */
#main{padding:20px;max-width:1400px;margin:0 auto}

@media(max-width:860px){
  #topbar{flex-wrap:wrap;padding:8px 12px;gap:8px}
  #topbar .tbar-name{white-space:nowrap}
  #topbar .tbar-right{flex-basis:100%;justify-content:flex-end;gap:8px}
  .about-top-btn{font-size:11px;padding:5px 8px}
  .workspace-sidebar{position:fixed;top:0;right:0;height:100vh;width:min(292px,86vw);transform:translateX(105%);z-index:180;box-shadow:-12px 0 35px rgba(0,0,0,.32)}
  .workspace-shell.sidebar-open .workspace-sidebar{transform:translateX(0)}
  .workspace-side-scrim{position:fixed;inset:0;border:0;background:rgba(0,0,0,.48);z-index:170}
  .workspace-shell.sidebar-open .workspace-side-scrim{display:block}
  .workspace-shell.sidebar-collapsed .workspace-sidebar{width:min(292px,86vw)}
  .workspace-shell.sidebar-collapsed .workspace-side-brand span,.workspace-shell.sidebar-collapsed .workspace-side-nav button span,.workspace-shell.sidebar-collapsed .workspace-side-footer button span,.workspace-shell.sidebar-collapsed .workspace-side-label{display:initial}
  .workspace-shell.sidebar-collapsed .workspace-side-nav button,.workspace-shell.sidebar-collapsed .workspace-side-footer button{justify-content:flex-start;padding-inline:11px}
  .workspace-shell.sidebar-collapsed .workspace-side-head>.btn-icon{display:inline-flex}
  #wh-tab-nav{padding-inline:8px}
}
@media(max-width:560px){
  #topbar{padding:8px 10px;gap:7px}.logo{width:34px;height:34px}.tbar-name{font-size:13px}.tbar-sub{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tbar-user{display:none}.app-version-btn{padding-inline:7px}.workspace-menu-btn{width:34px;height:34px}
  #main{padding:12px}.vpn-page-intro{padding:14px}.vpn-page-intro h2{font-size:19px}
}

/* ── Table ── */
.tbl-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--bdr)}
table{width:100%;border-collapse:collapse;background:var(--s1)}
thead{background:var(--s2)}
th{padding:10px 14px;text-align:right;font-size:11px;color:var(--sec);font-weight:700;white-space:nowrap}
td{padding:10px 14px;border-top:1px solid var(--bdr);font-size:13px;vertical-align:middle}
tr:hover td{background:var(--row-hover)}
.td-actions{display:flex;gap:4px;justify-content:flex-start}

/* ── Status/Role dots ── */
.dot{width:7px;height:7px;border-radius:50%;display:inline-block}

/* ── Modal ── */
.backdrop{position:fixed;inset:0;background:var(--backdrop-bg);z-index:200;display:none;align-items:flex-start;justify-content:center;overflow-y:auto;padding:20px}
.backdrop.show{display:flex}
.modal{background:var(--s1);border:1px solid var(--bdr);border-radius:16px;width:100%;max-width:620px;padding:24px;position:relative;margin:auto}
.modal-lg{max-width:780px}
.modal-sm{max-width:440px}
.modal h2{font-size:18px;font-weight:800;margin-bottom:18px}
.device-access-modal{max-width:480px}
.device-access-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.device-access-head h2{margin:0 0 3px}.device-access-head p{color:var(--sec);font-size:12px}
.device-access-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:rgba(37,99,235,.12);color:var(--bluel);font-size:22px;font-weight:800}
.device-access-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.device-access-option{appearance:none;border:1px solid var(--bdr);background:var(--s2);border-radius:13px;padding:14px;text-align:right;color:var(--pri);cursor:pointer;display:flex;align-items:flex-start;gap:10px;transition:.16s ease}
.device-access-option:hover{border-color:var(--bluel);transform:translateY(-1px)}
.device-access-option.external{background:rgba(37,99,235,.07);border-color:rgba(37,99,235,.24)}
.device-access-option:disabled{opacity:.48;cursor:not-allowed;transform:none}
.device-access-option-icon{font-size:22px}.device-access-option span:last-child{min-width:0;display:grid;gap:3px}
.device-access-option strong{font-size:14px}.device-access-option small{font-size:10px;color:var(--sec)}
.device-access-option code{font-size:10px;color:var(--mut);direction:ltr;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
@media(max-width:520px){.device-access-options{grid-template-columns:1fr}.device-access-option{padding:12px}}
.device-actions-modal{max-width:520px}
.device-actions-status{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--s2);border:1px solid var(--bdr);border-radius:11px;padding:9px 12px;margin:-6px 0 14px;font-size:12px;color:var(--sec)}
.device-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.device-action-card{appearance:none;border:1px solid var(--bdr);background:var(--s2);border-radius:13px;padding:13px;color:var(--pri);cursor:pointer;text-align:right;display:grid;grid-template-columns:32px 1fr;column-gap:9px;align-items:center;transition:.16s ease}
.device-action-card:hover{border-color:var(--bluel);background:rgba(37,99,235,.07);transform:translateY(-1px)}
.device-action-card>span{grid-row:1/3;width:32px;height:32px;border-radius:9px;background:rgba(37,99,235,.12);color:var(--bluel);display:grid;place-items:center;font-size:17px;font-weight:800}
.device-action-card strong{font-size:13px}.device-action-card small{font-size:10px;color:var(--sec);margin-top:2px}
@media(max-width:520px){.device-actions-grid{grid-template-columns:1fr}.device-action-card{padding:11px 12px}}
.modal-footer{display:flex;gap:10px;justify-content:flex-start;margin-top:18px;padding-top:16px;border-top:1px solid var(--bdr)}
.device-wizard-head{display:flex;align-items:center;margin:-2px 0 20px;padding:12px 14px;background:var(--s2);border:1px solid var(--bdr);border-radius:12px}
.device-wizard-head>i{height:2px;background:var(--bdr);flex:1;min-width:18px}
.device-wizard-dot{border:0;background:transparent;color:var(--mut);font-family:inherit;display:flex;align-items:center;gap:7px;cursor:pointer;padding:0 5px;font-size:11px;font-weight:700;white-space:nowrap}
.device-wizard-dot b{width:28px;height:28px;border-radius:50%;border:2px solid var(--bdr);display:grid;place-items:center;background:var(--s1);font-size:12px}
.device-wizard-dot.active{color:var(--bluel)}
.device-wizard-dot.active b{border-color:var(--blue);background:var(--blue);color:#fff}
.device-wizard-dot.done{color:var(--green)}
.device-wizard-dot.done b{border-color:var(--green);background:rgba(16,185,129,.12);color:var(--green)}
.device-wizard-step{min-height:290px}
.device-source-card{background:var(--s2);border:1px solid var(--bdr);border-radius:10px;padding:12px;margin-bottom:14px}
.device-source-title{font-weight:800;margin-bottom:4px}
.device-source-help{font-size:12px;color:var(--sec);margin-bottom:10px}

/* ── Toast ── */
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--s1);border:1px solid var(--bdr);border-radius:10px;padding:12px 20px;z-index:9999;opacity:0;pointer-events:none;transition:opacity .3s;min-width:220px;text-align:center;font-size:13px}
#toast.show{opacity:1}

/* ── Login ── */
#login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse at 50% 0%,rgba(37,99,235,.12),transparent 60%)}
.login-card{background:var(--s1);border:1px solid var(--bdr);border-radius:20px;padding:36px;width:100%;max-width:380px}
.login-logo{width:82px;height:82px;margin:0 auto 16px;background:#061225;border:1px solid rgba(59,130,246,.4);border-radius:22px;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 8px 28px rgba(2,10,25,.35)}
.login-logo img{width:100%;height:100%;object-fit:cover;display:block}
.login-title{font-size:20px;font-weight:900;text-align:center;margin-bottom:4px}
.login-sub{font-size:12px;color:var(--sec);text-align:center;margin-bottom:24px}
#login-err{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:10px 14px;font-size:13px;color:var(--red);margin-bottom:14px}

/* ── Stat cards ── */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-bottom:20px}
.stat-card{background:var(--s1);border:1px solid var(--bdr);border-radius:12px;padding:18px}
.stat-num{font-size:30px;font-weight:900;margin:6px 0 4px}
.stat-lbl{font-size:12px;color:var(--sec)}
.gov-row{background:var(--s1);border:1px solid var(--bdr);border-radius:10px;padding:12px 14px;margin-bottom:8px}
.prog{height:4px;border-radius:2px;background:var(--bdr);overflow:hidden;margin-top:6px}
.prog-fill{height:100%;background:var(--blue);border-radius:2px;transition:width .5s}

/* ── Spinner ── */
.spin{width:18px;height:18px;border:2px solid var(--spin-track);border-top-color:var(--blue);border-radius:50%;animation:sp .7s linear infinite;display:inline-block;vertical-align:middle}
@keyframes sp{to{transform:rotate(360deg)}}

/* ── Perm badge ── */
.pb{padding:2px 6px;border-radius:5px;font-size:10px;font-weight:700;display:inline-block;margin:1px}

/* ── Mobile ── */
@media(max-width:640px){
  .form-row{grid-template-columns:1fr}
  #main{padding:12px}
  .search-bar{flex-direction:column;align-items:stretch}
  th:nth-child(n+5),td:nth-child(n+5){display:none}
  #modal-device{padding:16px;max-height:calc(100vh - 20px);overflow-y:auto;margin:0 auto}
  .device-wizard-head{padding:10px 8px;margin-bottom:14px}
  .device-wizard-dot{padding:0 2px}
  .device-wizard-dot span{display:none}
  .device-wizard-dot b{width:30px;height:30px}
  .device-wizard-step{min-height:0}
  #modal-device .modal-footer{position:sticky;bottom:-16px;background:var(--s1);z-index:2;padding-bottom:4px;flex-wrap:wrap}
}

/* ── User card list ── */
.user-card{background:var(--s1);border:1px solid var(--bdr);border-radius:12px;padding:14px;margin-bottom:10px;display:flex;align-items:center;gap:12px}
.user-avatar{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:900;flex-shrink:0}
.user-info{flex:1;min-width:0}
.user-name{font-weight:700;font-size:15px}
.user-un{font-size:12px;color:var(--sec)}
.user-meta{font-size:11px;color:var(--mut);margin-top:2px}
.user-perms{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}
.user-actions{display:flex;gap:4px}

/* ── Area card ── */
.area-card{background:var(--s1);border:1px solid var(--bdr);border-radius:10px;padding:12px 14px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.area-gov-hdr{font-size:12px;color:var(--sec);font-weight:700;padding:6px 0 4px;margin-top:10px;border-bottom:1px solid var(--bdr);margin-bottom:6px}

/* ── Empty state ── */
.empty{text-align:center;padding:60px 20px;color:var(--mut)}
.empty-icon{font-size:56px;margin-bottom:12px}
.empty-msg{font-size:16px;color:var(--sec)}

/* ── Radio group ── */
.radio-group{display:flex;gap:8px}
.radio-opt{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px;border-radius:8px;border:1px solid var(--bdr);cursor:pointer;font-size:13px;font-weight:600;color:var(--sec);transition:all .15s;background:var(--s2)}
.radio-opt.selected{background:rgba(37,99,235,.15);border-color:rgba(37,99,235,.5);color:var(--bluel)}

/* ── Info boxes ── */
.info-box{padding:10px 14px;border-radius:8px;margin-bottom:10px;font-size:12px;line-height:1.6}
.info-purple{background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.3);color:var(--purple)}
.info-amber{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.3);color:var(--amber)}
.info-blue{background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.3);color:var(--bluel)}

/* ── Filter panel ── */
.filter-panel{background:var(--s1);border-bottom:1px solid var(--bdr);padding:10px 20px;display:none;gap:10px;flex-wrap:wrap;align-items:flex-end}
.filter-panel.open{display:flex}
.filter-panel .fg{margin-bottom:0;min-width:140px;flex:1}
/* ── Copy btn ── */
.copy-btn{background:none;border:none;cursor:pointer;color:var(--mut);font-size:11px;padding:1px 4px;border-radius:4px;transition:color .15s;vertical-align:middle;line-height:1}
.copy-btn:hover{color:var(--bluel)}
/* ── Device detail ── */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}
.detail-item{font-size:13px}
.detail-lbl{font-size:11px;color:var(--mut);margin-bottom:2px}
.detail-val{color:var(--pri);display:flex;align-items:center;gap:6px;flex-wrap:wrap;word-break:break-all}
/* ── Audit / history ── */
.audit-row{padding:10px 14px;border-bottom:1px solid var(--bdr);font-size:12px}
.audit-row:last-child{border-bottom:none}
.audit-diff{background:var(--s2);border:1px solid var(--bdr);border-radius:5px;padding:3px 7px;font-size:11px;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:top}
.history-item{padding:10px 14px;border-bottom:1px solid var(--bdr)}
.history-item:last-child{border-bottom:none}
.import-row{font-size:12px;padding:3px 0;border-bottom:1px solid var(--bdr);color:var(--sec)}
@media(max-width:640px){.detail-grid{grid-template-columns:1fr}.filter-panel .fg{min-width:100%}}
@media print{
  #topbar,#admin-tab-nav,.tab-btn,.no-print,#backdrop{display:none!important}
  #view-stats,#view-reports{display:block!important}
  th.no-print,td.no-print{display:none!important}
  body{background:#fff!important;color:#000!important}
  .stat-card{border:1px solid #ddd!important;break-inside:avoid}
  .modal{display:none!important}
}

/* ─── Reports ─────────────────────────────────────── */
.report-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:11px}
.report-filter-grid .fg{margin:0}.report-search-field{grid-column:span 2}
.report-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;margin-bottom:13px}
.report-summary-grid article{padding:12px 13px;border:1px solid var(--bdr);border-radius:10px;background:var(--s2);border-top:3px solid var(--bluel)}
.report-summary-grid article.report-ok{border-top-color:var(--green)}.report-summary-grid article.report-bad{border-top-color:var(--red)}.report-summary-grid article.report-warn{border-top-color:var(--amber)}
.report-summary-grid small{display:block;color:var(--mut);font-size:10px}.report-summary-grid strong{display:block;color:var(--pri);font-size:22px;margin-top:4px}
.report-result-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0;padding:8px 11px;background:var(--s2);border:1px solid var(--bdr);border-radius:8px}.report-result-head small{color:var(--mut)}
.report-device-link{display:block;padding:0;border:0;background:none;color:var(--bluel);font:inherit;font-weight:700;cursor:pointer;text-align:right}.report-device-link+small{display:block;color:var(--mut);font-size:10px;margin-top:3px}
.report-badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;background:color-mix(in srgb,var(--report-color) 13%,transparent);color:var(--report-color);font-size:10px;font-weight:700;white-space:nowrap}
.report-mobile-list{display:none}.report-mobile-card{padding:12px;border:1px solid var(--bdr);border-radius:11px;background:var(--s1);cursor:pointer}.report-mobile-card header{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.report-mobile-card header strong,.report-mobile-card header small{display:block}.report-mobile-card header small{color:var(--mut);font-size:10px;margin-top:2px}.report-mobile-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.report-mobile-grid span{padding:7px 8px;border-radius:7px;background:var(--s2)}.report-mobile-grid small,.report-mobile-grid b{display:block}.report-mobile-grid small{color:var(--mut);font-size:9px}.report-mobile-grid b{color:var(--sec);font-size:11px;margin-top:2px;overflow:hidden;text-overflow:ellipsis}
.report-maint-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}.report-maint-list article{padding:13px;border:1px solid var(--bdr);border-radius:10px;background:var(--s1)}.report-maint-list header{display:flex;justify-content:space-between;gap:8px}.report-maint-list header span{font-size:10px;color:var(--amber)}.report-maint-list h4{margin:9px 0 5px}.report-maint-list p{color:var(--sec);font-size:12px;min-height:18px}.report-maint-list footer{color:var(--mut);font-size:10px;margin-top:9px}
@media(max-width:760px){.report-search-field{grid-column:1/-1}.report-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.report-desktop-table{display:none}.report-mobile-list{display:grid;gap:8px}.report-result-head small{display:none}}
@media(max-width:430px){.report-filter-grid{grid-template-columns:1fr}.report-search-field{grid-column:1}.report-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{.report-mobile-list{display:none!important}.report-desktop-table{display:block!important}.report-summary-grid{grid-template-columns:repeat(6,1fr)}.report-result-head small{display:none}}

/* ─── Guide ─────────────────────────────────────── */
#view-guide{padding:0 0 60px}
.guide-header{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:16px;background:var(--s2);border:1px solid var(--bdr);border-radius:12px}
.guide-title{font-size:20px;font-weight:800;flex:1;min-width:200px}
.guide-actions{display:flex;gap:8px;flex-wrap:wrap}
.guide-search-wrap{display:flex;align-items:center;gap:8px;flex:1;min-width:200px;max-width:400px;position:relative}
.guide-search-wrap input{width:100%;padding:8px 12px;border-radius:8px;border:1px solid var(--bdr);background:var(--s3);color:var(--fg);font-family:inherit;font-size:13px}
.guide-search-wrap input:focus{outline:none;border-color:var(--bluel)}
#guide-search-count{font-size:12px;color:var(--sec);white-space:nowrap}
.guide-toc{background:var(--s2);border:1px solid var(--bdr);border-radius:10px;padding:14px 16px;margin-bottom:18px}
.guide-toc-title{font-size:13px;font-weight:700;color:var(--sec);margin-bottom:10px}
#guide-toc-list{display:flex;flex-wrap:wrap;gap:6px}
.guide-toc-item{font-size:12px;padding:4px 10px;background:var(--s3);border:1px solid var(--bdr);border-radius:20px;color:var(--bluel);text-decoration:none;cursor:pointer;transition:background .15s}
.guide-toc-item:hover{background:rgba(37,99,235,.15)}
.guide-section{border:1px solid var(--bdr);border-radius:10px;overflow:hidden;margin-bottom:10px}
.guide-section-hdr{display:flex;align-items:center;gap:10px;padding:13px 16px;cursor:pointer;user-select:none;background:var(--s2);transition:background .15s}
.guide-section-hdr:hover{background:var(--s3)}
.guide-section-hdr.open{background:rgba(37,99,235,.08);border-bottom:1px solid var(--bdr)}
.guide-sec-icon{font-size:18px;flex-shrink:0}
.guide-sec-title{font-weight:700;font-size:14px;flex:1}
.guide-sec-arrow{font-size:11px;color:var(--sec);transform:rotate(0deg);transition:transform .2s}
.guide-section-hdr.open .guide-sec-arrow{transform:rotate(180deg)}
.guide-section-body{display:none;padding:16px;background:var(--s1)}
.guide-section-body ul,.guide-section-body ol{margin:6px 0;padding-right:20px;color:var(--sec);font-size:13px;line-height:1.85}
.guide-section-body li{margin-bottom:3px}
.guide-section-body p{font-size:13px;color:var(--sec);line-height:1.7;margin:6px 0}
.guide-section-body .guide-note{background:rgba(245,158,11,.1);border:1px solid var(--amber);border-radius:8px;padding:10px 14px;font-size:12px;color:var(--fg);margin:10px 0}
.guide-section-body .guide-warn{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:10px 14px;font-size:12px;color:var(--red);margin:10px 0}
.guide-section-body .guide-tip{background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.3);border-radius:8px;padding:10px 14px;font-size:12px;color:var(--green);margin:10px 0}
.guide-section-body table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}
.guide-section-body table th{background:var(--s2);padding:8px 10px;text-align:right;font-weight:700;border:1px solid var(--bdr)}
.guide-section-body table td{padding:7px 10px;border:1px solid var(--bdr)}
.guide-section-body table tr:nth-child(even) td{background:var(--s2)}
mark.guide-hl{background:rgba(245,158,11,.4);color:inherit;border-radius:2px;padding:0 2px}
.guide-back-top{position:fixed;bottom:24px;left:24px;width:40px;height:40px;border-radius:50%;background:var(--bluel);color:#fff;border:none;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(0,0,0,.3);z-index:50;opacity:.85;transition:opacity .2s}
.guide-back-top:hover{opacity:1}
@media(max-width:600px){
  .guide-header{flex-direction:column;align-items:flex-start}
  .guide-search-wrap{max-width:100%}
  #guide-toc-list{gap:4px}
  .guide-toc-item{font-size:11px}
}

/* Monitoring gateway manager */
.monitoring-gateways-modal{max-width:920px}
.gateway-modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
.gateway-modal-heading h2{margin-bottom:4px}
.gateway-modal-heading p{margin:0;color:var(--sec);font-size:12px;line-height:1.7}
.gateway-editor{padding:15px;margin-bottom:18px;border:1px solid rgba(37,99,235,.35);border-radius:8px;background:rgba(37,99,235,.06)}
.gateway-editor-title{margin-bottom:12px;font-size:15px;font-weight:800}
.gateway-registry-note{display:flex;align-items:flex-start;gap:8px 14px;flex-wrap:wrap;margin-bottom:13px;padding:11px 13px;border-radius:7px;background:rgba(14,165,233,.1);border:1px solid rgba(14,165,233,.24);font-size:12px;line-height:1.7}
.gateway-registry-note strong{color:#0284c7;white-space:nowrap}
.gateway-registry-note span{color:var(--sec);flex:1;min-width:220px}
.gateway-router-picker{margin-bottom:12px}
.gateway-router-picker small{display:block;margin-top:6px;color:var(--sec);font-size:11px;line-height:1.6}
.gateway-connection-row{grid-template-columns:minmax(160px,1fr) 110px minmax(150px,1fr) minmax(160px,1fr)}
.gateway-port-field{max-width:130px}
.gateway-active-toggle{display:flex;align-items:center;gap:9px;width:max-content;max-width:100%;margin-top:2px;font-size:12px;font-weight:700;cursor:pointer}
.gateway-active-toggle input{width:18px;height:18px;margin:0;accent-color:var(--blue)}
.gateway-editor-actions{display:flex;gap:8px;margin-top:14px}
.gateway-list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:9px;border-bottom:1px solid var(--bdr)}
.monitoring-gateways-list{max-height:430px;overflow:auto}
.gateway-row{display:grid;grid-template-columns:minmax(190px,1.2fr) minmax(250px,1.5fr) auto;grid-template-areas:"identity facts actions" "identity error actions";gap:7px 16px;align-items:center;padding:13px 2px;border-bottom:1px solid var(--bdr)}
.gateway-row.is-disabled{opacity:.62}
.gateway-identity{grid-area:identity;display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 8px;align-items:center;min-width:0}
.gateway-identity strong{overflow-wrap:anywhere;font-size:13px}
.gateway-identity code{grid-column:2;color:var(--sec);font-size:11px;direction:ltr;text-align:right}
.gateway-source{grid-column:2;width:max-content;max-width:100%;padding:2px 7px;border-radius:999px;font-size:10px;font-weight:800}
.gateway-source.is-central{color:#0369a1;background:rgba(14,165,233,.12);border:1px solid rgba(14,165,233,.25)}
.gateway-source.is-legacy{color:#92400e;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.25)}
.gateway-state{display:inline-flex;align-items:center;gap:5px;width:max-content;padding:3px 7px;border:1px solid var(--bdr);border-radius:12px;font-size:10px;font-weight:800;white-space:nowrap}
.gateway-state i{width:7px;height:7px;border-radius:50%;background:currentColor}
.gateway-state.is-up{color:var(--green);background:rgba(16,185,129,.08);border-color:rgba(16,185,129,.3)}
.gateway-state.is-down{color:var(--red);background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.3)}
.gateway-state.is-unknown{color:var(--mut)}
.gateway-facts{grid-area:facts;display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:var(--sec);font-size:10px}
.gateway-facts span{padding:3px 7px;border:1px solid var(--bdr);border-radius:5px;background:var(--s2)}
.gateway-facts b{color:var(--fg)}
.gateway-last-error{grid-area:error;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--red);font-size:10px}
.gateway-actions{grid-area:actions;display:flex;align-items:center;gap:6px}
.gateway-empty{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;min-height:130px;padding:22px;text-align:center;color:var(--sec);font-size:12px}
.gateway-empty strong{color:var(--fg);font-size:14px}
.gateway-error{color:var(--red)}
@media(max-width:760px){
  .monitoring-gateways-modal{max-width:calc(100vw - 18px);padding:16px 12px}
  .gateway-modal-heading{align-items:stretch;flex-direction:column}
  .gateway-modal-heading>.btn{width:100%}
  .gateway-connection-row{grid-template-columns:1fr 1fr}
  .gateway-port-field{max-width:none}
  .gateway-row{grid-template-columns:1fr;grid-template-areas:"identity" "facts" "error" "actions";padding:15px 2px}
  .gateway-actions .btn{flex:1}
}
@media(max-width:480px){
  .gateway-connection-row{grid-template-columns:1fr}
  .gateway-editor-actions .btn{flex:1}
  .gateway-actions{width:100%}
}
@media print{
  #view-guide .guide-header .guide-actions,.guide-back-top,#guide-search-count{display:none!important}
  .guide-section-body{display:block!important}
  .guide-section-hdr{background:#f5f5f5!important;border-bottom:1px solid #ddd!important}
  #guide-toc-list,.guide-toc{display:none!important}
}

/* ─── Map Phase 10p2 ──────────────────────────────────────────── */
#view-map{padding:0 0 60px}
.map-header{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;margin-bottom:14px;padding:14px 16px;background:var(--s2);border:1px solid var(--bdr);border-radius:12px}
.map-title{font-size:18px;font-weight:800}
.map-subtitle{font-size:12px;color:var(--sec);margin-top:3px}
.map-header-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-right:auto}
.map-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px;padding:12px 14px;background:var(--s2);border:1px solid var(--bdr);border-radius:10px}
.map-filters .fg{margin-bottom:0}
.map-filters label{font-size:11px;margin-bottom:3px}
.map-filters select,.map-filters input[type=text]{font-size:12px;padding:5px 8px}
.map-wrap{position:relative;z-index:0;border-radius:10px;overflow:hidden;border:1px solid var(--bdr)}
#map-canvas{height:560px;width:100%;background:var(--s2)}
.map-error-msg{display:flex;align-items:center;justify-content:center;height:100%;color:var(--red);font-size:14px;padding:20px}
.map-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--s2);border:1px solid var(--bdr);border-radius:8px;padding:12px 20px;font-size:13px;color:var(--sec);z-index:500;text-align:center;pointer-events:none}
.map-count-badge{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.6);color:#fff;font-size:11px;padding:4px 10px;border-radius:20px;z-index:500;pointer-events:none}
.map-links-count{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;border:1px solid rgba(14,165,233,.35);background:rgba(14,165,233,.1);color:var(--bluel);border-radius:7px;font-size:11px;font-weight:700}
.map-topology-legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:10px 12px;color:var(--sec);font-size:11px}
.map-topology-legend span{display:inline-flex;align-items:center;gap:6px}
.map-topology-legend i{display:inline-block;flex:0 0 auto}
.legend-tower,.legend-device{width:10px;height:10px;border-radius:50%}
.legend-tower{background:#2563eb}
.legend-device{background:#10b981}
.legend-link{width:26px;height:3px;background:#0ea5e9;position:relative}
.legend-link:after{content:"";position:absolute;left:-1px;top:-4px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:7px solid #0ea5e9}
.map-missing-panel{background:var(--s2);border:1px solid var(--bdr);border-radius:10px;padding:14px 16px;margin-top:12px}
.map-missing-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 10px;background:var(--s3);border-radius:7px;font-size:12px}
.map-missing-item>span:first-child{font-weight:600;flex:1;min-width:120px}
.map-missing-item>span:nth-child(2){color:var(--sec);flex:1;min-width:100px}
/* Leaflet map markers */
.map-marker{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);font-size:18px;box-shadow:0 2px 6px rgba(0,0,0,.35);cursor:pointer}
.map-marker>*{transform:rotate(45deg)}
.map-marker-tower{background:rgba(37,99,235,.85);border:2px solid #2563eb}
.map-marker-device{background:rgba(16,185,129,.85);border:2px solid #10b981}
.map-marker-dev-active{background:rgba(16,185,129,.85);border:2px solid #10b981}
.map-marker-dev-maint{background:rgba(245,158,11,.85);border:2px solid #f59e0b}
.map-marker-dev-inactive{background:rgba(107,114,128,.7);border:2px solid #6b7280}
.tower-feed-line{stroke-linecap:round}
.tower-link-direction{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:#fff;background:#0369a1;border:2px solid #e0f2fe;border-radius:50%;box-shadow:0 2px 7px rgba(3,105,161,.35);font-size:14px;font-weight:900;line-height:1}
/* Map Popup */
.map-popup .leaflet-popup-content-wrapper{background:var(--s1);color:var(--fg);border:1px solid var(--bdr);border-radius:10px;box-shadow:0 4px 20px rgba(0,0,0,.25)}
.map-popup .leaflet-popup-tip{background:var(--s1)}
.mp-header{margin-bottom:6px}
.mp-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:700}
.mp-badge-tower{background:rgba(37,99,235,.15);color:var(--bluel)}
.mp-badge-device{background:rgba(16,185,129,.15);color:var(--green)}
.mp-title{font-size:14px;font-weight:800;margin-bottom:8px}
.mp-body{font-size:12px;display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.mp-row{display:flex;gap:6px;align-items:flex-start}
.mp-lbl{color:var(--sec);min-width:60px;flex-shrink:0}
.mp-actions{display:flex;flex-wrap:wrap;gap:6px}
.mp-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;border:1px solid var(--bdr);background:var(--s2);color:var(--fg);cursor:pointer;text-decoration:none;white-space:nowrap}
.mp-btn:hover{background:var(--s3)}

/* Tower editor and location picker */
.tower-editor-modal{max-width:860px}
.tower-source-field{padding:13px;margin-bottom:10px;border:1px solid var(--bdr);background:var(--s2);border-radius:8px}
.tower-source-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:9px}
.tower-source-heading>div{display:flex;flex-direction:column;gap:2px}
.tower-source-heading label{font-size:13px;font-weight:800;color:var(--fg)}
.tower-source-heading span{font-size:11px;color:var(--sec)}
.tower-source-count{flex-shrink:0;padding:4px 9px;border:1px solid rgba(14,165,233,.35);background:rgba(14,165,233,.08);color:var(--bluel)!important;border-radius:14px;font-size:11px!important;font-weight:800}
.tower-source-search{width:100%;margin-bottom:8px}
.tower-source-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:220px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:2px 2px 2px 7px}
.tower-gateway-field{margin-top:12px}
.tower-backup-heading{margin-top:12px;margin-bottom:7px}

/* Backup and disaster recovery center */
.backup-status-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.backup-status-card{border:1px solid var(--bdr);background:var(--card);border-radius:13px;padding:13px;display:flex;flex-direction:column;gap:5px}
.backup-status-card span{font-size:11px;color:var(--sec)}
.backup-status-card b{font-size:14px;color:var(--pri);overflow-wrap:anywhere}
.backup-settings-panel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid var(--bdr);background:var(--card);border-radius:14px;padding:14px;margin-bottom:14px}
.backup-settings-title{min-width:220px;display:flex;flex-direction:column;gap:4px;flex:1}
.backup-settings-title small{color:var(--sec);line-height:1.6}
.backup-settings-panel label,.backup-restore-options label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--pri)}
.backup-settings-panel .inp{width:auto;min-width:70px;padding:7px 9px}
.backup-settings-panel input[type=number]{width:74px}
.backup-toggle input,.backup-restore-options input{width:17px;height:17px;accent-color:var(--blue)}
.backup-restore-options{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px;padding:9px 12px;border-radius:10px;background:rgba(28,117,188,.06)}
.backup-progress{position:relative;height:34px;margin-top:12px;border-radius:10px;overflow:hidden;background:rgba(28,117,188,.09);border:1px solid rgba(28,117,188,.2)}
.backup-progress>div{position:absolute;inset:0 auto 0 0;width:0;background:linear-gradient(90deg,#23a77b,#1976d2);transition:width .2s ease}
.backup-progress span{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--pri);z-index:1}
.backup-progress.processing>div{width:35%;animation:backupProgress 1.4s ease-in-out infinite}
@keyframes backupProgress{0%{transform:translateX(-110%)}100%{transform:translateX(390%)}}
.backup-inspection{margin-top:10px;border:1px solid #a9dfc8;background:#effbf5;border-radius:11px;padding:11px 13px;color:#176b4c;font-size:12px;line-height:1.8}
.backup-history{display:flex;gap:8px;overflow-x:auto;margin:0 0 12px;padding-bottom:3px}
.backup-history-item{min-width:190px;border:1px solid var(--bdr);background:var(--card);border-radius:11px;padding:10px;font-size:11px;color:var(--sec)}
.backup-history-item b{display:block;color:var(--pri);margin-bottom:3px}
@media(max-width:760px){.backup-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.backup-settings-panel{align-items:stretch}.backup-settings-title{flex-basis:100%}.backup-settings-panel label{justify-content:space-between}.backup-settings-panel .btn{width:100%}}
.tower-source-option{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:9px;min-width:0;min-height:56px;padding:9px 10px;border:1px solid var(--bdr);background:var(--s1);border-radius:7px;cursor:pointer;transition:border-color .15s,background .15s;position:relative;direction:rtl;text-align:right;overflow:hidden}
.tower-source-option:hover{border-color:rgba(37,99,235,.45)}
.tower-source-option.selected{border-color:rgba(14,165,233,.55);background:rgba(14,165,233,.08)}
.tower-source-option input{position:absolute;inset-inline-start:9px;top:50%;inline-size:17px;block-size:17px;margin:0;transform:translateY(-50%);opacity:0;z-index:2;cursor:pointer}
.tower-source-option-mark{width:17px;height:17px;border:1px solid var(--bdr);background:var(--s1);border-radius:4px;position:relative}
.tower-source-option input:checked+.tower-source-option-mark{border-color:#0ea5e9;background:#0ea5e9}
.tower-source-option input:checked+.tower-source-option-mark:after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:900}
.tower-source-option-copy{display:flex;flex-direction:column;min-width:0;width:100%;gap:2px;overflow:hidden}
.tower-source-option-copy strong{display:block;width:100%;font-size:12px;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.tower-source-option-copy small{display:block;width:100%;font-size:10px;line-height:1.4;color:var(--sec);white-space:normal;overflow-wrap:anywhere}
.tower-source-empty{grid-column:1/-1;padding:12px;text-align:center;color:var(--sec);font-size:12px}
.tower-relation-text{display:block;max-width:210px;font-size:12px;line-height:1.5;white-space:normal}
.tower-relation-text.incoming{color:#0369a1}
.tower-relation-text.outgoing{color:#047857}
.tower-list-filters{display:grid;grid-template-columns:minmax(260px,2fr) repeat(5,minmax(135px,1fr)) auto;gap:8px;align-items:center;margin-bottom:14px;padding:11px;border:1px solid var(--bdr);border-radius:9px;background:var(--s2)}
.tower-list-filters select,.tower-list-filters input{width:100%;min-width:0}
.tower-list-search{position:relative}.tower-list-search>span{position:absolute;inset-inline-start:11px;top:50%;transform:translateY(-50%);color:var(--mut);font-size:19px;pointer-events:none}.tower-list-search input{padding-inline-start:35px}
.tower-filter-count{display:inline-flex;margin-inline-start:7px;padding:3px 8px;border-radius:12px;background:rgba(37,99,235,.09);color:var(--bluel);font-size:11px;font-weight:800}
.tower-health{display:inline-flex;align-items:center;padding:4px 8px;border-radius:13px;font-size:10px;font-weight:800;white-space:nowrap}.tower-health.healthy{background:rgba(16,185,129,.12);color:var(--green)}.tower-health.issues{background:rgba(239,68,68,.12);color:var(--red)}.tower-health.empty{background:rgba(107,114,128,.12);color:var(--mut)}
.gateway-list-filters{display:grid;grid-template-columns:minmax(220px,1fr) 170px auto;gap:8px;align-items:center;margin:10px 0 14px}.gateway-list-filters input,.gateway-list-filters select{width:100%}.gateway-list-filters span{color:var(--sec);font-size:11px}
.compact-list-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;padding:10px;border:1px solid var(--bdr);border-radius:9px;background:var(--s2)}.compact-list-filters input{flex:1 1 260px}.compact-list-filters select{flex:0 1 190px}
.tower-source-preview{display:flex;align-items:center;min-height:38px;padding:8px 11px;margin:-2px 0 12px;border:1px solid var(--bdr);background:var(--s2);color:var(--sec);border-radius:7px;font-size:12px}
.tower-source-preview.linked{border-color:rgba(14,165,233,.4);background:rgba(14,165,233,.08);color:var(--fg)}
.tower-source-preview.warning{border-color:rgba(245,158,11,.4);background:rgba(245,158,11,.08);color:var(--amber)}
.tower-location-section{padding:14px;margin-bottom:14px;border:1px solid var(--bdr);background:var(--s2);border-radius:8px}
.tower-location-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.tower-location-heading>div{display:flex;flex-direction:column;gap:2px}
.tower-location-heading .tower-location-actions{display:flex;flex-direction:row;align-items:center;gap:7px;flex-wrap:wrap}
.tower-location-heading strong{font-size:14px}
.tower-location-heading span{font-size:11px;color:var(--sec)}
.tower-map-url-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-bottom:8px;direction:ltr}
.tower-map-url-row input{width:100%;text-align:left}
.tower-location-status{min-height:20px;margin-bottom:7px;color:var(--sec);font-size:11px}
.tower-location-status.ready{color:var(--green);font-weight:700}
.tower-location-status.error{color:var(--red)}
.tower-gateway-refresh-status{min-height:20px;margin:-2px 0 10px;padding:6px 9px;border-radius:7px;font-size:11px;line-height:1.55;color:var(--sec);background:var(--s2)}
.tower-gateway-refresh-status:empty{display:none}
.tower-gateway-refresh-status.loading{color:var(--sec)}
.tower-gateway-refresh-status.success{color:var(--green);background:rgba(16,185,129,.08);border:1px solid rgba(16,185,129,.2)}
.tower-gateway-refresh-status.warning{color:#a16207;background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.25)}
.tower-picker-map{position:relative;z-index:0;height:320px;width:100%;border:1px solid var(--bdr);border-radius:8px;background:var(--s3);overflow:hidden}
.tower-picker-help{padding-top:7px;color:var(--sec);font-size:11px}
.tower-coordinate-details{margin-top:9px;border-top:1px solid var(--bdr);padding-top:8px}
.tower-coordinate-details summary{cursor:pointer;color:var(--sec);font-size:11px;font-weight:700}
.tower-coordinate-details .form-row{margin-top:9px}
.tower-coordinate-details .fg{margin-bottom:0}
.tower-picker-pin{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:#0f766e;border:3px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 3px 10px rgba(0,0,0,.35)}
.tower-picker-pin:after{content:"";width:7px;height:7px;background:#fff;border-radius:50%}
.tower-picker-source{width:25px;height:25px;display:flex;align-items:center;justify-content:center;background:#2563eb;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 8px rgba(37,99,235,.4);color:#fff;font-size:12px;font-weight:800}
@media(max-width:600px){
  #map-canvas{height:380px}
  .map-header-actions{margin-right:0}
  .map-filters{flex-direction:column}
  .map-topology-legend{gap:10px;padding-inline:4px}
  .tower-editor-modal{max-width:calc(100vw - 18px);padding:16px 12px}
  .tower-source-heading{flex-direction:column}
  .tower-source-options{grid-template-columns:1fr;max-height:240px;padding-inline-end:7px}
  .tower-source-option{min-height:54px;padding:9px}
  .tower-source-count{align-self:flex-start}
  .tower-location-heading{align-items:flex-start;flex-direction:column}
  .tower-location-heading .btn{width:100%}
  .tower-location-heading .tower-location-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .tower-map-url-row{grid-template-columns:1fr;direction:rtl}
  .tower-map-url-row input{direction:ltr}
  .tower-map-url-row .btn{width:100%}
  .tower-picker-map{height:280px}
  .tower-list-filters{grid-template-columns:1fr 1fr;padding:9px}.tower-list-search{grid-column:1/-1}.tower-list-filters .btn{grid-column:1/-1}
  .gateway-list-filters{grid-template-columns:1fr}.gateway-list-filters span{text-align:center}
  .compact-list-filters>*{flex:1 1 100%!important;width:100%}
}
@media(min-width:601px) and (max-width:1180px){.tower-list-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.tower-list-search{grid-column:span 2}}
/* Device connectivity and management */
.device-ip-link{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:5px 9px;border:1px solid rgba(37,99,235,.28);border-radius:7px;color:var(--bluel);background:rgba(37,99,235,.07);cursor:pointer;white-space:nowrap}
.device-ip-link:hover{border-color:var(--blue);background:rgba(37,99,235,.13)}
.device-ip-link code,.device-ip-code{color:inherit;font-size:12px;direction:ltr;unicode-bidi:isolate}
.connectivity-badge{display:inline-flex;align-items:center;gap:5px;color:var(--status-color,var(--mut));font-size:12px;font-weight:700;white-space:nowrap}
.detail-connectivity{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;margin-bottom:4px;border:1px solid var(--bdr);border-inline-start:4px solid var(--status-color);border-radius:8px;background:var(--s2)}
.detail-connectivity-note{display:block;margin-top:4px;color:var(--mut);font-size:11px}
.detail-connectivity-actions{display:flex;gap:8px;flex-wrap:wrap}
.field-hint{margin-top:6px;color:var(--mut);font-size:11px;line-height:1.7}
@media(max-width:600px){.detail-connectivity{align-items:stretch;flex-direction:column}.detail-connectivity-actions>.btn{flex:1 1 0}}
.wireless-panel{grid-column:1/-1;border:1px solid var(--bdr);border-radius:14px;background:var(--s1);padding:14px;overflow:hidden}.wireless-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.wireless-head>div{display:grid;gap:3px}.wireless-head b{font-size:14px;color:var(--pri)}.wireless-head small{font-size:10px;color:var(--mut)}.wireless-radio-grid{display:grid;grid-template-columns:repeat(6,minmax(92px,1fr));gap:8px;margin-bottom:14px}.wireless-metric{display:grid;gap:5px;padding:10px;border:1px solid var(--bdr);border-radius:10px;background:var(--s2)}.wireless-metric small,.wireless-value small{color:var(--mut);font-size:9px}.wireless-metric strong{color:var(--pri);font-size:14px}.wireless-stations-head{display:flex;align-items:center;gap:7px;margin-bottom:8px;color:var(--pri);font-size:12px}.wireless-stations-head span{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:999px;background:rgba(37,99,235,.12);color:var(--blue);font-weight:800}.wireless-stations{display:grid;gap:7px}.wireless-station{display:grid;grid-template-columns:minmax(155px,1.5fr) repeat(4,minmax(105px,1fr)) auto;align-items:center;gap:8px;padding:10px;border:1px solid var(--bdr);border-radius:11px;background:var(--s2)}.wireless-station-name{display:grid;min-width:0}.wireless-station-name span{font-weight:800;color:var(--pri);overflow:hidden;text-overflow:ellipsis}.wireless-station-name small{font-size:9px;color:var(--mut);overflow:hidden;text-overflow:ellipsis}.wireless-value{display:grid;gap:3px}.wireless-value b{font-size:11px}.wireless-station-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.wireless-notice{padding:18px;text-align:center;border:1px dashed var(--bdr);border-radius:10px;color:var(--sec);font-size:12px}.wireless-notice.error{color:var(--red);background:rgba(239,68,68,.08)}.good{color:var(--green)!important}.warn{color:var(--amber)!important}.bad{color:var(--red)!important}.neutral{color:var(--sec)!important}.btn-xs{padding:5px 8px;font-size:9px}
@media(max-width:900px){.wireless-radio-grid{grid-template-columns:repeat(3,1fr)}.wireless-station{grid-template-columns:minmax(150px,1.5fr) repeat(2,1fr)}.wireless-station .btn{grid-column:auto}.wireless-value:nth-of-type(4),.wireless-value:nth-of-type(5){grid-row:2}}
@media(max-width:600px){.wireless-panel{padding:11px}.wireless-head{align-items:stretch;flex-direction:column}.wireless-head .btn{width:100%}.wireless-radio-grid{grid-template-columns:repeat(2,1fr)}.wireless-station{grid-template-columns:1fr 1fr}.wireless-station-name{grid-column:1/-1}.wireless-station-actions{grid-column:1/-1}.wireless-station-actions .btn{width:100%}.wireless-value:nth-of-type(4),.wireless-value:nth-of-type(5){grid-row:auto}}
.device-frequency-control{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin:2px 0 14px;border:1px solid rgba(37,99,235,.26);border-radius:12px;background:rgba(37,99,235,.055)}.device-frequency-control.hide{display:none}.device-frequency-status{display:grid;gap:3px}.device-frequency-status span{font-size:10px;color:var(--mut)}.device-frequency-status strong{font-size:15px;color:var(--pri)}.device-frequency-status small{font-size:9px;color:var(--sec)}.device-frequency-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}@media(max-width:600px){.device-frequency-control{align-items:stretch;flex-direction:column}.device-frequency-actions{display:grid;grid-template-columns:1fr 1fr}.device-frequency-actions .btn{width:100%}}
@media(max-width:850px){.ops-grid{grid-template-columns:1fr!important}}
@media print{#view-map .map-wrap,#view-map .map-filters,.map-header-actions{display:none!important}}

/* Device type manager */
.device-types-intro{margin:-5px 0 14px;color:var(--sec);font-size:12px;line-height:1.7}
.form-error{margin-bottom:12px;padding:10px 12px;border:1px solid rgba(239,68,68,.35);border-radius:7px;background:rgba(239,68,68,.1);color:var(--red);font-size:12px;font-weight:700}
.device-type-editor{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;margin-bottom:14px}
.device-type-editor input{width:100%;min-width:0}
.device-types-list{max-height:430px;overflow:auto;border-block:1px solid var(--bdr)}
.device-type-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;min-height:62px;padding:10px 4px;border-bottom:1px solid var(--bdr)}
.device-type-row:last-child{border-bottom:0}
.device-type-row.is-inactive{opacity:.65}
.device-type-main{display:flex;min-width:0;flex-direction:column;gap:3px}
.device-type-main strong{font-size:13px;overflow-wrap:anywhere}
.device-type-main span{color:var(--sec);font-size:11px}
.device-type-actions{display:flex;align-items:center;gap:6px}
.device-type-delete{color:var(--red)}
.device-types-empty{padding:24px;text-align:center;color:var(--mut);font-size:13px}
@media(max-width:600px){
  .device-type-editor{grid-template-columns:1fr 1fr}
  .device-type-editor input{grid-column:1/-1}
  .device-type-row{grid-template-columns:1fr;align-items:stretch;padding:12px 2px}
  .device-type-actions{justify-content:flex-start}
  .device-type-actions .btn{flex:1}
}
/* Employee custody — warehouse/device chain */
.custody-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.custody-page-title{display:block;font-size:19px;font-weight:850;color:var(--pri)}
.custody-page-head p{max-width:720px;margin:5px 0 0;color:var(--sec);font-size:12px;line-height:1.7}
.custody-head-actions{display:flex;flex-wrap:wrap;gap:8px}
.custody-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:13px}
.custody-summary-grid article{padding:13px 15px;border:1px solid var(--bdr);border-radius:10px;background:var(--s2)}
.custody-summary-grid small{display:block;color:var(--mut);font-size:11px}
.custody-summary-grid strong{display:block;margin-top:5px;color:var(--pri);font-size:23px}
.delivery-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.delivery-summary-grid .delivery-unit-stat{grid-column:span 2}
.delivery-summary-grid .delivery-unit-stat strong{font-size:18px;line-height:1.5}
.delivery-pending-stat{border-color:rgba(245,158,11,.4)!important;background:rgba(245,158,11,.07)!important}
.custody-filter-bar{display:grid;grid-template-columns:minmax(230px,1.5fr) repeat(4,minmax(145px,.75fr));gap:9px;align-items:end;margin-bottom:13px;padding:12px;border:1px solid var(--bdr);border-radius:10px;background:var(--s2)}
.delivery-filter-bar{grid-template-columns:minmax(240px,1.55fr) repeat(6,minmax(125px,.72fr))}
.custody-filter-bar label{display:grid;gap:5px}
.custody-filter-bar label>span{color:var(--sec);font-size:11px;font-weight:750}
.custody-filter-bar input,.custody-filter-bar select{min-height:39px;background:var(--s1)}
.custody-table .custody-main{display:grid;gap:3px;min-width:165px}
.custody-table .custody-main small{color:var(--mut);font-size:11px}
.custody-progress{min-width:145px}
.custody-progress-track{height:7px;overflow:hidden;border-radius:999px;background:var(--bdr)}
.custody-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--amber),var(--blue))}
.custody-progress small{display:block;margin-top:5px;color:var(--sec);font-size:11px}
.custody-row-actions{display:flex;flex-wrap:wrap;gap:5px;min-width:245px}
.custody-row-actions .btn{padding:6px 9px;font-size:11px}
.badge-warn{color:var(--amber);background:rgba(245,158,11,.13)}
.badge-ok{color:var(--green);background:rgba(16,185,129,.13)}
.custody-serials{display:grid;gap:2px;color:var(--sec);font-size:11px}
.custody-card-list{display:none}
.custody-modal-note,.custody-inline-info{margin-bottom:12px;padding:10px 13px;border:1px solid rgba(59,130,246,.24);border-radius:8px;color:var(--sec);background:rgba(59,130,246,.08);font-size:12px;line-height:1.7}
.custody-modal-error{margin-bottom:12px;padding:10px 13px;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:var(--red);background:rgba(239,68,68,.1);font-size:12px}
.custody-detail-head{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:14px}
.custody-detail-head div{padding:10px;border:1px solid var(--bdr);border-radius:8px;background:var(--s2)}
.custody-detail-head small{display:block;color:var(--mut);font-size:10px}
.custody-detail-head strong{display:block;margin-top:4px;font-size:13px}
.custody-timeline{display:grid;gap:9px}
.custody-event{display:grid;grid-template-columns:92px 1fr auto;gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--bdr);border-radius:9px;background:var(--s2)}
.custody-event-type{font-weight:800;color:var(--blue)}
.custody-event p{margin:0;color:var(--sec);font-size:12px;line-height:1.6}
.custody-event time{color:var(--mut);font-size:10px;white-space:nowrap}
.delivery-phone{color:var(--blue);font-size:12px;text-decoration:none;direction:ltr;text-align:right;width:max-content}
.delivery-phone:hover{text-decoration:underline}
.custody-payment-row{align-items:end}
.custody-payment-preview{margin-top:9px;padding:11px 13px;border:1px solid rgba(59,130,246,.24);border-radius:9px;background:rgba(59,130,246,.08);color:var(--blue);font-size:13px;font-weight:850;text-align:center}
.delivery-payment{display:inline-block;color:var(--green);font-size:12px;line-height:1.6;white-space:nowrap}
.deliveries-table table{min-width:1320px}
.delivery-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}
.delivery-card-grid span{padding:8px;border-radius:8px;background:var(--s2);border:1px solid var(--bdr)}
.delivery-card-grid small,.delivery-card-grid strong{display:block}
.delivery-card-grid small{color:var(--mut);font-size:10px;margin-bottom:3px}
.delivery-card-grid strong{color:var(--pri);font-size:12px}
.delivery-notes{margin:9px 0 0;color:var(--sec);font-size:11px;line-height:1.6}
.delivery-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;padding-top:9px;border-top:1px solid var(--bdr)}
.delivery-card footer time{color:var(--mut);font-size:10px}
.delivery-collection{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.delivery-collected-by{display:block;color:var(--mut);font-size:10px;line-height:1.5;margin-top:3px}
@media(max-width:1050px){.custody-filter-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.custody-search-field{grid-column:span 2}}
@media(max-width:700px){.custody-page-head{flex-direction:column}.custody-head-actions,.custody-head-actions .btn{width:100%}.custody-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.delivery-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.delivery-summary-grid .delivery-unit-stat{grid-column:1/-1}.custody-summary-grid article{padding:10px}.custody-summary-grid strong{font-size:19px}.custody-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.custody-search-field{grid-column:1/-1}.custody-table{display:none}.custody-card-list{display:grid;gap:10px}.custody-mobile-card{padding:13px;border:1px solid var(--bdr);border-radius:10px;background:var(--s1)}.custody-mobile-card header{display:flex;justify-content:space-between;gap:8px;margin-bottom:9px}.custody-mobile-card .custody-row-actions{min-width:0;margin-top:11px}.custody-mobile-card .custody-row-actions .btn{flex:1}.custody-event{grid-template-columns:1fr}.custody-event time{white-space:normal}}

/* Integrated warehouse stocktaking */
.stocktake-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.stocktake-head strong{display:block;color:var(--pri);font-size:20px;font-weight:900}
.stocktake-head p{max-width:760px;margin:5px 0 0;color:var(--sec);font-size:12px;line-height:1.7}
.stocktake-filter-bar{display:grid;grid-template-columns:minmax(250px,1.6fr) minmax(170px,.8fr) minmax(150px,.7fr) auto;gap:9px;align-items:end;margin-bottom:12px;padding:12px;border:1px solid var(--bdr);border-radius:11px;background:var(--s2)}
.stocktake-filter-bar label{display:grid;gap:5px}.stocktake-filter-bar label>span{color:var(--sec);font-size:11px;font-weight:750}
.stocktake-overview,.stocktake-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:12px}
.stocktake-overview article,.stocktake-summary-grid article{min-width:0;padding:11px 12px;border:1px solid var(--bdr);border-radius:10px;background:var(--s1)}
.stocktake-overview small,.stocktake-summary-grid small{display:block;color:var(--mut);font-size:10px}.stocktake-overview strong,.stocktake-summary-grid strong{display:block;margin-top:4px;color:var(--pri);font-size:18px;overflow-wrap:anywhere}
.stocktake-note{margin-bottom:12px;padding:10px 13px;border:1px solid rgba(59,130,246,.25);border-radius:9px;background:rgba(59,130,246,.07);color:var(--sec);font-size:12px;line-height:1.7}
.stocktake-session-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.stocktake-session-card{padding:14px;border:1px solid var(--bdr);border-radius:12px;background:var(--s1);cursor:pointer;transition:.15s}
.stocktake-session-card:hover{border-color:var(--blue);transform:translateY(-1px)}
.stocktake-session-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.stocktake-session-card h4{margin:0;color:var(--pri);font-size:14px}.stocktake-session-card p{margin:4px 0 0;color:var(--sec);font-size:11px}
.stocktake-session-progress{height:6px;margin:11px 0 7px;overflow:hidden;border-radius:999px;background:var(--bdr)}.stocktake-session-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--green))}
.stocktake-session-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;color:var(--mut);font-size:10px}
.stocktake-detail-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:13px}.stocktake-detail-actions{display:flex;flex-wrap:wrap;gap:7px}
.stocktake-stale{margin-bottom:12px;padding:11px 13px;border:1px solid rgba(245,158,11,.35);border-radius:9px;background:rgba(245,158,11,.1);color:var(--amber);font-size:12px;font-weight:750}
.stocktake-item-main{display:grid;gap:3px;min-width:160px}.stocktake-item-main small{color:var(--mut);font-size:10px}
.stocktake-qty{font-weight:800;text-align:center}.stocktake-muted{color:var(--mut);font-size:11px;text-align:center}.stocktake-live-change{color:var(--amber);font-size:10px;font-weight:800}
@media(max-width:900px){.stocktake-summary-grid,.stocktake-overview{grid-template-columns:repeat(3,minmax(0,1fr))}.stocktake-filter-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.stocktake-search{grid-column:1/-1}}
@media(max-width:650px){.stocktake-head{flex-direction:column}.stocktake-head .btn{width:100%}.stocktake-filter-bar{grid-template-columns:1fr}.stocktake-search{grid-column:auto}.stocktake-overview,.stocktake-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stocktake-session-grid{grid-template-columns:1fr}.stocktake-detail-actions,.stocktake-detail-actions .btn{width:100%}.stocktake-table{min-width:1080px}}

/* Interactive statistics dashboard */
.stats-controls{display:grid;grid-template-columns:minmax(260px,2fr) repeat(6,minmax(135px,1fr)) auto;gap:9px;align-items:center;background:var(--s1);border:1px solid var(--bdr);border-radius:13px;padding:12px;margin-bottom:12px}
.stats-controls select,.stats-controls input{min-width:0}
.stats-search{display:flex;align-items:center;gap:7px;border:1px solid var(--bdr);background:var(--s2);border-radius:8px;padding:0 10px}
.stats-search:focus-within{border-color:var(--blue)}
.stats-search input{border:0;background:transparent;padding:9px 0;width:100%;outline:0;color:var(--pri)}
.stats-live-toggle{display:flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;color:var(--sec);font-size:11px;cursor:pointer}
.stats-live-toggle input{display:none}
.stats-live-dot{width:8px;height:8px;border-radius:50%;background:var(--mut)}
.stats-live-toggle input:checked+.stats-live-dot{background:var(--green);box-shadow:0 0 0 4px rgba(16,185,129,.12);animation:statsPulse 1.8s infinite}
@keyframes statsPulse{50%{box-shadow:0 0 0 7px rgba(16,185,129,0)}}
.stats-filter-summary{margin-bottom:12px;padding:8px 12px;border-radius:9px;background:rgba(37,99,235,.08);border:1px solid rgba(37,99,235,.22);color:var(--bluel);font-size:12px}
.interactive-stat-card{cursor:pointer;position:relative;transition:transform .16s,border-color .16s,box-shadow .16s;overflow:hidden}
.interactive-stat-card::after{content:'عرض التفاصيل';position:absolute;left:12px;bottom:9px;color:var(--mut);font-size:9px;opacity:0;transition:opacity .16s}
.interactive-stat-card:hover,.interactive-stat-card:focus-visible{transform:translateY(-2px);border-color:rgba(59,130,246,.45);box-shadow:0 8px 20px rgba(2,10,25,.12);outline:0}
.interactive-stat-card:hover::after,.interactive-stat-card:focus-visible::after{opacity:1}
.stats-click-row{cursor:pointer;transition:background .15s}
.stats-click-row:hover td{background:var(--row-hover)}
.stats-click-row td:first-child::after{content:' ←';color:var(--mut);font-size:10px}
.stats-drilldown{background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:16px;margin-top:16px;scroll-margin-top:80px}
.stats-drilldown-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}
.stats-drilldown-head strong{font-size:15px}.stats-drilldown-head small{display:block;color:var(--sec);margin-top:2px}
.stats-drilldown-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:9px}
.stats-device-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px;border:1px solid var(--bdr);border-radius:10px;background:var(--s2)}
.stats-device-main{min-width:0}.stats-device-main strong,.stats-device-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stats-device-main small{color:var(--sec);font-size:10px;margin-top:2px}
.stats-empty-detail{text-align:center;padding:30px;color:var(--sec)}
@media(max-width:1180px){.stats-controls{grid-template-columns:repeat(4,minmax(140px,1fr))}.stats-search{grid-column:span 2}.stats-live-toggle{grid-column:span 2}}
@media(max-width:700px){.stats-controls{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px}.stats-search{grid-column:1/-1}.stats-live-toggle{grid-column:1/-1}.interactive-stat-card::after{display:none}.stats-drilldown-grid{grid-template-columns:1fr}}
@media(max-width:430px){.custody-filter-bar,.custody-summary-grid{grid-template-columns:1fr}.custody-search-field{grid-column:1}.custody-detail-head{grid-template-columns:1fr}}
/* Subscriber receivables and installment payments */
.custody-payment-preview{display:flex;flex-direction:column;gap:5px}
.custody-payment-preview span{font-size:12px;color:var(--sec)}
.custody-sale-terms{margin-top:12px;padding:13px;border:1px solid var(--bdr);border-radius:12px;background:var(--s2)}
.delivery-overdue-stat{border-color:rgba(239,68,68,.35)!important}
.delivery-overdue-stat strong,.delivery-balance{color:var(--red)!important}
.delivery-financial{display:flex;flex-direction:column;gap:3px;white-space:nowrap}
.delivery-financial small{font-size:11px;color:var(--sec)}
.delivery-payment-summary{padding:14px;border-radius:12px;background:var(--s2);border:1px solid var(--bdr);margin-bottom:14px}
.delivery-payment-summary>strong{display:block;font-size:16px;margin-bottom:8px}
.delivery-payment-summary>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;font-size:12px}
.delivery-payment-history{margin-top:16px;border-top:1px solid var(--bdr);padding-top:12px;max-height:250px;overflow:auto}
.delivery-payment-history h3{font-size:14px;margin:0 0 8px}
.delivery-payment-history article{display:grid;grid-template-columns:1fr auto;gap:4px 14px;padding:10px 4px;border-bottom:1px solid var(--bdr)}
.delivery-payment-history article>div{display:flex;flex-direction:column;gap:2px}
.delivery-payment-history article>div:last-of-type{text-align:left}
.delivery-payment-history article small,.delivery-payment-history article time{font-size:11px;color:var(--sec)}
.delivery-payment-history article p{grid-column:1/-1;margin:1px 0 0;font-size:12px;color:var(--sec)}
@media(max-width:640px){.delivery-payment-summary>div{grid-template-columns:1fr}.delivery-payment-history{max-height:210px}}

/* Warehouse reports */
.whr-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:18px}
.whr-head h2{margin:3px 0 4px;font-size:24px;color:var(--pri)}.whr-head p{margin:0;color:var(--sec);font-size:13px}
.whr-eyebrow{color:var(--bluel);font-size:11px;font-weight:800;letter-spacing:.06em}.whr-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.whr-tabs{display:flex;gap:7px;overflow-x:auto;padding:4px 2px 10px;margin-bottom:10px;scrollbar-width:thin}
.whr-tab{flex:0 0 auto;border:1px solid var(--bdr);background:var(--s2);color:var(--sec);border-radius:999px;padding:9px 14px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:.18s ease}
.whr-tab:hover{border-color:var(--bluel);color:var(--pri)}.whr-tab.active{background:linear-gradient(135deg,var(--blue),var(--bluel));border-color:transparent;color:#fff;box-shadow:0 7px 18px rgba(37,99,235,.18)}
.whr-filters{display:grid;grid-template-columns:minmax(230px,1.7fr) repeat(4,minmax(140px,1fr)) auto;gap:10px;align-items:end;background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:13px;margin-bottom:16px}
.whr-filters label{display:flex;flex-direction:column;gap:5px;color:var(--mut);font-size:11px;font-weight:700}.whr-filters input,.whr-filters select{width:100%;height:40px;margin:0;background:var(--s2)}
.whr-multi{position:relative;width:100%}.whr-multi summary{display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 11px;border:1px solid var(--bdr);border-radius:8px;background:var(--s2);color:var(--pri);font-size:12px;cursor:pointer;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.whr-multi summary::-webkit-details-marker{display:none}.whr-multi summary:after{content:'⌄';color:var(--mut);font-size:14px}.whr-multi[open] summary{border-color:var(--bluel)}
.whr-multi-menu{position:absolute;z-index:40;inset-inline:0;top:44px;max-height:270px;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:9px;background:var(--s1);border:1px solid var(--bdr);border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,.18)}.whr-multi-menu label{display:flex!important;flex-direction:row!important;align-items:center;gap:7px!important;padding:7px 8px;border-radius:7px;color:var(--sec)!important;font-size:11px!important;cursor:pointer}.whr-multi-menu label:hover{background:var(--s2)}.whr-multi-menu input{width:16px!important;height:16px!important;accent-color:var(--blue)}.whr-multi-all{border:0;background:rgba(37,99,235,.09);color:var(--bluel);border-radius:7px;padding:7px;font:inherit;font-size:10px;font-weight:800;cursor:pointer}
.whr-filter-actions{display:flex;gap:7px;padding-bottom:1px}.whr-loading{min-height:180px;display:flex;gap:10px;align-items:center;justify-content:center;color:var(--sec)}.whr-output{min-height:220px}
.whr-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:10px;margin-bottom:12px}
.whr-stat{display:flex;align-items:center;gap:11px;min-height:82px;padding:13px;background:var(--s1);border:1px solid var(--bdr);border-radius:14px;position:relative;overflow:hidden}.whr-stat:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:currentColor}
.whr-stat>span{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:currentColor;font-size:18px;filter:saturate(.85)}.whr-stat>div{display:flex;flex-direction:column}.whr-stat b{font-size:20px;color:var(--pri);line-height:1.15}.whr-stat small{color:var(--sec);font-size:10px;margin-top:3px}
.whr-blue{color:#3b82f6}.whr-green{color:#10b981}.whr-amber{color:#f59e0b}.whr-purple{color:#8b5cf6}.whr-red{color:#ef4444}.whr-cyan{color:#06b6d4}
.whr-balance-strip{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.whr-balance-strip>div{display:flex;flex-direction:column;gap:5px;background:linear-gradient(135deg,rgba(37,99,235,.1),rgba(16,185,129,.08));border:1px solid rgba(37,99,235,.18);border-radius:14px;padding:14px 16px}.whr-balance-strip small{color:var(--sec)}.whr-balance-strip strong{color:var(--pri);font-size:15px}
.whr-attention{background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:14px;margin-bottom:16px}.whr-attention h3,.whr-section-title h3{margin:0;font-size:15px;color:var(--pri)}.whr-attention>div{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.whr-attention button{display:flex;align-items:center;gap:8px;border:1px solid rgba(239,68,68,.18);background:rgba(239,68,68,.07);color:var(--sec);border-radius:10px;padding:9px 12px;cursor:pointer}.whr-attention button b{color:var(--red);font-size:16px}
.whr-section-title{display:flex;justify-content:space-between;align-items:end;margin:0 2px 10px}.whr-section-title p{margin:3px 0 0;color:var(--mut);font-size:11px}.whr-warehouse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.whr-warehouse-card{background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:14px}.whr-warehouse-card header{display:flex;justify-content:space-between;gap:10px;align-items:start}.whr-warehouse-card header div{display:flex;flex-direction:column}.whr-warehouse-card small{color:var(--mut);font-size:10px}.whr-warehouse-card strong{color:var(--pri)}.whr-count{font-size:10px;color:var(--bluel);background:rgba(37,99,235,.1);padding:5px 8px;border-radius:99px}.whr-warehouse-card p{margin:13px 0;color:var(--sec);font-size:12px;min-height:20px}.whr-warehouse-card footer{border-top:1px solid var(--bdr);padding-top:9px;color:var(--green);font-size:11px}.whr-warehouse-card footer.has-alert{color:var(--amber)}
.whr-table{background:var(--s1);border:1px solid var(--bdr);border-radius:14px}.whr-table table{min-width:820px}.whr-table th{white-space:nowrap}.whr-table td{vertical-align:middle}.whr-cell-note{display:block;color:var(--mut);font-size:10px;margin-top:3px}.whr-danger{color:var(--red)!important}.whr-ok{color:var(--green)!important}.whr-empty{background:var(--s1);border:1px dashed var(--bdr);border-radius:14px;min-height:180px}
.whr-duplicate-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.whr-duplicate-list article{background:var(--s1);border:1px solid rgba(245,158,11,.25);border-radius:14px;padding:14px}.whr-duplicate-list header{color:var(--amber);font-size:11px;font-weight:800;margin-bottom:9px}.whr-duplicate-list article div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--bdr)}.whr-duplicate-list span{color:var(--mut);font-size:11px}
@media(max-width:1200px){.whr-summary-grid{grid-template-columns:repeat(3,1fr)}.whr-filters{grid-template-columns:repeat(3,1fr)}.whr-search{grid-column:span 2}}
@media(max-width:680px){.whr-head{align-items:flex-start}.whr-head h2{font-size:20px}.whr-head p{max-width:250px}.whr-head-actions{flex-direction:column}.whr-filters{grid-template-columns:1fr 1fr;padding:10px}.whr-search{grid-column:1/-1}.whr-filter-actions{grid-column:1/-1}.whr-filter-actions .btn{flex:1}.whr-multi-menu{position:fixed;inset-inline:14px;top:22%;grid-template-columns:1fr 1fr;max-height:50vh}.whr-summary-grid{grid-template-columns:1fr 1fr}.whr-stat{min-height:76px;padding:11px}.whr-stat b{font-size:18px}.whr-balance-strip{grid-template-columns:1fr}.whr-warehouse-grid{grid-template-columns:1fr}.whr-tabs{margin-inline:-8px;padding-inline:8px}}
@media print{body.printing-wh-report *{visibility:hidden!important}body.printing-wh-report #view-wh-reports,body.printing-wh-report #view-wh-reports *{visibility:visible!important}body.printing-wh-report #view-wh-reports{position:absolute;inset:0;padding:0;background:#fff;color:#111}body.printing-wh-report .whr-tabs,body.printing-wh-report .whr-filters,body.printing-wh-report .whr-head-actions{display:none!important}}

/* Warehouse balances */
.wh-stock-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:15px}.wh-stock-head h2{margin:3px 0 4px;font-size:24px;color:var(--pri)}.wh-stock-head p{margin:0;color:var(--sec);font-size:12px}.wh-stock-eyebrow{color:var(--bluel);font-size:10px;font-weight:850;letter-spacing:.05em}.wh-stock-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.wh-stock-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;margin-bottom:12px}.wh-stock-summary article{display:flex;align-items:center;gap:11px;min-height:78px;padding:12px 14px;border:1px solid var(--bdr);border-radius:14px;background:var(--s1)}.wh-stock-summary article>span{display:grid;place-items:center;width:39px;height:39px;border-radius:11px;background:rgba(37,99,235,.1);font-size:18px}.wh-stock-summary article.has-alert>span{background:rgba(239,68,68,.1)}.wh-stock-summary article div{display:flex;flex-direction:column}.wh-stock-summary strong{color:var(--pri);font-size:20px;line-height:1.1}.wh-stock-summary .has-alert strong{color:var(--red)}.wh-stock-summary small{color:var(--sec);font-size:10px;margin-top:4px}
.wh-stock-filters{display:grid;grid-template-columns:minmax(260px,1.7fr) repeat(4,minmax(135px,1fr));gap:9px;align-items:end;padding:12px;border:1px solid var(--bdr);border-radius:14px;background:var(--s1);margin-bottom:10px}.wh-stock-filters label{display:flex;flex-direction:column;gap:5px;color:var(--sec);font-size:10px;font-weight:750}.wh-stock-filters input,.wh-stock-filters select{height:40px;margin:0;background:var(--s2)}
.wh-stock-unit-strip{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-height:42px;padding:8px 11px;margin-bottom:12px;border:1px solid rgba(37,99,235,.16);border-radius:12px;background:linear-gradient(135deg,rgba(37,99,235,.08),rgba(16,185,129,.05))}.wh-stock-unit-strip span{color:var(--sec);font-size:10px}.wh-stock-unit-strip b{padding:6px 9px;border-radius:999px;background:var(--s1);border:1px solid var(--bdr);color:var(--pri);font-size:11px}
.wh-stock-cards{display:none;gap:9px}.wh-stock-card{width:100%;text-align:inherit;font:inherit;color:inherit;padding:13px;border:1px solid var(--bdr);border-radius:14px;background:var(--s1);cursor:pointer}.wh-stock-card.low{border-color:rgba(245,158,11,.38)}.wh-stock-card.zero{border-color:rgba(239,68,68,.28)}.wh-stock-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}.wh-stock-card header>div{display:flex;flex-direction:column;min-width:0}.wh-stock-card header strong{color:var(--pri);font-size:14px}.wh-stock-card header small{color:var(--mut);font-size:10px;margin-top:3px}.wh-stock-card-qty{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:12px 0;padding:10px;border-radius:10px;background:var(--s2)}.wh-stock-card-qty small{color:var(--sec)}.wh-stock-card-qty b{color:var(--pri)}.wh-stock-card footer{display:flex;justify-content:space-between;gap:8px;color:var(--sec);font-size:10px}
.wh-stock-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:800;white-space:nowrap}.wh-stock-badge.available{background:rgba(16,185,129,.11);color:var(--green)}.wh-stock-badge.low{background:rgba(245,158,11,.12);color:var(--amber)}.wh-stock-badge.zero{background:rgba(239,68,68,.1);color:var(--red)}
.wh-stock-table{border:1px solid var(--bdr);border-radius:14px;background:var(--s1)}.wh-stock-table table{min-width:820px}.wh-stock-row{cursor:pointer}.wh-stock-row:hover{background:rgba(37,99,235,.045)}.wh-stock-row td>small{display:block;color:var(--mut);font-size:9px;margin-top:3px}.wh-stock-result-count{text-align:left;color:var(--mut);font-size:10px;margin-top:7px}.wh-stock-empty{min-height:220px}
.wh-stock-loading{min-height:180px;display:flex;align-items:center;justify-content:center;gap:9px;color:var(--sec)}.wh-stock-detail-meta{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}.wh-stock-detail-meta span{padding:6px 9px;border-radius:999px;background:var(--s2);color:var(--sec);font-size:10px}.wh-stock-detail-balances{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-bottom:16px}.wh-stock-detail-balances article{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:12px;border:1px solid var(--bdr);background:var(--s2)}.wh-stock-detail-balances article>span{color:var(--sec);font-size:10px}.wh-stock-detail-balances article>strong{color:var(--pri)}.wh-stock-detail-balances .wh-stock-badge{align-self:flex-start}.wh-stock-detail-section h3{margin:0 0 9px;color:var(--pri);font-size:14px}.wh-stock-movement{display:grid;grid-template-columns:minmax(160px,1fr) auto auto;gap:10px;align-items:center;padding:10px 4px;border-top:1px solid var(--bdr)}.wh-stock-movement>div{display:flex;flex-direction:column}.wh-stock-movement strong{color:var(--pri);font-size:12px}.wh-stock-movement small,.wh-stock-movement time{color:var(--mut);font-size:9px}.wh-stock-movement>b{color:var(--sec);font-size:11px}
@media(max-width:1000px){.wh-stock-summary{grid-template-columns:repeat(2,1fr)}.wh-stock-filters{grid-template-columns:repeat(2,1fr)}.wh-stock-search{grid-column:1/-1}}
@media(max-width:680px){.wh-stock-head{align-items:flex-start;flex-direction:column}.wh-stock-head-actions,.wh-stock-head-actions .btn{width:100%}.wh-stock-head h2{font-size:20px}.wh-stock-summary{grid-template-columns:repeat(2,1fr)}.wh-stock-summary article{min-height:70px;padding:10px}.wh-stock-summary strong{font-size:18px}.wh-stock-filters{grid-template-columns:1fr 1fr;padding:10px}.wh-stock-table{display:none}.wh-stock-cards{display:grid}.wh-stock-movement{grid-template-columns:1fr auto}.wh-stock-movement time{grid-column:1/-1}.wh-stock-detail-balances{grid-template-columns:1fr}}
@media(max-width:410px){.wh-stock-summary{grid-template-columns:1fr 1fr}.wh-stock-summary article{gap:7px}.wh-stock-summary article>span{width:34px;height:34px}.wh-stock-filters{grid-template-columns:1fr}.wh-stock-search{grid-column:auto}}

/* Procurement */
.procurement-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.procurement-head h2{margin:3px 0 4px}.procurement-head p{margin:0;color:var(--sec);font-size:13px}.procurement-actions,.purchase-detail-actions{display:flex;gap:8px;flex-wrap:wrap}.purchase-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px}.purchase-card{background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:16px;cursor:pointer;transition:.18s}.purchase-card:hover{border-color:var(--blue);transform:translateY(-1px)}.purchase-card header{display:flex;align-items:center;justify-content:space-between;gap:10px}.purchase-card header div{display:grid;gap:3px}.purchase-card header small,.purchase-card footer{color:var(--mut);font-size:11px}.purchase-card-grid,.purchase-detail-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:14px 0}.purchase-card-grid span,.purchase-detail-summary span{display:grid;gap:3px;padding:9px;background:var(--s2);border-radius:9px}.purchase-card-grid small,.purchase-detail-summary small{color:var(--mut);font-size:11px}.purchase-lines-head{display:flex;justify-content:space-between;align-items:center;margin:12px 0 8px}.purchase-line{display:grid;grid-template-columns:minmax(160px,2fr) 95px 120px 120px 38px;gap:7px;margin-bottom:8px}.purchase-total{text-align:left;padding:10px 4px;font-size:15px}.purchase-detail-actions{margin-top:14px}.form-error{background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:10px 14px;color:var(--red);margin-bottom:12px}
@media(max-width:700px){.procurement-head{flex-direction:column}.purchase-line{grid-template-columns:1fr 1fr}.purchase-line select:first-child{grid-column:1/-1}.purchase-line .btn-icon{justify-self:end}.purchase-card-grid,.purchase-detail-summary{grid-template-columns:1fr 1fr}}
.diagnostics-panel{margin-top:22px;padding:16px;border:1px solid var(--bdr);border-radius:16px;background:var(--s1)}
.diagnostics-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.diagnostics-heading>div{display:flex;flex-direction:column;gap:3px}.diagnostics-heading small,.diagnostics-list small{color:var(--sec);font-size:11px}
.diagnostics-list{display:grid;gap:7px}.diagnostics-list article{display:flex;align-items:flex-start;gap:9px;padding:10px;border:1px solid var(--bdr);border-radius:11px;background:var(--bg)}
.diagnostics-list article>div{display:flex;flex-direction:column;gap:3px;min-width:0}.diagnostics-list strong{font-size:12px;overflow-wrap:anywhere}
.diagnostics-icon{display:grid;place-items:center;flex:0 0 24px;height:24px;border-radius:50%;background:#fee2e2;color:#b91c1c;font-weight:900}
.diagnostics-healthy,.diagnostics-error{padding:14px;border-radius:11px;text-align:center;font-size:12px}.diagnostics-healthy{background:#ecfdf5;color:#047857}.diagnostics-error{background:#fef2f2;color:#b91c1c}
/* Operations health and finance hardening */
.ops-health-panel{margin-bottom:14px;padding:12px 14px;border:1px solid var(--bdr);border-radius:12px;background:var(--s1)}
.ops-health-panel.healthy{border-color:rgba(16,185,129,.35);background:rgba(16,185,129,.06)}
.ops-health-panel.warning{border-color:rgba(245,158,11,.4);background:rgba(245,158,11,.07)}
.ops-health-panel.critical{border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.07)}
.ops-health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:8px;margin-top:9px}
.ops-health-grid span{padding:8px;border-radius:8px;background:var(--s2);font-size:12px}
.incident-evidence{margin-top:7px;padding:7px 9px;border-radius:7px;background:var(--s2);font-size:11px;color:var(--sec)}
.payment-reversed{opacity:.62;text-decoration:line-through}
.payment-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}
.installment-row{display:grid;grid-template-columns:60px 1fr 1fr auto;gap:7px;align-items:center;padding:8px 0;border-bottom:1px solid var(--bdr);font-size:12px}
.installment-row:last-child{border-bottom:0}
.wireless-history{margin-top:14px;border-top:1px solid var(--bdr);padding-top:10px}
.wireless-history-alerts{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.wireless-history-alerts span{padding:6px 8px;border-radius:7px;background:rgba(245,158,11,.12);color:var(--amber);font-size:11px}
.wireless-history-chart,.wireless-history-row{padding:9px;border:1px solid var(--bdr);border-radius:9px;background:var(--s2);margin-top:7px}
.wireless-history-chart small{display:block;color:var(--sec);margin-bottom:5px}
.wireless-history-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(130px,2fr) auto;gap:10px;align-items:center}
.wireless-history-row small{display:block;color:var(--sec);margin-top:2px}.wireless-spark{width:100%;height:42px;color:var(--bluel)}
.wireless-muted{font-size:11px;color:var(--mut)}
@media(max-width:600px){.installment-row{grid-template-columns:45px 1fr 1fr}.installment-row .installment-status{grid-column:1/-1}}
@media(max-width:600px){.wireless-history-row{grid-template-columns:1fr auto}.wireless-history-row .wireless-spark{grid-column:1/-1}}
/* Technical platform: anomaly intelligence, API/webhooks and offsite backup */
.technical-page-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:16px}
.technical-page-heading h2,.technical-page-heading h3{margin:0;font-size:20px}.technical-page-heading h3{font-size:16px}
.technical-page-heading p{margin:4px 0 0;color:var(--sec);font-size:12px;line-height:1.7}
.technical-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-bottom:14px}
.technical-card{background:var(--s1);border:1px solid var(--bdr);border-radius:14px;padding:16px;margin-bottom:14px;box-shadow:0 4px 16px rgba(15,23,42,.035)}
.technical-card>h3{font-size:15px;margin:0 0 13px}.technical-inline{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.integration-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0 14px}
.integration-checks label{background:var(--s2);border:1px solid var(--bdr);border-radius:9px;padding:9px;font-size:12px;display:flex;gap:7px;align-items:center}
.integration-secret-once{border:1px solid rgba(245,158,11,.45);background:rgba(245,158,11,.08);border-radius:13px;padding:14px;margin-bottom:14px}
.integration-secret-once p{font-size:11px;color:var(--sec);margin:5px 0 9px}.integration-secret-once code{display:block;direction:ltr;text-align:left;word-break:break-all;background:#0f172a;color:#e2e8f0;padding:10px;border-radius:8px;margin-bottom:9px}
.technical-list{display:flex;flex-direction:column;gap:8px}.technical-list article{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:12px;align-items:center;border:1px solid var(--bdr);background:var(--s2);border-radius:11px;padding:12px}
.technical-list article>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0}.technical-list small{display:block;color:var(--sec);font-size:10px;overflow-wrap:anywhere}
.technical-list-meta{display:flex;flex-direction:column;gap:2px;color:var(--sec);font-size:10px}.technical-actions{display:flex;gap:5px;flex-wrap:wrap}
.technical-table{overflow:auto}.technical-table table{min-width:650px}.technical-table td small{display:block;color:var(--red);font-size:9px;max-width:240px}
.anomaly-panel{margin-top:12px}.anomaly-list{display:flex;flex-direction:column;gap:8px}.anomaly-card{display:grid;grid-template-columns:84px 1fr auto;gap:12px;align-items:center;border:1px solid var(--bdr);border-inline-start:4px solid var(--amber);border-radius:11px;padding:11px;background:var(--s2)}
.anomaly-card.anomaly-critical{border-inline-start-color:var(--red);background:rgba(239,68,68,.055)}.anomaly-card.anomaly-notice{border-inline-start-color:var(--bluel)}
.anomaly-risk{text-align:center}.anomaly-risk b{font-size:22px;color:var(--amber)}.anomaly-critical .anomaly-risk b{color:var(--red)}.anomaly-risk span{display:block;color:var(--mut);font-size:9px}
.anomaly-body{display:flex;flex-direction:column;gap:3px}.anomaly-body>span{font-size:11px;color:var(--sec)}.anomaly-body small{font-size:10px;color:var(--mut)}
.technical-status-card{border:1px solid var(--bdr);background:var(--s1);border-radius:12px;padding:12px;margin:0 0 9px;font-size:12px}.backup-external-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
@media(max-width:650px){.technical-list article,.anomaly-card{grid-template-columns:1fr}.technical-list-meta{flex-direction:row;flex-wrap:wrap}.integration-checks,.technical-inline{grid-template-columns:1fr}.anomaly-risk{text-align:start}.technical-actions{width:100%}}
.tenant-stat{background:var(--s2);border:1px solid var(--bdr);border-radius:9px;padding:9px;text-align:center}.tenant-stat b{display:block;font-size:17px}.tenant-stat small{display:block;color:var(--sec);font-size:10px;margin-top:2px}

/* RADIUS creation/editing: one focused step, a persistent footer, no inline forms. */
.radius-link-modal{max-width:640px;max-height:calc(100dvh - 40px);overflow:auto;overflow-wrap:anywhere}
.radius-link-modal h2{font-size:22px;margin-bottom:12px}
.radius-link-modal p{line-height:1.8}
.radius-link-modal small,.radius-link-caption{color:var(--sec);display:block;line-height:1.8}
.radius-link-modal details{border:1px solid var(--bdr);border-radius:10px;padding:12px;margin:14px 0}
.radius-link-modal summary{cursor:pointer}
.radius-link-modal details .form-row{margin-top:14px}
.radius-link-modal .modal-footer{flex-wrap:wrap;gap:8px}
.radius-link-summary{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;padding:16px;border:1px solid var(--bdr);border-radius:12px}
.radius-link-summary dd{margin:0;text-align:start;overflow-wrap:anywhere}
.radius-link-summary dt{color:var(--sec)}
@media(max-width:600px){.radius-link-modal{padding:18px;max-height:calc(100dvh - 40px)}.radius-link-modal h2{font-size:19px}.radius-link-summary{grid-template-columns:95px minmax(0,1fr);padding:12px}.radius-link-modal .form-row{display:block}}
.radius-editor{max-width:680px;max-height:calc(100dvh - 40px);display:flex;flex-direction:column;padding:0;overflow:hidden}
.rw-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 24px 12px}
.rw-header h2{margin:3px 0 0;font-size:21px}.rw-eyebrow{font-size:11px;color:var(--sec)}
.rw-header button{font-size:22px;min-width:40px;min-height:40px;padding:2px 10px}
.rw-steps{list-style:none;display:flex;gap:8px;margin:0;padding:10px 24px 20px;border-bottom:1px solid var(--bdr)}
.rw-steps li{flex:1;min-width:0;font-size:11px;color:var(--sec);display:flex;align-items:center;gap:6px;line-height:1.6}
.rw-steps li>span{flex:0 0 25px;height:25px;display:grid;place-items:center;border:1px solid var(--bdr);border-radius:50%;background:var(--s2)}
.rw-steps li.active{color:var(--pri);font-weight:800}.rw-steps li.active>span{background:var(--pri);border-color:var(--pri);color:#fff}
.rw-steps li.done>span{border-color:var(--green);color:var(--green)}
#rw-form{display:flex;flex-direction:column;min-height:0}.rw-body{overflow-y:auto;padding:16px 24px 24px;min-height:0}
.rw-panel{min-height:215px}.rw-panel[hidden]{display:none}.rw-panel h3{font-size:16px;margin:0 0 18px}
.rw-panel .fg label{display:block;margin-bottom:7px}.rw-panel input,.rw-panel select{min-height:44px;width:100%;font-size:14px}
.rw-hint{font-size:12px;color:var(--sec);line-height:1.9;margin:7px 0 14px}
#rw-error:empty{display:none}#rw-error{color:var(--red);background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);padding:12px;border-radius:9px;margin:0 0 12px}
.rw-footer{border-top:1px solid var(--bdr);display:flex;gap:8px;align-items:center;padding:14px 24px;background:var(--s1);flex-shrink:0}
.rw-footer button{min-height:42px;min-width:80px}.rw-footer [hidden]{display:none}.rw-spacer{flex:1}
.rw-review{margin:0}.rw-review>div{display:grid;grid-template-columns:135px minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid var(--bdr)}
.rw-review dt{color:var(--sec);font-size:12px}.rw-review dd{margin:0;font-size:13px;font-weight:700;overflow-wrap:anywhere;unicode-bidi:plaintext}
@media(max-width:600px){.radius-editor{max-height:calc(100dvh - 24px)}.rw-header{padding:16px}.rw-steps{padding:8px 16px 15px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.rw-body{padding:14px 16px 20px}.rw-footer{padding:12px 16px;gap:6px}.rw-footer button{min-width:65px;padding:9px 11px}.rw-review>div{grid-template-columns:105px minmax(0,1fr)}.rw-header h2{font-size:19px}}
