:root{--tk-brand: #0d3a5c;--tk-brand-2: #0a2c46;--tk-accent: #3fbfb0;--tk-accent-strong: #1f8f84;--tk-bg: #f2f3f7;--tk-surface: #ffffff;--tk-line: #d6dbe4;--tk-fg: #2b2f38;--tk-fg-2: #5a6170;--tk-fg-3: #8a90a0;--tk-ok: #1e8449;--tk-warn: #b86b00;--tk-crit: #c0352a;--tk-crit-soft: #fadfdc}@media(prefers-color-scheme:dark){:root{--tk-bg: #10171f;--tk-surface: #18222c;--tk-line: #2c3a48;--tk-fg: #e6eaf0;--tk-fg-2: #b4bccb;--tk-fg-3: #7f8a9b;--tk-crit-soft: #3a1f1d}}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:Roboto,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:var(--tk-bg);color:var(--tk-fg)}:root{--tk-ok-soft: #dff3e7;--tk-warn-soft: #fbeed6;--tk-muted-soft: #eceff4}@media(prefers-color-scheme:dark){:root{--tk-ok-soft: #173325;--tk-warn-soft: #3a2c12;--tk-muted-soft: #222d38}}body{font-size:14px}h1{font-size:20px;font-weight:500;margin:0 0 16px}h2{font-size:16px;font-weight:500;margin:24px 0 10px}a{color:var(--tk-accent-strong)}.page{padding:24px 16px 48px;max-width:1280px;margin:0 auto}.muted{color:var(--tk-fg-3)}.small{font-size:12px}.mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px}.error{color:var(--tk-crit)}.ok-text{color:var(--tk-ok)}.right{text-align:right}.nowrap{white-space:nowrap}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.toolbar .spacer{flex:1}.toolbar h1{margin:0}.card{background:var(--tk-surface);border:1px solid var(--tk-line);border-radius:6px;padding:16px;margin-bottom:16px}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.kpi{background:var(--tk-surface);border:1px solid var(--tk-line);border-radius:6px;padding:12px 14px}.kpi .label{font-size:12px;color:var(--tk-fg-2)}.kpi .value{font-size:24px;font-weight:500;margin-top:2px;font-variant-numeric:tabular-nums}.kpi .sub{font-size:12px;color:var(--tk-fg-3)}.table-wrap{overflow-x:auto;background:var(--tk-surface);border:1px solid var(--tk-line);border-radius:6px}table.data{width:100%;border-collapse:collapse}table.data th,table.data td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--tk-line);vertical-align:top}table.data th{font-size:12px;font-weight:500;color:var(--tk-fg-2);background:var(--tk-bg);position:sticky;top:0}table.data tr:last-child td{border-bottom:0}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:var(--tk-bg)}.form{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--tk-fg-2)}.field.wide{flex:1;min-width:220px}.field.full{flex-basis:100%}.check{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--tk-fg)}input,select,textarea{font:inherit;font-size:14px;padding:7px 9px;border:1px solid var(--tk-line);border-radius:4px;background:var(--tk-surface);color:var(--tk-fg)}input[type=checkbox]{padding:0}textarea{min-height:80px;resize:vertical}input.ng-invalid.ng-touched,select.ng-invalid.ng-touched{border-color:var(--tk-crit)}input:focus,select:focus,textarea:focus{outline:2px solid var(--tk-accent);outline-offset:-1px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:1px solid transparent;border-radius:4px;background:var(--tk-brand);color:#fff;font:inherit;font-weight:500;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.55;cursor:default}.btn.secondary{background:var(--tk-surface);color:var(--tk-fg);border-color:var(--tk-line)}.btn.danger{background:var(--tk-crit)}.btn.secondary.danger{background:var(--tk-surface);color:var(--tk-crit)}.btn.small{padding:3px 8px;font-size:12px}.linkbtn{background:none;border:0;padding:0;color:var(--tk-accent-strong);font:inherit;cursor:pointer;text-decoration:underline}.badge{display:inline-block;font-size:12px;line-height:18px;padding:0 8px;border-radius:9px;white-space:nowrap;background:var(--tk-muted-soft);color:var(--tk-fg-2)}.badge.ok{background:var(--tk-ok-soft);color:var(--tk-ok)}.badge.warn{background:var(--tk-warn-soft);color:var(--tk-warn)}.badge.crit{background:var(--tk-crit-soft);color:var(--tk-crit)}.badge.accent{background:var(--tk-accent);color:#fff}.banner{padding:10px 12px;border-radius:6px;margin-bottom:12px;font-size:13px}.banner.ok{background:var(--tk-ok-soft);color:var(--tk-ok)}.banner.warn{background:var(--tk-warn-soft);color:var(--tk-warn)}.banner.crit{background:var(--tk-crit-soft);color:var(--tk-crit)}.banner ul{margin:4px 0 0;padding-left:18px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--tk-line);margin-bottom:16px;overflow-x:auto}.tabs a{padding:8px 12px;color:var(--tk-fg-2);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}.tabs a.active{color:var(--tk-fg);border-bottom-color:var(--tk-accent);font-weight:500}dialog{border:1px solid var(--tk-line);border-radius:8px;padding:20px;background:var(--tk-surface);color:var(--tk-fg);max-width:min(960px,100vw - 32px);width:100%}dialog::backdrop{background:#0006}dialog h2{margin-top:0}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
