:root{--background:#f5f6fa;--foreground:#0f1222;--card:#fff;--border:#e4e7ee;--muted:#f1f3f8;--muted-foreground:#64708a;--primary:#070b2e;--primary-hover:#141a4d;--primary-foreground:#fff;--brand-accent:#54b9f5;--link:#1273c4;--success:#16a34a;--success-bg:#ddf3e4;--success-fg:#14642f;--warning:#f59e0b;--warning-bg:#fdeed1;--warning-fg:#7a4900;--destructive:#dc2626;--destructive-bg:#fde5e4;--destructive-fg:#8a1c18;--info-bg:#e3f2fd;--info-fg:#1e4ea8;--radius-lg:10px;--radius-md:8px;--radius-sm:6px;--shadow-sm:0 1px 2px 0 rgba(15,18,34,.05);--shadow-md:0 4px 12px rgba(15,18,34,.07)}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;background:var(--background);color:var(--foreground);font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}h2{font-weight:600;letter-spacing:-.01em}button{font:inherit;font-weight:500;cursor:pointer;height:34px;padding:0 14px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--card);color:var(--foreground);transition:background-color .15s ease,border-color .15s ease,opacity .15s ease}button:hover{background:var(--muted)}button.primary{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary)}button.primary:hover{background:var(--primary-hover)}button.danger{background:var(--destructive);color:#fff;border-color:var(--destructive)}button.danger:hover{opacity:.9;background:var(--destructive)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible{outline:2px solid var(--brand-accent);outline-offset:2px}button[style*=padding]{height:auto}input,select,textarea{font:inherit;height:36px;padding:0 12px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--card);color:var(--foreground);transition:border-color .15s ease,box-shadow .15s ease}textarea{height:auto;padding:8px 12px}input::placeholder{color:var(--muted-foreground);opacity:.7}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-accent);box-shadow:0 0 0 3px rgba(84,185,245,.25)}table{width:100%;border-collapse:collapse;background:var(--card);font-size:13.5px}table td,table th{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}table th{background:transparent;font-weight:500;font-size:12px;color:var(--muted-foreground);white-space:nowrap}table tbody tr{transition:background-color .1s ease}table tbody tr:hover{background:var(--muted)}table tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:600;background:var(--muted);color:var(--foreground);border:1px solid transparent}.badge.ok{background:var(--success-bg);color:var(--success-fg)}.badge.warn{background:var(--warning-bg);color:var(--warning-fg)}.badge.fail{background:var(--destructive-bg);color:var(--destructive-fg)}.app-shell{display:flex;min-height:100vh}.app-sidebar{width:240px;flex-shrink:0;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh}.app-sidebar-header{height:56px;display:flex;align-items:center;padding:0 20px;border-bottom:1px solid var(--border);flex-shrink:0}.app-sidebar-header img{height:22px;width:auto;display:block}.app-nav{flex:1 1;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:18px}.app-nav-group-label{padding:0 12px 6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground)}.app-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.app-nav a{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);font-size:14px;color:var(--muted-foreground);transition:background-color .12s ease,color .12s ease}.app-nav a:hover{background:var(--muted);color:var(--foreground);text-decoration:none}.app-nav a.active{background:var(--primary);color:var(--primary-foreground)}.app-nav a svg{width:16px;height:16px;flex-shrink:0}.app-sidebar-footer{border-top:1px solid var(--border);padding:14px 16px;font-size:12px;color:var(--muted-foreground);flex-shrink:0}.app-main-wrap{flex:1 1;display:flex;flex-direction:column;min-width:0}.app-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;height:56px;display:flex;align-items:center;gap:12px;padding:0 24px;border-bottom:1px solid var(--border);background:hsla(0,0%,100%,.82);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app-main{flex:1 1;overflow:auto;padding:24px}.app-burger{background:transparent;border:none;cursor:pointer;padding:6px;margin-right:4px;color:var(--foreground);align-items:center}.app-burger,.app-sidebar-backdrop{display:none}@media (max-width:768px){.app-sidebar{position:fixed;left:0;top:0;z-index:50;width:248px;transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 0 40px rgba(0,0,0,.2)}.app-sidebar.open{transform:translateX(0)}.app-sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:40}.app-burger{display:inline-flex}.app-topbar{padding:0 14px}.app-main{padding:16px 14px}.card{overflow-x:auto!important;-webkit-overflow-scrolling:touch}table{min-width:520px}.row>div{flex-wrap:wrap}.kv-label{width:100px!important;min-width:80px}.row h2{font-size:17px}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.timeline{position:relative;padding-left:20px;margin:0;list-style:none}.timeline:before{content:"";position:absolute;left:5px;top:0;bottom:0;width:2px;background:var(--border)}.timeline li{position:relative;padding:8px 0}.timeline li:before{content:"";position:absolute;left:-19px;top:14px;width:10px;height:10px;background:var(--brand-accent);border-radius:50%}.error-msg{background:var(--destructive-bg);color:var(--destructive-fg);border:1px solid rgba(220,38,38,.25);padding:10px 14px;border-radius:var(--radius-md);margin:12px 0;font-size:13px}