:root{--vr-navy:#12306b;--vr-navy-2:#1b4290;--vr-bg:#f4f6fa;--vr-border:#e3e8f0;--vr-green:#1e8e5a;--vr-amber:#c98a05;--vr-red:#c0392b}
body{background:var(--vr-bg);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:#1f2937}
a{color:var(--vr-navy-2)}
:focus-visible{outline:3px solid #7aa2ff;outline-offset:2px}
.btn-primary{--bs-btn-bg:var(--vr-navy-2);--bs-btn-border-color:var(--vr-navy-2);--bs-btn-hover-bg:var(--vr-navy);--bs-btn-hover-border-color:var(--vr-navy);--bs-btn-active-bg:var(--vr-navy)}
.vr-shell{display:flex;min-height:100vh}
.vr-sidebar{width:250px;background:var(--vr-navy);color:#fff;flex:0 0 250px}
@media(min-width:992px){.vr-sidebar{position:sticky;top:0;height:100vh;overflow-y:auto}}
.vr-sidebar.offcanvas-lg{--bs-offcanvas-width:260px;--bs-offcanvas-bg:var(--vr-navy);--bs-offcanvas-color:#fff;background-color:var(--vr-navy);color:#fff}
/* Bootstrap's .offcanvas-lg forces "background-color: transparent !important" from 992px up,
   which made the desktop sidebar show the page grey. This rule has higher specificity, so it wins. */
@media(min-width:992px){
  .vr-sidebar.offcanvas-lg{background-color:var(--vr-navy)!important;color:#fff!important;width:250px!important;flex:0 0 250px;position:sticky!important;top:0;height:100vh!important;overflow-y:auto!important}
}
.vr-brand{display:flex;align-items:center;gap:.6rem;padding:1rem;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:.5rem}
.vr-org{opacity:.75;max-width:140px}
.vr-sidebar .nav-link{color:#d5def2;border-radius:.5rem;padding:.55rem .8rem;margin-bottom:2px}
.vr-sidebar .nav-link:hover{background:rgba(255,255,255,.08);color:#fff}
.vr-sidebar .nav-link.active{background:#fff;color:var(--vr-navy);font-weight:600}
.vr-main{flex:1;min-width:0;display:flex;flex-direction:column}
.vr-topbar{display:flex;align-items:center;gap:.5rem;background:#fff;border-bottom:1px solid var(--vr-border);padding:.6rem 1rem;position:sticky;top:0;z-index:100}
.vr-content{padding:1.25rem;flex:1}
@media(min-width:768px){.vr-content{padding:1.75rem}}
.vr-footer{display:flex;justify-content:space-between;gap:1rem;padding:.9rem 1.5rem;border-top:1px solid var(--vr-border);background:#fff}
.card{border:1px solid var(--vr-border);border-radius:.75rem;box-shadow:0 1px 2px rgba(16,24,40,.05)}
.stat{display:flex;align-items:center;gap:.9rem}
.stat .ico{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-size:1.3rem;background:#e8eefc;color:var(--vr-navy-2)}
.stat .ico.green{background:#e3f5ec;color:var(--vr-green)}.stat .ico.amber{background:#fdf3d9;color:var(--vr-amber)}.stat .ico.red{background:#fbe6e3;color:var(--vr-red)}
.stat .val{font-size:1.35rem;font-weight:700;line-height:1.1}.stat .lbl{font-size:.8rem;color:#64748b}
.table thead th{background:#f8fafc;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:#475569;white-space:nowrap}
.table-responsive{border-radius:.75rem}
.vr-notif{width:340px;max-width:92vw;max-height:70vh;overflow:auto}
.pw-checklist li{color:#6b7280}.pw-checklist li.ok{color:var(--vr-green)}.pw-checklist li.ok i::before{content:"\f26a"}
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem;background:linear-gradient(160deg,#0f2a5e,#1b4290)}
.auth-card{width:100%;max-width:430px}
/* reCAPTCHA: fixed 304x78 widget, centred and scaled by assets/js/captcha-fit.js (CSS keeps it tidy if JS is off) */
.captcha-wrap{width:100%;margin-bottom:1rem;display:flex;justify-content:center;min-height:78px}
.captcha-wrap .g-recaptcha{width:304px;height:78px;transform-origin:0 0;border-radius:3px;box-shadow:0 1px 3px rgba(16,24,40,.12)}
.captcha-wrap.is-fit{display:block}
.autofill{background:#eef4ff}.autofill-tag{font-size:.7rem}
.col-ok{color:var(--vr-green)}.col-bad{color:var(--vr-red)}
.ac-list{position:absolute;z-index:50;left:0;right:0;max-height:260px;overflow:auto}
.hash{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;word-break:break-all}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{
  .vr-sidebar,.vr-topbar,.vr-footer,.no-print,.toast-container{display:none!important}
  body{background:#fff}.vr-content{padding:0}.card{border:0;box-shadow:none}
  .report-head{border-bottom:2px solid #000;margin-bottom:1rem}
  table{font-size:11px}thead{display:table-header-group}tr{page-break-inside:avoid}
  @page{margin:14mm}
}
