@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,300&family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,700;12..96,800&display=swap";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}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.diagram-manager-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.diagram-manager{background:#fff;border-radius:8px;width:90%;max-width:800px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #00000026}.diagram-manager-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #e0e0e0}.diagram-manager-header h2{margin:0;font-size:24px}.close-button{background:none;border:none;font-size:28px;cursor:pointer;color:#666;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.close-button:hover{color:#000}.storage-info{padding:15px 20px;background:#f5f5f5;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;gap:15px}.storage-badge{padding:5px 12px;border-radius:20px;font-size:14px;font-weight:500}.storage-badge.server{background:#e3f2fd;color:#1976d2}.storage-badge.local{background:#fff3e0;color:#f57c00}.storage-note{font-size:14px;color:#666}.error-message{background:#ffebee;color:#c62828;padding:10px 20px;border-left:4px solid #c62828}.diagram-manager-actions{padding:20px;border-bottom:1px solid #e0e0e0}.action-button{padding:10px 20px;border:none;border-radius:4px;font-size:14px;cursor:pointer;background:#f5f5f5;color:#333;transition:background .2s}.action-button:hover{background:#e0e0e0}.action-button.primary{background:#4caf50;color:#fff}.action-button.primary:hover{background:#45a049}.action-button.danger{background:#f44336;color:#fff}.action-button.danger:hover{background:#da190b}.action-button.share{background:#2196f3;color:#fff}.action-button.share:hover{background:#0b7dda}.loading{padding:40px;text-align:center;color:#666}.diagram-list{flex:1;overflow-y:auto;padding:20px}.empty-state{text-align:center;padding:40px;color:#666}.empty-state .hint{font-size:14px;color:#999;margin-top:10px}.diagram-item{display:flex;justify-content:space-between;align-items:center;padding:15px;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:10px;transition:background .2s}.diagram-item:hover{background:#f5f5f5}.diagram-info h3{margin:0 0 5px;font-size:16px}.diagram-meta{font-size:13px;color:#666}.diagram-actions{display:flex;gap:10px}.diagram-actions .action-button{padding:6px 12px;font-size:13px}.save-dialog{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;padding:20px;border-radius:8px;box-shadow:0 4px 20px #0003;min-width:300px}.save-dialog h3{margin:0 0 15px}.save-dialog input{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;margin-bottom:15px;font-size:14px}.dialog-buttons button:first-child{background:#4caf50;color:#fff}.dialog-buttons button:last-child{background:#f5f5f5}.App{height:100vh;display:flex;flex-direction:column;overflow:hidden}.fossflow-container{flex:1;width:100%;position:relative}.fossflow-container>div{height:100%}.dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background-color:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a;min-width:400px;max-width:600px;max-height:80vh;overflow-y:auto}.dialog h2{margin-top:0;margin-bottom:20px;color:#333}.dialog input[type=text]{width:100%;padding:10px;font-size:16px;border:1px solid #ddd;border-radius:4px;margin-bottom:20px;box-sizing:border-box}.dialog-buttons{display:flex;gap:10px;justify-content:flex-end}.dialog-buttons button{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px}.dialog-buttons button:first-child{background-color:#007bff;color:#fff}.dialog-buttons button:first-child:hover{background-color:#0056b3}.dialog-buttons button:last-child{background-color:#6c757d;color:#fff}.dialog-buttons button:last-child:hover{background-color:#5a6268}.diagram-list{margin-bottom:20px;max-height:400px;overflow-y:auto}.diagram-item{display:flex;justify-content:space-between;align-items:center;padding:10px;border:1px solid #eee;border-radius:4px;margin-bottom:10px}.diagram-item:hover{background-color:#f8f9fa}.diagram-actions{display:flex;gap:5px}.diagram-actions button{padding:4px 12px;font-size:12px;border:none;border-radius:4px;cursor:pointer}.diagram-actions button:first-child{background-color:#28a745;color:#fff}.diagram-actions button:first-child:hover{background-color:#218838}.diagram-actions button:last-child{background-color:#dc3545;color:#fff}.diagram-actions button:last-child:hover{background-color:#c82333}.canvas-loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#ffffffd9}@keyframes canvas-spin{to{transform:rotate(360deg)}}.canvas-loading-spinner{width:40px;height:40px;border:4px solid #e0e0e0;border-top-color:#1976d2;border-radius:50%;animation:canvas-spin .8s linear infinite}.canvas-loading-text{margin-top:16px;font-size:16px;color:#333}.canvas-saving-chip{position:fixed;top:12px;right:12px;z-index:9998;padding:4px 10px;font-size:12px;border:1px solid #1976d2;border-radius:16px;color:#1976d2;background:#fff;pointer-events:none}.canvas-error-snackbar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:9999;display:flex;align-items:center;gap:12px;padding:12px 16px;background:#d32f2f;color:#fff;border-radius:4px;box-shadow:0 3px 10px #0000004d;font-size:14px;max-width:480px}.canvas-error-close{background:none;border:none;color:#fff;cursor:pointer;font-size:14px;padding:0;line-height:1}.auth-page{position:fixed;top:0;right:0;bottom:0;left:0;overflow-y:auto;display:flex;justify-content:center;background-color:#f5f3ef;background-image:radial-gradient(circle at 30% 20%,rgba(198,183,164,.2) 0%,transparent 50%),radial-gradient(circle at 70% 80%,rgba(168,155,138,.12) 0%,transparent 40%);padding:24px}.auth-card{width:100%;max-width:400px;margin:auto 0;background:#fffefa;border:1px solid #e4ddd4;border-radius:16px;padding:44px 40px 36px;box-shadow:0 1px 2px #0000000a,0 4px 16px #00000008,0 12px 40px #00000008}.auth-logo{text-align:center;margin-bottom:36px}.auth-logo-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;margin-bottom:16px;background:#1a1a1a;border-radius:14px;box-shadow:0 2px 8px #0000001f,0 1px 2px #00000014}.auth-logo-icon img{display:block}.auth-logo h1{margin:0;font-family:Bricolage Grotesque,sans-serif;font-size:34px;font-weight:800;letter-spacing:-.8px;color:#1a1a1a}.auth-logo p{margin:6px 0 0;font-family:DM Sans,sans-serif;font-size:13px;font-weight:400;color:#9a918a;letter-spacing:.3px}.auth-title{margin:0 0 20px;font-family:DM Sans,sans-serif;font-size:18px;font-weight:500;color:#1a1a1a}.auth-error{margin-bottom:16px;padding:10px 14px;background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;color:#be123c;font-family:DM Sans,sans-serif;font-size:13px;line-height:1.5}.kb-form-group{margin-bottom:16px}.kb-form-label{display:block;margin-bottom:6px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;color:#3d3730}.kb-form-input{display:block;width:100%;padding:10px 12px;font-family:DM Sans,sans-serif;font-size:14px;color:#1a1a1a;background:#fff;border:1px solid #d9d2c9;border-radius:8px;outline:none;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}.kb-form-input::placeholder{color:#b5ada4}.kb-form-input:focus{border-color:#a89e93;box-shadow:0 0 0 3px #a89e9326}.kb-form-hint{margin:6px 0 0;font-family:DM Sans,sans-serif;font-size:12px;color:#b5ada4}.auth-btn-primary{display:block;width:100%;padding:11px 16px;margin-top:8px;font-family:DM Sans,sans-serif;font-size:14px;font-weight:500;color:#fff;background:#1a1a1a;border:none;border-radius:8px;cursor:pointer;transition:background .15s ease,transform .1s ease}.auth-btn-primary:hover{background:#333}.auth-btn-primary:active{transform:scale(.99)}.auth-btn-primary:disabled{background:#b5ada4;cursor:not-allowed;transform:none}.auth-divider{display:flex;align-items:center;gap:12px;margin:20px 0;font-family:DM Sans,sans-serif;font-size:12px;color:#b5ada4;text-transform:uppercase;letter-spacing:.5px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#e4ddd4}.auth-oauth-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:10px 16px;font-family:DM Sans,sans-serif;font-size:14px;font-weight:400;color:#3d3730;background:#fff;border:1px solid #e4ddd4;border-radius:8px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.auth-oauth-btn:hover{background:#faf8f5;border-color:#d9d2c9}.auth-oauth-btn:disabled{color:#b5ada4;cursor:not-allowed}.auth-oauth-btn-google:before{content:"";display:inline-block;width:18px;height:18px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='%23EA4335' d='M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z'/%3E%3Cpath fill='%234285F4' d='M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z'/%3E%3Cpath fill='%2334A853' d='M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z'/%3E%3Cpath fill='%23FBBC05' d='M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z'/%3E%3C/svg%3E");background-size:contain;background-repeat:no-repeat}.auth-gsi-container{width:100%}.auth-gsi-container>div{width:100%!important}.auth-gsi-container iframe{width:100%!important}.auth-footer{margin-top:24px;text-align:center;font-family:DM Sans,sans-serif;font-size:13px;color:#7a7167}.auth-footer a{color:#1a1a1a;font-weight:500;text-decoration:none;border-bottom:1px solid #d9d2c9;transition:border-color .15s ease}.auth-footer a:hover{border-color:#1a1a1a}@media(max-width:480px){.auth-card{max-width:calc(100% - 32px);padding:32px 24px 28px}}.error-page-container{width:100%;height:100vh;overflow:hidden;display:flex;justify-content:center;align-items:center;background-color:#00000080}.error-container{min-height:300px;width:400px;background-color:#fff;padding:30px;border-radius:8px;box-shadow:0 2px 10px #0000001a;border:1px solid #ddd}.error-header{margin-bottom:20px;text-align:center}.error-header p{margin:0;font-size:24px;font-weight:600;color:#333}.error-content{margin-bottom:30px;padding:15px;background-color:#fff3cd;border:1px solid #ffeeba;border-radius:4px}.error-content p{margin:0;font-size:14px;color:#856404;word-break:break-word;line-height:1.4}.error-footer{display:flex;gap:10px;justify-content:center}.error-button{display:inline-block;text-decoration:none;font-size:14px;cursor:pointer;padding:8px 16px;border:none;border-radius:4px;background-color:#007bff;color:#fff;transition:background-color .2s ease}.error-button:hover{background-color:#0056b3}.error-button.refresh-button{background-color:#28a745}.error-button.refresh-button:hover{background-color:#218838}
