:root{--color-bg-base: #0b1220;--color-bg-elevated: #111b2e;--color-bg-surface: #162033;--color-bg-muted: #1c2840;--color-bg-hover: #22304d;--color-bg-active: #2a3a5c;--color-border-subtle: #243049;--color-border-default: #2f3f5f;--color-border-strong: #3d5078;--color-text-primary: #e8edf5;--color-text-secondary: #a8b4c8;--color-text-muted: #7a8aa3;--color-text-inverse: #0b1220;--color-accent: #3b6fd4;--color-accent-hover: #4d82e6;--color-accent-muted: #2a4f9e;--color-accent-subtle: rgba(59, 111, 212, .12);--color-success: #2ea872;--color-success-bg: rgba(46, 168, 114, .12);--color-warning: #d4a017;--color-warning-bg: rgba(212, 160, 23, .12);--color-danger: #d94f4f;--color-danger-bg: rgba(217, 79, 79, .12);--color-info: #4a90c4;--color-info-bg: rgba(74, 144, 196, .12);--color-severity-critical: #e05252;--color-severity-high: #e08852;--color-severity-medium: #d4a017;--color-severity-low: #5a9fd4;--color-severity-info: #7a8aa3;--font-sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Code", monospace;--text-xs: .6875rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.625;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--sidebar-width: 220px;--sidebar-collapsed-width: 56px;--topbar-height: 48px;--case-header-height: 40px;--case-subnav-height: 36px;--content-max-width: 1280px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .25);--shadow-md: 0 2px 6px rgba(0, 0, 0, .3);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .35);--focus-ring: 0 0 0 2px var(--color-bg-base), 0 0 0 4px var(--color-accent);--transition-fast: .12s ease;--transition-normal: .2s ease;--z-dropdown: 100;--z-sticky: 200;--z-drawer: 300;--z-modal: 400;--z-toast: 500}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--line-height-normal);color:var(--color-text-primary);background:var(--color-bg-base)}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}p{margin:0}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}code,pre,.mono{font-family:var(--font-mono)}:focus-visible{outline:none;box-shadow:var(--focus-ring)}button:focus:not(:focus-visible),a:focus:not(:focus-visible){box-shadow:none}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--topbar-height) 1fr;grid-template-areas:"sidebar topbar" "sidebar main";min-height:100vh;min-width:1024px}.app-shell--collapsed{grid-template-columns:var(--sidebar-collapsed-width) 1fr}.sidebar{grid-area:sidebar;display:flex;flex-direction:column;background:var(--color-bg-elevated);border-right:1px solid var(--color-border-subtle);overflow-y:auto}.sidebar__brand{display:flex;align-items:center;gap:var(--space-2);height:var(--topbar-height);padding:0 var(--space-4);border-bottom:1px solid var(--color-border-subtle);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;overflow:hidden}.sidebar__nav{display:flex;flex-direction:column;padding:var(--space-2) 0;flex:1}.sidebar__section-label{padding:var(--space-3) var(--space-4) var(--space-1);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.sidebar__link{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);color:var(--color-text-secondary);text-decoration:none;border-left:2px solid transparent;transition:background var(--transition-fast),color var(--transition-fast)}.sidebar__link:hover{background:var(--color-bg-hover);color:var(--color-text-primary);text-decoration:none}.sidebar__link--active{background:var(--color-accent-subtle);color:var(--color-accent-hover);border-left-color:var(--color-accent)}.topbar{grid-area:topbar;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--topbar-height);padding:0 var(--space-4);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border-subtle)}.topbar__left,.topbar__right{display:flex;align-items:center;gap:var(--space-3)}.topbar__title{font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.case-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);height:var(--case-header-height);padding:0 var(--space-4);background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-subtle)}.case-header__info{display:flex;align-items:center;gap:var(--space-3);min-width:0}.case-header__number{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.case-header__name{font-size:var(--text-sm);font-weight:var(--font-weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.case-subnav{display:flex;align-items:stretch;gap:0;height:var(--case-subnav-height);padding:0 var(--space-4);background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-subtle);overflow-x:auto}.case-subnav__link{display:flex;align-items:center;padding:0 var(--space-3);font-size:var(--text-sm);color:var(--color-text-secondary);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap;transition:color var(--transition-fast),border-color var(--transition-fast)}.case-subnav__link:hover{color:var(--color-text-primary);text-decoration:none}.case-subnav__link--active{color:var(--color-accent-hover);border-bottom-color:var(--color-accent)}.main-content{grid-area:main;display:flex;flex-direction:column;overflow:hidden}.main-content__body{flex:1;overflow-y:auto;padding:var(--space-4) var(--space-5);max-width:var(--content-max-width);width:100%;margin:0 auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.infra-form{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);padding:var(--space-3);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:var(--color-bg-elevated)}.infra-form input,.infra-form select,.infra-form textarea{min-height:32px;min-width:150px;border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-surface);color:var(--color-text-primary);padding:6px 8px}.infra-form textarea{min-width:260px;min-height:72px}.infra-form--settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));align-items:end}.infra-checkbox{display:inline-flex;align-items:center;gap:var(--space-2);min-height:32px}.infra-tabs{display:flex;gap:var(--space-1);overflow-x:auto;margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.infra-tabs__link{flex:0 0 auto;padding:7px 10px;border-radius:var(--radius-md);color:var(--color-text-secondary);text-decoration:none;font-size:var(--text-sm)}.infra-tabs__link:hover,.infra-tabs__link--active{color:var(--color-text-primary);background:var(--color-bg-hover)}.infra-tabs__link--active{box-shadow:inset 0 -2px 0 var(--color-accent)}.infra-test-result{display:grid;gap:2px;min-width:230px;margin-top:var(--space-2);color:var(--color-text-secondary);font-size:var(--text-xs)}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-default);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}@media(max-width:1280px){.main-content__body{padding:var(--space-3) var(--space-4)}}@media(max-width:1024px){.app-shell{min-width:1024px}}
