body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root[data-theme=light]{--primary-bg:#fff;--secondary-bg:#f5f5f5;--card-bg:#fff;--sidebar-bg:#f8f9fa;--text-primary:#212529;--text-secondary:#6c757d;--text-muted:#999;--border-color:#dee2e6;--border-light:#e9ecef;--header-bg:#fff;--input-bg:#fff;--input-border:#ced4da;--button-bg:#007bff;--button-text:#fff;--code-bg:#f8f9fa;--code-text:#212529;--box-shadow:0 2px 4px #0000001a;--card-shadow:0 1px 3px #0000001f}:root,:root[data-theme=dark]{--primary-bg:#1a1a1a;--secondary-bg:#2d2d2d;--card-bg:#2d2d2d;--sidebar-bg:#252525;--text-primary:#fff;--text-secondary:#b0b0b0;--text-muted:#6c757d;--border-color:#444;--border-light:#3a3a3a;--header-bg:#2d2d2d;--input-bg:#1a1a1a;--input-border:#444;--button-bg:#667eea;--button-text:#fff;--code-bg:#1e1e1e;--code-text:#d4d4d4;--box-shadow:0 2px 4px #0000004d;--card-shadow:0 1px 3px #00000080}body{background-color:#1a1a1a;background-color:var(--primary-bg);color:#fff;color:var(--text-primary);transition:background-color .3s ease,color .3s ease}.error-boundary{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;justify-content:center;min-height:100vh;padding:20px}.error-container{background:#fff;border-radius:12px;box-shadow:0 20px 40px #0000001a;max-width:500px;padding:40px;text-align:center;width:100%}.error-icon{font-size:64px;margin-bottom:20px}.error-title{color:#333;font-size:28px;font-weight:600;margin:0 0 16px}.error-message{color:#666;font-size:16px;line-height:1.5;margin-bottom:32px}.error-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-bottom:24px}.home-button,.refresh-button,.retry-button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s ease}.retry-button{background:#667eea;color:#fff}.retry-button:hover{background:#5a6fd8;transform:translateY(-1px)}.home-button{background:#f8f9fa;border:1px solid #dee2e6;color:#333}.home-button:hover{background:#e9ecef;transform:translateY(-1px)}.refresh-button{background:#28a745;color:#fff}.refresh-button:hover{background:#218838;transform:translateY(-1px)}.error-details{margin-top:24px;text-align:left}.error-details summary{background:#f8f9fa;border-radius:4px;color:#666;cursor:pointer;font-size:14px;margin-bottom:12px;padding:8px}.error-details summary:hover{background:#e9ecef}.error-stack{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;color:#495057;font-size:12px;max-height:200px;overflow-y:auto;padding:12px;white-space:pre-wrap;word-break:break-word}@media (max-width:480px){.error-container{margin:20px;padding:24px}.error-title{font-size:24px}.error-actions{flex-direction:column}.home-button,.refresh-button,.retry-button{width:100%}}.loading-spinner-container{align-items:center;display:flex;flex-direction:column;justify-content:center}.loading-spinner-container.fullscreen{background:#ffffffe6;bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.loading-spinner-container.overlay{background:#fffc;bottom:0;left:0;position:absolute;right:0;top:0;z-index:100}.loading-content{align-items:center;display:flex;flex-direction:column;gap:16px}.spinner{height:var(--spinner-size);position:relative;width:var(--spinner-size)}.loading-spinner-container.small{--spinner-size:24px}.loading-spinner-container.medium{--spinner-size:40px}.loading-spinner-container.large{--spinner-size:60px}.spinner-ring{animation:spin 1.2s linear infinite;border:3px solid #0000;border-radius:50%;border-top-color:#667eea;height:100%;left:0;position:absolute;top:0;width:100%}.spinner-ring:nth-child(2){animation-delay:-.3s;border-top-color:#764ba2;transform:scale(.8)}.spinner-ring:nth-child(3){animation-delay:-.6s;border-top-color:#f093fb;transform:scale(.6)}.spinner-ring:nth-child(4){animation-delay:-.9s;border-top-color:#f5576c;transform:scale(.4)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.loading-message{color:#666;font-size:14px;margin:0;text-align:center}.skeleton{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.project-card-skeleton{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.skeleton-content{display:flex;flex-direction:column;gap:12px;padding:16px}.skeleton-footer{align-items:center;display:flex;justify-content:space-between;margin-top:8px}.dashboard-skeleton{padding:24px}.dashboard-header-skeleton{align-items:center;border-bottom:1px solid #eee;display:flex;justify-content:space-between;margin-bottom:32px;padding-bottom:24px}.header-actions-skeleton{display:flex;gap:12px}.dashboard-content-skeleton{margin:0 auto;max-width:1200px}.section-header-skeleton{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.projects-grid-skeleton{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}@media (prefers-color-scheme:dark){.loading-spinner-container.fullscreen{background:#000000e6}.loading-spinner-container.overlay{background:#000c}.loading-message{color:#ccc}.skeleton{background:linear-gradient(90deg,#333 25%,#444 50%,#333 75%);background-size:200% 100%}.project-card-skeleton{background:#222}}@media (max-width:768px){.projects-grid-skeleton{grid-template-columns:1fr}.dashboard-header-skeleton,.section-header-skeleton{align-items:stretch;flex-direction:column;gap:16px}}.auth-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.auth-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:400px;padding:40px;width:100%}.auth-title{color:#1a202c;font-size:28px;font-weight:700;margin:0 0 8px;text-align:center}.auth-subtitle{color:#718096;font-size:14px;margin:0 0 24px;text-align:center}.auth-error{background:#fee;border-radius:8px;color:#c53030;font-size:14px;padding:12px}.auth-error,.auth-form,.form-group{margin-bottom:20px}.form-group label{color:#4a5568;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.form-group input{border:1px solid #e2e8f0;border-radius:8px;box-sizing:border-box;font-size:14px;padding:12px;transition:all .2s;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-actions{display:flex;justify-content:flex-end;margin-bottom:20px}.forgot-link{color:#667eea;font-size:14px;text-decoration:none;transition:color .2s}.forgot-link:hover{color:#5a67d8}.auth-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:12px;transition:all .2s;width:100%}.auth-button:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.auth-button:disabled{cursor:not-allowed;opacity:.6}.google-button{align-items:center;background:#fff;border:1px solid #e2e8f0;color:#4a5568;display:flex;gap:12px;justify-content:center}.google-button:hover:not(:disabled){background:#f7fafc}.google-icon{height:20px;width:20px}.auth-divider{margin:24px 0;position:relative;text-align:center}.auth-divider span{background:#fff;color:#a0aec0;font-size:14px;padding:0 12px;position:relative}.auth-divider:before{background:#e2e8f0;content:"";height:1px;left:0;position:absolute;right:0;top:50%}.auth-footer{margin-top:24px;text-align:center}.auth-footer p{color:#718096;font-size:14px;margin:0}.auth-footer a{color:#667eea;font-weight:500;text-decoration:none;transition:color .2s}.auth-footer a:hover{color:#5a67d8}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}