@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-cyrillic-ext-wght-normal-CO5hGrJv.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-cyrillic-wght-normal-EAA9jha_.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-vietnamese-wght-normal-k7S-YeeD.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-latin-ext-wght-normal-BsZE-iaG.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-latin-wght-normal-l_AIctKy.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--id-radius: .875rem;--id-background: oklch(1 0 0);--id-foreground: oklch(.145 0 0);--id-card: oklch(1 0 0);--id-card-foreground: var(--id-foreground);--id-muted: oklch(.97 0 0);--id-muted-foreground: oklch(.52 0 0);--id-border: oklch(.905 0 0);--id-input: oklch(.922 0 0);--id-surface: oklch(.985 .006 285.9);--id-popover: oklch(.995 0 0);--id-popover-foreground: var(--id-foreground);--id-secondary: oklch(.945 .004 285.9);--id-secondary-foreground: oklch(.24 .008 285.9);--id-hover: oklch(.958 0 0);--id-hover-foreground: oklch(.22 0 0);--id-primary: oklch(.606 .25 292.717);--id-primary-foreground: oklch(.985 0 0);--id-danger: oklch(.577 .245 27.325);--id-success: oklch(.56 .15 153);--id-warning: oklch(.67 .16 72);--id-info: oklch(.58 .15 238);--id-sidebar: oklch(.985 0 0 / .9);--id-sidebar-foreground: var(--id-foreground);--id-sidebar-accent: var(--id-muted);--id-ring: color-mix(in oklch, var(--id-primary) 62%, transparent);--id-glass-base: var(--id-surface);--id-glass-tint: var(--id-primary);--id-shadow-sm: 0 1px 2px oklch(0 0 0 / .05);--id-shadow-md: 0 8px 24px -16px oklch(0 0 0 / .28);--id-glass-shadow-color: oklch(0 0 0 / .14);--id-shadow-glass-sm: 0 1px 2px color-mix(in oklch, var(--id-glass-shadow-color) 50%, transparent);--id-shadow-glass-md: 0 3px 10px -5px color-mix(in oklch, var(--id-glass-shadow-color) 60%, transparent), 0 6px 18px -10px color-mix(in oklch, var(--id-glass-shadow-color) 38%, transparent);--id-shadow-glass-lg: 0 12px 28px -16px color-mix(in oklch, var(--id-glass-shadow-color) 72%, transparent), 0 28px 56px -28px color-mix(in oklch, var(--id-glass-shadow-color) 48%, transparent);--id-font-sans: "Montserrat Variable", Montserrat, "Segoe UI", sans-serif;--id-font-heading: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;--id-font-mono: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;--id-space: .25rem;--id-duration-fast: .11s;--id-duration: .16s;--id-chart-1: var(--id-primary);--id-chart-2: oklch(.63 .13 220);--id-chart-3: oklch(.7 .15 75);--id-chart-4: oklch(.62 .18 5);--id-chart-5: oklch(.65 .13 160);--id-radius-control: .5625rem;--id-z-base: 0;--id-z-raised: 100;--id-z-sticky: 200;--id-z-chrome: 300;--id-z-dropdown: 400;--id-z-backdrop: 500;--id-z-modal: 600;--id-z-alert: 700;--id-z-toast: 800}:root[data-color-mode=dark],.id-dark{color-scheme:dark;--id-background: oklch(.145 0 0);--id-foreground: oklch(.985 0 0);--id-card: oklch(.205 0 0);--id-card-foreground: var(--id-foreground);--id-muted: oklch(.269 0 0);--id-muted-foreground: oklch(.708 0 0);--id-border: oklch(1 0 0 / .1);--id-input: oklch(1 0 0 / .15);--id-surface: oklch(.205 0 0);--id-sidebar: oklch(.18 0 0 / .9);--id-sidebar-accent: oklch(.269 0 0);--id-shadow-sm: 0 1px 2px oklch(0 0 0 / .22);--id-shadow-md: 0 12px 30px -16px oklch(0 0 0 / .65);--id-popover: oklch(.23 0 0);--id-popover-foreground: var(--id-foreground);--id-secondary: oklch(.295 .005 285.9);--id-secondary-foreground: oklch(.97 .002 285.9);--id-hover: oklch(.285 0 0);--id-hover-foreground: oklch(.985 0 0);--id-glass-shadow-color: oklch(0 0 0 / .36)}:root[data-app-purpose=security]{--id-primary: oklch(.606 .25 292.717)}:root[data-app-purpose=infrastructure]{--id-primary: oklch(.58 .15 238)}:root[data-app-purpose=operations]{--id-primary: oklch(.64 .16 67)}:root[data-app-purpose=people]{--id-primary: oklch(.56 .13 166)}:root[data-app-purpose=data]{--id-primary: oklch(.58 .17 350)}:root[data-color-mode=dark][data-app-purpose=security]{--id-primary: oklch(.69 .2 292.717)}:root[data-color-mode=dark][data-app-purpose=infrastructure]{--id-primary: oklch(.72 .13 238)}:root[data-color-mode=dark][data-app-purpose=operations]{--id-primary: oklch(.77 .14 76)}:root[data-color-mode=dark][data-app-purpose=people]{--id-primary: oklch(.72 .12 166)}:root[data-color-mode=dark][data-app-purpose=data]{--id-primary: oklch(.72 .14 350)}.id-surface{background:radial-gradient(120% 100% at 10% 0%,color-mix(in oklch,var(--id-glass-tint) 9%,transparent),transparent 60%),color-mix(in oklch,var(--id-glass-base) 92%,transparent);border:1px solid var(--id-border);border-radius:var(--id-radius);box-shadow:var(--id-shadow-md)}.id-pressable{transition:transform var(--id-duration-fast) ease,box-shadow var(--id-duration) ease}.id-pressable:hover{transform:translateY(-1px);box-shadow:var(--id-shadow-md)}.id-pressable:active{transform:scale(.98)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--id-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){.id-pressable{transition:none}.id-pressable:hover,.id-pressable:active{transform:none}}html.no-blur *,html.no-blur *:before,html.no-blur *:after{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}:root[data-app-purpose=operations]{--id-primary: oklch(.575 .25 292.717)}:root[data-color-mode=dark][data-app-purpose=operations]{--id-primary: oklch(.54 .24 292.717)}:root{--color-accent: var(--id-primary);--color-accent-hover: color-mix(in oklch, var(--id-primary) 88%, oklch(0 0 0));--color-accent-active: color-mix(in oklch, var(--id-primary) 76%, oklch(0 0 0));--color-accent-soft: color-mix(in oklch, var(--id-primary) 10%, var(--id-background));--color-accent-soft-border: color-mix(in oklch, var(--id-primary) 28%, var(--id-background));--color-accent-text: color-mix(in oklch, var(--id-primary) 80%, var(--id-foreground));--color-bg: var(--id-background);--color-surface: var(--id-card);--color-surface-muted: var(--id-muted);--color-surface-hover: var(--id-hover);--color-border: var(--id-border);--color-border-strong: color-mix(in oklch, var(--id-border) 60%, var(--id-foreground));--color-text: var(--id-foreground);--color-text-secondary: color-mix(in oklch, var(--id-foreground) 78%, var(--id-background));--color-text-muted: var(--id-muted-foreground);--color-text-faint: color-mix(in oklch, var(--id-muted-foreground) 70%, var(--id-background));--color-text-inverse: var(--id-primary-foreground);--color-sidebar-bg: var(--id-sidebar);--color-sidebar-text: var(--id-sidebar-foreground);--color-sidebar-text-muted: var(--id-muted-foreground);--color-sidebar-hover: var(--id-sidebar-accent);--color-sidebar-active: color-mix(in oklch, var(--id-primary) 16%, transparent);--color-sidebar-active-text: color-mix(in oklch, var(--id-primary) 70%, var(--id-foreground));--color-sidebar-border: var(--id-border);--color-success: color-mix(in oklch, var(--id-success) 70%, var(--id-foreground));--color-success-bg: color-mix(in oklch, var(--id-success) 12%, var(--id-background));--color-success-border: color-mix(in oklch, var(--id-success) 32%, var(--id-background));--color-warning: color-mix(in oklch, var(--id-warning) 70%, var(--id-foreground));--color-warning-bg: color-mix(in oklch, var(--id-warning) 12%, var(--id-background));--color-warning-border: color-mix(in oklch, var(--id-warning) 32%, var(--id-background));--color-danger: color-mix(in oklch, var(--id-danger) 70%, var(--id-foreground));--color-danger-hover: color-mix(in oklch, var(--id-danger) 88%, oklch(0 0 0));--color-danger-fill: color-mix(in oklch, var(--id-danger) 90%, oklch(0 0 0));--color-danger-bg: color-mix(in oklch, var(--id-danger) 12%, var(--id-background));--color-danger-border: color-mix(in oklch, var(--id-danger) 32%, var(--id-background));--color-info: color-mix(in oklch, var(--id-info) 70%, var(--id-foreground));--color-info-bg: color-mix(in oklch, var(--id-info) 12%, var(--id-background));--color-info-border: color-mix(in oklch, var(--id-info) 32%, var(--id-background));--space-1: var(--id-space);--space-2: calc(var(--id-space) * 2);--space-3: calc(var(--id-space) * 3);--space-4: calc(var(--id-space) * 4);--space-5: calc(var(--id-space) * 6);--space-6: calc(var(--id-space) * 8);--space-7: calc(var(--id-space) * 10);--space-8: calc(var(--id-space) * 12);--space-9: calc(var(--id-space) * 16);--radius-sm: 4px;--radius-md: var(--id-radius-control);--radius-lg: var(--id-radius);--radius-full: 9999px;--shadow-xs: 0 1px 2px color-mix(in oklch, var(--id-glass-shadow-color) 30%, transparent);--shadow-sm: var(--id-shadow-glass-sm);--shadow-md: var(--id-shadow-glass-md);--shadow-lg: var(--id-shadow-glass-lg);--shadow-overlay: var(--id-shadow-glass-lg);--font-sans: var(--id-font-sans);--font-mono: var(--id-font-mono);--text-xs: 11px;--text-sm: 12.5px;--text-base: 14px;--text-md: 15px;--text-lg: 17px;--text-xl: 20px;--text-2xl: 24px;--leading-tight: 1.25;--leading-normal: 1.5;--sidebar-width: 240px;--sidebar-width-collapsed: 60px;--topbar-height: 56px;--focus-ring: 0 0 0 2px var(--id-background), 0 0 0 4px var(--id-ring);--transition-fast: var(--id-duration-fast) ease;--transition-normal: var(--id-duration) ease;--z-sticky: var(--id-z-sticky);--z-sidebar: var(--id-z-chrome);--z-dropdown: var(--id-z-dropdown);--z-overlay: var(--id-z-backdrop);--z-toast: var(--id-z-toast)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{line-height:var(--leading-tight);font-weight:600}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-md)}p{line-height:var(--leading-normal)}a{color:var(--color-accent-text);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}code,pre{font-family:var(--font-mono);font-size:var(--text-sm)}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}::placeholder{color:var(--color-text-faint)}.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}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-danger{color:var(--color-danger)}.text-sm{font-size:var(--text-sm)}.mono{font-family:var(--font-mono);font-size:var(--text-sm)}.page{padding:var(--space-5) var(--space-6);max-width:1400px;margin:0 auto;width:100%}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-header .subtitle{color:var(--color-text-muted);margin-top:var(--space-1);font-size:var(--text-base)}.stack-sm>*+*{margin-top:var(--space-2)}.stack>*+*{margin-top:var(--space-4)}.stack-lg>*+*{margin-top:var(--space-5)}.row{display:flex;align-items:center;gap:var(--space-2)}.row-wrap{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:34px;padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--text-base);font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{box-shadow:var(--focus-ring)}.btn-primary{background:var(--color-accent);color:var(--color-text-inverse)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-primary:active:not(:disabled){background:var(--color-accent-active)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong);box-shadow:var(--shadow-xs)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-muted)}.btn-danger{background:var(--color-danger-fill);color:var(--color-text-inverse)}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.btn-sm{height:28px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn-icon{width:34px;padding:0}.btn-icon.btn-sm{width:28px}.btn .spinner{margin-right:0}.input,.select,.textarea{width:100%;height:34px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--text-base);font-family:inherit;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.textarea{height:auto;min-height:72px;padding:var(--space-2) var(--space-3);resize:vertical;line-height:var(--leading-normal)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px color-mix(in oklch,var(--id-ring) 40%,transparent)}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--color-danger)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--color-surface-muted);color:var(--color-text-muted);cursor:not-allowed}.select{appearance:none;padding-right:var(--space-6);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center}.checkbox{width:15px;height:15px;accent-color:var(--color-accent);cursor:pointer;flex-shrink:0}.search-input-wrap{position:relative;display:inline-flex;align-items:center}.search-input-wrap .icon{position:absolute;left:var(--space-3);color:var(--color-text-faint);pointer-events:none}.search-input-wrap .input{padding-left:32px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field>label{font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary)}.form-field .field-hint{font-size:var(--text-sm);color:var(--color-text-muted)}.form-field .field-error{font-size:var(--text-sm);color:var(--color-danger)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-grid .full{grid-column:1 / -1}.form-actions{display:flex;justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-2)}.form-error-banner{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-base)}.form-success-banner{background:var(--color-success-bg);border:1px solid var(--color-success-border);color:var(--color-success);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-base)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.card-header h3{font-size:var(--text-md)}.card-body{padding:var(--space-5)}.card-body.flush{padding:0}.badge{display:inline-flex;align-items:center;gap:var(--space-1);height:20px;padding:0 var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}.badge-neutral{background:var(--color-surface-muted);color:var(--color-text-secondary);border-color:var(--color-border)}.badge-success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success-border)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning);border-color:var(--color-warning-border)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border)}.badge-info{background:var(--color-info-bg);color:var(--color-info);border-color:var(--color-info-border)}.spinner{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-rotate .7s linear infinite;vertical-align:-2px}.spinner-lg{width:28px;height:28px;border-width:3px;color:var(--color-accent)}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.center-fill{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);min-height:200px;color:var(--color-text-muted)}.center-screen{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--color-text-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--space-2);padding:var(--space-8) var(--space-5);color:var(--color-text-muted)}.empty-state .icon{color:var(--color-text-faint);margin-bottom:var(--space-1)}.empty-state h4{color:var(--color-text-secondary);font-weight:600}.empty-state p{font-size:var(--text-base);max-width:360px}.overlay-backdrop{position:fixed;inset:0;background:#0f172a73;z-index:var(--z-overlay);display:flex;align-items:flex-start;justify-content:center;padding:var(--space-8) var(--space-4);overflow-y:auto;animation:fade-in var(--transition-fast)}.modal{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);width:100%;max-width:520px;animation:modal-in var(--transition-normal)}.modal-lg{max-width:720px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.modal-header h2{font-size:var(--text-lg)}.modal-body{padding:var(--space-5);max-height:calc(100vh - 220px);overflow-y:auto}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}}.drawer-backdrop{position:fixed;inset:0;background:#0f172a59;z-index:var(--z-overlay);animation:fade-in var(--transition-fast)}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(480px,100vw);background:var(--color-surface);border-left:1px solid var(--color-border);box-shadow:var(--shadow-overlay);z-index:calc(var(--z-overlay) + 1);display:flex;flex-direction:column;animation:drawer-in var(--transition-normal)}.drawer-wide{width:min(600px,100vw)}.drawer-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);flex-shrink:0}.drawer-header h2{font-size:var(--text-lg)}.drawer-body{padding:var(--space-5);overflow-y:auto;flex:1}@keyframes drawer-in{0%{transform:translate(24px);opacity:0}}.toast-region{position:fixed;bottom:var(--space-5);right:var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);z-index:var(--z-toast);width:340px;max-width:calc(100vw - 32px)}.toast{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-3) var(--space-4);display:flex;gap:var(--space-3);align-items:flex-start;animation:toast-in var(--transition-normal)}.toast-success{border-left-color:var(--color-success)}.toast-error{border-left-color:var(--color-danger)}.toast-title{font-weight:600;font-size:var(--text-base)}.toast-description{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:2px;overflow-wrap:anywhere}.toast .btn-icon{margin-left:auto;flex-shrink:0}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-5)}.tab{appearance:none;background:none;border:none;border-bottom:2px solid transparent;padding:var(--space-2) var(--space-3) 10px;margin-bottom:-1px;font-size:var(--text-base);font-weight:500;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition-fast)}.tab:hover{color:var(--color-text)}.tab[aria-selected=true]{color:var(--color-accent-text);border-bottom-color:var(--color-accent)}.menu-wrap{position:relative}.menu{position:absolute;top:calc(100% + 4px);right:0;min-width:200px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-1);z-index:var(--z-dropdown);animation:fade-in var(--transition-fast)}.menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:none;background:none;border-radius:var(--radius-sm);font-size:var(--text-base);color:var(--color-text);cursor:pointer;text-align:left}.menu-item:hover{background:var(--color-surface-muted)}.menu-item.danger{color:var(--color-danger)}.menu-label{padding:var(--space-2) var(--space-3) var(--space-1);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-faint)}.menu-separator{height:1px;background:var(--color-border);margin:var(--space-1) 0}.data-table-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);display:flex;flex-direction:column;overflow:hidden}.data-table-toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.data-table-scroll{overflow:auto;position:relative}.data-table{min-width:100%;width:max-content}.dt-header{display:flex;position:sticky;top:0;z-index:var(--z-sticky);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border);min-width:100%;width:max-content}.dt-th{display:flex;align-items:center;gap:var(--space-1);padding:0 var(--space-4);height:38px;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);flex-shrink:0;-webkit-user-select:none;user-select:none}.dt-th-sortable{cursor:pointer}.dt-th-sortable:hover{color:var(--color-text)}.dt-th .sort-indicator{color:var(--color-accent-text);display:inline-flex}.dt-body{position:relative;min-width:100%;width:max-content}.dt-row{display:flex;flex-direction:column;position:absolute;top:0;left:0;min-width:100%;width:max-content;border-bottom:1px solid var(--color-border);background:var(--color-surface)}.dt-row-cells{display:flex;align-items:center;min-height:44px}.dt-row-clickable{cursor:pointer}.dt-row-clickable:hover{background:var(--color-surface-hover)}.dt-row:focus-visible{box-shadow:inset var(--focus-ring);border-radius:0}.dt-td{padding:var(--space-2) var(--space-4);font-size:var(--text-base);color:var(--color-text-secondary);flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-td-primary{color:var(--color-text);font-weight:500}.dt-detail{padding:var(--space-4) var(--space-5);background:var(--color-surface-muted);border-top:1px solid var(--color-border);font-size:var(--text-sm)}.dt-footer{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-3);border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--text-sm);background:var(--color-surface)}.simple-table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.simple-table th{text-align:left;padding:var(--space-2) var(--space-4);height:38px;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border)}.simple-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);vertical-align:middle}.simple-table tr:last-child td{border-bottom:none}.simple-table tbody tr.clickable{cursor:pointer}.simple-table tbody tr.clickable:hover{background:var(--color-surface-hover)}.simple-table td.td-primary{color:var(--color-text);font-weight:500}.tree{list-style:none;padding:0}.tree .tree{padding-left:var(--space-5)}.tree-node{border-bottom:1px solid var(--color-border)}.tree .tree .tree-node:last-child{border-bottom:none}.tree .tree .tree-node{border-bottom:none;border-top:1px solid var(--color-border)}.tree-row{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);min-height:44px}.tree-row:hover{background:var(--color-surface-hover)}.tree-row .tree-actions{margin-left:auto;display:flex;gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast)}.tree-row:hover .tree-actions,.tree-row:focus-within .tree-actions{opacity:1}.tree-toggle{background:none;border:none;cursor:pointer;color:var(--color-text-muted);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);flex-shrink:0}.tree-toggle:hover{background:var(--color-surface-muted);color:var(--color-text)}.tree-toggle .icon{transition:transform var(--transition-fast)}.tree-toggle[aria-expanded=true] .icon{transform:rotate(90deg)}.tree-spacer{width:24px;flex-shrink:0}.diff-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.diff-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;min-width:0}.diff-panel-title{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border)}.diff-panel pre{padding:var(--space-3);overflow-x:auto;font-size:var(--text-xs);line-height:1.6;max-height:260px}.diff-key-changed{background:var(--color-warning-bg);display:inline}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4)}.kpi-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);padding:var(--space-4) var(--space-5)}.kpi-card .kpi-label{font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.kpi-card .kpi-value{font-size:var(--text-2xl);font-weight:600;margin-top:var(--space-2);color:var(--color-text-faint)}.detail-list{display:grid;grid-template-columns:140px 1fr;row-gap:var(--space-2);column-gap:var(--space-3);font-size:var(--text-base)}.detail-list dt{color:var(--color-text-muted);font-size:var(--text-sm);padding-top:1px}.detail-list dd{color:var(--color-text);overflow-wrap:anywhere}.perm-module{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.perm-module+.perm-module{margin-top:var(--space-3)}.perm-module-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border);font-weight:600;font-size:var(--text-sm);text-transform:capitalize}.perm-item{display:flex;align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer}.perm-item:hover{background:var(--color-surface-hover)}.perm-item+.perm-item{border-top:1px solid var(--color-border)}.perm-item .perm-code{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text)}.perm-item .perm-desc{font-size:var(--text-sm);color:var(--color-text-muted)}.member-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);min-height:48px}.member-row:last-child{border-bottom:none}.member-row .member-meta{min-width:0;flex:1}.member-row .member-name{font-weight:500;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-row .member-sub{font-size:var(--text-sm);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{width:30px;height:30px;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent-text);border:1px solid var(--color-accent-soft-border);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:600;flex-shrink:0;text-transform:uppercase}.picker-results{border:1px solid var(--color-border);border-radius:var(--radius-md);max-height:220px;overflow-y:auto;margin-top:var(--space-2)}.picker-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:none;border:none;border-bottom:1px solid var(--color-border);cursor:pointer;text-align:left;font-size:var(--text-base)}.picker-item:last-child{border-bottom:none}.picker-item:hover:not(:disabled){background:var(--color-surface-hover)}.picker-item:disabled{opacity:.5;cursor:not-allowed}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-sidebar-bg);color:var(--color-sidebar-text);display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0;height:100vh;z-index:var(--z-sidebar);transition:width var(--transition-normal);overflow:hidden}.sidebar.collapsed{width:var(--sidebar-width-collapsed)}.sidebar-brand{display:flex;align-items:center;gap:var(--space-3);height:var(--topbar-height);padding:0 var(--space-4);border-bottom:1px solid var(--color-sidebar-border);flex-shrink:0}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--space-3) var(--space-2)}.nav-section-label{padding:var(--space-4) var(--space-3) var(--space-1);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-sidebar-text-muted);white-space:nowrap}.sidebar.collapsed .nav-section-label{visibility:hidden;height:12px;padding-top:var(--space-3);padding-bottom:0;border-top:1px solid var(--color-sidebar-border);margin-top:var(--space-3)}.nav-item{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-3);height:36px;border-radius:var(--radius-md);color:var(--color-sidebar-text);font-size:var(--text-base);font-weight:500;white-space:nowrap;text-decoration:none;margin-bottom:2px}.nav-item .icon{flex-shrink:0}.nav-item:hover{background:var(--color-sidebar-hover);color:var(--color-sidebar-text);text-decoration:none}.nav-item.active{background:var(--color-sidebar-active);color:var(--color-sidebar-active-text)}.nav-item.disabled{color:var(--color-sidebar-text-muted);cursor:default}.nav-item.disabled:hover{background:none;color:var(--color-sidebar-text-muted)}.nav-item .nav-label{overflow:hidden;text-overflow:ellipsis;flex:1}.nav-item .phase-tag{font-size:10px;font-weight:600;color:var(--color-sidebar-text-muted);border:1px solid var(--color-sidebar-border);border-radius:var(--radius-full);padding:1px 6px;letter-spacing:.03em}.sidebar.collapsed .nav-label,.sidebar.collapsed .phase-tag,.sidebar.collapsed .logo-wordmark{display:none}.sidebar.collapsed .nav-item{justify-content:center;padding:0}.sidebar-footer{padding:var(--space-2);border-top:1px solid var(--color-sidebar-border);flex-shrink:0}.sidebar-collapse-btn{display:flex;align-items:center;gap:var(--space-3);width:100%;height:36px;padding:0 var(--space-3);background:none;border:none;border-radius:var(--radius-md);color:var(--color-sidebar-text-muted);font-size:var(--text-sm);cursor:pointer;white-space:nowrap}.sidebar-collapse-btn:hover{background:var(--color-sidebar-hover);color:var(--color-sidebar-text)}.sidebar.collapsed .sidebar-collapse-btn{justify-content:center;padding:0}.app-main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:var(--space-4);height:var(--topbar-height);padding:0 var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:calc(var(--z-sidebar) - 1);flex-shrink:0}.topbar .global-search{flex:1;max-width:420px}.topbar-hamburger{display:none}.user-menu-btn{display:flex;align-items:center;gap:var(--space-2);background:none;border:none;border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);cursor:pointer;color:var(--color-text);font-size:var(--text-base)}.user-menu-btn:hover{background:var(--color-surface-muted)}.user-menu-btn .icon{color:var(--color-text-faint)}.app-content{flex:1;display:flex;flex-direction:column;min-width:0}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 80% -10%,var(--color-accent-soft) 0%,transparent 60%),var(--color-bg);padding:var(--space-5)}.login-card{width:100%;max-width:380px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-6)}.login-brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.login-brand h1{font-size:var(--text-xl)}.login-brand .subtitle{font-size:var(--text-sm);color:var(--color-text-muted)}@media(max-width:1023px){.sidebar{position:fixed;left:0;top:0;bottom:0;transform:translate(-100%);transition:transform var(--transition-normal);width:var(--sidebar-width)}.sidebar.collapsed{width:var(--sidebar-width)}.sidebar.mobile-open{transform:translate(0);box-shadow:var(--shadow-overlay)}.sidebar.collapsed .nav-label,.sidebar.collapsed .phase-tag{display:initial}.sidebar.collapsed .logo-wordmark{display:flex}.sidebar.collapsed .nav-item{justify-content:flex-start;padding:0 var(--space-3)}.sidebar-mobile-backdrop{position:fixed;inset:0;background:#0f172a66;z-index:calc(var(--z-sidebar) - 1)}.topbar-hamburger{display:inline-flex}.sidebar-footer{display:none}.page{padding:var(--space-4)}}@media(max-width:900px){.form-grid,.diff-grid{grid-template-columns:1fr}}.logo-mark{flex-shrink:0;display:block}.logo-wordmark{display:flex;flex-direction:column;gap:1px;min-width:0}.logo-name{font-weight:700;font-size:var(--text-md);letter-spacing:-.01em;color:var(--color-text);white-space:nowrap}.logo-tagline{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}
