*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html,body{height:100%}body{line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}#root,#app{isolation:isolate}:root{--bg-primary: #1A1A1A;--bg-secondary: #242424;--bg-tertiary: #2E2E2E;--bg-input: #333333;--bg-hover: #3A3A3A;--bg-active: #454545;--text-primary: #E0E0E0;--text-secondary: #B0B0B0;--text-muted: #707070;--text-disabled: #505050;--border-color: #3A3A3A;--border-color-hover: #505050;--border-color-focus: #5C6BC0;--accent-primary: #5C6BC0;--accent-secondary: #7986CB;--accent-hover: #3F51B5;--accent-focus: #3949AB;--accent-danger: #EF5350;--accent-danger-hover: #E53935;--accent-success: #66BB6A;--accent-success-hover: #4CAF50;--accent-warning: #FFA726;--accent-warning-hover: #FB8C00;--accent-info: #42A5F5;--accent-info-hover: #2196F3;--font-family: "Vanadium Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-mono: "Vanadium Mono", "Courier New", Courier, monospace;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-lg: 16px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 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;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--border-width: 1px;--border-width-thick: 2px;--border-radius-sm: 4px;--border-radius-md: 6px;--border-radius-lg: 12px;--border-radius-xl: 16px;--border-radius-full: 9999px;--border-standard: var(--border-width) solid var(--border-color);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-inset: inset 0 2px 4px rgba(0, 0, 0, .3);--transition-fast: .15s ease;--transition-std: .3s ease;--transition-slow: .5s ease;--scrollbar-width: 8px;--scrollbar-track: var(--bg-secondary);--scrollbar-thumb: var(--bg-tertiary);--scrollbar-thumb-hover: var(--border-color-hover);--z-dropdown: 100;--z-sticky: 200;--z-modal: 300;--z-popover: 400;--z-tooltip: 500}@font-face{font-family:Vanadium Sans;src:local("Vanadium Sans"),url(../assets/fonts/VanadiumSans-SemiExtended.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Vanadium Mono;src:local("Vanadium Mono"),url(../assets/fonts/VanadiumMono-SemiExtended.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}html{font-size:var(--font-size-base);background-color:var(--bg-primary);color:var(--text-primary)}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh}:focus-visible{outline:var(--border-width-thick) solid var(--accent-primary);outline-offset:2px}::selection{background-color:var(--accent-primary);color:var(--text-primary)}::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--border-radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}.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}.hidden{display:none!important}.invisible{visibility:hidden}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}#login-page{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background-color:var(--bg-primary);z-index:var(--z-modal)}.login-container{width:360px;background-color:var(--bg-secondary);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.login-header{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5);background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:#fff}.login-logo{width:48px;height:48px;flex-shrink:0}.login-header-text h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.login-header-text p{font-size:var(--font-size-sm);opacity:.9;margin:var(--space-1) 0 0}.login-form{padding:var(--space-5)}.form-group{margin-bottom:var(--space-4)}.form-group input{width:100%;padding:var(--space-3) var(--space-4);background-color:var(--bg-input);border:var(--border-standard);border-radius:var(--border-radius-md);color:var(--text-primary);font-size:var(--font-size-base);transition:border-color var(--transition-fast)}.form-group input::placeholder{color:var(--text-muted)}.form-group input:focus{outline:none;border-color:var(--accent-primary)}.login-error{display:none;align-items:center;gap:var(--space-2);padding:var(--space-3);margin-bottom:var(--space-4);background-color:#ef53501a;border:var(--border-width) solid var(--accent-danger);border-radius:var(--border-radius-md);color:var(--accent-danger);font-size:var(--font-size-sm)}.login-error.visible{display:flex}.login-btn{width:100%;padding:var(--space-3) var(--space-4);margin-top:var(--space-5);background-color:var(--accent-primary);border:none;border-radius:var(--border-radius-md);color:#fff;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:background-color var(--transition-fast)}.login-btn:hover{background-color:var(--accent-hover)}.login-btn:disabled{background-color:var(--text-disabled);cursor:not-allowed}#app-container{display:flex;height:100vh;overflow:hidden}.app-sidebar{width:240px;flex-shrink:0;display:flex;flex-direction:column;background-color:var(--bg-secondary);border-right:var(--border-standard)}.sidebar-header{padding:var(--space-4);border-bottom:var(--border-standard)}.sidebar-brand{display:flex;align-items:center;gap:var(--space-3)}.sidebar-brand img{width:32px;height:32px}.sidebar-brand span{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.sidebar-nav{flex:1;overflow-y:auto;padding:var(--space-2)}.sidebar-menu{list-style:none}.sidebar-menu-item{margin-bottom:var(--space-1)}.sidebar-menu-btn{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3) var(--space-4);background:none;border:none;border-radius:var(--border-radius-md);color:var(--text-secondary);font-size:var(--font-size-base);text-align:left;cursor:pointer;transition:all var(--transition-fast)}.sidebar-menu-btn:hover{background-color:var(--bg-hover);color:var(--text-primary)}.sidebar-menu-btn.active{background-color:var(--accent-primary);color:#fff}.sidebar-menu-btn i{width:20px;text-align:center}.sidebar-footer{padding:var(--space-3);border-top:var(--border-standard)}.sidebar-logout-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3);background:none;border:var(--border-standard);border-radius:var(--border-radius-md);color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.sidebar-logout-btn:hover{border-color:var(--accent-danger);color:var(--accent-danger)}.app-main{flex:1;display:flex;flex-direction:column;min-width:0;background-color:var(--bg-primary)}.app-header{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 var(--space-5);background-color:var(--bg-secondary);border-bottom:var(--border-standard);flex-shrink:0}.header-left{display:flex;align-items:center;gap:var(--space-3)}.header-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.header-right{display:flex;align-items:center;gap:var(--space-3)}.header-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:none;border:none;border-radius:var(--border-radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.header-btn:hover{background-color:var(--bg-hover);color:var(--text-primary)}.app-workspace{flex:1;overflow:auto;padding:var(--space-5)}.workspace-container{max-width:1400px;margin:0 auto}@media(max-width:768px){.app-sidebar{position:fixed;left:0;top:0;bottom:0;z-index:var(--z-modal);transform:translate(-100%);transition:transform var(--transition-std)}.app-sidebar.open{transform:translate(0)}.sidebar-overlay{position:fixed;inset:0;background-color:#00000080;z-index:calc(var(--z-modal) - 1);opacity:0;visibility:hidden;transition:all var(--transition-std)}.sidebar-overlay.open{opacity:1;visibility:visible}.app-main{width:100%}.login-container{width:calc(100% - var(--space-6));max-width:360px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background-color:var(--bg-tertiary);border:var(--border-standard);border-radius:var(--border-radius-md);color:var(--text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);line-height:1;text-decoration:none;cursor:pointer;transition:all var(--transition-fast)}.btn:hover{background-color:var(--bg-hover);border-color:var(--border-color-hover)}.btn:focus{outline:none;box-shadow:0 0 0 2px var(--accent-primary)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.btn-primary:hover{background-color:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background-color:var(--bg-tertiary);border-color:var(--border-color);color:var(--text-primary)}.btn-danger{background-color:var(--accent-danger);border-color:var(--accent-danger);color:#fff}.btn-danger:hover{background-color:var(--accent-danger-hover);border-color:var(--accent-danger-hover)}.btn-success{background-color:var(--accent-success);border-color:var(--accent-success);color:#fff}.btn-success:hover{background-color:var(--accent-success-hover);border-color:var(--accent-success-hover)}.btn-ghost{background-color:transparent;border-color:transparent}.btn-ghost:hover{background-color:var(--bg-hover)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.btn-lg{padding:var(--space-3) var(--space-5);font-size:var(--font-size-lg)}.input,.select,.textarea{width:100%;padding:var(--space-2) var(--space-3);background-color:var(--bg-input);border:var(--border-standard);border-radius:var(--border-radius-md);color:var(--text-primary);font-size:var(--font-size-base);transition:all var(--transition-fast)}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.input:hover,.select:hover,.textarea:hover{border-color:var(--border-color-hover)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 2px #5c6bc033}.input:disabled,.select:disabled,.textarea:disabled{background-color:var(--bg-secondary);color:var(--text-disabled);cursor:not-allowed}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23B0B0B0' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-6)}.textarea{min-height:100px;resize:vertical;line-height:var(--line-height-normal)}.input-sm,.select-sm{padding:var(--space-1) var(--space-2);font-size:var(--font-size-sm)}.input-lg,.select-lg{padding:var(--space-3) var(--space-4);font-size:var(--font-size-lg)}.checkbox,.radio{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer}.checkbox input,.radio input{width:16px;height:16px;accent-color:var(--accent-primary)}.form-label{display:block;margin-bottom:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.form-hint{margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--text-muted)}.form-error{margin-top:var(--space-1);font-size:var(--font-size-xs);color:var(--accent-danger)}.card{background-color:var(--bg-secondary);border:var(--border-standard);border-radius:var(--border-radius-lg);overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:var(--border-standard)}.card-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.card-body{padding:var(--space-4)}.card-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4);border-top:var(--border-standard)}.table-container{overflow-x:auto;border:var(--border-standard);border-radius:var(--border-radius-lg)}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:var(--border-standard)}.table th{background-color:var(--bg-tertiary);font-weight:var(--font-weight-semibold);color:var(--text-secondary);text-transform:uppercase;font-size:var(--font-size-xs);letter-spacing:.5px}.table tbody tr:hover{background-color:var(--bg-hover)}.table tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);border-radius:var(--border-radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:1}.badge-primary{background-color:var(--accent-primary);color:#fff}.badge-secondary{background-color:var(--bg-tertiary);color:var(--text-secondary)}.badge-success{background-color:var(--accent-success);color:#fff}.badge-danger{background-color:var(--accent-danger);color:#fff}.badge-warning{background-color:var(--accent-warning);color:#1a1a1a}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border-radius:var(--border-radius-md);border:var(--border-width) solid transparent}.alert-info{background-color:#42a5f51a;border-color:var(--accent-info);color:var(--accent-info)}.alert-success{background-color:#66bb6a1a;border-color:var(--accent-success);color:var(--accent-success)}.alert-warning{background-color:#ffa7261a;border-color:var(--accent-warning);color:var(--accent-warning)}.alert-danger{background-color:#ef53501a;border-color:var(--accent-danger);color:var(--accent-danger)}.modal-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background-color:#000000b3;z-index:var(--z-modal);padding:var(--space-4)}.modal{width:100%;max-width:480px;max-height:90vh;background-color:var(--bg-secondary);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:var(--border-standard)}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;border-radius:var(--border-radius-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast)}.modal-close:hover{background-color:var(--bg-hover);color:var(--text-primary)}.modal-body{padding:var(--space-4);overflow-y:auto}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4);border-top:var(--border-standard)}.tooltip{position:relative}.tooltip:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-4px);padding:var(--space-1) var(--space-2);background-color:var(--bg-tertiary);border-radius:var(--border-radius-sm);font-size:var(--font-size-xs);color:var(--text-primary);white-space:nowrap;opacity:0;visibility:hidden;transition:all var(--transition-fast);z-index:var(--z-tooltip)}.tooltip:hover:after{opacity:1;visibility:visible}.divider{height:1px;background-color:var(--border-color);margin:var(--space-4) 0}.divider-vertical{width:1px;height:auto;align-self:stretch;margin:0 var(--space-4)}.loading{position:relative;pointer-events:none}.loading:after{content:"";position:absolute;inset:0;background-color:var(--bg-primary);opacity:.7}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border-color);border-top-color:var(--accent-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-hover) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--border-radius-md)}.fade-in{animation:fadeIn var(--transition-std) forwards}.fade-out{animation:fadeOut var(--transition-std) forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.module-crossfade-in{animation:crossfadeIn .3s ease forwards}.module-crossfade-out{animation:crossfadeOut .3s ease forwards}@keyframes crossfadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes crossfadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.login-fade-in{animation:loginFadeIn .8s ease forwards}.login-fade-out{animation:loginFadeOut .8s ease forwards}@keyframes loginFadeIn{0%{opacity:0}to{opacity:1}}@keyframes loginFadeOut{0%{opacity:1}to{opacity:0}}.slide-in-left{animation:slideInLeft var(--transition-std) forwards}.slide-in-right{animation:slideInRight var(--transition-std) forwards}.slide-out-left{animation:slideOutLeft var(--transition-std) forwards}.slide-out-right{animation:slideOutRight var(--transition-std) forwards}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes slideOutLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-20px)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(20px)}}.scale-in{animation:scaleIn var(--transition-std) forwards}.scale-out{animation:scaleOut var(--transition-std) forwards}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.modal-enter{animation:modalEnter var(--transition-std) forwards}.modal-exit{animation:modalExit var(--transition-std) forwards}@keyframes modalEnter{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalExit{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-10px)}}.modal-overlay-enter{animation:modalOverlayEnter var(--transition-std) forwards}.modal-overlay-exit{animation:modalOverlayExit var(--transition-std) forwards}@keyframes modalOverlayEnter{0%{opacity:0}to{opacity:1}}@keyframes modalOverlayExit{0%{opacity:1}to{opacity:0}}.toast-enter{animation:toastEnter .4s ease forwards}.toast-exit{animation:toastExit .3s ease forwards}@keyframes toastEnter{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes toastExit{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.btn-loading{position:relative;color:transparent!important;pointer-events:none}.btn-loading:after{content:"";position:absolute;width:16px;height:16px;top:50%;left:50%;margin-top:-8px;margin-left:-8px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin 1s linear infinite}.pulse{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.shimmer{background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-hover) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.fade-in,.fade-out,.module-crossfade-in,.module-crossfade-out,.login-fade-in,.login-fade-out,.slide-in-left,.slide-in-right,.slide-out-left,.slide-out-right,.scale-in,.scale-out,.modal-enter,.modal-exit,.modal-overlay-enter,.modal-overlay-exit,.toast-enter,.toast-exit{animation:none;opacity:1;transform:none}.btn-loading:after{animation:none}.pulse{animation:none}.shimmer{animation:none;background:var(--bg-tertiary)}}.transition-colors{transition:color var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast)}.transition-transform{transition:transform var(--transition-fast)}.transition-opacity{transition:opacity var(--transition-fast)}.transition-all{transition:all var(--transition-fast)}
