.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:hsl(var(--bg-primary));padding:20px}.auth-card{width:100%;max-width:400px;padding:40px;background:hsl(var(--bg-secondary));border:1px solid hsl(var(--border-color));border-radius:12px}.auth-logo{display:flex;align-items:center;gap:10px;margin-bottom:32px;justify-content:center}.auth-logo img{border-radius:8px}.auth-brand{font-size:20px;font-weight:600;color:hsl(var(--text-primary))}.auth-title{font-size:22px;font-weight:600;color:hsl(var(--text-primary));text-align:center;margin-bottom:6px}.auth-subtitle{font-size:14px;color:hsl(var(--text-secondary));text-align:center;margin-bottom:24px}.google-btn,.auth-google-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px;background:hsl(var(--bg-primary));color:hsl(var(--text-primary));border:1px solid hsl(var(--border-color));border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .15s}.google-btn:hover,.auth-google-btn:hover{background:hsl(var(--bg-secondary))}.auth-google-btn:disabled{opacity:.5;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:hsl(var(--text-muted));font-size:13px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:hsl(var(--border-color))}.form-field{margin-bottom:14px}.form-field label{display:block;font-size:13px;font-weight:500;color:hsl(var(--text-secondary));margin-bottom:6px}.form-field input{width:100%;padding:10px 12px;background:hsl(var(--bg-primary));border:1px solid hsl(var(--border-color));border-radius:8px;color:hsl(var(--text-primary));font-size:14px;font-family:inherit;outline:none;transition:border-color .2s}.form-field input::-moz-placeholder{color:hsl(var(--text-muted))}.form-field input::placeholder{color:hsl(var(--text-muted))}.form-field input:focus{border-color:hsl(var(--text-muted))}.auth-error{background:#521414;color:#f07575;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.auth-message{background:#173617;color:#85e085;padding:10px 12px;border-radius:8px;font-size:13px;margin-bottom:14px}.auth-submit{width:100%;padding:10px;background:hsl(var(--text-primary));color:#000;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:opacity .15s}.auth-submit:hover{opacity:.9}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-switch{text-align:center;font-size:13px;color:hsl(var(--text-secondary));margin-top:20px}.auth-switch button{background:none;border:none;color:hsl(var(--text-primary));cursor:pointer;font-family:inherit;font-size:13px;font-weight:500;text-decoration:underline}.sidebar{width:260px;background:hsl(var(--bg-primary));border-right:1px solid hsl(var(--border-color));display:flex;flex-direction:column;flex-shrink:0;height:100vh}.sidebar-header{padding:16px;display:flex;align-items:center;justify-content:space-between}.logo-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:hsl(var(--text-primary))}.sidebar-collapse-btn{background:none;border:none;color:hsl(var(--text-muted));cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:color .2s}.sidebar-collapse-btn:hover{color:hsl(var(--text-primary))}.sidebar-nav{display:flex;flex-direction:column;gap:2px;padding:0 8px}.nav-item{padding:8px 12px;border-radius:6px;cursor:pointer;font-size:14px;color:hsl(var(--text-secondary));transition:all .15s;display:flex;align-items:center;gap:8px;background:none;border:none;text-align:left;width:100%;font-family:inherit}.nav-item:hover{background:hsl(var(--bg-hover));color:hsl(var(--text-primary))}.nav-item.active{background:hsl(var(--bg-tertiary));color:hsl(var(--text-primary));font-weight:500}.sidebar-footer{margin-top:auto;padding:12px;position:relative}.user-footer-btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px;background:none;border:none;cursor:pointer;border-radius:6px;color:hsl(var(--text-secondary));font-family:inherit;font-size:13px;transition:background .15s}.user-footer-btn:hover{background:hsl(var(--bg-hover))}.user-avatar{width:24px;height:24px;border-radius:50%;background:hsl(var(--bg-tertiary));display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:hsl(var(--text-primary));flex-shrink:0}.user-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}.chevron-icon{flex-shrink:0;opacity:.5}.user-menu{position:absolute;bottom:100%;left:12px;right:12px;background:hsl(var(--bg-secondary));border:1px solid hsl(var(--border-color));border-radius:10px;padding:6px;margin-bottom:4px;box-shadow:0 8px 32px #00000080;z-index:50}.user-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;background:none;border:none;color:hsl(var(--text-secondary));cursor:pointer;border-radius:6px;font-size:13px;font-family:inherit;transition:all .15s}.user-menu-item:hover{background:hsl(var(--bg-hover));color:hsl(var(--text-primary))}.user-menu-divider{height:1px;background:hsl(var(--border-color));margin:4px 0}.dashboard{flex:1;display:flex;flex-direction:column;height:100vh;overflow:hidden;background:hsl(var(--bg-primary))}.dashboard-header{display:flex;align-items:center;justify-content:space-between;padding:20px 32px;flex-shrink:0}.dashboard-title{font-size:18px;font-weight:600;color:hsl(var(--text-primary))}.dashboard-actions{display:flex;align-items:center;gap:8px}.search-box{display:flex;align-items:center;gap:8px;padding:7px 14px;background:hsl(var(--bg-secondary));border:1px solid hsl(var(--border-color));border-radius:8px;min-width:200px}.search-box svg{color:hsl(var(--text-muted));flex-shrink:0}.search-box input{background:none;border:none;outline:none;color:hsl(var(--text-primary));font-size:14px;font-family:inherit;width:100%}.search-box input::-moz-placeholder{color:hsl(var(--text-muted))}.search-box input::placeholder{color:hsl(var(--text-muted))}.view-toggle{display:flex;background:hsl(var(--bg-secondary));border:1px solid hsl(var(--border-color));border-radius:8px;overflow:hidden}.view-btn{padding:7px 10px;background:none;border:none;color:hsl(var(--text-muted));cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.view-btn:first-child{border-right:1px solid hsl(var(--border-color))}.view-btn.active{color:hsl(var(--text-primary));background:hsl(var(--bg-tertiary))}.view-btn:hover:not(.active){color:hsl(var(--text-secondary))}.new-btn{display:flex;align-items:center;gap:6px;padding:7px 16px;background:hsl(var(--bg-secondary));border:1px solid hsl(var(--border-color));border-radius:8px;color:hsl(var(--text-primary));font-size:14px;font-family:inherit;cursor:pointer;transition:all .15s}.new-btn:hover{background:hsl(var(--bg-hover))}.projects-table-header{display:flex;align-items:center;justify-content:space-between;padding:10px 32px;border-bottom:1px solid hsl(var(--border-color));flex-shrink:0}.col-name,.col-created{display:flex;align-items:center;gap:4px;font-size:13px;color:hsl(var(--text-muted));cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.col-name:hover,.col-created:hover{color:hsl(var(--text-secondary))}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px}.empty-title{font-size:16px;font-weight:500;color:hsl(var(--text-primary))}.empty-subtitle{font-size:14px;color:hsl(var(--text-muted))}.start-btn{margin-top:16px;padding:9px 20px;background:none;border:1px solid hsl(var(--border-color));border-radius:8px;color:hsl(var(--text-primary));font-size:14px;font-family:inherit;cursor:pointer;transition:all .15s}.start-btn:hover{background:hsl(var(--bg-hover));border-color:hsl(var(--text-muted))}.projects-list{flex:1;overflow-y:auto}.project-row{display:flex;align-items:center;justify-content:space-between;padding:12px 32px;width:100%;background:none;border:none;border-bottom:1px solid hsl(var(--border-color));cursor:pointer;transition:background .15s;font-family:inherit;text-align:left}.project-row:hover{background:hsl(var(--bg-hover))}.project-name{font-size:14px;color:hsl(var(--text-primary))}.project-row-right{display:flex;align-items:center;gap:12px}.project-date{font-size:13px;color:hsl(var(--text-muted))}.project-delete{font-size:18px;color:hsl(var(--text-muted));cursor:pointer;opacity:0;transition:opacity .15s,color .15s;padding:0 4px}.project-row:hover .project-delete{opacity:1}.project-delete:hover{color:#ef4444}.projects-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;padding:24px 32px}.file-tree{width:200px;background:hsl(var(--bg-secondary));border-right:1px solid hsl(var(--border-color));display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.file-tree-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid hsl(var(--border-color))}.file-tree-title{font-size:12px;font-weight:600;color:hsl(var(--text-muted));text-transform:uppercase;letter-spacing:.5px}.file-tree-add{background:none;border:none;color:hsl(var(--text-muted));cursor:pointer;padding:2px;border-radius:4px;display:flex;align-items:center;transition:color .15s}.file-tree-add:hover{color:hsl(var(--text-primary))}.file-tree-list{flex:1;overflow-y:auto;padding:4px 6px}.file-tree-item{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:5px;cursor:pointer;font-size:13px;color:hsl(var(--text-secondary));transition:all .12s;position:relative}.file-tree-item:hover{background:hsl(var(--bg-hover));color:hsl(var(--text-primary))}.file-tree-item.active{background:hsl(var(--bg-tertiary));color:hsl(var(--text-primary))}.file-icon{flex-shrink:0;opacity:.6}.file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-rename-input{flex:1;background:hsl(var(--bg-primary));border:1px solid hsl(var(--accent-blue));border-radius:3px;color:hsl(var(--text-primary));font-size:13px;padding:1px 4px;font-family:inherit;outline:none}.file-delete-btn{background:none;border:none;color:hsl(var(--text-muted));cursor:pointer;padding:2px;border-radius:3px;display:flex;opacity:0;transition:opacity .12s,color .12s}.file-tree-item:hover .file-delete-btn{opacity:1}.file-delete-btn:hover{color:#e05252}.graph-viewer{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.graph-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid hsl(var(--border-color));background:hsl(var(--bg-primary));flex-shrink:0}.graph-toolbar-label{font-size:13px;font-weight:500;color:hsl(var(--text-secondary))}.graph-canvas-container{flex:1;background:#0a0a0a;position:relative}.graph-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.graph-empty-title{font-size:14px;color:hsl(var(--text-muted))}.graph-empty-hint{font-size:13px;color:hsl(var(--text-muted));text-align:center;line-height:1.6;opacity:.7}.graph-empty-hint code{background:hsl(var(--bg-tertiary));padding:2px 6px;border-radius:4px;font-size:12px;color:#52e086;font-family:SF Mono,Fira Code,monospace}.math-editor{flex:1;display:flex;flex-direction:column;height:100vh;overflow:hidden}.editor-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid hsl(var(--border-color));background:hsl(var(--bg-primary));flex-shrink:0}.toolbar-left{display:flex;align-items:center;gap:12px}.toolbar-label{font-size:13px;font-weight:500;color:hsl(var(--text-secondary))}.toolbar-project-name{font-size:13px;font-weight:500;color:hsl(var(--text-primary));background:none;border:1px solid transparent;border-radius:4px;padding:4px 8px;font-family:inherit;outline:none;transition:border-color .15s}.toolbar-project-name:hover,.toolbar-project-name:focus{border-color:hsl(var(--border-color))}.toolbar-file-badge{font-size:12px;color:hsl(var(--text-muted));background:hsl(var(--bg-tertiary));padding:2px 8px;border-radius:4px;font-family:SF Mono,Fira Code,monospace}.toolbar-actions{display:flex;gap:6px}.toolbar-btn{padding:5px 12px;background:hsl(var(--bg-secondary));border:1px solid hsl(var(--border-color));border-radius:6px;color:hsl(var(--text-secondary));font-size:12px;font-family:inherit;cursor:pointer;transition:all .15s}.toolbar-btn:hover{background:hsl(var(--bg-hover));color:hsl(var(--text-primary))}.editor-layout{flex:1;display:flex;overflow:hidden}.editor-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid hsl(var(--border-color));min-width:300px}.editor-inner{flex:1;display:flex;overflow:hidden}.line-numbers{padding:16px 0;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;flex-shrink:0;width:48px;background:hsl(var(--bg-primary));border-right:1px solid hsl(var(--border-color))}.line-number{height:24px;line-height:24px;padding:0 12px 0 0;font-size:13px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;color:hsl(var(--text-muted))}.code-input{flex:1;padding:16px;background:hsl(var(--bg-primary));color:hsl(var(--text-primary));border:none;outline:none;resize:none;font-size:14px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;line-height:24px;-moz-tab-size:2;-o-tab-size:2;tab-size:2;white-space:pre;overflow-y:auto}.code-input::-moz-placeholder{color:hsl(var(--text-muted))}.code-input::placeholder{color:hsl(var(--text-muted))}.app-container{display:flex;height:100vh;width:100vw;background:hsl(var(--bg-primary))}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:hsl(var(--bg-primary));color:hsl(var(--text-secondary));font-size:14px}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--bg-primary: 0 0% 7%;--bg-secondary: 0 0% 10%;--bg-tertiary: 0 0% 14%;--bg-hover: 0 0% 16%;--border-color: 0 0% 18%;--text-primary: 0 0% 100%;--text-secondary: 0 0% 63%;--text-muted: 0 0% 40%;--accent-amber: 36 100% 50%;--accent-blue: 217 91% 60%;--background: 0 0% 7%;--foreground: 0 0% 100%;--card: 0 0% 10%;--card-foreground: 0 0% 100%;--popover: 0 0% 10%;--popover-foreground: 0 0% 100%;--primary: 36 100% 50%;--primary-foreground: 0 0% 0%;--secondary: 0 0% 14%;--secondary-foreground: 0 0% 100%;--muted: 0 0% 14%;--muted-foreground: 0 0% 63%;--accent: 0 0% 16%;--accent-foreground: 0 0% 100%;--destructive: 0 84% 60%;--destructive-foreground: 0 0% 100%;--border: 0 0% 18%;--input: 0 0% 18%;--ring: 36 100% 50%;--radius: .5rem;--sidebar-background: 0 0% 7%;--sidebar-foreground: 0 0% 63%;--sidebar-primary: 0 0% 100%;--sidebar-primary-foreground: 0 0% 7%;--sidebar-accent: 0 0% 14%;--sidebar-accent-foreground: 0 0% 100%;--sidebar-border: 0 0% 18%;--sidebar-ring: 36 100% 50%}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:hsl(var(--bg-primary));font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:hsl(var(--text-primary))}#root{width:100%;height:100%}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:hsl(var(--text-muted));border-radius:3px}::-webkit-scrollbar-thumb:hover{background:hsl(var(--text-secondary))}
