*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:16px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--color-primary: #18a058;--color-primary-hover: #36ad6a;--color-primary-active: #0c7a43;--color-primary-light: #e8f5e8;--color-primary-dark: #0c7a43;--color-secondary: #2080f0;--color-secondary-hover: #4098fc;--color-secondary-active: #1060cc;--color-secondary-light: #e6f7ff;--color-secondary-dark: #1060cc;--color-success: #18a058;--color-success-light: #e8f5e8;--color-warning: #f0a020;--color-warning-light: #fef7e6;--color-error: #d03050;--color-error-light: #fef0f0;--color-info: #2080f0;--color-info-light: #e6f7ff;--color-text-primary: #18181c;--color-text-secondary: #5c5c5c;--color-text-tertiary: #8a8a8a;--color-text-disabled: #c0c0c0;--color-text-inverse: #ffffff;--color-bg-primary: #ffffff;--color-bg-secondary: #f7f7f7;--color-bg-tertiary: #f0f0f0;--color-bg-disabled: #f5f5f5;--color-bg-overlay: rgba(0, 0, 0, .5);--color-border-primary: #e0e0e6;--color-border-secondary: #d0d0d7;--color-border-focus: var(--color-primary);--color-border-error: var(--color-error);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--spacing-3xl: 64px;--spacing-component-xs: var(--spacing-xs);--spacing-component-sm: var(--spacing-sm);--spacing-component-md: var(--spacing-md);--spacing-component-lg: var(--spacing-lg);--spacing-component-xl: var(--spacing-xl);--spacing-page-sm: var(--spacing-md);--spacing-page-md: var(--spacing-lg);--spacing-page-lg: var(--spacing-xl);--spacing-page-xl: var(--spacing-2xl);--font-family-primary: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 28px;--font-size-4xl: 32px;--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.75;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--transition-fast: .15s ease-in-out;--transition-normal: .3s ease-in-out;--transition-slow: .5s ease-in-out;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px;--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080}@media (prefers-color-scheme: dark){:root{--color-text-primary: #ffffff;--color-text-secondary: #a0a0a0;--color-text-tertiary: #707070;--color-text-disabled: #404040;--color-bg-primary: #18181c;--color-bg-secondary: #1f1f23;--color-bg-tertiary: #262629;--color-bg-disabled: #2a2a2d;--color-border-primary: #3a3a3f;--color-border-secondary: #4a4a4f}}:root{--button-height-sm: 28px;--button-height-md: 32px;--button-height-lg: 36px;--button-height-xl: 40px;--button-padding-sm: var(--spacing-sm) var(--spacing-md);--button-padding-md: var(--spacing-sm) var(--spacing-lg);--button-padding-lg: var(--spacing-md) var(--spacing-xl);--button-padding-xl: var(--spacing-md) var(--spacing-2xl);--input-height-sm: 28px;--input-height-md: 32px;--input-height-lg: 36px;--input-height-xl: 40px;--input-padding-sm: var(--spacing-sm) var(--spacing-md);--input-padding-md: var(--spacing-sm) var(--spacing-lg);--input-padding-lg: var(--spacing-md) var(--spacing-xl);--input-padding-xl: var(--spacing-md) var(--spacing-2xl);--card-padding-sm: var(--spacing-md);--card-padding-md: var(--spacing-lg);--card-padding-lg: var(--spacing-xl);--card-radius: var(--radius-lg);--card-shadow: var(--shadow-md);--nav-height: 64px;--sidebar-width: 240px;--sidebar-width-collapsed: 64px}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-family-primary);font-weight:var(--font-weight-medium);text-decoration:none;cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none;white-space:nowrap;outline:none;position:relative;overflow:hidden}.btn:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.btn:disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.btn-sm{height:var(--button-height-sm);padding:var(--button-padding-sm);font-size:var(--font-size-sm);line-height:var(--line-height-tight)}.btn-md{height:var(--button-height-md);padding:var(--button-padding-md);font-size:var(--font-size-md);line-height:var(--line-height-normal)}.btn-lg{height:var(--button-height-lg);padding:var(--button-padding-lg);font-size:var(--font-size-xl);line-height:var(--line-height-normal)}.btn-xl{height:var(--button-height-xl);padding:var(--button-padding-xl);font-size:var(--font-size-2xl);line-height:var(--line-height-normal)}.btn-primary{background-color:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover);border-color:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-primary:active:not(:disabled){background-color:var(--color-primary-active);border-color:var(--color-primary-active);transform:translateY(0)}.btn-secondary{background-color:var(--color-bg-primary);color:var(--color-text-primary);border-color:var(--color-border-primary)}.btn-secondary:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-border-secondary);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn-outline{background-color:transparent;color:var(--color-primary);border-color:var(--color-primary)}.btn-outline:hover:not(:disabled){background-color:var(--color-primary);color:var(--color-text-inverse);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-ghost{background-color:transparent;color:var(--color-text-primary);border-color:transparent}.btn-ghost:hover:not(:disabled){background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.btn-danger{background-color:var(--color-error);color:var(--color-text-inverse);border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background-color:#e03131;border-color:#e03131;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-success{background-color:var(--color-success);color:var(--color-text-inverse);border-color:var(--color-success)}.btn-success:hover:not(:disabled){background-color:var(--color-primary-hover);border-color:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-block,.btn-full{width:100%}.form-group{margin-bottom:var(--spacing-lg)}.form-label{display:block;margin-bottom:var(--spacing-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:var(--line-height-normal)}.form-label.required:after{content:" *";color:var(--color-error)}.form-input{width:100%;height:var(--input-height-md);padding:var(--input-padding-md);font-size:var(--font-size-sm);font-family:var(--font-family-primary);color:var(--color-text-primary);background-color:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);transition:all var(--transition-fast);outline:none}.form-input:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 3px #18a0581a}.form-input:disabled{background-color:var(--color-bg-disabled);color:var(--color-text-disabled);cursor:not-allowed}.form-input.error{border-color:var(--color-border-error)}.form-input.error:focus{box-shadow:0 0 0 3px #d030501a}.form-textarea{min-height:80px;resize:vertical;font-family:var(--font-family-primary)}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");background-position:right var(--spacing-sm) center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:var(--spacing-2xl)}.form-feedback{margin-top:var(--spacing-xs);font-size:var(--font-size-xs);line-height:var(--line-height-tight)}.form-feedback.error{color:var(--color-error)}.form-feedback.success{color:var(--color-success)}.form-feedback.warning{color:var(--color-warning)}.card{background-color:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--card-radius);box-shadow:var(--card-shadow);overflow:hidden;transition:all var(--transition-normal)}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-header{padding:var(--card-padding-md);border-bottom:1px solid var(--color-border-primary);background-color:var(--color-bg-secondary)}.card-body{padding:var(--card-padding-md)}.card-footer{padding:var(--card-padding-md);border-top:1px solid var(--color-border-primary);background-color:var(--color-bg-secondary)}.card-title{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-tight)}.card-subtitle{margin:0 0 var(--spacing-md) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.025em;line-height:1}.badge-primary{background-color:var(--color-primary-light);color:var(--color-primary)}.badge-success{background-color:var(--color-success-light);color:var(--color-success)}.badge-warning{background-color:var(--color-warning-light);color:var(--color-warning)}.badge-error{background-color:var(--color-error-light);color:var(--color-error)}.badge-info{background-color:var(--color-info-light);color:var(--color-info)}.badge-gray{background-color:var(--color-bg-tertiary);color:var(--color-text-secondary)}.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--color-border-primary);border-radius:50%;border-top-color:var(--color-primary);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);color:var(--color-text-secondary)}.loading-state .loading-spinner{margin-bottom:var(--spacing-md)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);text-align:center;color:var(--color-text-secondary)}.empty-state-icon{width:48px;height:48px;margin-bottom:var(--spacing-md);opacity:.5}.empty-state-title{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.empty-state-description{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.hidden{display:none!important}.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}@media (max-width: 767px){.hidden-mobile{display:none!important}}@media (min-width: 768px){.hidden-desktop{display:none!important}}.m-0{margin:0}.m-1{margin:var(--spacing-xs)}.m-2{margin:var(--spacing-sm)}.m-3{margin:var(--spacing-md)}.m-4{margin:var(--spacing-lg)}.m-5{margin:var(--spacing-xl)}.m-6{margin:var(--spacing-2xl)}.mx-4{margin-left:var(--spacing-lg);margin-right:var(--spacing-lg)}.mr-1{margin-right:var(--spacing-xs)}.mt-4{margin-top:var(--spacing-lg)}.p-0{padding:0!important}.p-1{padding:var(--spacing-xs)!important}.p-2{padding:var(--spacing-sm)!important}.p-3{padding:var(--spacing-md)!important}.p-4{padding:var(--spacing-lg)!important}.p-5{padding:var(--spacing-xl)!important}.p-6{padding:var(--spacing-2xl)!important}.text-xs{font-size:var(--font-size-xs)!important}.text-sm{font-size:var(--font-size-sm)!important}.text-md{font-size:var(--font-size-md)!important}.text-lg{font-size:var(--font-size-lg)!important}.text-xl{font-size:var(--font-size-xl)!important}.text-2xl{font-size:var(--font-size-2xl)!important}.font-normal{font-weight:var(--font-weight-normal)!important}.font-medium{font-weight:var(--font-weight-medium)!important}.font-semibold{font-weight:var(--font-weight-semibold)!important}.font-bold{font-weight:var(--font-weight-bold)!important}.text-primary{color:var(--color-text-primary)!important}.text-secondary{color:var(--color-text-secondary)!important}.text-tertiary{color:var(--color-text-tertiary)!important}.text-disabled{color:var(--color-text-disabled)!important}.text-success{color:var(--color-success)!important}.text-warning{color:var(--color-warning)!important}.text-error{color:var(--color-error)!important}.text-info{color:var(--color-info)!important}.text-center{text-align:center!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.container{width:100%;margin-left:auto;margin-right:auto;padding-left:var(--spacing-page-sm);padding-right:var(--spacing-page-sm)}@media (min-width: 640px){.container{max-width:640px;padding-left:var(--spacing-page-md);padding-right:var(--spacing-page-md)}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px;padding-left:var(--spacing-page-lg);padding-right:var(--spacing-page-lg)}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px;padding-left:var(--spacing-page-xl);padding-right:var(--spacing-page-xl)}}.grid{display:grid;gap:var(--spacing-md)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}@media (max-width: 639px){.grid-cols-1-mobile{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2-mobile{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 640px) and (max-width: 767px){.grid-cols-1-sm{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2-sm{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3-sm{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px) and (max-width: 1023px){.grid-cols-1-md{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2-md{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3-md{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4-md{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.grid-cols-1-lg{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2-lg{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3-lg{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4-lg{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5-lg{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6-lg{grid-template-columns:repeat(6,minmax(0,1fr))}}.flex{display:flex}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-initial{flex:0 1 auto}.flex-none{flex:none}@media (max-width: 639px){.gap-1-mobile{gap:var(--spacing-xs)}.gap-2-mobile{gap:var(--spacing-sm)}.gap-3-mobile{gap:var(--spacing-md)}.gap-4-mobile{gap:var(--spacing-lg)}.p-1-mobile{padding:var(--spacing-xs)}.p-2-mobile{padding:var(--spacing-sm)}.p-3-mobile{padding:var(--spacing-md)}.p-4-mobile{padding:var(--spacing-lg)}.m-1-mobile{margin:var(--spacing-xs)}.m-2-mobile{margin:var(--spacing-sm)}.m-3-mobile{margin:var(--spacing-md)}.m-4-mobile{margin:var(--spacing-lg)}}@media (min-width: 640px){.gap-1-sm{gap:var(--spacing-xs)}.gap-2-sm{gap:var(--spacing-sm)}.gap-3-sm{gap:var(--spacing-md)}.gap-4-sm{gap:var(--spacing-lg)}.gap-5-sm{gap:var(--spacing-xl)}}@media (min-width: 768px){.gap-1-md{gap:var(--spacing-xs)}.gap-2-md{gap:var(--spacing-sm)}.gap-3-md{gap:var(--spacing-md)}.gap-4-md{gap:var(--spacing-lg)}.gap-5-md{gap:var(--spacing-xl)}.gap-6-md{gap:var(--spacing-2xl)}}@media (min-width: 1024px){.gap-1-lg{gap:var(--spacing-xs)}.gap-2-lg{gap:var(--spacing-sm)}.gap-3-lg{gap:var(--spacing-md)}.gap-4-lg{gap:var(--spacing-lg)}.gap-5-lg{gap:var(--spacing-xl)}.gap-6-lg{gap:var(--spacing-2xl)}}@media (max-width: 639px){.text-xs-mobile{font-size:var(--font-size-xs)}.text-sm-mobile{font-size:var(--font-size-sm)}.text-md-mobile{font-size:var(--font-size-md)}.text-lg-mobile{font-size:var(--font-size-lg)}}@media (min-width: 640px){.text-xs-sm{font-size:var(--font-size-xs)}.text-sm-sm{font-size:var(--font-size-sm)}.text-md-sm{font-size:var(--font-size-md)}.text-lg-sm{font-size:var(--font-size-lg)}.text-xl-sm{font-size:var(--font-size-xl)}}@media (min-width: 768px){.text-xs-md{font-size:var(--font-size-xs)}.text-sm-md{font-size:var(--font-size-sm)}.text-md-md{font-size:var(--font-size-md)}.text-lg-md{font-size:var(--font-size-lg)}.text-xl-md{font-size:var(--font-size-xl)}.text-2xl-md{font-size:var(--font-size-2xl)}}@media (min-width: 1024px){.text-xs-lg{font-size:var(--font-size-xs)}.text-sm-lg{font-size:var(--font-size-sm)}.text-md-lg{font-size:var(--font-size-md)}.text-lg-lg{font-size:var(--font-size-lg)}.text-xl-lg{font-size:var(--font-size-xl)}.text-2xl-lg{font-size:var(--font-size-2xl)}.text-3xl-lg{font-size:var(--font-size-3xl)}}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 767px){.table-mobile{display:block;width:100%}.table-mobile thead{display:none}.table-mobile tbody,.table-mobile tr,.table-mobile td{display:block;width:100%}.table-mobile tr{border:1px solid var(--color-border-primary);border-radius:var(--radius-md);margin-bottom:var(--spacing-md);padding:var(--spacing-md);background-color:var(--color-bg-primary)}.table-mobile td{border:none;padding:var(--spacing-sm) 0;text-align:left}.table-mobile td:before{content:attr(data-label) ": ";font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);display:inline-block;width:120px}}@media (max-width: 639px){.card-mobile{margin:0;border-radius:0;border-left:none;border-right:none}.card-mobile .card-header,.card-mobile .card-body,.card-mobile .card-footer{padding:var(--spacing-md)}}@media (min-width: 640px) and (max-width: 1023px){.card-tablet{margin-bottom:var(--spacing-lg)}}@media (max-width: 767px){.nav-mobile{position:fixed;top:0;left:0;right:0;z-index:var(--z-fixed);background-color:var(--color-bg-primary);border-bottom:1px solid var(--color-border-primary);box-shadow:var(--shadow-sm)}.nav-mobile .nav-brand{font-size:var(--font-size-lg)}.nav-mobile .nav-toggle{display:block}.nav-mobile .nav-menu{position:absolute;top:100%;left:0;right:0;background-color:var(--color-bg-primary);border-top:1px solid var(--color-border-primary);box-shadow:var(--shadow-md);display:none}.nav-mobile .nav-menu.active{display:block}.nav-mobile .nav-item{display:block;padding:var(--spacing-md);border-bottom:1px solid var(--color-border-primary)}}@media (max-width: 639px){.form-mobile .form-group{margin-bottom:var(--spacing-md)}.form-mobile .form-label{font-size:var(--font-size-sm);margin-bottom:var(--spacing-xs)}.form-mobile .form-input{height:var(--input-height-lg);padding:var(--input-padding-lg);font-size:var(--font-size-md)}.form-mobile .btn{width:100%;height:var(--button-height-lg);padding:var(--button-padding-lg);font-size:var(--font-size-md)}}.w-full{width:100%}.h-full{height:100%}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}#app{width:100%;margin:0 auto;font-weight:400;min-height:100vh;font-family:var(--font-family-primary);color:var(--color-text-primary);background-color:var(--color-bg-primary)}#app{padding:0}a,.green{text-decoration:none;color:var(--color-primary);transition:var(--transition-fast);padding:3px;border-radius:var(--radius-sm)}@media (hover: hover){a:hover{background-color:var(--color-primary-light);opacity:.8}}.page-main{padding:24px 20px;max-width:1400px;margin:0 auto}.page-header{background:#fff;box-shadow:0 2px 4px #0000001a;padding:16px 20px}.page-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0 0 var(--spacing-sm) 0;line-height:var(--line-height-tight)}.inner-wrapper{min-height:100vh;background:#f8f9fa}.page-subtitle{font-size:var(--font-size-md);font-weight:400;color:var(--color-text-secondary);margin:0;line-height:var(--line-height-normal)}:deep(.n-button){font-family:var(--font-family-primary);font-weight:var(--font-weight-medium);border-radius:var(--radius-md);transition:all var(--transition-fast)}:deep(.n-button--primary-type){background-color:var(--color-primary);border-color:var(--color-primary)}:deep(.n-button--primary-type:hover){background-color:var(--color-primary-hover);border-color:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-md)}:deep(.n-button--error-type){background-color:var(--color-error);border-color:var(--color-error)}:deep(.n-button--error-type:hover){background-color:#e03131;border-color:#e03131;transform:translateY(-1px);box-shadow:var(--shadow-md)}:deep(.n-input){font-family:var(--font-family-primary);border-radius:var(--radius-md);transition:all var(--transition-fast)}:deep(.n-input:focus){box-shadow:0 0 0 3px #18a0581a}:deep(.n-form-item-label){font-weight:var(--font-weight-medium);color:var(--color-text-primary)}:deep(.n-card){border-radius:var(--radius-lg);box-shadow:var(--shadow-md);transition:all var(--transition-normal)}:deep(.n-card:hover){box-shadow:var(--shadow-lg);transform:translateY(-2px)}@media (max-width: 768px){.page-title{font-size:var(--font-size-2xl)}.page-subtitle{font-size:var(--font-size-md)}}.panel{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;overflow:hidden}.panel-header{padding:20px 24px;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:baseline;column-gap:12px}.section-header h2{margin:0;color:#333;font-size:20px;font-weight:600}.loading-state{display:flex;flex-direction:column;align-items:center;padding:40px;color:#666}.loading-spinner{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #007bff;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:40px;color:#666}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:24px}@media screen and (max-width: 1180px){.projects-grid{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width: 768px){.projects-grid{grid-template-columns:1fr;padding:16px;gap:16px}.project-card{padding:16px}.project-header{flex-direction:column;gap:8px}.project-title{font-size:16px}.data-table th,.data-table td{padding:8px 12px}}.project-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;padding:20px;transition:all .2s ease}.project-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.project-header{display:grid;grid-template-columns:1fr auto;justify-content:space-between;column-gap:12px;align-items:flex-start;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e9ecef}.project-title{margin:0;font-size:18px;font-weight:600;word-break:break-word}.status-badge{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;text-transform:uppercase;white-space:nowrap}.project-description{padding:4px 0;font-size:14px;color:#666;line-height:1.5}.project-last-sync{font-size:14px;color:#888;margin-top:4px}.demo-configs{display:flex;flex-direction:column;gap:16px}.demo-config-info{margin-bottom:4px}.demo-branch{font-size:14px}.action-buttons{display:flex;gap:8px;flex-wrap:wrap}.action-buttons .btn-sm{min-width:64px}.action-buttons .btn-md{min-width:80px}.view-mode-toggle{display:flex;gap:8px}.view-mode-toggle .btn{padding:6px 12px;display:flex;align-items:center;justify-content:center}.view-mode-toggle svg{display:block}.table-container{overflow-x:auto;margin-bottom:20px;max-height:calc(100vh - 240px)}.data-table{--n-font-size: 14px;width:100%;min-width:800px;border-collapse:collapse;font-size:var(--n-font-size)}.data-table th,.data-table td{text-align:left;border-bottom:1px solid #e9ecef}.data-table th{padding:8px 16px;background:#f8f9fa;font-weight:600;color:#495057;white-space:nowrap}.data-table td{padding:12px 16px}.data-table .project-title{font-size:14px}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e9ecef}.modal-header h3{margin:0;color:#333;font-size:18px;font-weight:600}.modal-body,.modal-form{padding:24px}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.status-badge{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;text-transform:uppercase}.status-badge.active{background:#d4edda;color:#155724}.status-badge.inactive{background:#f8d7da;color:#721c24}.role-badge{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;white-space:nowrap}.role-badge.admin{background:#dc3545;color:#fff}.role-badge.user{background:#6c757d;color:#fff}.two-factor-badge{background:#17a2b8;color:#fff;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:600}.header-content{display:flex;justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;padding:0 20px}.header-left{display:flex;align-items:center;gap:16px}.header-left h1{margin:0;color:#333;font-size:24px;font-weight:600}.header-right{display:flex;gap:12px}.user-info{display:flex;align-items:center;gap:8px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:6px;color:#333;font-weight:500;font-size:14px}.form-group input,.form-group select{width:100%;padding:10px 12px;border:1px solid #ced4da;border-radius:6px;font-size:14px;transition:border-color .2s ease}.form-group input:focus,.form-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer}.checkbox-label input[type=checkbox]{width:auto;margin:0}.delete-modal .modal-body p{margin:0 0 12px;color:#333}.warning-text{color:#dc3545;font-weight:500}@media (max-width: 768px){.header-content{flex-direction:column;gap:16px;align-items:flex-start}.header-left{flex-direction:column;align-items:flex-start;gap:12px}.header-left h1{font-size:20px}.section-header{flex-direction:column;gap:16px;align-items:flex-start}.section-header h2{font-size:18px}.page-main{padding:16px}.modal-content{width:95%;margin:20px}.form-actions{flex-direction:column}}.fixed-sidebar[data-v-fe6d489e]{position:fixed;left:0;top:0;height:100vh;z-index:10}.sidebar-header[data-v-fe6d489e]{padding:var(--spacing-md) 0;border-bottom:1px solid var(--color-border-primary);margin-bottom:var(--spacing-sm)}.sidebar-header-content[data-v-fe6d489e]{display:flex;align-items:center;gap:12px;padding:0 32px}.sidebar-header-content.collapsed[data-v-fe6d489e]{gap:0;justify-content:center}.sidebar-header-content.collapsed svg[data-v-fe6d489e]{flex-shrink:0}.sidebar-footer[data-v-fe6d489e]{position:absolute;bottom:0;left:0;right:0;z-index:1;padding:var(--spacing-md);border-top:1px solid var(--color-border-primary);background:var(--color-bg-primary);box-sizing:border-box}[data-v-fe6d489e] .n-menu-item-content{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);font-family:var(--font-family-primary)}[data-v-fe6d489e] .n-menu-item-content--collapsed{justify-content:center}[data-v-fe6d489e] .n-menu{margin-bottom:80px}[data-v-fe6d489e] .sidebar-footer .n-button{min-width:unset;max-width:100%}[data-v-fe6d489e] .sidebar-footer .n-button--block{width:100%!important}#app{min-height:100vh}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.login-container[data-v-85f963d8]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-page-sm)}.login-card[data-v-85f963d8]{width:100%;max-width:400px}.login-header[data-v-85f963d8]{text-align:center}.login-form[data-v-85f963d8]{margin-bottom:var(--spacing-lg)}.error-alert[data-v-85f963d8]{margin-top:var(--spacing-md)}@media (max-width: 480px){.login-container[data-v-85f963d8]{padding:var(--spacing-sm)}}@media (max-height: 600px) and (orientation: landscape){.login-container[data-v-85f963d8]{align-items:flex-start;padding-top:var(--spacing-lg)}}.login-button[data-v-85f963d8]{font-size:var(--font-size-lg)!important}.oidc-login-section[data-v-85f963d8]{height:140px;display:flex;justify-content:center;align-items:center}.oidc-button[data-v-85f963d8]{margin-bottom:var(--spacing-sm);font-size:var(--font-size-lg)!important}.oidc-button[data-v-85f963d8]:last-child{margin-bottom:0}@media (min-width: 768px){.login-card[data-v-85f963d8]{max-width:450px}}@media (min-width: 1024px){.login-container[data-v-85f963d8]{padding:var(--spacing-page-md)}.login-card[data-v-85f963d8]{max-width:500px}}@media (min-width: 1440px){.login-container[data-v-85f963d8]{padding:var(--spacing-page-lg)}.login-card[data-v-85f963d8]{max-width:550px}}.callback-container[data-v-d096c840]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-page-sm)}.callback-card[data-v-d096c840]{width:100%;max-width:400px;text-align:center}.callback-header[data-v-d096c840]{text-align:center}.callback-content[data-v-d096c840]{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);margin:var(--spacing-lg) 0}.loading-text[data-v-d096c840]{margin:0;color:var(--text-color-secondary)}.error-alert[data-v-d096c840]{margin-top:var(--spacing-md)}@media (max-width: 480px){.callback-container[data-v-d096c840]{padding:var(--spacing-sm)}}@media (min-width: 768px){.callback-card[data-v-d096c840]{max-width:450px}}
