:root{
  --bg:#f5f7fb;--panel:#ffffff;--panel2:#f8fafc;--ink:#101828;--muted:#667085;--soft:#98a2b3;--line:#e4e9f1;
  --nav:#0a1222;--nav2:#111d32;--blue:#2563eb;--blue2:#1d4ed8;--green:#067647;--greenbg:#ecfdf3;
  --amber:#b54708;--amberbg:#fffaeb;--red:#b42318;--redbg:#fef3f2;--purple:#5925dc;--shadow:0 10px 28px rgba(16,24,40,.07);
  --r:16px;--r-sm:11px
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}.hidden{display:none!important}

/* Login */
.login-shell{min-height:100vh;background:radial-gradient(circle at 12% 15%,rgba(37,99,235,.48) 0,transparent 28%),radial-gradient(circle at 88% 5%,rgba(14,165,233,.25) 0,transparent 26%),linear-gradient(135deg,#070e1c,#0b1425 60%,#0c1d33);color:#fff;padding:34px 5vw;overflow:hidden}.login-brand,.side-brand{display:flex;align-items:center;gap:12px}.login-brand strong,.side-brand strong{display:block;font-size:18px;letter-spacing:.08em}.login-brand span,.side-brand span{display:block;font-size:12px;opacity:.68}.brand-mark{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:#fff;color:#0b1220;font-weight:900;box-shadow:0 12px 36px rgba(0,0,0,.22)}.brand-mark.small{width:38px;height:38px;border-radius:12px}.login-grid{max-width:1180px;margin:9vh auto 0;display:grid;grid-template-columns:1.2fr .78fr;gap:84px;align-items:center}.eyebrow{display:inline-flex;padding:8px 12px;border:1px solid rgba(255,255,255,.18);border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.14em;color:#d6e2ff;background:rgba(255,255,255,.04)}.login-copy h1{font-size:clamp(42px,5vw,68px);line-height:1.02;letter-spacing:-.045em;margin:22px 0;max-width:760px}.login-copy>p{font-size:18px;line-height:1.65;color:#c5cede;max-width:700px}.login-points{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:38px}.login-points>div{display:flex;align-items:center;gap:11px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);border-radius:14px;padding:12px}.login-point-icon{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.08);display:grid;place-items:center;color:#dbe7ff;flex:0 0 auto}.login-points b{font-size:12px;display:block;color:#fff}.login-points small{font-size:10px;color:#99a9c1;display:block;margin-top:2px;line-height:1.35}.login-card{background:#fff;color:var(--ink);border-radius:24px;padding:30px;box-shadow:0 30px 90px rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.45)}.login-card-head{display:flex;gap:14px;align-items:center;margin-bottom:22px}.login-card h2{margin:0 0 4px;font-size:22px}.login-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.shield-icon{width:46px;height:46px;border-radius:13px;background:#eff6ff;color:var(--blue);display:grid;place-items:center}.shield-icon svg{width:22px;height:22px}.login-card label,.modal label{display:grid;gap:7px;color:#344054;font-weight:700;font-size:12px;margin:14px 0}.login-foot{display:flex;justify-content:space-between;align-items:center;margin-top:18px;font-size:11px;color:#98a2b3}

/* Form controls */
.login-card input,.modal input,.modal select,.modal textarea,.toolbar input,.toolbar select,.filters input,.filters select,.field-input{width:100%;border:1px solid #d6dce7;border-radius:10px;padding:11px 12px;background:#fff;color:var(--ink);outline:none;transition:.15s}.login-card input:focus,.modal input:focus,.modal select:focus,.modal textarea:focus,.toolbar input:focus,.toolbar select:focus,.filters input:focus,.filters select:focus,.field-input:focus{border-color:#7aa4ff;box-shadow:0 0 0 3px rgba(37,99,235,.1)}textarea{resize:vertical}.btn{border:1px solid #d6dce7;background:#fff;color:#344054;border-radius:10px;padding:9px 13px;font-weight:750;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.14s;white-space:nowrap}.btn svg{width:15px;height:15px}.btn:hover{background:#f8fafc;border-color:#c8d0dc}.btn:disabled{opacity:.48;cursor:not-allowed}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.primary:hover{background:var(--blue2)}.btn.danger{background:#fff5f4;border-color:#fecdca;color:var(--red)}.btn.warn{background:var(--amberbg);border-color:#fedf89;color:var(--amber)}.btn.success{background:var(--greenbg);border-color:#abefc6;color:var(--green)}.btn.ghost{background:transparent;border-color:transparent}.btn.full{width:100%;margin-top:10px}.btn.small{padding:7px 9px;font-size:11px;border-radius:8px}

/* App shell */
.app-shell{display:block;min-height:100vh;width:100%}.sidebar{position:fixed;inset:0 auto 0 0;width:258px;background:linear-gradient(180deg,var(--nav),#0c1628);color:#fff;padding:18px 14px;display:flex;flex-direction:column;z-index:30;box-shadow:10px 0 30px rgba(8,15,30,.04)}.side-brand{padding:4px 8px 18px}.side-section{font-size:9px;letter-spacing:.17em;color:#5f718f;padding:16px 11px 7px;font-weight:900}.sidebar nav{display:grid;gap:4px}.sidebar nav button{border:0;background:transparent;color:#9aabc3;display:flex;gap:11px;align-items:center;padding:10px 11px;border-radius:10px;text-align:left;font-weight:700;font-size:12px;transition:.14s}.sidebar nav button svg{width:17px;height:17px;color:#6f87a9}.sidebar nav button:hover{background:#121f36;color:#fff}.sidebar nav button.active{background:#17243b;color:#fff;box-shadow:inset 3px 0 0 #5b8cff}.sidebar nav button.active svg{color:#83aaff}.sidebar nav button span{flex:1}.side-version{margin:14px 9px 0;color:#52647f;font-size:10px}.side-user{margin-top:auto;border-top:1px solid #1c2940;padding:15px 5px 2px;display:grid;grid-template-columns:38px 1fr 32px;gap:9px;align-items:center}.avatar{width:38px;height:38px;border-radius:11px;background:#1d3867;color:#d8e6ff;display:grid;place-items:center;font-size:11px;font-weight:900}.side-user strong{font-size:11px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-user span{font-size:9px;color:#75859d;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.side-user button{border:0;background:transparent;color:#8392a9;display:grid;place-items:center}.side-user button:hover{color:#fff}.main{margin-left:258px;width:calc(100% - 258px);min-width:0;min-height:100vh;overflow-x:hidden}.topbar{height:68px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:0 26px}.top-left{display:flex;align-items:center;gap:10px}.top-left>div:last-child{display:grid;gap:2px}.crumb{font-size:9px;font-weight:900;color:#98a2b3;letter-spacing:.09em}.top-left strong{font-size:15px;color:#344054}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;min-width:0}.top-actions .pill{white-space:nowrap}.pill{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;font-size:10px;font-weight:800;background:#f2f4f7;color:#475467}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:#98a2b3}.pill.good{background:var(--greenbg);color:var(--green)}.pill.good:before{background:#12b76a}.pill.warn{background:var(--amberbg);color:var(--amber)}.pill.warn:before{background:#f79009}.pill.bad{background:var(--redbg);color:var(--red)}.pill.bad:before{background:#f04438}.icon-btn{width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:#fff;color:#475467;display:grid;place-items:center}.icon-btn:hover{background:#f8fafc}.content{padding:28px 30px 40px;width:100%;max-width:1680px;margin:0 auto;min-width:0}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}.page-head h1{margin:0;font-size:25px;letter-spacing:-.025em}.page-head p{margin:5px 0 0;color:var(--muted);font-size:12px;max-width:760px;line-height:1.5}.head-actions{display:flex;gap:8px;flex-wrap:wrap}.grid{display:grid;gap:14px}

/* Cards */
.metrics{grid-template-columns:repeat(4,minmax(210px,1fr));align-items:stretch}.metric,.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 2px rgba(16,24,40,.02)}.metric{padding:18px;min-height:124px;min-width:0;overflow:hidden}.metric-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.metric-top label{min-width:0;overflow-wrap:anywhere}.metric-icon{width:34px;height:34px;border-radius:10px;background:#f2f4f7;display:grid;place-items:center;color:#475467}.metric-icon svg{width:16px;height:16px}.metric label{font-size:11px;color:#667085;font-weight:750}.metric strong{font-size:28px;line-height:1.05;display:block;margin:16px 0 5px;letter-spacing:-.04em;overflow-wrap:anywhere}.metric small{color:#98a2b3;font-size:10px}.card{padding:18px}.card h3{margin:0;font-size:14px}.card .sub{color:#98a2b3;font-size:10px;margin-top:4px}.split{grid-template-columns:1.12fr .88fr;margin-top:14px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}.section-title h3{margin:0}.quick-grid{grid-template-columns:repeat(4,minmax(190px,1fr));margin-bottom:14px}.quick-action{border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px;text-align:left;display:flex;align-items:center;gap:11px;color:#344054;transition:.14s}.quick-action:hover{border-color:#bfd1ff;box-shadow:var(--shadow);transform:translateY(-1px)}.quick-icon{width:36px;height:36px;border-radius:10px;background:#eff4ff;color:#3568d4;display:grid;place-items:center;flex:0 0 auto}.quick-action b{display:block;font-size:12px}.quick-action small{display:block;color:#98a2b3;font-size:9px;margin-top:2px}.status-list{display:grid}.status-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #eef1f5;padding:12px 0;gap:16px}.status-row:first-child{border-top:0}.status-row strong{font-size:11px;display:block}.status-row small{font-size:9.5px;color:#98a2b3;line-height:1.45}.dot{width:9px;height:9px;border-radius:50%;background:#12b76a;flex:0 0 auto}.dot.warn{background:#f79009}.dot.bad{background:#f04438}.progress{height:8px;background:#eef2f7;border-radius:999px;overflow:hidden;margin-top:12px}.progress>span{height:100%;display:block;background:#2563eb;border-radius:999px}.cards-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cards-3{grid-template-columns:repeat(3,minmax(0,1fr))}

/* Tables */
.table-card{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.table-toolbar{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;gap:9px;justify-content:space-between;align-items:center;flex-wrap:wrap}.toolbar-left,.toolbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar input{min-width:250px}.table-wrap{overflow:auto;max-height:72vh}.data-table{width:100%;border-collapse:collapse;font-size:11.5px}.data-table th{position:sticky;top:0;background:#f8fafc;color:#667085;text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:.065em;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap;z-index:2}.data-table td{padding:11px 12px;border-bottom:1px solid #eef1f5;vertical-align:top;color:#344054;max-width:320px;line-height:1.45}.data-table tr:hover td{background:#fbfdff}.data-table .mono,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.muted{color:#98a2b3}.role{display:inline-flex;padding:4px 8px;border-radius:999px;background:#f2f4f7;font-size:9px;font-weight:850;text-transform:capitalize}.role.superadmin{background:#eef4ff;color:#3538cd}.role.admin{background:#f4f3ff;color:#5925dc}.role.manager{background:#ecfdf3;color:#067647}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:9px;font-weight:850;background:#f2f4f7;color:#475467}.badge.good{background:#ecfdf3;color:#067647}.badge.bad{background:#fef3f2;color:#b42318}.badge.warn{background:#fffaeb;color:#b54708}.actions{display:flex;gap:5px;flex-wrap:wrap;min-width:170px}.actions.compact{min-width:0}.action-group{display:flex;gap:5px;flex-wrap:wrap}

/* Reports */
.report-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.report-card{padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;transition:.15s;text-align:left}.report-card:hover,.report-card.active{transform:translateY(-1px);border-color:#bdd0ff;box-shadow:var(--shadow)}.report-card.active{background:#f8fbff}.report-card b{display:block;font-size:12px}.report-card span{font-size:10px;color:#98a2b3;display:block;margin-top:5px;line-height:1.4}.filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-bottom:13px}.filters label{font-size:9px;color:#667085;font-weight:800;display:grid;gap:5px}

/* Storage / notices */
.bucket-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.bucket{border:1px solid var(--line);border-radius:14px;padding:15px;background:#fff}.bucket h4{margin:0 0 5px}.bucket p{margin:0 0 12px;font-size:10px;color:#98a2b3}.notice{border:1px solid #b2ddff;background:#eff8ff;color:#175cd3;border-radius:11px;padding:10px 12px;font-size:11px;line-height:1.55}.notice.success{border-color:#abefc6;background:#ecfdf3;color:#067647}.notice.warn{border-color:#fedf89;background:#fffaeb;color:#b54708}.notice.error{border-color:#fecdca;background:#fef3f2;color:#b42318}.global-alert{margin:14px 26px 0;border-radius:12px;padding:11px 13px;font-size:11px;background:#fffaeb;color:#b54708;border:1px solid #fedf89}.global-alert.error{background:#fef3f2;color:#b42318;border-color:#fecdca}.global-alert.success{background:#ecfdf3;color:#067647;border-color:#abefc6}.empty{padding:46px;text-align:center;color:#98a2b3}.empty b{display:block;color:#475467;margin-bottom:6px}

/* Diagnostics */
.diag-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.diag-summary .summary-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.summary-box span{font-size:9px;font-weight:850;color:#98a2b3;text-transform:uppercase;letter-spacing:.07em}.summary-box strong{display:block;font-size:19px;margin-top:7px}.diag-list{display:grid;gap:9px}.diag-item{background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px 14px;display:grid;grid-template-columns:32px 1fr auto;gap:11px;align-items:start}.diag-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:#ecfdf3;color:#067647}.diag-item.bad .diag-icon{background:#fef3f2;color:#b42318}.diag-item.warn .diag-icon{background:#fffaeb;color:#b54708}.diag-item strong{font-size:12px}.diag-item p{margin:4px 0 0;color:#667085;font-size:10px;line-height:1.5}.diag-fix{margin-top:8px;padding:8px 9px;border-radius:9px;background:#f8fafc;color:#475467;font-size:10px;line-height:1.5}.diag-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#667085;font-size:9px}.cap-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.cap{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:11px;padding:10px 11px;background:#fff}.cap b{font-size:10.5px}.cap span{font-size:9px}.issue-card{border:1px solid #fecdca;background:#fffafa;border-radius:14px;padding:14px}.issue-card h4{margin:0 0 6px;color:#b42318}.issue-card p{margin:0;color:#7a271a;font-size:10px;line-height:1.55}.diagnostic-actions{display:flex;gap:8px;flex-wrap:wrap}

/* Modal */
.modal{border:0;border-radius:19px;padding:0;width:min(800px,calc(100vw - 28px));box-shadow:0 30px 90px rgba(15,23,42,.30);overflow:hidden}.modal::backdrop{background:rgba(5,12,24,.58);backdrop-filter:blur(3px)}.modal-head{padding:17px 19px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start}.modal-head h3{margin:0;font-size:16px}.modal-head p{margin:4px 0 0;color:#98a2b3;font-size:10px;line-height:1.4}.modal-body{padding:18px 19px;max-height:68vh;overflow:auto}.modal-actions{padding:14px 19px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fbfcfe}.modal #modalError{margin:0 19px 14px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:7px}.check-item{display:flex!important;align-items:center;gap:8px;border:1px solid var(--line);padding:10px;border-radius:10px;font-size:10px!important;margin:0!important}.check-item input{width:auto}.readonly-field{background:#f8fafc!important;color:#667085!important}.danger-zone{border:1px solid #fecdca;background:#fffafa;border-radius:14px;padding:15px}.danger-zone h3{color:#b42318;margin:0 0 6px}.danger-zone p{margin:0}.separator{height:1px;background:#eef1f5;margin:16px 0}.mobile-only{display:none}

@media(max-width:1180px){.metrics{grid-template-columns:repeat(2,minmax(220px,1fr))}.quick-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.report-grid,.bucket-grid{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:repeat(3,1fr)}.login-grid{grid-template-columns:1fr;gap:35px;margin-top:6vh}.login-copy{display:none}.login-card{max-width:520px;margin:auto}.diag-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main{margin-left:0;width:100%}.app-shell{display:block}.mobile-only{display:grid}.content{padding:16px}.topbar{padding:0 14px}.metrics,.split,.quick-grid,.report-grid,.bucket-grid,.cards-2,.cards-3,.diag-summary,.cap-grid{grid-template-columns:1fr}.filters{grid-template-columns:1fr 1fr}.top-actions .pill{display:none}.page-head{flex-direction:column}.form-grid,.form-grid.three,.check-grid{grid-template-columns:1fr}.login-shell{padding:22px}.login-card{padding:22px}.toolbar input{min-width:170px}.global-alert{margin:12px 16px 0}.login-points{grid-template-columns:1fr}.diag-item{grid-template-columns:32px 1fr}.diag-item>.badge{grid-column:2}.table-wrap{max-height:none}}

/* Safe service-link map shown only after SuperAdmin login */
.route-map{display:grid;gap:8px}.route-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fbfcfe}.route-item>div{min-width:0}.route-item b{display:block;font-size:10.5px;color:#344054}.route-item code{display:block;margin-top:3px;font:9.5px ui-monospace,SFMono-Regular,Menlo,monospace;color:#3568d4;overflow-wrap:anywhere}.route-item small{display:block;margin-top:3px;color:#98a2b3;font-size:9px;line-height:1.35}


/* v4.2.2 layout hardening - prevents dashboard card collapse/overlap */
.main,.content,.page-head,.grid,.metric,.card,.quick-action,.split>*{min-width:0}
.metrics,.quick-grid,.cards-2,.cards-3,.split{width:100%}
.metric label,.metric small,.quick-action b,.quick-action small,.status-row strong,.status-row small{overflow-wrap:anywhere}
.page-head .head-actions{flex:0 0 auto}
@media (max-width:1380px) and (min-width:821px){
  .metrics{grid-template-columns:repeat(2,minmax(220px,1fr))}
  .quick-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}
  .split{grid-template-columns:1fr}
}
@media (max-width:980px) and (min-width:821px){
  .topbar{padding:0 18px}
  .top-actions .pill{max-width:150px;overflow:hidden;text-overflow:ellipsis}
}
@media(max-width:620px){
  .content{padding:14px}
  .filters{grid-template-columns:1fr}
  .page-head h1{font-size:22px}
  .metric strong{font-size:25px}
}
