:root,[data-bs-theme=light]{--kg-bg:#f4f5f7;--kg-surface:#fff;--kg-surface2:#f8f9fa;--kg-line:#e2e5e9;--kg-line2:#eef0f2;--kg-text:#14181d;--kg-muted:#59626c;--kg-subtle:#868e97;--kg-ok:#1d7f46;--kg-ok-bg:#e5f3ea;--kg-warn:#9a5c00;--kg-warn-bg:#fbf0dc;--kg-err:#b8322a;--kg-err-bg:#fbe7e5;--kg-info:#2c5a86;--kg-info-bg:#e6eef6;--kg-accent:#2c5a86;--kg-skel:#eceef1;--kg-side:#fbfbfc;--bs-body-bg:var(--kg-bg);--bs-body-color:var(--kg-text);--bs-border-color:var(--kg-line);--bs-secondary-color:var(--kg-muted)}
[data-bs-theme=dark]{--kg-bg:#0e1114;--kg-surface:#161a1f;--kg-surface2:#1b2026;--kg-line:#29303a;--kg-line2:#20262d;--kg-text:#e4e7eb;--kg-muted:#9ba4ae;--kg-subtle:#7a838d;--kg-ok:#55c486;--kg-ok-bg:#15301f;--kg-warn:#e2a646;--kg-warn-bg:#33270f;--kg-err:#f07a70;--kg-err-bg:#3a1a18;--kg-info:#86afd9;--kg-info-bg:#172636;--kg-accent:#86afd9;--kg-skel:#232931;--kg-side:#12161a;--bs-body-bg:var(--kg-bg);--bs-body-color:var(--kg-text);--bs-border-color:var(--kg-line)}
body{font-family:"IBM Plex Sans",system-ui,sans-serif;font-size:0.8438rem;background:var(--kg-bg);color:var(--kg-text);-webkit-font-smoothing:antialiased}
a{color:var(--kg-accent);text-decoration:none}a:hover{color:var(--kg-text);text-decoration:underline}
.mono,code,kbd{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:0.7812rem}code{color:inherit}
.tnum,.table td,.table th{font-variant-numeric:tabular-nums}
.kg-app{display:grid;grid-template-columns:13.25rem minmax(0,1fr);min-height:100vh}
.kg-side{background:var(--kg-side);border-right:1px solid var(--kg-line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:0.875rem 0.625rem}
.kg-brand{display:flex;align-items:center;gap:0.5625rem;padding:0.25rem 0.5rem 1rem;font-weight:600;font-size:0.9062rem}
.kg-brand i{width:1.375rem;height:1.375rem;border-radius:0.3125rem;background:var(--kg-text);color:var(--kg-bg);display:grid;place-items:center;font:600 0.75rem "IBM Plex Mono",monospace;font-style:normal}
.kg-nav{display:flex;flex-direction:column;gap:2px}
.kg-nav :is(a,button){all:unset;cursor:pointer;display:flex;align-items:center;gap:0.625rem;padding:0.4375rem 0.625rem;border-radius:0.375rem;color:var(--kg-muted);font-weight:500}
.kg-nav :is(a,button):hover{background:var(--kg-line2);color:var(--kg-text)}
.kg-nav :is(a,button).on{background:var(--kg-surface);color:var(--kg-text);box-shadow:0 0 0 1px var(--kg-line)}
.kg-nav .cnt{margin-left:auto;font:500 0.6875rem "IBM Plex Mono",monospace;color:var(--kg-err)}
.kg-side-foot{margin-top:auto;border-top:1px solid var(--kg-line);padding-top:0.625rem;display:flex;flex-direction:column;gap:0.375rem;font-size:0.75rem;color:var(--kg-muted)}
.kg-side-foot .row1{display:flex;align-items:center;justify-content:space-between;padding:0 0.5rem}
.kg-main{padding:1.125rem 1.5rem 2.5rem;min-width:0}
.kg-top{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.kg-top h1{font-size:1.25rem;font-weight:600;margin:0;letter-spacing:-.01em}
.kg-top .sub{color:var(--kg-muted);font-size:0.7812rem;margin-top:2px}
.kg-top .act{margin-left:auto;display:flex;gap:0.5rem;flex-wrap:wrap;align-items:center}
.kg-crumb{font-size:0.75rem;color:var(--kg-muted);display:flex;gap:0.375rem;margin-bottom:0.25rem}.kg-crumb :is(a,button){all:unset;cursor:pointer;color:var(--kg-accent)}
.card{background:var(--kg-surface);border:1px solid var(--kg-line);border-radius:0.5rem;--bs-card-bg:var(--kg-surface)}
.card-header{background:transparent;border-bottom:1px solid var(--kg-line);padding:0.5625rem 0.875rem;display:flex;align-items:center;gap:0.625rem;min-height:2.625rem}
.card-header h2{font-size:0.8125rem;font-weight:600;margin:0}
.card-header .hint{color:var(--kg-subtle);font-size:0.75rem}
.card-header .tools{margin-left:auto;display:flex;gap:0.375rem;align-items:center}
.card-body{padding:0.75rem 0.875rem}
.kg-grid{display:grid;gap:0.75rem}
.kg-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--kg-line);border-radius:0.5rem;background:var(--kg-surface);overflow:hidden}
.kg-kpi{padding:0.6875rem 0.875rem;border-right:1px solid var(--kg-line);min-width:0}.kg-kpi:last-child{border-right:0}
.kg-kpi .l{font-size:0.75rem;color:var(--kg-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kg-kpi .v{font-size:1.3125rem;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1.3}
.kg-kpi .s{font-size:0.75rem;color:var(--kg-subtle);font-variant-numeric:tabular-nums;display:flex;gap:0.375rem;flex-wrap:wrap}
.kg-d{font-weight:600;font-variant-numeric:tabular-nums}.kg-d.good{color:var(--kg-ok)}.kg-d.bad{color:var(--kg-err)}.kg-d.flat{color:var(--kg-muted)}
.table{--bs-table-bg:transparent;--bs-table-color:var(--kg-text);--bs-table-hover-bg:var(--kg-surface2);--bs-table-hover-color:var(--kg-text);margin:0;font-size:0.8125rem}
.table>:not(caption)>*>*{padding:0.4375rem 0.625rem;border-bottom-color:var(--kg-line2)}
.table thead th{font-size:0.7188rem;font-weight:600;color:var(--kg-muted);text-transform:none;border-bottom:1px solid var(--kg-line);white-space:nowrap;background:var(--kg-surface)}
.table td.r,.table th.r{text-align:right}.table tfoot td{font-weight:600;border-top:1px solid var(--kg-line);border-bottom:0}
.table td.r,.table th.r,.table td.mono,.table td .kg-ver{white-space:nowrap}.kg-scroll>.table{min-width:56.25rem}.kg-scroll>.table td:first-child{white-space:nowrap}
.kg-top .act{justify-content:flex-end}.kg-top .act .btn{white-space:nowrap}.kg-top+*{clear:both}
.table tr.click{cursor:pointer}.table tr.sel td{background:var(--kg-info-bg)}
.kg-scroll{overflow-x:auto}
.kg-badge{display:inline-flex;align-items:center;gap:0.3125rem;font-size:0.7188rem;font-weight:500;padding:1px 0.4375rem;border-radius:999px;white-space:nowrap;line-height:1.125rem;border:1px solid transparent}
.kg-badge::before{content:"";width:0.375rem;height:0.375rem;border-radius:50%;background:currentColor}
.kg-badge.nodot::before{display:none}
.b-ok{color:var(--kg-ok);background:var(--kg-ok-bg)}.b-warn{color:var(--kg-warn);background:var(--kg-warn-bg)}.b-err{color:var(--kg-err);background:var(--kg-err-bg)}.b-info{color:var(--kg-info);background:var(--kg-info-bg)}.b-mute{color:var(--kg-muted);background:var(--kg-line2)}
.kg-ver{font:500 0.7188rem "IBM Plex Mono",monospace;padding:0 0.375rem;border-radius:0.25rem;border:1px solid var(--kg-line);color:var(--kg-text);background:var(--kg-surface2);white-space:nowrap}
.kg-q{min-width:9.375rem}
.kg-q .t{display:flex;justify-content:space-between;font-size:0.75rem;font-variant-numeric:tabular-nums;gap:0.5rem}.kg-q .t span{color:var(--kg-subtle)}
.kg-bar{display:block;width:100%;height:0.75rem;margin-top:1px;overflow:visible}
.kg-bar .track{fill:var(--kg-line2)}.kg-bar .fill{fill:var(--kg-muted)}.kg-bar .fill.ov{fill:var(--kg-warn)}.kg-bar .fill.full{fill:var(--kg-err)}.kg-bar .incl{fill:var(--kg-text)}.kg-bar .cap{fill:var(--kg-err)}
.kg-alerts{display:flex;flex-direction:column}
.kg-alert{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:0.625rem;align-items:start;padding:0.5625rem 0.875rem;border-bottom:1px solid var(--kg-line2);color:inherit}.kg-alert:last-child{border-bottom:0}
a.kg-alert:hover{text-decoration:none;background:var(--kg-surface2)}
.kg-alert .ic{width:1.125rem;height:1.125rem;border-radius:50%;display:grid;place-items:center;font:700 0.6875rem "IBM Plex Mono",monospace;margin-top:1px}
.kg-alert .ic.err{color:var(--kg-err);background:var(--kg-err-bg)}.kg-alert .ic.warn{color:var(--kg-warn);background:var(--kg-warn-bg)}.kg-alert .ic.info{color:var(--kg-info);background:var(--kg-info-bg)}
.kg-alert .tt{font-weight:500}.kg-alert .tx{color:var(--kg-muted);font-size:0.7812rem}
.kg-alert .code{font:600 0.75rem "IBM Plex Mono",monospace;color:var(--kg-warn)}.kg-alert .code.err{color:var(--kg-err)}
.kg-banner{display:flex;gap:0.75rem;align-items:center;padding:0.625rem 0.875rem;border-radius:0.5rem;border:1px solid;margin-bottom:0.75rem;flex-wrap:wrap}
.kg-banner.err{background:var(--kg-err-bg);border-color:color-mix(in oklab,var(--kg-err) 30%,transparent);color:var(--kg-text)}
.kg-banner.warn{background:var(--kg-warn-bg);border-color:color-mix(in oklab,var(--kg-warn) 30%,transparent)}
.kg-banner.info{background:var(--kg-info-bg);border-color:color-mix(in oklab,var(--kg-info) 30%,transparent)}
.kg-banner.ok{background:var(--kg-ok-bg);border-color:color-mix(in oklab,var(--kg-ok) 30%,transparent)}
.kg-banner b{font-weight:600}.kg-banner .grow{flex:1;min-width:13.75rem}
.kg-chips{display:flex;flex-wrap:wrap;gap:0.25rem}
.kg-chip{font:0.75rem "IBM Plex Mono",monospace;padding:1px 0.4375rem;border-radius:0.25rem;border:1px solid var(--kg-line);background:var(--kg-surface);white-space:nowrap;line-height:1.1875rem}
.kg-chip.f-frei{background:var(--kg-ok-bg);border-color:transparent;color:var(--kg-ok)}
.kg-chip.f-del{background:var(--kg-err-bg);border-color:transparent;color:var(--kg-err);text-decoration:line-through;text-decoration-thickness:1px}
.kg-chip.f-del.plain{text-decoration:none}
.kg-chip.f-off{color:var(--kg-text)}
.kg-chip.f-drop{border-style:dashed;color:var(--kg-subtle)}
.kg-chip small{font-family:"IBM Plex Sans",sans-serif;font-size:0.6875rem;opacity:.8;margin-left:0.25rem}
.kg-leg{display:flex;flex-wrap:wrap;gap:0.875rem;font-size:0.75rem;color:var(--kg-muted)}.kg-leg span{display:inline-flex;align-items:center;gap:0.375rem}.kg-leg i{width:0.625rem;height:0.625rem;border-radius:2px;display:block;background:var(--kg-c)}
.kg-dl{display:grid;grid-template-columns:minmax(7.5rem,auto) minmax(0,1fr);gap:0;margin:0}
.kg-dl dt,.kg-dl dd{padding:0.4375rem 0;border-bottom:1px solid var(--kg-line2);margin:0}.kg-dl dt{color:var(--kg-muted);font-weight:400;padding-right:0.75rem}.kg-dl dd{font-variant-numeric:tabular-nums}
.kg-dl>:nth-last-child(-n+2){border-bottom:0}
.kg-empty{text-align:center;padding:1.75rem 1rem;color:var(--kg-muted)}.kg-empty .tt{color:var(--kg-text);font-weight:600;margin-bottom:2px}
.kg-seg{display:inline-flex;border:1px solid var(--kg-line);border-radius:0.375rem;overflow:hidden;background:var(--kg-surface)}
.kg-seg :is(a,button){all:unset;cursor:pointer;padding:0.1875rem 0.625rem;font-size:0.75rem;color:var(--kg-muted);border-right:1px solid var(--kg-line)}.kg-seg :is(a,button):last-child{border-right:0}
.kg-seg :is(a,button).on{background:var(--kg-text);color:var(--kg-surface)}
.btn{font-size:0.8125rem;border-radius:0.375rem;font-weight:500}.btn-sm{font-size:0.75rem;padding:0.1875rem 0.5625rem}
.btn-dark{--bs-btn-bg:var(--kg-text);--bs-btn-border-color:var(--kg-text);--bs-btn-color:var(--kg-surface);--bs-btn-hover-bg:var(--kg-muted);--bs-btn-hover-border-color:var(--kg-muted);--bs-btn-hover-color:var(--kg-surface)}
.btn-outline-secondary{--bs-btn-color:var(--kg-text);--bs-btn-border-color:var(--kg-line);--bs-btn-hover-bg:var(--kg-surface2);--bs-btn-hover-color:var(--kg-text);--bs-btn-hover-border-color:var(--kg-subtle);background:var(--kg-surface)}
.btn-outline-danger{--bs-btn-color:var(--kg-err);--bs-btn-border-color:color-mix(in oklab,var(--kg-err) 40%,transparent);--bs-btn-hover-bg:var(--kg-err-bg);--bs-btn-hover-color:var(--kg-err);--bs-btn-hover-border-color:var(--kg-err)}
.form-control,.form-select{font-size:0.8125rem;background-color:var(--kg-surface);border-color:var(--kg-line);color:var(--kg-text);border-radius:0.375rem}
.form-select-sm,.form-control-sm{font-size:0.75rem;padding-top:0.1875rem;padding-bottom:0.1875rem}
.form-label{font-size:0.75rem;color:var(--kg-muted);margin-bottom:0.1875rem}
.form-check-input:checked{background-color:var(--kg-text);border-color:var(--kg-text)}
.kg-ed{position:relative;border:1px solid var(--kg-line);border-radius:0.375rem;background:var(--kg-surface2);height:26.25rem;overflow:hidden}
.kg-ed pre,.kg-ed textarea{position:absolute;inset:0;margin:0;padding:0.75rem 0.875rem;font:0.7812rem/1.6 "IBM Plex Mono",monospace;white-space:pre-wrap;word-wrap:break-word;overflow:auto;border:0;tab-size:2}
.kg-ed pre{color:var(--kg-text);pointer-events:none}
.kg-ed textarea{background:transparent;color:transparent;caret-color:var(--kg-text);resize:none;outline:none}
.kg-ed mark{background:var(--kg-info-bg);color:var(--kg-info);border-radius:0.1875rem;padding:0;box-shadow:0 0 0 1px color-mix(in oklab,var(--kg-info) 35%,transparent)}
.kg-tabs{display:flex;gap:2px;border-bottom:1px solid var(--kg-line);margin-bottom:0.875rem}
.kg-tabs :is(a,button){all:unset;cursor:pointer;padding:0.5rem 0.75rem;color:var(--kg-muted);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}
.kg-tabs :is(a,button).on{color:var(--kg-text);border-bottom-color:var(--kg-text)}
.kg-toast{position:fixed;bottom:1.25rem;left:50%;transform:translateX(-50%);background:var(--kg-text);color:var(--kg-surface);padding:0.5625rem 1rem;border-radius:0.5rem;font-size:0.8125rem;z-index:100;box-shadow:0 0.5rem 1.875rem rgba(0,0,0,.25);animation:kg-fade 3.2s forwards}
@keyframes kg-fade{85%{opacity:1}100%{opacity:0;visibility:hidden}}
.kg-prod{border:1px solid var(--kg-line);border-radius:0.5rem;background:var(--kg-surface)}
.kg-prod+.kg-prod{margin-top:0.625rem}
.kg-prod-h{display:flex;gap:0.625rem;align-items:baseline;padding:0.5625rem 0.875rem;border-bottom:1px solid var(--kg-line2);flex-wrap:wrap}
summary.kg-prod-h{cursor:pointer;list-style:none}summary.kg-prod-h::-webkit-details-marker{display:none}
.kg-prod:not([open]) .kg-prod-h{border-bottom:0}
.kg-prod-b{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:0}
.kg-prod-b>div{padding:0.625rem 0.875rem;min-width:0}.kg-prod-b>div+div{border-left:1px solid var(--kg-line2)}
.kg-lbl{font-size:0.6875rem;font-weight:600;color:var(--kg-subtle);text-transform:uppercase;letter-spacing:.05em;margin-bottom:0.3125rem}
.kg-pre{font:0.75rem/1.55 "IBM Plex Mono",monospace;background:var(--kg-surface2);border:1px solid var(--kg-line2);border-radius:0.375rem;padding:0.5rem 0.625rem;white-space:pre-wrap;margin:0;color:var(--kg-text);max-height:13.75rem;overflow:auto}
.kg-pre .add{display:block;background:var(--kg-ok-bg);margin:0 -0.625rem;padding:0 0.625rem}.kg-pre .del{display:block;background:var(--kg-err-bg);margin:0 -0.625rem;padding:0 0.625rem}
.kg-pre.flat{max-height:18.75rem;border-radius:0;border:0}
.kg-cmp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0}
.kg-cmp>*+*{border-left:1px solid var(--kg-line2)}
.kg-login{min-height:100vh;display:grid;place-items:center;padding:1.25rem}
.kg-login .card{width:100%;max-width:22.5rem}
.kg-dot{width:0.5rem;height:0.5rem;border-radius:2px;display:inline-block;flex:none;background:var(--kg-c)}
.kg-dot.lg{width:0.625rem;height:0.625rem}
.kg-mobnav{display:none}
.kg-c2{grid-template-columns:repeat(2,minmax(0,1fr))}.kg-c3{grid-template-columns:repeat(3,minmax(0,1fr))}.kg-ov{grid-template-columns:minmax(0,2fr) minmax(18.75rem,1fr)}.min-w-0{min-width:0}
.kg-small{font-size:0.7812rem;color:var(--kg-muted)}.kg-tiny{font-size:0.7188rem;color:var(--kg-subtle)}
.kg-ok{color:var(--kg-ok)}.kg-warn{color:var(--kg-warn)}.kg-err{color:var(--kg-err)}.kg-err.strong{font-weight:600}
.kg-chart{display:block;width:100%;height:auto;overflow:visible}
.kg-chart text{font:0.6875rem "IBM Plex Mono",monospace;fill:var(--kg-subtle)}
.kg-chart .grid{stroke:var(--kg-line2)}.kg-chart .we{fill:var(--kg-line2);opacity:.5}.kg-chart .marker{stroke:var(--kg-subtle);stroke-dasharray:3 3}.kg-chart .lim{stroke:var(--kg-text);stroke-dasharray:4 3}
.kg-chart g.col:hover rect{opacity:.75}
.kg-code{font-size:1.375rem;letter-spacing:.3em}
@media (max-width:1280px){.kg-c3{grid-template-columns:repeat(2,minmax(0,1fr))}.kg-c3>:last-child{grid-column:1/-1}}
@media (max-width:1200px){.kg-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.kg-kpi:nth-child(3){border-right:0}.kg-kpi:nth-child(-n+3){border-bottom:1px solid var(--kg-line)}}
@media (max-width:1100px){.kg-app{grid-template-columns:11.5rem minmax(0,1fr)}.kg-main{padding:1rem 1.125rem 2.5rem}.kg-ov{grid-template-columns:1fr}}
@media (max-width:900px){.kg-c2,.kg-c3{grid-template-columns:1fr}}
@media (max-width:767px){.kg-app{grid-template-columns:1fr}.kg-side{display:none}.kg-mobnav{display:flex;gap:0.25rem;overflow-x:auto;position:sticky;top:0;z-index:10;background:var(--kg-side);border-bottom:1px solid var(--kg-line);padding:0.5rem 0.75rem}.kg-mobnav a{all:unset;cursor:pointer;padding:0.3125rem 0.625rem;border-radius:0.375rem;white-space:nowrap;color:var(--kg-muted);font-weight:500}.kg-mobnav a.on{background:var(--kg-text);color:var(--kg-surface)}.kg-main{padding:0.875rem 0.75rem 1.875rem}.kg-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kg-kpi{border-right:1px solid var(--kg-line)!important;border-bottom:1px solid var(--kg-line)}.kg-kpi:nth-child(2n){border-right:0!important}.kg-prod-b,.kg-cmp{grid-template-columns:1fr}.kg-prod-b>div+div,.kg-cmp>*+*{border-left:0;border-top:1px solid var(--kg-line2)}}
.kg-report{max-width:51.25rem;margin:1.5rem auto;background:var(--kg-surface);border:1px solid var(--kg-line);border-radius:0.5rem;padding:2.25rem 2.5rem}
.kg-report h1{font-size:1.25rem;font-weight:600;margin:0}
.kg-report .table{min-width:0}
@media print{body{background:#fff;font-size:0.75rem}.kg-report{margin:0;border:0;padding:0;max-width:none}.d-print-none{display:none!important}@page{margin:18mm}}
.kg-c-0{--kg-c:#5b7a9a}.kg-c-1{--kg-c:#7d8f5d}.kg-c-2{--kg-c:#b5834f}.kg-c-3{--kg-c:#8c6fa0}.kg-c-4{--kg-c:#5c9a96}.kg-c-5{--kg-c:#a0646e}.kg-c-6{--kg-c:#6f7f9f}.kg-c-7{--kg-c:#9a8a4f}.kg-c-avg{--kg-c:var(--kg-subtle)}.kg-c-mute{--kg-c:var(--kg-line)}
.kg-chart .s{fill:var(--kg-c)}.kg-chart .ln{stroke:var(--kg-c);fill:none;stroke-width:2;stroke-linejoin:round}.kg-chart .pt{fill:var(--kg-surface);stroke:var(--kg-c);stroke-width:1.6}
summary.card-header{cursor:pointer;list-style:none}summary.card-header::-webkit-details-marker{display:none}details.card:not([open])>summary.card-header{border-bottom:0}
@media screen{html{font-size:150%}}
