:root{--ds-brand:#9b1b2e;--ds-brand-hover:#7a1524;--ds-brand-bg:#fdf2f4;--ds-brand-border:#9b1b2e40;--ds-brand-focus:#9b1b2e1f;--ds-bg:#f4f5f7;--ds-surface:#fff;--ds-surface-2:#f9fafb;--ds-surface-3:#f3f4f6;--ds-text:#111827;--ds-text-2:#6b7280;--ds-text-3:#9ca3af;--ds-border:#e5e7eb;--ds-border-2:#d1d5db;--ds-ok:#1a7a45;--ds-ok-bg:#1a7a4514;--ds-ok-border:#1a7a4533;--ds-warn:#92400e;--ds-warn-bg:#fff7ed;--ds-warn-border:#fed7aa;--ds-r:4px;--ds-r2:8px;--ds-r3:12px;--ds-shadow:0 1px 3px #0000000f;--ds-font:"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ds-font-mono:"DM Mono", "SF Mono", "Courier New", monospace}.dark{--ds-brand:#c94a5c;--ds-brand-hover:#e05a6c;--ds-brand-bg:#9b1b2e26;--ds-brand-border:#c94a5c4d;--ds-brand-focus:#9b1b2e40;--ds-bg:#0f1117;--ds-surface:#1a1c25;--ds-surface-2:#22242e;--ds-surface-3:#2d2f3a;--ds-text:#e5e7eb;--ds-text-2:#9ca3af;--ds-text-3:#6b7280;--ds-border:#2d2f3a;--ds-border-2:#3d4155;--ds-ok:#34d399;--ds-ok-bg:#34d3991a;--ds-ok-border:#34d39933;--ds-warn:#fbbf24;--ds-warn-bg:#fbbf241a;--ds-warn-border:#fbbf2433;--ds-shadow:0 1px 3px #0000004d}:root{--bg:var(--ds-bg);--card:var(--ds-surface);--card-alt:var(--ds-surface-2);--text:var(--ds-text);--text2:var(--ds-text-2);--text3:var(--ds-text-3);--border:var(--ds-border);--border2:var(--ds-surface-3);--input-bg:var(--ds-surface);--input-focus:var(--ds-brand-focus);--tb-bg:var(--ds-surface);--tb-border:var(--ds-border);--accent:var(--ds-brand);--accent-hover:var(--ds-brand-hover);--shadow:var(--ds-shadow)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);height:100%;color:var(--text);-webkit-font-smoothing:antialiased;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}#root{height:100%}.app{flex-direction:column;height:100vh;display:flex}.tb{background:var(--tb-bg);border-bottom:2px solid var(--tb-border);z-index:300;height:52px;box-shadow:var(--shadow);flex-shrink:0;align-items:center;gap:10px;padding:0 16px;display:flex}.logo-wrap{align-items:center;gap:10px;display:flex}.logo-img{object-fit:contain;background:#fff;border-radius:6px;width:auto;height:34px;padding:3px 8px}.logo-sub{color:var(--text2);letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;border-left:1.5px solid var(--border);padding-left:10px;font-size:11px;font-weight:700}.version-tag{color:var(--text3);margin-left:6px;font-size:10px;font-weight:600}.ub{color:var(--text2);align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}.ub-name{text-overflow:ellipsis;white-space:nowrap;max-width:130px;overflow:hidden}.body{flex:1;display:flex;position:relative;overflow:hidden}.sb{z-index:200;background:#161621;flex-direction:column;flex-shrink:0;width:260px;padding:0;font-family:DM Sans,sans-serif;display:flex;overflow:hidden auto}.sb-profile{border-bottom:1px solid #ffffff12;align-items:center;gap:14px;padding:24px 22px 20px;display:flex}.sb-avatar{color:#fff;background:linear-gradient(135deg,#9b1b2e,#c94a5c);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:17px;font-weight:700;display:flex;box-shadow:0 4px 12px #9b1b2e4d}.sb-profile-info{flex:1;overflow:hidden}.sb-profile-role{color:#565a6e;text-transform:uppercase;letter-spacing:1px;margin-bottom:2px;font-size:10px;font-weight:600}.sb-profile-name{color:#e2e4ed;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.sb-section{color:#3d4155;text-transform:uppercase;letter-spacing:1.5px;margin-top:20px;padding:8px 24px 6px;font-size:10px;font-weight:700}.nav{cursor:pointer;color:#7b7f95;-webkit-user-select:none;user-select:none;border-radius:10px;align-items:center;gap:14px;margin:2px 12px;padding:12px 22px;font-size:14px;font-weight:500;transition:all .18s;display:flex}.nav:hover{color:#b8bbd0;background:#ffffff0d}.nav.on{color:#fff;background:#6366f12e;font-weight:600}.nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.nav-icon svg{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.nsep{background:#ffffff0d;height:1px;margin:14px 24px}.sb-bottom{border-top:1px solid #ffffff0d;margin-top:auto;padding:16px 12px}.sb-bottom .nav{color:#565a6e;padding:10px 22px;font-size:13px}.sb-bottom .nav:hover{color:#7b7f95}.sb-bottom .nav.logout{color:#e05a6c}.sb-bottom .nav.logout:hover{color:#f87171;background:#dc262614}.con{flex:1;min-width:0;padding:24px 28px;overflow-y:auto}.con:before{content:"KD Suite";border:1px solid var(--border);background:var(--card);color:var(--text2);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;margin-bottom:12px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-block}.theme-btn{border:1px solid var(--border);cursor:pointer;color:var(--text2);background:0 0;border-radius:8px;padding:6px 8px;font-size:16px;line-height:1;transition:all .12s}.theme-btn:hover{background:var(--card-alt);border-color:var(--text3)}.btn{border:1px solid var(--border);background:var(--card);cursor:pointer;color:var(--text);white-space:nowrap;border-radius:8px;align-items:center;gap:5px;min-height:36px;padding:8px 14px;font-family:inherit;font-size:13px;transition:all .12s;display:inline-flex}.btn:hover{background:var(--card-alt);border-color:var(--text3)}.btn.p{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.btn.p:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.d{color:#dc2626;border-color:#fca5a5}.btn.d:hover{background:#fef2f2}.btn.g{color:#fff;background:#059669;border-color:#059669;font-weight:600}.btn.g:hover{background:#047857}.btn.sm{min-height:28px;padding:5px 9px;font-size:11px;font-weight:600}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px}.kcard{background:var(--card-alt);border:1px solid var(--border2);border-radius:10px;padding:14px 16px}.tbl-wrap{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 140px);overflow:auto}.tbl thead th{z-index:5;box-shadow:0 1px 0 var(--border);position:sticky;top:0}.tbl{border-collapse:collapse;width:100%;min-width:600px;font-size:13px}.tbl th{text-align:left;color:var(--text2);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;background:var(--card-alt);padding:9px 13px;font-size:11px;font-weight:600}.tbl td{border-bottom:1px solid var(--border2);vertical-align:middle;padding:10px 13px}.tbl tr:last-child td{border-bottom:none}.tbl tbody tr{transition:background .1s}.tbl tbody tr:hover td{background:var(--card-alt)}.sh{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;display:flex}.stit{color:var(--text);font-size:18px;font-weight:700}.smeta{color:var(--text3);margin-left:6px;font-size:13px;font-weight:400}.fg{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.fl{color:var(--text2);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:700}.fr2{grid-template-columns:1fr 1fr;gap:16px;display:grid}input[type=text],input[type=password],input[type=email],input:not([type]),select{border:1px solid var(--border);color:var(--text);background:var(--input-bg);border-radius:8px;outline:none;width:100%;padding:9px 11px;font-family:inherit;font-size:14px;transition:border-color .12s,box-shadow .12s}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--input-focus)}.badge{white-space:nowrap;border-radius:5px;align-items:center;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.bg{color:#065f46;background:#d1fae5}.bn{color:#6b7280;background:#f3f4f6}.br{color:#1e40af;background:#dbeafe}.bv{color:#991b1b;background:#fee2e2}.by{color:#92400e;background:#fef3c7}.alert{border-radius:10px;align-items:flex-start;gap:8px;margin-bottom:16px;padding:12px 16px;font-size:13px;line-height:1.6;display:flex}.alert.info{color:#1e40af;background:#eff6ff;border:1px solid #bfdbfe}.alert.ok{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.alert.warn{color:#6b0f1a;background:#fdf2f4;border:1px solid #f5b8c0}.modal-overlay{z-index:500;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--card);border-radius:16px;width:100%;max-width:600px;max-height:90vh;padding:24px;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal-title{color:var(--text);margin-bottom:16px;font-size:17px;font-weight:700}.div{background:var(--border2);height:1px;margin:16px 0}.lw{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.spin{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-full{color:#6b7280;flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100vh;font-size:14px;display:flex}.cb{cursor:pointer;align-items:center;gap:9px;padding:6px 0;display:flex}.cb input[type=checkbox]{cursor:pointer;accent-color:#111827;flex-shrink:0;width:17px;height:17px}.section-title{color:#374151;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #f3f4f6;margin-bottom:10px;padding-bottom:6px;font-size:13px;font-weight:700}@media (width<=900px){.sb{z-index:300;transition:transform .25s;position:fixed;top:52px;bottom:0;left:0;transform:translate(-100%);box-shadow:4px 0 20px #0000004d}.sb.open{transform:translate(0)}.mob-overlay{z-index:199;background:#0006;display:none;position:fixed;inset:52px 0 0}.mob-overlay.show{display:block}.hamburger{display:flex!important}.con{padding:16px}.fr2{grid-template-columns:1fr}}.hamburger{cursor:pointer;color:var(--text2);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:none}.hamburger:hover{background:var(--card-alt)}.session-warning{background:var(--card);z-index:1000;max-width:300px;color:var(--text);border:2px solid #9b1b2e;border-radius:12px;padding:16px 20px;font-size:13px;position:fixed;bottom:20px;right:20px;box-shadow:0 8px 30px #00000040}
