/* GVL shared design system — local, no external fonts or services. */
:root{--navy:#102f42;--petrol:#116477;--petrol-dark:#094b5b;--ice:#e9f3f7;--paper:#fff;--canvas:#f3f7fa;--ink:#173447;--muted:#4d6575;--line:#ccdce5;--radius:14px;--shadow:0 4px 20px #102f4208;--blue:var(--petrol);--accent:var(--petrol);--border:var(--line);--bg:var(--canvas);--text:var(--ink)}
*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:16px}body{margin:0;background:var(--canvas);color:var(--ink);font:15px/1.6 "Segoe UI",system-ui,sans-serif}
h1,h2,h3{color:var(--ink);line-height:1.25;letter-spacing:-.02em}h1{font-size:clamp(24px,2.7vw,32px)}h2{font-size:22px}h3{font-size:17px}p{line-height:1.6}.muted,.note,.caption,.small{color:var(--muted)}
a{color:var(--petrol-dark);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}
.skip-link{position:absolute;top:4px;left:12px;transform:translateY(-200%);z-index:100;background:white;color:var(--ink);padding:10px 16px;border-radius:8px}.skip-link:focus{transform:none}
header.gvl-header{background:var(--navy);color:white;padding:18px max(20px,calc((100vw - 1280px)/2));border:0;border-radius:0;margin:0;display:block}
.gvl-header h1,.gvl-header h2,.gvl-header p{color:white}.gvl-header small{color:#c8e2ec;font-size:12px;letter-spacing:.07em}.header-top{display:flex;align-items:center;justify-content:space-between;gap:22px}.header-copy{flex:1;min-width:0}.header-copy h1{margin:5px 0 8px}.header-copy>div{color:#d5e5ec;font-size:14px;max-width:60ch}
.gvl-header .demo-brand{margin:0;width:130px;flex:0 0 130px}.demo-brand img{display:block;width:100%;height:auto;border-radius:10px;background:white}.gvl-header .demo-brand figcaption{font-size:10px;line-height:1.4;color:#d5e5ec;margin-top:5px}
.gvl-header nav{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0;padding:0}
.gvl-header nav a,.gvl-header nav button{display:inline-flex!important;align-items:center;justify-content:center;min-height:42px;width:auto;margin:0!important;padding:8px 12px!important;border:1px solid #56788a;border-radius:9px;background:#203f51;color:#edf6fa!important;font:600 13px/1.4 "Segoe UI",system-ui,sans-serif;text-decoration:none;white-space:normal;text-align:center}
.gvl-header nav a:hover,.gvl-header nav button:hover{background:#31576b}.gvl-header nav .selected,.gvl-header nav [aria-current=page]{background:#e5f3f8;color:#143d50!important;border-color:#e5f3f8}
main{width:100%;max-width:1320px;margin:0 auto;padding:28px 20px 56px;min-width:0}
.panel,.card,.kpi{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:var(--shadow);padding:22px;min-width:0}.panel{margin-bottom:20px}.panel h2{margin-bottom:16px}.cards,.kpis{gap:18px}.card .amount,.kpi strong{font-variant-numeric:tabular-nums;color:var(--navy);font-size:30px;line-height:1.2}.kpi-line{gap:18px;border-top:1px solid #edf2f5;padding-top:7px}
button,button.primary,.download{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 16px;border:1px solid var(--petrol);border-radius:9px;background:var(--petrol);color:white;font:600 14px/1.4 "Segoe UI",system-ui,sans-serif;cursor:pointer;text-decoration:none;transition:background .12s,border-color .12s;margin:4px 4px 4px 0}
button:hover,button.primary:hover,.download:hover{background:var(--petrol-dark);border-color:var(--petrol-dark)}
button.secondary,button.ghost,#scan,#history,#reportHistory{background:var(--ice);border-color:#b8d3df;color:#164d61}button.secondary:hover,button.ghost:hover,#scan:hover,#history:hover,#reportHistory:hover{background:#d4e8f0}
button:disabled,button.primary:disabled{cursor:not-allowed;background:#e6edf1;border-color:#c4d3dc;color:#536674;box-shadow:none}
:where(a,button,input,select,textarea,summary):focus-visible{outline:3px solid #c17a00;outline-offset:3px}
label,.form label,.filters label{font-size:13px;font-weight:600;color:var(--muted);line-height:1.5;min-width:0}
input,select,textarea,.form input,.form select,.form textarea{min-height:44px;max-width:100%;border:1px solid #9eb5c3;border-radius:8px;background:white;color:var(--ink);padding:9px 11px;font:15px/1.5 "Segoe UI",system-ui,sans-serif}
input:disabled,select:disabled,textarea:disabled{background:#edf2f5;color:#526775}
.filters,.form{gap:14px}.form{background:#f0f6f9;border:1px solid #dde9ef;padding:18px}.filters label{min-width:150px}.form>*,.two>*,.twocol>*,.sections>*{min-width:0}
.scroll{max-width:100%;overflow:auto;border-radius:10px;border:1px solid #dde7ed}table{width:100%;border-collapse:collapse;font-size:14px}thead{background:#edf4f8}th{color:#355569;text-align:left;font-weight:650;padding:11px 13px;border-bottom:1px solid var(--line)}td{padding:12px 13px;border-bottom:1px solid #e5edf2;vertical-align:top;overflow-wrap:anywhere}tbody tr:nth-child(even){background:#f9fbfc}tbody tr:hover{background:#edf5f8}td.number{text-align:right;font-variant-numeric:tabular-nums}td a{white-space:normal}
.state,.badge,.pill{border-radius:20px;padding:4px 10px;font-size:12px;line-height:1.5;font-weight:650}.state-ok,.badge{background:#e1f2e9;color:#185735}.state-bad,.badge.bad,.badge.warn{background:#fff0df;color:#7b3b00}.state-new,.badge.neutral,.pill{background:#e5eef6;color:#294e69}
.message,.notice,#notice.message{border-radius:10px;background:#e6f3f5;color:#134f5b;padding:14px 17px;border:1px solid #b9dce3}.message.bad,.alert,#error,.error{background:#fff0e7;color:#853a13;border-color:#ecc5ad}.empty{padding:22px;color:var(--muted);background:#f7fafb;border:1px dashed #b9ccd7;border-radius:10px}
.counts{display:flex;flex-wrap:wrap;gap:10px}.counts>div{min-width:90px;padding:8px 12px;background:#edf4f8;border:1px solid #dbe7ed;border-radius:9px}.counts strong{font-size:21px}.counts span{font-size:12px}.warnings{color:#465d6d;padding-left:22px}
.chart{border-color:var(--line);gap:6px}.bar{background:var(--petrol);border-radius:5px 5px 0 0}.bar:hover{background:var(--petrol-dark)}
details{border:1px solid var(--line);border-radius:10px;padding:12px 16px;background:#f8fbfc}summary{cursor:pointer;font-weight:650;color:#274e61}pre{white-space:pre-wrap;overflow-wrap:anywhere}
.layout{max-width:1320px;margin:auto}.layout aside{background:#eaf2f7;color:var(--ink);border-right:1px solid var(--line);width:220px;padding:24px 14px}.layout aside h1{color:var(--ink);font-size:18px}.layout aside small{color:var(--muted)}
.layout aside nav button{display:block;width:100%;background:transparent;border:1px solid transparent;color:#305467;text-align:left;justify-content:flex-start;margin:4px 0;min-height:44px}.layout aside nav button.active{background:var(--navy);color:white}.layout aside nav button:hover{background:#d7e7ef;color:var(--ink)}
.layout main{padding:26px 22px;max-width:none}.layout main>header{background:transparent;color:var(--ink);padding:0;display:flex;margin-bottom:20px}.layout main>header p{color:var(--muted)}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.two,.twocol{grid-template-columns:1fr}.gvl-header .demo-brand{width:115px;flex-basis:115px}}
@media(max-width:760px){.layout{display:block}.layout aside{width:100%;border-right:0;border-bottom:1px solid var(--line);padding:12px 16px}.layout aside small{margin:5px 0}.layout aside nav{display:flex;flex-wrap:wrap;gap:5px}.layout aside nav button{width:auto;margin:0}.layout main{padding:20px 14px}}
@media(max-width:600px){header.gvl-header{padding:16px 14px}.header-top{flex-direction:column;align-items:stretch;gap:10px}.gvl-header .demo-brand{width:105px;flex-basis:auto;align-self:flex-end;order:-1}.header-copy{width:100%}.gvl-header nav{gap:5px}.gvl-header nav a,.gvl-header nav button{font-size:12px;padding:7px 9px!important;min-height:42px}.cards,.kpis{grid-template-columns:1fr}.panel,.card,.kpi{padding:17px}main{padding:20px 12px}.form{display:flex;flex-direction:column;align-items:stretch}.form>*,.filters>*{width:100%;flex-basis:auto}.filters label{min-width:0}main>section>button{max-width:100%}h1{overflow-wrap:anywhere}.counts>div{flex:1 1 110px}td,th{padding:10px}.download{display:flex}header .demo-brand figcaption{font-size:10px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Preserve readable columns inside the existing keyboard-scrollable table region. */
.scroll>table{min-width:620px}

.gvl-menu-toggle{display:none}
@media(max-width:600px){.gvl-header .gvl-menu-toggle{display:inline-flex;margin:12px 0;min-height:44px}.gvl-header nav.gvl-foldable:not(.gvl-menu-open){display:none!important}.gvl-header nav.gvl-menu-open{display:flex}#connectionDetails dd{margin-left:16px;overflow-wrap:anywhere}}
