@keyframes nb-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.nb-toast{position:fixed;bottom:var(--space-7);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--chip-radius);font-size:var(--fs-body-sm);color:var(--success-text);box-shadow:var(--shadow-lg);z-index:9999;animation:nb-toast-in var(--dur-med) var(--ease-out)}.nb-notif{position:relative}.nb-notif__btn{position:relative;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast)}.nb-notif__btn:hover{background:var(--surface-hover);color:var(--text-strong)}.nb-notif__badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;background:var(--danger);color:var(--text-on-accent);font-size:10px;font-weight:var(--fw-bold);border-radius:var(--chip-radius);display:flex;align-items:center;justify-content:center}.nb-notif__panel{position:absolute;top:calc(100% + var(--space-3));right:0;width:360px;max-height:420px;background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--panel-radius);box-shadow:var(--shadow-xl);z-index:100;overflow:hidden;display:flex;flex-direction:column}.nb-notif__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.nb-notif__title{font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);color:var(--text-strong)}.nb-notif__mark-all{font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--accent-text);background:none;border:none;cursor:pointer;font-family:var(--font-sans)}.nb-notif__list{overflow-y:auto;flex:1}.nb-notif__empty{padding:var(--space-6);text-align:center;color:var(--text-subtle);font-size:var(--fs-body-sm)}.nb-notif__item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-5);border:none;background:transparent;width:100%;text-align:left;cursor:pointer;font-family:var(--font-sans);transition:background var(--dur-fast);border-bottom:1px solid var(--border-subtle)}.nb-notif__item:hover{background:#ffffff08}.nb-notif__item--unread{background:#3db2ff0a}.nb-notif__item-icon{color:var(--text-muted);flex-shrink:0;margin-top:2px}.nb-notif__item--unread .nb-notif__item-icon{color:var(--accent-text)}.nb-notif__item-content{display:flex;flex-direction:column;gap:2px;min-width:0}.nb-notif__item-message{font-size:var(--fs-body-sm);color:var(--text-body);line-height:var(--lh-body-sm)}.nb-notif__item-time{font-size:var(--fs-caption);color:var(--text-dim)}.shell{display:flex;min-height:100vh;background:var(--canvas)}.shell__sidebar{width:var(--sidebar-w);display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--surface-inset);position:fixed;top:0;left:0;bottom:0;z-index:50}.shell__logo{padding:var(--space-6) var(--space-6) var(--space-5)}.shell__logo img{height:22px}.shell__nav{flex:1;padding:0 var(--space-4);overflow-y:auto}.shell__section-label{display:block;padding:var(--space-5) var(--space-4) var(--space-2);font-size:var(--fs-eyebrow);font-weight:var(--fw-semibold);color:var(--text-dim);text-transform:uppercase;letter-spacing:var(--ls-eyebrow)}.shell__link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--fs-body-sm);color:var(--text-muted);text-decoration:none;transition:background var(--dur-fast),color var(--dur-fast)}.shell__link:hover{background:var(--surface-hover);color:var(--text-strong)}.shell__link--active{background:var(--accent-subtle);color:var(--accent-text)}.shell__footer{padding:var(--space-4);border-top:1px solid var(--border)}.shell__user{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3)}.shell__user-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent-subtle);color:var(--accent-text);display:flex;align-items:center;justify-content:center;font-size:var(--fs-caption);font-weight:var(--fw-bold);flex-shrink:0}.shell__user-info{flex:1;min-width:0}.shell__user-name{font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell__user-role{font-size:var(--fs-caption);color:var(--text-subtle)}.shell__logout{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer}.shell__logout:hover{background:var(--surface-hover);color:var(--danger-text)}.shell__main{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-height:100vh}.shell__topbar{height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-8);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--canvas);z-index:40}.shell__topbar-title{font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);color:var(--text-muted)}.shell__topbar-right{display:flex;align-items:center;gap:var(--space-4)}.shell__role-toggle{display:inline-flex;align-items:center;gap:var(--space-2);height:28px;padding:0 var(--space-4);border-radius:var(--chip-radius);border:1px solid var(--accent-subtle-border);background:var(--accent-subtle);color:var(--accent-text);font-family:var(--font-sans);font-size:var(--fs-caption);font-weight:var(--fw-semibold);cursor:pointer}.shell__role-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.shell__content{flex:1;padding:var(--space-8);max-width:var(--content-max);margin:0 auto;width:100%}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-variable.woff2) format("woff2-variations")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600.woff2) format("woff2")}:root{--brand-primary: #171216;--brand-coral: #CF5954;--brand-blue: #697CB2;--brand-tan: #DFB590;--brand-dark: #28283A;--brand-neutral: #FCFBFC;--canvas: #0a0e17;--canvas-subtle: #070d1b;--surface: #0f1520;--surface-raised: #141c2a;--surface-inset: #080c14;--surface-hover: rgba(255, 255, 255, .03);--border: rgba(255, 255, 255, .08);--border-subtle: rgba(255, 255, 255, .05);--border-strong: rgba(255, 255, 255, .16);--text-strong: #ffffff;--text-body: rgba(255, 255, 255, .72);--text-muted: rgba(255, 255, 255, .55);--text-subtle: rgba(255, 255, 255, .42);--text-dim: rgba(255, 255, 255, .35);--text-on-accent: #ffffff;--text-link: #8BD8FF;--accent: #3DB2FF;--accent-hover: #69C6FF;--accent-active: #84D0FF;--accent-subtle: rgba(61, 178, 255, .14);--accent-subtle-border: rgba(61, 178, 255, .32);--accent-text: #8BD8FF;--aura: #A669F0;--aura-subtle: rgba(166, 105, 240, .16);--aura-text: #D7AEFF;--status-healthy: #3DD68C;--status-healthy-color: #5FE3A1;--status-healthy-dim: rgba(45, 168, 106, .16);--status-degraded: #F2A93B;--status-degraded-color: #FFC575;--status-degraded-dim: rgba(230, 146, 24, .16);--status-down: #FF5C50;--status-down-color: #FF8B82;--status-down-dim: rgba(219, 68, 56, .18);--status-maintenance: #3DB2FF;--status-maintenance-color: #8BD8FF;--status-maintenance-dim: rgba(61, 178, 255, .16);--success: #5FE3A1;--success-subtle: rgba(95, 227, 161, .14);--success-text: #6BE6A6;--warning: #FFC575;--warning-subtle: rgba(255, 197, 117, .16);--warning-text: #FFC575;--danger: #FF8B82;--danger-subtle: rgba(255, 139, 130, .16);--danger-text: #FF8B82;--info: #8BD8FF;--info-subtle: rgba(139, 216, 255, .14);--info-text: #8BD8FF;--class-internal: rgba(255, 255, 255, .6);--class-internal-bg: rgba(255, 255, 255, .06);--class-confidential: #FFC575;--class-confidential-bg: rgba(255, 197, 117, .16);--class-restricted: #FF8B82;--class-restricted-bg: rgba(255, 139, 130, .16);--grad-aurora: linear-gradient(135deg, #3DB2FF, #A669F0);--grad-nebula: linear-gradient(165deg, rgba(11, 31, 58, .6), rgba(5, 11, 26, .2));--focus-ring: #3DB2FF;--overlay: rgba(0, 0, 0, .64)}:root{--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Code", "Fira Code", monospace;--fw-light: 300;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fs-display: 40px;--lh-display: 1;--ls-display: -.02em;--fs-stat: 34px;--lh-stat: 1;--ls-stat: -.01em;--fs-stat-sm: 26px;--lh-stat-sm: 1.1;--ls-stat-sm: -.01em;--fs-heading-lg: 18px;--lh-heading-lg: 1.2;--ls-heading-lg: -.01em;--fs-heading-sm: 15.5px;--lh-heading-sm: 1.2;--ls-heading-sm: normal;--fs-body: 14px;--lh-body: 1.55;--ls-body: normal;--fs-body-sm: 13.5px;--lh-body-sm: 1.45;--ls-body-sm: normal;--fs-label: 12.5px;--lh-label: 1.3;--ls-label: normal;--fs-caption: 11.5px;--lh-caption: 1.4;--ls-caption: normal;--fs-eyebrow: 11px;--lh-eyebrow: 1.3;--ls-eyebrow: .12em;--fs-stat-label: 10.5px;--lh-stat-label: 1.4;--ls-stat-label: .06em}:root{--space-0: 0;--space-1: 2px;--space-2: 4px;--space-3: 8px;--space-4: 12px;--space-5: 16px;--space-6: 20px;--space-7: 24px;--space-8: 32px;--space-9: 40px;--space-10: 48px;--space-11: 64px;--space-12: 80px;--control-sm: 28px;--control-md: 36px;--control-lg: 44px;--topbar-h: 68px;--sidebar-w: 244px;--content-max: 1320px;--panel-radius: 14px;--chip-radius: 999px;--btn-radius: 9px;--input-radius: 9px}:root{--radius-xs: 3px;--radius-sm: 5px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .5), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .55), 0 2px 4px rgba(0, 0, 0, .35);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .35);--shadow-xl: 0 24px 56px rgba(0, 0, 0, .7);--focus-ring-width: 2px;--focus-ring-offset: 2px;--focus-shadow: 0 0 0 var(--focus-ring-offset) var(--canvas), 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring);--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-emphasized: cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .12s;--dur-med: .2s;--dur-slow: .32s}.nb-panel{position:relative;border-radius:var(--panel-radius);background:linear-gradient(180deg,#ffffff0b,#ffffff05);border:1px solid var(--border);overflow:hidden}.nb-panel--accent:before{content:"";position:absolute;top:0;left:16px;right:16px;height:1px;background:var(--grad-aurora);opacity:.75}.nb-panel--hover{cursor:pointer;transition:transform var(--dur-med) var(--ease-standard),box-shadow var(--dur-med) var(--ease-standard),border-color var(--dur-med)}.nb-panel--hover:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--border-strong)}*,*:before,*:after{box-sizing:border-box}html{color-scheme:dark;-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--fw-regular);color:var(--text-body);background:var(--canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,p{margin:0}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}code,kbd,samp,pre{font-family:var(--font-mono);font-size:var(--fs-caption)}:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring);outline-offset:var(--focus-ring-offset);border-radius:var(--radius-xs)}.nb-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.nb-skip-link{position:absolute;left:-9999px;top:var(--space-3);z-index:1000;padding:var(--space-3) var(--space-5);background:var(--accent);color:var(--text-on-accent);border-radius:var(--radius-sm);font-weight:var(--fw-semibold);font-size:var(--fs-label);text-decoration:none}.nb-skip-link:focus{left:var(--space-3)}@keyframes nb-spin{to{transform:rotate(360deg)}}@keyframes nb-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes nbpulse{0%{transform:scale(1);opacity:.35}50%{transform:scale(1.8);opacity:0}to{transform:scale(1.8);opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.nb-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--control-md);padding:0 var(--space-5);border-radius:var(--btn-radius);border:1px solid transparent;font-family:var(--font-sans);font-size:var(--fs-body-sm);font-weight:var(--fw-semibold);cursor:pointer;transition:background var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast);white-space:nowrap;text-decoration:none}.nb-btn:disabled{opacity:.5;cursor:not-allowed}.nb-btn-primary{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent)}.nb-btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.nb-btn-ghost{background:transparent;color:var(--text-body);border-color:var(--border)}.nb-btn-ghost:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong);color:var(--text-strong)}.nb-btn-danger{background:var(--danger);color:var(--text-on-accent);border-color:var(--danger)}.nb-btn-danger:hover:not(:disabled){background:#d4342d}.nb-input{height:var(--control-md);padding:0 var(--space-4);border-radius:var(--input-radius);border:1px solid var(--border);background:#ffffff0a;color:var(--text-strong);font-family:var(--font-sans);font-size:var(--fs-body-sm);transition:border-color var(--dur-fast),background var(--dur-fast);outline:none;width:100%}.nb-input::placeholder{color:var(--text-subtle)}.nb-input:focus{border-color:var(--accent);background:#ffffff0f}.loading-state,.empty-state{text-align:center;padding:var(--space-9);color:var(--text-muted);font-size:var(--fs-body)}@keyframes nb-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
