/* GLX Security Auditor 1.4.0 — unified design system, Bootstrap 5.3 utilities, Plotly analytics. */
:root,[data-ui-theme="dark"]{
 --accent:#44d9b6;--accent-text:#041a20;--bg:#081421;--sidebar-bg:#091626;--card:#102336;
 --card-hi:#13293d;--card-inner:#0c1b2a;--line:#233c50;--strong:#eff6ff;--muted:#93a9bd;
 --soft:#648299;--shadow:0 14px 40px rgba(0,0,0,.14);--gradient:linear-gradient(140deg,#153249,#102336);
 --bs-body-bg:var(--bg);--bs-body-color:var(--strong);--bs-border-color:var(--line);
 font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color-scheme:dark;
}
[data-ui-theme="light"]{
 --accent:#087e70;--accent-text:#fff;--bg:#f2f6fa;--sidebar-bg:#ffffff;--card:#ffffff;
 --card-hi:#f5f9fd;--card-inner:#f0f5fa;--line:#dfe7f0;--strong:#172c40;--muted:#516e83;
 --soft:#748ea1;--shadow:0 10px 35px rgba(37,71,100,.08);--gradient:linear-gradient(140deg,#ffffff,#f5f9fd);
 --bs-body-bg:var(--bg);--bs-body-color:var(--strong);color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--strong);font-family:inherit}
