.shell{height:100vh;display:flex;overflow:hidden}.shell-sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--color-surface-1);border-right:1px solid var(--color-border-default);flex-direction:column;display:flex;overflow-y:auto}.shell-brand{border-bottom:1px solid var(--color-border-default);align-items:center;gap:10px;padding:14px 16px;display:flex}.shell-brand-icon{color:var(--color-success);display:inline-flex}.shell-brand-text{font-family:var(--font-mono);font-size:var(--font-size-md);color:var(--color-text-primary);font-weight:600}.shell-nav{padding:var(--space-2) 0;flex:1}.shell-nav-item{color:var(--color-text-secondary);font-size:var(--font-size-base);border-left:2px solid #0000;align-items:center;gap:10px;padding:8px 16px;text-decoration:none;transition:background .1s;display:flex}.shell-nav-item:hover{background:var(--color-surface-2);color:var(--color-text-primary)}.shell-nav-item.active{background:var(--color-surface-2);color:var(--color-text-primary);border-left-color:var(--color-info)}.shell-nav-icon{width:20px;color:var(--color-text-disabled);justify-content:center;align-items:center;display:inline-flex}.shell-nav-item.active .shell-nav-icon{color:var(--color-info)}.shell-sidebar-footer{border-top:1px solid var(--color-border-default);padding:12px 16px}.shell-version{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-disabled)}.shell-main{flex-direction:column;flex:1;display:flex;overflow:hidden}.shell-header{height:var(--header-height);min-height:var(--header-height);padding:0 var(--space-5);background:var(--color-surface-1);border-bottom:1px solid var(--color-border-default);justify-content:space-between;align-items:center;display:flex}.shell-breadcrumb{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-disabled);display:flex}.shell-header-actions{align-items:center;gap:var(--space-3);display:flex}.shell-user{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-disabled);background:var(--color-surface-2);border-radius:var(--radius-sm);padding:4px 10px}.shell-logout{border:1px solid var(--color-border-default);border-radius:var(--radius-sm);background:var(--color-surface-1);color:var(--color-text-secondary);font:inherit;font-size:var(--font-size-xs);cursor:pointer;align-items:center;gap:6px;padding:5px 8px;display:inline-flex}.shell-logout:hover,.shell-logout:focus-visible{border-color:var(--color-border-hover);background:var(--color-surface-2);color:var(--color-text-primary);outline:none}.shell-content{padding:var(--space-5);flex:1;overflow-y:auto}@media (width<=900px){.shell-sidebar{width:64px;min-width:64px}.shell-brand-text,.shell-nav-item>span:last-child,.shell-version{display:none}.shell-brand,.shell-nav-item{justify-content:center;padding-inline:10px}.shell-header{padding-inline:12px}.shell-user{display:none}.shell-content{padding:14px}}.btn{border:1px solid var(--color-border-default);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--font-size-base);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;transition:background .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:1px}.btn-sm{font-size:var(--font-size-xs);padding:4px 10px}.btn-md{padding:6px 14px}.btn-primary{color:var(--color-success);background:#1a3a2a;border-color:#2a4a3a}.btn-primary:hover:not(:disabled){background:#1f4432}.btn-secondary{background:var(--color-surface-2);color:var(--color-text-secondary)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-3)}.btn-danger{color:var(--color-error);background:#3d2020;border-color:#4a2a2a}.btn-danger:hover:not(:disabled){background:#442424}.btn-ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-2)}.field{flex-direction:column;gap:4px;display:flex}.field-label{font-size:var(--font-size-xs);color:var(--color-text-disabled);text-transform:uppercase;letter-spacing:.5px}.field-input{background:var(--color-surface-1);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:var(--font-mono);font-size:var(--font-size-base);outline:none;padding:6px 12px;transition:border-color .15s}.field-input:focus{border-color:var(--color-border-focus)}.field-input::placeholder{color:var(--color-text-disabled)}.field-input-error{border-color:var(--color-error)}.field-error{color:var(--color-error);font-size:var(--font-size-xs)}.login-page{background:var(--color-surface-0);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--color-border-default);background:var(--color-surface-1);width:min(420px,100%);box-shadow:var(--shadow-md);border-radius:12px;padding:32px}.login-mark{width:48px;height:48px;color:var(--color-success);background:#10251c;border:1px solid #2d7355;border-radius:9px;place-items:center;margin-bottom:18px;display:grid}.login-eyebrow{color:#75a9d6;letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:6px;font-size:11px;font-weight:700;display:inline-flex}.login-card h1{margin:8px 0 6px;font-size:24px}.login-card>p{color:var(--color-text-disabled);font-size:13px;line-height:1.5}.login-form{gap:14px;margin-top:24px;display:grid}.login-submit{justify-content:center;width:100%;margin-top:4px}.login-error{color:var(--color-error);background:#2a1717;border:1px solid #6e3030;border-radius:5px;padding:9px 10px;font-size:12px}.login-card>small{color:var(--color-text-disabled);font-family:var(--font-mono);text-align:center;margin-top:22px;font-size:10px;display:block}.skeleton{background:linear-gradient(90deg, var(--color-surface-2) 25%, var(--color-surface-3) 50%, var(--color-surface-2) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite skeleton-loading}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}:root{--color-surface-0:#0a0e14;--color-surface-1:#0d1117;--color-surface-2:#131b24;--color-surface-3:#1a2332;--color-text-primary:#e6edf3;--color-text-secondary:#b3b9c4;--color-text-disabled:#8b949e;--color-text-link:#79c0ff;--color-border-default:#1e293b;--color-border-hover:#2a3a50;--color-border-focus:#79c0ff;--scrollbar-size:8px;--scrollbar-track:transparent;--scrollbar-thumb:#263548;--scrollbar-thumb-hover:#3a526c;--color-success:#7ee787;--color-warning:#d2a864;--color-error:#f87171;--color-info:#79c0ff;--color-risk-low:#7ee787;--color-risk-medium:#d2a864;--color-risk-high:#f87171;--color-risk-critical:#f44;--color-risk-unknown:#8b949e;--color-evidence-observed:#79c0ff;--color-evidence-confirmed:#7ee787;--color-evidence-declared:#d2a864;--color-evidence-inferred:#8b949e;--color-coverage-complete:#7ee787;--color-coverage-partial:#d2a864;--color-coverage-stale:#8b949e;--color-coverage-none:#f87171;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-8:48px;--font-mono:"JetBrains Mono", "Fira Code", monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs:11px;--font-size-sm:12px;--font-size-base:13px;--font-size-md:15px;--font-size-lg:18px;--font-size-xl:24px;--radius-sm:3px;--radius-md:6px;--radius-lg:8px;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--sidebar-width:240px;--header-height:52px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::-webkit-scrollbar{width:var(--scrollbar-size);height:var(--scrollbar-size)}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover);background-clip:padding-box}::-webkit-scrollbar-corner{background:0 0}html,body,#root{background:var(--color-surface-0);height:100%;color:var(--color-text-primary);font-family:var(--font-sans);font-size:var(--font-size-base);-webkit-font-smoothing:antialiased}