button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}button:disabled{opacity:.52;cursor:not-allowed}
button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.hidden{display:none!important}.icons{position:absolute;width:0;height:0;overflow:hidden}.ico{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.ico.large{width:32px;height:32px}
.eyebrow{text-transform:uppercase;font-size:10px;letter-spacing:1.7px;font-weight:800;color:var(--accent);margin:0}.muted{color:var(--muted);font-size:12px}.small{font-size:12px}
h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--strong)}a{color:var(--accent)}
/* Authentication */
.public-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(345px,428px);align-items:center;gap:clamp(26px,8vw,130px);padding:clamp(25px,8vw,120px);background:radial-gradient(circle at 25% 40%,rgba(21,152,136,.15),transparent 36%),var(--bg)}
.hero{max-width:740px}.hero-mark{width:69px;height:69px;border:1px solid #257762;background:linear-gradient(150deg,#16493c,#102336);display:grid;place-items:center;border-radius:22px;color:#62f6c9;margin-bottom:34px;box-shadow:0 14px 50px #0068513b}
.hero h1{font-size:clamp(38px,5vw,76px);font-weight:850;letter-spacing:-3px;line-height:1.08;margin:15px 0 24px}.hero h1 span{color:var(--accent)}.hero p:not(.eyebrow){font-size:clamp(15px,1.6vw,19px);line-height:1.8;color:var(--muted)}
.hero-tags{display:flex;gap:8px;flex-wrap:wrap;margin:36px 0 45px}.hero-tags span{border:1px solid var(--line);border-radius:100px;padding:10px 14px;background:var(--card);font-size:12px;color:var(--muted)}.hero-foot{font-size:11px;color:var(--soft)}.live-pulse,.online-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#36daaa;box-shadow:0 0 0 4px rgba(54,218,170,.12);margin-right:8px}
.login-panel{background:var(--card);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:36px;min-width:0}.login-panel .form-icon{width:44px;height:44px;border-radius:13px;background:var(--card-inner);display:grid;place-items:center;color:var(--accent);margin-bottom:23px}
.login-panel h2{font-size:26px;letter-spacing:-.6px;font-weight:780;margin:11px 0 8px}.login-panel .muted{line-height:1.6;margin-bottom:27px}.login-panel label{display:block;color:var(--strong);font-size:12px;font-weight:670;margin:18px 0 20px}.login-panel input,.field input,.field select,.triage input,.triage select{display:block;width:100%;background:var(--card-inner);color:var(--strong);border:1px solid var(--line);border-radius:10px;padding:12px 13px;outline:none;margin-top:9px;min-height:44px}
.login-panel input:focus,.field input:focus,.field select:focus,.triage input:focus,.triage select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(68,217,182,.1)}.login-panel input::placeholder{color:var(--soft)}
.primary{background:var(--accent);color:var(--accent-text);padding:11px 17px;border-radius:9px;font-weight:760;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s,transform .15s;min-height:40px}.primary:hover{filter:brightness(1.12)}.primary:active{transform:translateY(1px)}.login-panel .primary{width:100%;min-height:48px;margin-top:13px}.login-panel .primary .ico{width:16px;height:16px}
.feedback{color:#fb888d;font-size:12px;min-height:17px;margin-top:17px}.fineprint{font-size:11px;color:var(--soft);line-height:1.65;margin:12px 0 0}
/* App shell */
.app-shell{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.app-shell.nav-narrow{grid-template-columns:78px minmax(0,1fr)}
.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--line);min-height:100vh;height:100vh;display:flex;flex-direction:column;position:sticky;top:0;overflow:hidden;z-index:30}
.brand{display:flex;align-items:center;gap:12px;padding:24px 16px 22px 19px;border-bottom:1px solid var(--line);min-height:97px}.brand-symbol{width:39px;height:39px;border:1px solid rgba(68,217,182,.27);background:rgba(68,217,182,.12);border-radius:12px;display:grid;place-items:center;color:var(--accent);flex-shrink:0}.brand-symbol .ico{width:23px;height:23px}.brand-text{flex:1;min-width:0}.brand strong{font-size:12px;display:block;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:3px;white-space:nowrap}.nav-collapse{background:transparent;color:var(--muted);padding:4px;border-radius:5px}.nav-collapse .ico{width:15px;height:15px}
.nav-label{color:var(--soft);font-size:9px;font-weight:800;letter-spacing:1.5px;padding:25px 24px 8px}.nav-sub{padding:20px 13px 6px}
.sidebar nav{display:flex;flex-direction:column;padding:0 11px 20px;gap:3px;overflow:auto;scrollbar-width:thin}.sidebar nav button{display:flex;gap:12px;align-items:center;white-space:nowrap;text-align:left;border-radius:9px;color:var(--muted);background:transparent;font-size:12px;font-weight:620;min-height:43px;padding:10px 13px;transition:background .15s,color .15s}.sidebar nav button .ico{width:18px;height:18px}.sidebar nav button.selected,.sidebar nav button:hover{background:rgba(68,217,182,.11);color:var(--accent)}
.sidebar-foot{display:flex;gap:10px;align-items:center;padding:20px;border-top:1px solid var(--line);margin-top:auto;font-size:11px}.sidebar-foot .online-dot{margin-right:2px}.sidebar-foot strong{font-size:10px;font-weight:700}.sidebar-foot small{display:block;color:var(--soft);margin-top:3px;font-size:10px}
.nav-narrow .brand{justify-content:center;padding:24px 12px;gap:0}.nav-narrow .brand-text,.nav-narrow .sidebar nav button span,.nav-narrow .nav-label,.nav-narrow .sidebar-foot div{display:none}.nav-narrow .nav-collapse{position:absolute;bottom:7px;left:calc(50% - 8px);transform:rotate(180deg)}.nav-narrow .sidebar nav{padding:24px 10px;gap:9px}.nav-narrow .sidebar nav button{justify-content:center;padding:11px}.nav-narrow .sidebar-foot{justify-content:center}.nav-narrow .brand-symbol{margin-bottom:12px}
.content{min-width:0;padding:26px clamp(18px,3vw,49px);max-width:1800px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:21px}.topbar-title{display:flex;align-items:center;gap:12px;min-width:0}.topbar h1{font-size:clamp(22px,2.5vw,29px);font-weight:780;letter-spacing:-.8px;margin:7px 0 0}.top-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.icon-button{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:10px;color:var(--muted);background:var(--card);border:1px solid var(--line)}.icon-button:hover,.ghost:hover{background:var(--card-hi);color:var(--strong)}.icon-button.danger:hover{color:#ff8e94}.icon-button .ico{width:16px;height:16px}
.search-field{display:flex;align-items:center;gap:9px;color:var(--muted);border:1px solid var(--line);background:var(--card);padding:0 11px;border-radius:10px;height:38px;min-width:220px}.search-field .ico{width:15px;height:15px}.search-field input{border:0;background:transparent;outline:none;color:var(--strong);width:150px;font-size:12px;min-width:0}.search-field input::placeholder{color:var(--soft)}.search-field kbd{background:var(--card-inner);font-size:10px;color:var(--soft);border-radius:4px;white-space:nowrap}.user-chip{font-size:11px;color:var(--muted);max-width:185px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 5px}
.notice{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:var(--card-inner);color:var(--muted);padding:11px 16px;border-radius:11px;font-size:11px;margin:0 0 24px;line-height:1.5}.notice .ico{width:15px;height:15px;color:var(--accent)}
/* Panels / base functional components */
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.panel,.metric{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.panel{padding:23px;margin-top:19px;min-width:0}.panel h2{font-size:16px;font-weight:760;margin-bottom:17px}.panel h3{font-size:14px;font-weight:700}.panel p{color:var(--muted);font-size:12px;line-height:1.7}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:15px}.section-head h2{margin:0}.metric{padding:20px;min-height:136px}.metric .kicker{font-size:11px;font-weight:700;color:var(--muted)}.metric .big{font-size:34px;letter-spacing:-1.2px;font-weight:820;line-height:1.2;margin:17px 0 6px}.metric .big.medium-big{font-size:20px;overflow-wrap:anywhere}.metric .big.status-big{font-size:18px}.metric .small{color:var(--accent)}
.ghost{border:1px solid var(--line);border-radius:9px;padding:9px 14px;background:var(--card);color:var(--strong);font-weight:650;font-size:12px;min-height:39px}.ghost.danger{color:#ff919b}.table-wrap{overflow:auto;max-width:100%;border-radius:9px}.table{width:100%;border-collapse:collapse;text-align:left;--bs-table-bg:transparent;--bs-table-color:var(--strong);--bs-table-border-color:var(--line);margin-bottom:0}.table th{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--soft);font-weight:750;border-bottom:1px solid var(--line);padding:14px 10px;white-space:nowrap}.table td{font-size:12px;padding:15px 10px;border-bottom:1px solid var(--line);color:var(--strong);vertical-align:middle;overflow-wrap:anywhere}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:rgba(130,169,192,.045)}.table button{color:var(--accent);background:transparent;font-size:11px;font-weight:720;padding:5px}.table button:hover{text-decoration:underline}
.tag{display:inline-flex;align-items:center;gap:5px;background:rgba(93,183,216,.14);color:#7ed2ee;padding:6px 10px;border-radius:100px;font-size:10px;line-height:1.1;font-weight:760;white-space:nowrap}.tag.critical,.tag.high,.tag.error{color:#ff8d99;background:rgba(255,92,123,.13)}.tag.medium,.tag.queued,.tag.running{color:#f6c675;background:rgba(248,169,71,.14)}.tag.low{color:#76bfff;background:rgba(73,161,241,.12)}.tag.done,.tag.verified{color:#40dca9;background:rgba(55,214,158,.13)}
.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}.field{display:block;color:var(--muted);font-size:12px;min-width:0}.form-grid .primary{min-height:44px}.empty{padding:30px 18px;text-align:center;color:var(--muted);font-size:12px;border:1px dashed var(--line);background:var(--card-inner);border-radius:11px;line-height:1.7}.finding{padding:19px 0;border-bottom:1px solid var(--line)}.finding:last-child{border-bottom:0}.finding-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.finding h3{font-size:14px;margin:0}.finding p{margin:10px 0}.finding .fix{border-left:3px solid var(--accent);padding-left:12px}.triage{display:flex;gap:10px;flex-wrap:wrap;padding:12px;border:1px solid var(--line);border-radius:11px;margin-top:13px;align-items:flex-end}.triage label{flex:1;min-width:180px;display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:12px}.triage small{flex-basis:100%}.code{display:block;background:var(--card-inner);border:1px solid var(--line);border-radius:9px;padding:11px;color:var(--accent);font-size:11px;overflow-wrap:anywhere}.action-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.two-col{display:grid;grid-template-columns:1.65fr 1fr;gap:18px}.two-col .panel{min-width:0}.guide-list li{font-size:12px;color:var(--muted);margin:12px 0;line-height:1.7}.guide-list strong{color:var(--strong)}.spaced{margin-top:20px!important}
footer{font-size:10px;color:var(--soft);padding:28px 0 10px}#toast{display:none;position:fixed;bottom:24px;right:25px;z-index:100;padding:14px 17px;border-radius:11px;max-width:390px;background:var(--accent);color:var(--accent-text);box-shadow:var(--shadow);font-size:12px;font-weight:650}#toast.visible{display:block}
/* Security analytics / dashboard: structured without CSS overlays */
.dashboard-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;flex-wrap:wrap;margin:2px 0 21px}.dashboard-intro h2{font-size:clamp(22px,2.8vw,32px);font-weight:830;letter-spacing:-.9px;margin:7px 0}.dashboard-intro p:not(.eyebrow){font-size:12px;color:var(--muted);margin:0}.dashboard-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.period-select{background:var(--card);border:1px solid var(--line);color:var(--strong);border-radius:9px;padding:9px 10px;min-height:39px;font-size:12px;font-weight:690}
.dashboard-actions .ico{width:16px;height:16px}.dash-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.dash-grid .metric{min-height:165px;position:relative;overflow:hidden;background:var(--gradient);box-shadow:none}.dash-grid .metric:before{content:"";position:absolute;top:-32px;right:-35px;width:125px;height:125px;border-radius:50%;background:radial-gradient(circle,rgba(68,217,182,.09),transparent 65%);pointer-events:none}.metric-top{display:flex;justify-content:space-between;gap:10px;align-items:center}.metric-icon{height:37px;width:37px;border-radius:11px;display:grid;place-items:center;background:rgba(68,217,182,.1);color:var(--accent)}.metric-icon .ico{width:19px;height:19px}.advanced-metric .big{font-size:clamp(25px,2.9vw,37px);margin:17px 0 10px}.metric-sub{font-size:11px;color:var(--muted)}.metric-alert .big{color:#ff9d98}.metric-footer{display:flex;align-items:center;gap:5px}.metric-footer .ico{height:12px;width:12px}
.dashboard-columns{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,1fr);gap:18px;margin-top:18px}.dashboard-columns.dash-even{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-columns .panel{margin-top:0}.analytic-panel{min-width:0;padding:21px}.analytic-panel .section-head{margin:0 0 13px}.analytic-panel .section-head h2{font-size:14px;margin:0}.analytic-panel .section-head p{margin:4px 0 0;font-size:11px}.chart-container{height:270px;width:100%;position:relative}.chart-container.short{height:228px}.chart-container .js-plotly-plot{width:100%;height:100%}.chart-legend{display:flex;gap:7px;flex-wrap:wrap}.legend-pill{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--muted)}.legend-dot,.severity-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}
.severity-list{display:grid;gap:10px;margin-top:5px}.sev-stat{display:grid;grid-template-columns:70px 1fr 32px;gap:10px;align-items:center;font-size:11px;color:var(--muted)}.risk-track,.score-bar{background:var(--card-inner);height:8px;overflow:hidden;border-radius:20px}.risk-track i,.score-bar i{display:block;height:100%;border-radius:20px}.sev-stat strong{text-align:right;color:var(--strong);font-size:11px}.risk-row{display:grid;grid-template-columns:60px 1fr 30px;align-items:center;gap:10px;margin:13px 0;color:var(--muted);font-size:11px}.risk-row strong{text-align:right;color:var(--strong)}
.analytics-insights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:18px 0 0}.insight{display:flex;gap:11px;align-items:center;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:12px}.insight-icon{width:31px;height:31px;display:grid;place-items:center;background:var(--card-inner);border-radius:9px;color:var(--accent)}.insight-icon .ico{width:17px;height:17px}.insight strong{display:block;font-size:13px}.insight small{color:var(--muted);display:block;font-size:10px;margin-top:2px}
.priority-line{display:flex;align-items:center;text-align:left;gap:11px;width:100%;padding:13px 4px;border-bottom:1px solid var(--line);background:transparent;color:var(--strong)}.priority-line:last-child{border:0}.priority-line:hover{background:var(--card-hi)}.priority-line .priority-detail{flex:1;min-width:0}.priority-line b,.priority-line small{display:block}.priority-line b{font-size:12px;font-weight:750;line-height:1.4}.priority-line small{font-size:10px;color:var(--muted);margin-top:3px;overflow-wrap:anywhere}.priority-line .ico{width:14px;height:14px;color:var(--soft)}
.sev-critical{background:#fe667b}.sev-high{background:#ff9e6b}.sev-medium{background:#f6bc61}.sev-low{background:#66aef5}.sev-info{background:#7f9eaf}.score-inline{display:flex;gap:8px;align-items:center;min-width:110px}.score-inline .score-bar{flex:1}.score-bar i{background:var(--accent)}.score-inline strong{font-size:12px;min-width:21px;text-align:right}.domain-name{font-weight:750;color:var(--strong);font-size:12px}.domain-note{font-size:10px;color:var(--muted);margin-top:4px}.table-filter-note{font-size:11px;color:var(--soft)}.table-empty-row td{text-align:center;color:var(--muted)!important;padding:28px!important}
.dash-last{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:18px;color:var(--soft);font-size:10px}.loading-panel{min-height:150px;display:flex;align-items:center;gap:13px;color:var(--muted);font-size:12px}.pulse-dot{height:10px;width:10px;border-radius:50%;background:var(--accent);animation:pulse 1.3s ease-in-out infinite}.kicker{color:var(--muted);font-size:11px;font-weight:700}
.progress{background:var(--card-inner);height:8px;border-radius:20px;overflow:hidden}.bar{height:100%;background:linear-gradient(90deg,#f0b45f,var(--accent));border-radius:20px}
.score{font-size:40px;font-weight:800}.label-small{font-size:11px;color:var(--soft)}
.mobile-nav{display:none}.sidebar-overlay{display:none}
@keyframes pulse{50%{opacity:.15}}
@media(max-width:1320px){.user-chip{max-width:130px}.search-field{min-width:180px}.search-field kbd{display:none}}
@media(max-width:1160px){.dashboard-columns{grid-template-columns:minmax(0,1.2fr) minmax(280px,1fr)}.dash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.user-chip{display:none}}
@media(max-width:980px){.app-shell,.app-shell.nav-narrow{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;top:0;left:0;width:253px;transform:translateX(-110%);transition:transform .2s ease;box-shadow:var(--shadow)}.sidebar.mobile-open{transform:translateX(0)}.nav-narrow .brand-text,.nav-narrow .sidebar nav button span,.nav-narrow .nav-label,.nav-narrow .sidebar-foot div{display:initial}.nav-narrow .sidebar nav button{justify-content:flex-start}.nav-narrow .sidebar nav{padding:0 11px 20px;gap:3px}.sidebar-overlay:not(.hidden){display:block;position:fixed;inset:0;background:#0009;z-index:29}.mobile-nav{display:inline-grid}.nav-collapse{display:none}.dashboard-columns,.dashboard-columns.dash-even{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}}
@media(max-width:780px){.public-shell{grid-template-columns:1fr;gap:35px;padding:42px 22px}.hero h1{letter-spacing:-2px}.hero-tags{margin:20px 0}.hero-foot{display:none}.login-panel{max-width:490px;width:100%;margin:auto}.topbar{flex-wrap:wrap}.search-field{flex:1;min-width:140px}.top-actions{width:100%;justify-content:space-between}.search-field input{width:100%}.content{padding:20px 15px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-insights{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}}
@media(max-width:520px){.dash-grid,.grid{grid-template-columns:1fr}.dashboard-actions{width:100%}.dashboard-actions>*{flex:1}.dashboard-actions .period-select{flex-basis:100%}.analytic-panel{padding:15px}.table{min-width:550px}.chart-container{height:235px}.topbar h1{font-size:23px}.notice{align-items:flex-start}.metric{min-height:128px}.login-panel{padding:26px}.hero h1{font-size:40px}.hero-tags span{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.score-neutral{background:var(--soft)!important}.score-bad{background:#ff8793!important}.score-medium{background:#f4bd6b!important}.score-good{background:var(--accent)!important}
