*{margin:0;padding:0;box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:var(--text-primary);background-color:var(--bg-primary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;place-items:center;min-width:320px;min-height:100vh}#root{width:100%;height:100vh;margin:0 auto}.app{width:100%;height:100vh;display:flex;flex-direction:column}.app-header{padding:1rem 2rem;background-color:var(--header-bg);border-bottom:1px solid var(--border-color)}.app-header h1{font-size:2rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.app-header p{color:var(--text-tertiary);font-size:.9rem}.app-main{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem}.canvas-main{padding:0;overflow:hidden;display:flex;flex-direction:row;position:relative}button{border-radius:8px;border:1px solid var(--border-color);padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-button);color:var(--text-primary);cursor:pointer;transition:all .2s ease}button:hover{border-color:var(--accent-color);background-color:var(--bg-button-hover)}button:focus,button:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;height:100vh}.loading-spinner{width:48px;height:48px;border:4px solid rgba(100,108,255,.2);border-top-color:#646cff;border-radius:50%;animation:spin 1s linear infinite}.login-page{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.login-container{background-color:var(--modal-bg);border-radius:16px;border:1px solid var(--border-color);padding:3rem;max-width:440px;width:100%;box-shadow:var(--shadow-lg)}.login-header{text-align:center;margin-bottom:2rem}.login-title{font-size:2.5rem;font-weight:700;background:linear-gradient(135deg,#646cff,#9333ea);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.login-subtitle{color:var(--text-tertiary);font-size:.95rem}.login-content{margin-bottom:2rem}.login-welcome{font-size:1.5rem;font-weight:600;margin-bottom:.5rem;color:var(--text-primary)}.login-description{color:var(--text-secondary);font-size:.95rem;line-height:1.6;margin-bottom:2rem}.login-buttons{display:flex;flex-direction:column;gap:1rem}.btn-github{display:flex;align-items:center;justify-content:center;gap:.75rem;background-color:#24292e;color:#fff;border:1px solid #444;padding:.85rem 1.5rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-github:hover:not(:disabled){background-color:#2f363d;border-color:#555;transform:translateY(-1px);box-shadow:0 4px 12px #0000004d}.btn-github:active:not(:disabled){transform:translateY(0)}.btn-github:disabled{opacity:.6;cursor:not-allowed}.btn-google{display:flex;align-items:center;justify-content:center;gap:.75rem;background-color:#fff;color:#3c4043;border:1px solid #dadce0;padding:.85rem 1.5rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-google:hover:not(:disabled){background-color:#f8f9fa;border-color:#c6c6c6;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.btn-google:active:not(:disabled){transform:translateY(0)}.btn-google:disabled{opacity:.6;cursor:not-allowed}.btn-icon{width:20px;height:20px}.login-error{margin-top:1.5rem;padding:1rem;background-color:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:#f87171;font-size:.9rem}.login-footer{text-align:center;padding-top:1.5rem;border-top:1px solid var(--border-color)}.login-footer-text{color:var(--text-tertiary);font-size:.85rem;line-height:1.5}.app-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background-color:var(--header-bg);border-bottom:1px solid var(--border-color);min-height:64px}.header-left{display:flex;align-items:center;gap:1rem}.header-left h1{font-size:1.5rem;font-weight:600;color:var(--text-primary)}.btn-back{background-color:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem 1rem;cursor:pointer;transition:all .2s;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.btn-back:hover{background-color:var(--bg-hover);border-color:var(--accent-color);color:var(--text-primary)}.btn-canvas-settings,.btn-user-settings{background-color:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem 1rem;cursor:pointer;transition:all .2s;font-size:.9rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.btn-canvas-settings:hover,.btn-user-settings:hover{background-color:var(--bg-hover);border-color:var(--accent-color);color:var(--text-primary)}.btn-canvas-settings svg,.btn-user-settings svg{flex-shrink:0}.btn-share{background-color:var(--accent-color);border:none;color:var(--text-on-accent);padding:.5rem 1rem;cursor:pointer;transition:all .2s;font-size:.9rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.btn-share:hover{background-color:var(--accent-hover);transform:translateY(-1px)}.btn-share svg{flex-shrink:0}.header-right{display:flex;align-items:center;gap:1.5rem}.user-info{display:flex;align-items:center;gap:.75rem}.user-avatar{width:36px;height:36px;border-radius:50%;border:2px solid #646cff}.user-name{font-weight:500;color:var(--text-primary)}.btn-signout{background-color:var(--bg-button);color:var(--text-primary);border:1px solid var(--border-color);padding:.6rem 1.2rem;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-signout:hover{background-color:var(--bg-button-hover);border-color:var(--border-hover)}.btn-signout:active{transform:scale(.98)}.welcome-message{font-size:1.2rem;color:var(--text-secondary);margin-top:1rem}.error-boundary{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary);padding:2rem}.error-boundary-content{background:var(--modal-bg);border:2px solid var(--error-color);border-radius:16px;padding:3rem;max-width:600px;text-align:center;box-shadow:var(--shadow-lg)}.error-boundary .error-icon{font-size:4rem;margin-bottom:1rem;animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.error-boundary h1{color:#ff6b6b;font-size:2rem;margin:0 0 1rem}.error-message{color:var(--text-secondary);font-size:1.1rem;line-height:1.6;margin:0 0 2rem}.error-details{text-align:left;margin:2rem 0;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:1rem}.error-details summary{color:var(--warning-color);cursor:pointer;font-weight:600;margin-bottom:1rem}.error-stack{color:#f44336;font-size:.85rem;font-family:Monaco,Menlo,monospace;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word}.error-actions{display:flex;gap:1rem;justify-content:center;margin:2rem 0}.error-boundary .btn-primary{background:#4caf50;color:#fff;border:none;padding:.75rem 2rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.error-boundary .btn-primary:hover{background:#45a049;transform:translateY(-2px);box-shadow:0 4px 12px #4caf5066}.error-boundary .btn-secondary{background:transparent;color:var(--text-secondary);border:2px solid var(--border-color);padding:.75rem 2rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.error-boundary .btn-secondary:hover{border-color:var(--border-hover);color:var(--text-primary);transform:translateY(-2px)}.error-hint{color:var(--text-tertiary);font-size:.9rem;margin-top:2rem}@media (max-width: 768px){.app-header{padding:.5rem 1rem;min-height:56px}.header-left h1{font-size:1.25rem}.btn-back,.btn-canvas-settings,.btn-user-settings,.btn-share{font-size:.85rem;padding:.4rem .8rem}.btn-back svg,.btn-canvas-settings svg,.btn-user-settings svg,.btn-share svg{width:16px;height:16px}.user-avatar{width:32px;height:32px}.user-name{font-size:.9rem}.header-right{gap:.75rem}}.canvas-card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;overflow:hidden;cursor:pointer;transition:all .2s;position:relative;pointer-events:auto;z-index:1}.canvas-card:not(.menu-open){overflow:hidden}.canvas-card.menu-open{z-index:1000;overflow:visible}.canvas-card:hover{border-color:var(--accent-color);transform:translateY(-4px);box-shadow:var(--shadow-md);z-index:10}.canvas-thumbnail{aspect-ratio:16 / 9;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border-color);pointer-events:none}.canvas-thumbnail-placeholder{width:60px;height:60px;color:var(--text-tertiary);opacity:.5;pointer-events:none}.canvas-thumbnail-placeholder svg{width:100%;height:100%;pointer-events:none}.canvas-info{padding:1rem;pointer-events:none}.canvas-name{margin:0 0 .5rem;font-size:1rem;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.canvas-name-input{width:100%;padding:.25rem .5rem;background-color:var(--bg-input);border:1px solid var(--accent-color);border-radius:4px;color:var(--text-primary);font-size:1rem;font-weight:600;font-family:inherit;outline:none;pointer-events:auto}.canvas-meta{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--text-secondary);pointer-events:none}.canvas-role{text-transform:capitalize;padding:.125rem .5rem;background-color:var(--accent-bg);color:var(--accent-color);border-radius:4px;font-weight:500;pointer-events:none}.canvas-meta-divider,.canvas-date{color:var(--text-tertiary);pointer-events:none}.canvas-actions{position:absolute;top:.5rem;right:.5rem;display:flex;align-items:center;gap:.5rem;z-index:10;pointer-events:none}.canvas-list .canvas-actions{position:static;pointer-events:auto}.canvas-grid .canvas-actions{pointer-events:none}.canvas-grid .canvas-card{pointer-events:auto}.canvas-star-btn{background-color:var(--bg-secondary);backdrop-filter:blur(8px);border:1px solid var(--border-color);color:gold;width:36px;height:36px;border-radius:6px;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center;transition:all .2s;pointer-events:auto;box-shadow:0 2px 8px #0000001a}.canvas-star-btn:hover{background-color:#ffd70026;border-color:gold;transform:scale(1.05);box-shadow:0 4px 12px #ffd7004d}.canvas-menu-btn{background-color:var(--bg-secondary);backdrop-filter:blur(8px);border:1px solid var(--border-color);color:var(--text-primary);width:36px;height:36px;border-radius:6px;cursor:pointer;font-size:1.5rem;font-weight:600;display:flex;align-items:center;justify-content:center;transition:all .2s;pointer-events:auto;box-shadow:0 2px 8px #0000001a}.canvas-menu-btn:hover{background-color:var(--accent-color);border-color:var(--accent-color);color:#fff;transform:scale(1.05);box-shadow:0 4px 12px var(--accent-shadow)}.canvas-menu{background-color:var(--modal-bg);backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:8px;padding:.5rem;min-width:140px;box-shadow:0 8px 24px #00000080,0 0 0 1px #ffffff1a;pointer-events:auto;animation:menuFadeIn .15s ease-out}.canvas-menu-portal{z-index:10000}@keyframes menuFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.canvas-menu button{width:100%;padding:.625rem .875rem;background:none;border:none;color:var(--text-primary);text-align:left;cursor:pointer;border-radius:6px;font-size:.875rem;font-weight:500;display:flex;align-items:center;gap:.625rem;transition:all .15s ease;pointer-events:auto;white-space:nowrap}.canvas-menu button:hover:not(:disabled){background-color:var(--bg-hover)}.canvas-menu button:disabled{opacity:.4;cursor:not-allowed}.canvas-menu button.danger:hover:not(:disabled){background-color:var(--error-bg);color:var(--error-color)}@media (max-width: 640px){.canvas-card{border-radius:6px}.canvas-info{padding:.75rem}.canvas-name{font-size:.9rem}}.modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px);animation:fadeIn .2s ease-out}.modal-content{background-color:#1e1e1e;border-radius:12px;box-shadow:0 20px 60px #00000080;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #333}.header-content{display:flex;flex-direction:column;gap:.5rem}.modal-header h2{margin:0;font-size:1.5rem;font-weight:600;color:#fff}.canvas-limit-badge{display:inline-flex;align-items:center;padding:.25rem .75rem;background-color:#646cff26;border:1px solid rgba(100,108,255,.3);border-radius:12px;font-size:.75rem;font-weight:500;color:#646cff;width:fit-content}.modal-close-btn{background:none;border:none;font-size:2rem;color:#aaa;cursor:pointer;line-height:1;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.modal-close-btn:hover:not(:disabled){background-color:#333;color:#fff}.modal-close-btn:disabled{opacity:.5;cursor:not-allowed}.modal-body{padding:1.5rem}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#ddd;font-size:.9rem}.form-group input{width:100%;padding:.75rem;background-color:#2a2a2a;border:1px solid #444;border-radius:6px;color:#fff;font-size:1rem;transition:all .2s}.form-group input:focus{outline:none;border-color:#646cff;box-shadow:0 0 0 3px #646cff1a}.form-group input:disabled{opacity:.6;cursor:not-allowed}.template-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.template-card{background-color:#2a2a2a;border:2px solid #444;border-radius:8px;padding:1rem;cursor:pointer;transition:all .2s;text-align:center}.template-card:hover:not(:disabled){border-color:#646cff;transform:translateY(-2px);box-shadow:0 4px 12px #646cff33}.template-card.selected{border-color:#646cff;background-color:#646cff1a}.template-card:disabled{opacity:.6;cursor:not-allowed}.template-icon{font-size:2rem;margin-bottom:.5rem}.template-name{font-weight:600;color:#fff;margin-bottom:.25rem;font-size:.9rem}.template-description{font-size:.75rem;color:#aaa;line-height:1.3}.canvas-limit-warning{background-color:#ffa5001a;border:1px solid rgba(255,165,0,.3);border-radius:6px;padding:.75rem;color:orange;font-size:.875rem;margin-bottom:1rem}.error-message{background-color:#ff44441a;border:1px solid rgba(255,68,68,.3);border-radius:6px;padding:.75rem;color:#f44;font-size:.875rem;margin-bottom:1rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.btn{padding:.75rem 1.5rem;border-radius:6px;font-weight:500;font-size:.9rem;cursor:pointer;transition:all .2s;border:none}.btn-secondary{background-color:#333;color:#fff}.btn-secondary:hover:not(:disabled){background-color:#444}.btn-primary{background-color:#646cff;color:#fff}.btn-primary:hover:not(:disabled){background-color:#535bf2;transform:translateY(-1px);box-shadow:0 4px 12px #646cff4d}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}@media (max-width: 640px){.modal-content{width:95%;max-height:95vh}.modal-header,.modal-body{padding:1rem}.template-grid{grid-template-columns:1fr}.modal-actions{flex-direction:column}.btn{width:100%}}@media (prefers-color-scheme: light){.modal-content{background-color:#fff}.modal-header{border-bottom-color:#e0e0e0}.modal-header h2{color:#1a1a1a}.canvas-limit-badge{background-color:#646cff1a;border-color:#646cff40;color:#535bf2}.modal-close-btn{color:#666}.modal-close-btn:hover:not(:disabled){background-color:#f0f0f0;color:#1a1a1a}.form-group label{color:#333}.form-group input{background-color:#f5f5f5;border-color:#ddd;color:#1a1a1a}.template-card{background-color:#f9f9f9;border-color:#ddd}.template-name{color:#1a1a1a}.template-description{color:#666}.btn-secondary{background-color:#e0e0e0;color:#1a1a1a}.btn-secondary:hover:not(:disabled){background-color:#d0d0d0}}.settings-modal-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.settings-modal{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;width:90%;max-width:500px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.settings-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--border-color)}.settings-modal-header h2{margin:0;font-size:1.5rem;font-weight:600;color:var(--text-primary)}.settings-modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.settings-modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-modal-content{padding:1.5rem}.settings-section{margin-bottom:2rem}.settings-section-title{margin:0 0 .5rem;font-size:1.125rem;font-weight:600;color:var(--text-primary)}.settings-section-description{margin:0 0 1rem;font-size:.875rem;color:var(--text-secondary);line-height:1.5}.theme-options{display:flex;flex-direction:column;gap:.75rem}.theme-option{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--bg-secondary);border:2px solid var(--border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;text-align:left;width:100%}.theme-option:hover{background:var(--bg-hover);border-color:var(--border-hover);transform:translateY(-1px)}.theme-option.active{background:var(--accent-bg);border-color:var(--accent-color);box-shadow:0 2px 8px var(--accent-shadow)}.theme-option-icon{font-size:1.75rem;line-height:1}.theme-option-content{flex:1}.theme-option-label{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.theme-option-description{font-size:.875rem;color:var(--text-secondary)}.theme-option-check{color:var(--accent-color);flex-shrink:0}.settings-modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--border-color);background:var(--bg-secondary);border-bottom-left-radius:12px;border-bottom-right-radius:12px}.settings-info{margin:0;font-size:.8rem;color:var(--text-tertiary);text-align:center}@media (max-width: 600px){.settings-modal{width:95%;max-height:90vh}.settings-modal-header,.settings-modal-content{padding:1rem}.theme-option{padding:.875rem}.theme-option-icon{font-size:1.5rem}}.dashboard-container{min-height:100vh;background-color:var(--bg-primary);padding:2rem}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.dashboard-title{display:flex;align-items:center;gap:1rem}.dashboard-title h1{margin:0;font-size:2rem;font-weight:700;color:var(--text-primary)}.canvas-count{padding:.25rem .75rem;background-color:var(--bg-secondary);color:var(--text-secondary);border-radius:16px;font-size:.875rem;font-weight:500}.dashboard-actions{display:flex;gap:.75rem;align-items:center}.user-display{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background-color:var(--accent-bg);border-radius:6px;border:1px solid var(--accent-border)}.user-name{color:var(--text-primary);font-size:.9rem;font-weight:500}.btn{padding:.75rem 1.5rem;border-radius:6px;font-weight:500;font-size:.9rem;cursor:pointer;transition:all .2s;border:none;white-space:nowrap}.btn-primary{background-color:var(--accent-color);color:var(--text-on-accent)}.btn-primary:hover{background-color:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 12px var(--accent-shadow)}.btn-secondary{background-color:var(--bg-button);color:var(--text-primary)}.btn-secondary:hover{background-color:var(--bg-button-hover)}.btn-large{padding:1rem 2rem;font-size:1rem}.filter-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:2px solid var(--border-color);padding-bottom:0}.filter-tab{padding:.75rem 1.5rem;background:none;border:none;color:var(--text-secondary);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s;border-bottom:3px solid transparent;margin-bottom:-2px}.filter-tab:hover{color:var(--text-primary)}.filter-tab.active{color:var(--accent-color);border-bottom-color:var(--accent-color)}.dashboard-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.search-box{flex:1;min-width:200px;max-width:400px;position:relative}.search-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);font-size:1rem;opacity:.5}.search-box input{width:100%;padding:.75rem 1rem .75rem 2.75rem;background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.9rem;transition:all .2s}.search-box input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-bg)}.sort-select{position:relative}.sort-select select{padding:.75rem 2.5rem .75rem 1rem;background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.9rem;cursor:pointer;transition:all .2s;appearance:none;background-image:url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><path fill="%23aaa" d="M6 9L1 4h10z"/></svg>');background-repeat:no-repeat;background-position:right .75rem center}.sort-select select:hover{border-color:var(--accent-color)}.sort-select select:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-bg)}.view-toggle{display:flex;gap:.5rem;background-color:var(--bg-secondary);padding:.25rem;border-radius:6px;border:1px solid var(--border-color)}.view-btn{background:none;border:none;color:var(--text-secondary);width:36px;height:36px;cursor:pointer;border-radius:4px;font-size:1.25rem;transition:all .2s;display:flex;align-items:center;justify-content:center}.view-btn:hover{background-color:var(--bg-hover);color:var(--text-primary)}.view-btn.active{background-color:var(--accent-color);color:var(--text-on-accent)}.canvas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.canvas-list{display:flex;flex-direction:column;gap:1rem}.canvas-list .canvas-card{display:grid;grid-template-columns:200px 1fr auto;align-items:center;gap:1rem}.canvas-list .canvas-thumbnail{aspect-ratio:16 / 9}.canvas-list .canvas-info{padding:0}.dashboard-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:var(--text-secondary)}.loading-spinner{width:48px;height:48px;border:4px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;color:var(--text-secondary)}.dashboard-error h2{color:var(--error-color);margin-bottom:.5rem}.dashboard-error p{margin-bottom:1.5rem}.dashboard-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;color:var(--text-secondary)}.empty-icon{font-size:4rem;margin-bottom:1rem;opacity:.5}.dashboard-empty h2{color:var(--text-primary);margin-bottom:.5rem}.dashboard-empty p{margin-bottom:1.5rem;font-size:1rem}@media (max-width: 768px){.dashboard-container{padding:1rem}.dashboard-header{flex-direction:column;align-items:flex-start}.dashboard-title{width:100%}.dashboard-title h1{font-size:1.5rem}.dashboard-actions{width:100%}.dashboard-actions .btn{flex:1}.canvas-grid,.canvas-list .canvas-card{grid-template-columns:1fr}.canvas-list .canvas-thumbnail{width:100%}.canvas-list .canvas-info{padding:1rem}.dashboard-controls{flex-direction:column;align-items:stretch}.search-box{max-width:none}.view-toggle{align-self:flex-end}}@media (max-width: 480px){.dashboard-title h1{font-size:1.25rem}.canvas-grid{gap:1rem}.empty-icon{font-size:3rem}.dashboard-empty h2{font-size:1.25rem}}.limit-modal{max-width:450px;text-align:center}.limit-icon{font-size:4rem;margin-bottom:1rem}.limit-message{font-size:1.1rem;color:var(--text-primary);margin-bottom:1rem}.limit-message strong{color:var(--accent-color)}.limit-hint{color:var(--text-secondary);font-size:.9rem;margin-bottom:0}.shape-palette{position:absolute;left:16px;top:72px;width:56px;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:10px;padding:8px;box-shadow:var(--shadow-md);backdrop-filter:blur(10px);z-index:100;user-select:none}.shape-palette-tools{display:flex;flex-direction:column;gap:6px}.tool-button{display:flex;align-items:center;justify-content:center;padding:10px;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;width:100%}.tool-button:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--border-hover);transform:scale(1.05)}.tool-button.active{background:var(--accent-bg);border-color:var(--accent-color);color:var(--accent-color)}.tool-button.active:hover{background:var(--accent-bg);transform:scale(1.05)}.tool-button.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.tool-button svg{flex-shrink:0;width:22px;height:22px}.shape-palette-alignment{margin-top:12px;padding-top:10px;border-top:1px solid var(--border-color);animation:alignmentFadeIn .2s ease-out}@keyframes alignmentFadeIn{0%{opacity:0;transform:translateY(-4px);max-height:0}to{opacity:1;transform:translateY(0);max-height:200px}}.alignment-section-title{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-tertiary);text-align:center;margin-bottom:8px;opacity:.6}.alignment-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.align-button{display:flex;align-items:center;justify-content:center;padding:7px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:5px;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;opacity:.9}.align-button:hover{background:var(--bg-hover);color:var(--accent-color);border-color:var(--accent-color);transform:translateY(-1px);opacity:1;box-shadow:0 2px 8px #646cff26}.align-button:active{transform:translateY(0);box-shadow:none}.align-button svg{flex-shrink:0;width:15px;height:15px}.shape-palette-actions{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color)}.action-button{display:flex;align-items:center;justify-content:center;padding:10px;border:1px solid transparent;border-radius:6px;color:var(--text-primary);cursor:pointer;transition:all .2s ease;width:100%}.action-button svg{flex-shrink:0;width:20px;height:20px}.action-generate{background:var(--success-bg);border-color:var(--success-border);color:var(--success-color)}.action-generate:hover{background:var(--success-bg);border-color:var(--success-color);transform:scale(1.05)}.action-duplicate{background:var(--accent-bg);border-color:#646cff4d;color:var(--accent-color)}.action-duplicate:hover:not(:disabled){background:var(--accent-bg);border-color:var(--accent-color);transform:scale(1.05)}.action-duplicate:disabled{opacity:.4;cursor:not-allowed}.action-clear{background:var(--error-bg);border-color:var(--error-border);color:var(--error-color)}.action-clear:hover{background:var(--error-bg);border-color:var(--error-color);transform:scale(1.05)}.shape-palette-hint{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color);font-size:20px;color:var(--text-tertiary);text-align:center;line-height:1;cursor:help}@media (max-width: 768px){.shape-palette{left:8px;top:60px;width:52px;padding:6px}.tool-button{padding:8px}.tool-button svg{width:20px;height:20px}.action-button{padding:8px}.action-button svg{width:18px;height:18px}}.zoom-controls{position:fixed;bottom:1.5rem;right:1.5rem;display:flex;align-items:center;gap:.5rem;background-color:var(--panel-bg);border:1px solid var(--border-color);border-radius:6px;padding:.4rem;box-shadow:var(--shadow-md);backdrop-filter:blur(10px);z-index:100}.zoom-controls-main{display:flex;align-items:center;gap:.25rem;padding-right:.4rem;border-right:1px solid var(--border-color)}.zoom-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background-color:var(--bg-button);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;transition:all .2s ease;padding:0;flex-shrink:0}.zoom-btn svg{width:14px;height:14px}.zoom-btn:hover:not(:disabled){background-color:var(--bg-button-hover);border-color:var(--accent-color);transform:scale(1.05)}.zoom-btn:active:not(:disabled){transform:scale(.95)}.zoom-btn:disabled{opacity:.4;cursor:not-allowed}.zoom-input-container{position:relative;display:flex;align-items:center;min-width:48px;max-width:56px;height:28px;background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:4px;overflow:hidden;transition:all .2s ease}.zoom-input-container:focus-within{border-color:var(--accent-color);box-shadow:0 0 0 1px var(--accent-bg)}.zoom-input{width:100%;height:100%;background-color:transparent;color:var(--text-primary);border:none;outline:none;font-size:.75rem;font-weight:600;text-align:right;padding:0 2px 0 4px;cursor:text}.zoom-percent-sign{color:var(--text-secondary);font-size:.75rem;font-weight:600;padding-right:4px;pointer-events:none;flex-shrink:0}.zoom-fit{background-color:var(--bg-button)}.zoom-fit:hover:not(:disabled){background-color:var(--bg-button-hover);border-color:var(--success-color)}@media (max-width: 768px){.zoom-controls{bottom:1rem;right:1rem;padding:.35rem;gap:.35rem}.zoom-controls-main{gap:.2rem;padding-right:.35rem}.zoom-btn{width:26px;height:26px}.zoom-btn svg{width:13px;height:13px}.zoom-input-container{height:26px;min-width:44px;max-width:52px}.zoom-input,.zoom-percent-sign{font-size:.7rem}}.chat-panel{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:400px;max-width:calc(100vw - 40px);background:var(--panel-bg);border:1px solid var(--border-color);border-bottom:none;border-radius:12px 12px 0 0;box-shadow:var(--shadow-md);transition:transform .3s ease,opacity .3s ease,width .2s ease;z-index:1000;display:flex;flex-direction:column}.chat-panel.resizing{transition:transform .3s ease,opacity .3s ease}.chat-panel.closed{transform:translate(-50%,calc(100% - 50px))}.chat-panel.open{transform:translate(-50%);height:500px;max-height:70vh}.chat-resize-handle{position:absolute;top:0;bottom:0;width:12px;cursor:ew-resize;background:#646cff26;z-index:10;transition:background-color .2s ease;left:0;display:flex;align-items:center;justify-content:center}.chat-resize-handle:before{content:"";width:3px;height:40px;background:repeating-linear-gradient(to bottom,rgba(100,108,255,.4) 0px,rgba(100,108,255,.4) 4px,transparent 4px,transparent 8px);border-radius:2px}.chat-resize-handle:hover{background:#646cff4d}.chat-resize-handle:hover:before{background:repeating-linear-gradient(to bottom,rgba(100,108,255,.8) 0px,rgba(100,108,255,.8) 4px,transparent 4px,transparent 8px)}.chat-resize-handle:active,.chat-panel.resizing .chat-resize-handle{background:#646cff80}.chat-resize-handle:active:before,.chat-panel.resizing .chat-resize-handle:before{background:repeating-linear-gradient(to bottom,rgba(255,255,255,.9) 0px,rgba(255,255,255,.9) 4px,transparent 4px,transparent 8px)}.chat-toggle{position:absolute;top:0;left:50%;transform:translate(-50%);width:100%;height:50px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:12px 12px 0 0;color:var(--text-on-accent);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:14px;transition:all .2s ease;z-index:1}.chat-toggle:hover{background:linear-gradient(135deg,#5568d3,#6a4091);box-shadow:0 2px 8px var(--accent-shadow)}.chat-toggle:active{transform:translate(-50%) scale(.98)}.chat-badge{font-size:12px;font-weight:700;letter-spacing:.5px}.chat-content{display:flex;flex-direction:column;height:100%;padding-top:50px;opacity:0;pointer-events:none;transition:opacity .2s ease}.chat-panel.open .chat-content{opacity:1;pointer-events:auto}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.chat-tabs{display:flex;gap:4px}.chat-tab{display:flex;align-items:center;gap:6px;padding:8px 12px;background:transparent;border:none;border-radius:6px;color:var(--text-secondary);cursor:pointer;font-size:13px;font-weight:500;transition:all .2s ease}.chat-tab:hover{background:var(--bg-hover);color:var(--text-primary)}.chat-tab.active{background:var(--accent-bg);color:var(--accent-color)}.chat-tab.active svg{color:var(--accent-color)}.chat-header-title{display:flex;align-items:center;gap:10px;color:var(--text-primary)}.chat-header-title h3{margin:0;font-size:16px;font-weight:600}.chat-header-title svg{color:var(--accent-color)}.chat-status{font-size:11px;color:var(--success-color);background:var(--success-bg);padding:2px 8px;border-radius:12px;font-weight:500}.chat-header-actions{display:flex;gap:8px}.chat-action-btn{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.chat-action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;background:var(--bg-primary)}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:var(--bg-primary)}.chat-messages::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.chat-messages::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}.chat-message{display:flex;gap:10px;animation:messageSlideIn .3s ease}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;background:var(--bg-secondary);color:var(--text-primary);text-transform:uppercase}.message-content{flex:1;display:flex;flex-direction:column;gap:4px}.message-text{background:var(--bg-secondary);color:var(--text-primary);padding:10px 14px;border-radius:12px 12px 12px 4px;font-size:14px;line-height:1.5;word-wrap:break-word;border:1px solid var(--border-color)}.chat-message.user .message-text{background:linear-gradient(135deg,#667eea,#764ba2);color:var(--text-on-accent);border:none;border-bottom-right-radius:4px;border-bottom-left-radius:12px}.chat-message.assistant .message-text{background:var(--bg-secondary);border:1px solid var(--border-color)}.chat-message.system .message-text{background:var(--success-bg);color:var(--success-color);font-size:13px;font-style:italic;text-align:center}.message-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.message-sender{font-size:12px;font-weight:700;letter-spacing:.3px}.message-you-badge{font-size:9px;font-weight:600;color:var(--success-color);background:var(--success-bg);padding:2px 6px;border-radius:10px;text-transform:uppercase;letter-spacing:.5px}.message-time{font-size:10px;color:var(--text-tertiary);margin-left:auto}.chat-message.other .message-text{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}.chat-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-tertiary);text-align:center}.chat-empty-state svg{margin-bottom:16px;opacity:.3}.chat-empty-state p{margin:4px 0;font-size:14px}.chat-empty-hint{font-size:12px!important;color:var(--text-tertiary)!important}.chat-input-form{display:flex;gap:8px;padding:16px;border-top:1px solid var(--border-color);background:var(--bg-secondary)}.chat-input{flex:1;background:var(--bg-input);border:1px solid var(--border-color);border-radius:8px;padding:10px 14px;color:var(--text-primary);font-size:14px;font-family:inherit;outline:none;transition:border-color .2s ease}.chat-input:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px var(--accent-bg)}.chat-input::placeholder{color:var(--text-tertiary)}.chat-send-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;flex-shrink:0}.chat-send-btn:hover:not(:disabled){transform:scale(1.05);box-shadow:0 2px 8px var(--accent-shadow)}.chat-send-btn:active:not(:disabled){transform:scale(.95)}.chat-send-btn:disabled{opacity:.4;cursor:not-allowed}.chat-send-btn svg{color:var(--text-on-accent);width:28px;height:28px}.typing-indicator{display:flex;gap:4px;padding:8px 0}.typing-indicator span{width:8px;height:8px;border-radius:50%;background-color:var(--accent-color);animation:typing 1.4s infinite}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-10px)}}.chat-error{margin-left:8px;font-size:16px;cursor:help}.chat-message.loading .message-content{opacity:.8}.example-prompts-container{position:relative;padding:0 12px 8px}.example-prompts-trigger{background:none;border:none;color:var(--accent-color);font-size:13px;cursor:pointer;padding:6px 12px;border-radius:6px;transition:all .2s ease;display:flex;align-items:center;gap:6px}.example-prompts-trigger:hover{background:var(--accent-bg)}.example-prompts-trigger svg{width:14px;height:14px;transition:transform .2s ease}.example-prompts-trigger.open svg{transform:rotate(180deg)}.example-prompts-dropdown{position:absolute;bottom:100%;left:12px;right:12px;margin-bottom:8px;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow-lg);max-height:400px;overflow-y:auto;z-index:1000;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.example-prompts{padding:16px}.example-header{display:flex;align-items:center;gap:8px;margin-bottom:16px}.example-icon{font-size:20px}.example-header h4{margin:0;font-size:14px;font-weight:600;color:var(--text-primary)}.example-category{margin-bottom:16px}.example-category:last-child{margin-bottom:0}.category-title{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.category-prompts{display:flex;flex-wrap:wrap;gap:6px}.example-prompt-btn{padding:6px 12px;background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:16px;color:var(--accent-color);font-size:12px;cursor:pointer;transition:all .2s ease;white-space:nowrap}.example-prompt-btn:hover:not(:disabled){background:var(--accent-bg);border-color:var(--accent-color);color:var(--accent-color);transform:translateY(-1px)}.example-prompt-btn:disabled{opacity:.5;cursor:not-allowed}.chat-stop-btn{padding:8px;background:var(--error-color);border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;animation:stopPulse 1.5s ease-in-out infinite}.chat-stop-btn:hover{background:var(--error-color);transform:scale(1.05)}.chat-stop-btn svg{display:block;width:28px;height:28px}@keyframes stopPulse{0%,to{box-shadow:0 0 #ef4444b3}50%{box-shadow:0 0 0 4px #ef444400}}.vision-indicator{display:flex;align-items:center;gap:8px;padding:8px 12px;background:linear-gradient(90deg,#646cff1a,#8b5cf61a);border-bottom:1px solid rgba(100,108,255,.3);font-size:13px;color:#646cff;animation:visionPulse 2s ease-in-out infinite}.vision-icon{font-size:16px;animation:visionBlink 1.5s ease-in-out infinite}.vision-text{font-weight:500}@keyframes visionPulse{0%,to{background:linear-gradient(90deg,#646cff1a,#8b5cf61a)}50%{background:linear-gradient(90deg,#646cff26,#8b5cf626)}}@keyframes visionBlink{0%,90%,to{opacity:1}95%{opacity:.3}}@media (max-width: 768px){.chat-panel{width:calc(100vw - 20px)}.chat-panel.open{height:400px;max-height:60vh}}.color-picker-wrapper{display:flex;align-items:center;gap:6px;position:relative}.color-picker-label{font-size:11px;color:#888;font-weight:500}.color-picker-button{width:32px;height:32px;background:#333;border:2px solid #555;border-radius:4px;cursor:pointer;padding:3px;transition:all .15s ease;display:flex;align-items:center;justify-content:center}.color-picker-button:hover{border-color:#667eea;transform:scale(1.05)}.color-preview{width:100%;height:100%;border-radius:2px;box-shadow:inset 0 0 0 1px #ffffff1a}.color-picker-dropdown{position:absolute;top:100%;left:0;margin-top:8px;background:#2a2a2a;border:2px solid #667eea;border-radius:8px;padding:12px;box-shadow:0 8px 24px #00000080;z-index:1000;animation:colorPickerFadeIn .2s ease;min-width:220px}@keyframes colorPickerFadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.color-wheel-section{display:flex;justify-content:center;margin-bottom:12px;padding:8px;background:#1a1a1a;border-radius:6px}.color-wheel{cursor:crosshair;border-radius:50%;box-shadow:0 2px 8px #0000004d;transition:transform .2s ease}.color-wheel:hover{transform:scale(1.02)}.color-section{margin-bottom:8px}.color-section:last-child{margin-bottom:0}.color-section-title{font-size:11px;color:#888;margin-bottom:6px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.color-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.color-tile{width:32px;height:32px;border-radius:4px;border:2px solid transparent;cursor:pointer;transition:all .15s ease;padding:0;box-shadow:inset 0 0 0 1px #ffffff1a}.color-tile:hover{transform:scale(1.1);box-shadow:0 2px 8px #0006;border-color:#ffffff4d}.color-tile.active{border-color:#fff;box-shadow:0 0 0 3px #667eea;transform:scale(1.05)}.transparent-button{width:100%;display:flex;align-items:center;gap:8px;padding:8px 12px;background:#1a1a1a;border:2px solid #555;border-radius:4px;color:#fff;cursor:pointer;transition:all .15s ease;font-size:13px;font-weight:500}.transparent-button:hover{border-color:#667eea;background:#252525}.transparent-button.active{border-color:#fff;box-shadow:0 0 0 2px #667eea;background:#2a2a2a}.transparent-pattern{width:24px;height:24px;border-radius:3px;background-image:linear-gradient(45deg,#555 25%,transparent 25%),linear-gradient(-45deg,#555 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#555 75%),linear-gradient(-45deg,transparent 75%,#555 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0px;border:1px solid #777}.color-hex-input{width:100%;background:#1a1a1a;border:1px solid #555;border-radius:4px;color:#fff;font-size:13px;font-family:Monaco,Menlo,monospace;padding:6px 8px;text-align:center;outline:none;transition:border-color .15s ease}.color-hex-input:hover{border-color:#667eea}.color-hex-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33}.color-hex-input::placeholder{color:#666}@media (max-width: 640px){.color-picker-dropdown{right:0;left:auto}.color-wheel{width:150px;height:150px}.color-grid{grid-template-columns:repeat(4,1fr)}}.inline-text-editor-overlay{position:absolute;inset:0;z-index:100;background:#0000004d;backdrop-filter:blur(2px)}.inline-text-editor-container{position:absolute;display:flex;flex-direction:column;padding:8px;background:#2a2a2a;border:2px solid #667eea;border-radius:8px;box-shadow:0 4px 20px #00000080;animation:editorFadeIn .2s ease;min-width:300px}@keyframes editorFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.inline-text-editor-textarea{flex:1;background:#1a1a1a;border:1px solid #444;border-radius:4px;color:#fff;font-size:14px;font-family:Arial,sans-serif;padding:8px;resize:none;outline:none;text-align:center;line-height:1.5}.inline-text-editor-textarea:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33}.inline-text-editor-textarea::placeholder{color:#666}.inline-text-editor-hint{margin-top:6px;font-size:11px;color:#888;text-align:center;background:#0000004d;padding:4px 8px;border-radius:4px}.inline-text-editor-hint span{font-weight:500}.text-editor-toolbar{display:flex;align-items:center;gap:8px;padding:6px;background:#1a1a1a;border-radius:4px;margin-bottom:8px;flex-wrap:wrap}.toolbar-group{display:flex;align-items:center;gap:4px}.toolbar-label{font-size:11px;color:#888;font-weight:500}.toolbar-select{background:#333;border:1px solid #555;border-radius:3px;color:#fff;font-size:12px;padding:3px 6px;cursor:pointer;outline:none}.toolbar-select:hover{border-color:#667eea}.toolbar-select:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33}.toolbar-button{width:28px;height:28px;background:#333;border:1px solid #555;border-radius:4px;color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.toolbar-button:hover{background:#444;border-color:#667eea}.toolbar-button.active{background:#667eea;border-color:#667eea}.toolbar-button strong,.toolbar-button em{font-style:normal;font-weight:400}.toolbar-button em{font-style:italic}.toolbar-colors{flex:1;min-width:200px}.color-palette{display:flex;gap:4px;flex-wrap:wrap}.color-swatch{width:20px;height:20px;border-radius:3px;border:2px solid transparent;cursor:pointer;transition:all .15s ease;padding:0}.color-swatch:hover{transform:scale(1.15);box-shadow:0 2px 8px #0000004d}.color-swatch.active{border-color:#fff;box-shadow:0 0 0 2px #667eea}.context-menu{position:fixed;background:#1e1e1efa;border:1px solid rgba(255,255,255,.1);border-radius:8px;box-shadow:0 8px 24px #00000080,0 0 0 1px #ffffff0d;padding:6px;min-width:200px;z-index:10000;backdrop-filter:blur(10px);animation:contextMenuFadeIn .15s ease-out}@keyframes contextMenuFadeIn{0%{opacity:0;transform:scale(.95) translateY(-5px)}to{opacity:1;transform:scale(1) translateY(0)}}.context-menu-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-radius:6px;color:#ffffffe6;font-size:14px;transition:all .15s ease;user-select:none}.context-menu-item:hover{background:#ffffff1a;color:#fff}.context-menu-item:active{background:#ffffff26;transform:scale(.98)}.context-menu-icon{font-size:16px;width:20px;display:flex;align-items:center;justify-content:center}.context-menu-count{margin-left:auto;color:#ffffff80;font-size:12px}.context-menu-divider{height:1px;background:var(--border-color, rgba(255, 255, 255, .1));margin:6px 0}.context-menu-section-title{padding:8px 14px 4px;color:var(--text-tertiary, rgba(255, 255, 255, .5));font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;user-select:none}.debug-panel{position:fixed;bottom:0;right:20px;width:600px;max-width:calc(100vw - 40px);background:var(--bg-primary);border:2px solid var(--accent-color);border-bottom:none;border-radius:8px 8px 0 0;box-shadow:var(--shadow-lg);z-index:9999;transition:transform .3s ease}.debug-panel.closed{transform:translateY(calc(100% - 40px))}.debug-panel.open{transform:translateY(0)}.debug-toggle{position:absolute;top:0;left:50%;transform:translate(-50%);width:100%;height:40px;background:linear-gradient(135deg,#f093fb,#f5576c);border:none;color:#fff;font-weight:600;font-size:14px;cursor:pointer;border-radius:8px 8px 0 0;display:flex;align-items:center;justify-content:center;gap:8px}.debug-toggle:hover{filter:brightness(1.1)}.debug-content{padding-top:50px;height:400px;display:flex;flex-direction:column}.debug-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.debug-header h3{margin:0;font-size:14px;font-weight:600;color:var(--text-primary)}.debug-clear{padding:4px 12px;background:var(--error-bg);border:1px solid var(--error-border);color:var(--error-color);border-radius:4px;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.debug-clear:hover{background:var(--error-color);color:#fff}.debug-logs{flex:1;overflow-y:auto;padding:12px;background:var(--bg-canvas)}.debug-empty{text-align:center;color:var(--text-tertiary);padding:40px 20px;font-size:14px}.debug-log{margin-bottom:12px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);overflow:hidden}.log-header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.log-icon{font-size:16px}.log-title{flex:1;font-weight:600;font-size:13px;color:var(--text-primary)}.log-time{font-size:11px;color:var(--text-tertiary);font-family:Monaco,Courier New,monospace}.log-content{margin:0;padding:12px;font-size:11px;font-family:Monaco,Courier New,monospace;color:var(--text-secondary);background:var(--bg-canvas);overflow-x:auto;max-height:300px;line-height:1.5}.log-request .log-header{background:#646cff1a;border-left:3px solid rgba(100,108,255,.8)}.log-response .log-header{background:#10b9811a;border-left:3px solid rgba(16,185,129,.8)}.log-tool-call .log-header{background:#f59e0b1a;border-left:3px solid rgba(245,158,11,.8)}.log-tool-result .log-header{background:#22c55e1a;border-left:3px solid rgba(34,197,94,.8)}.log-error .log-header{background:#ef44441a;border-left:3px solid rgba(239,68,68,.8)}@media (max-width: 768px){.debug-panel{right:10px;width:calc(100vw - 20px)}.debug-content{height:300px}}.layers-panel{position:fixed;right:20px;top:50%;transform:translateY(-50%);width:280px;height:60vh;max-height:500px;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;z-index:100;animation:slideInRight .2s ease-out}@keyframes slideInRight{0%{transform:translate(100%,-50%);opacity:0}to{transform:translateY(-50%);opacity:1}}.layers-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color);background-color:var(--bg-tertiary);border-radius:8px 8px 0 0;flex-shrink:0;min-height:44px}.layers-header h3{margin:0;font-size:14px;font-weight:600;color:var(--text-primary);white-space:nowrap}.layers-close-btn{background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;padding:6px 8px;font-size:18px;font-weight:700;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center;border-radius:6px;min-width:32px;min-height:32px;flex-shrink:0}.layers-close-btn:hover{color:#fff;background-color:var(--error-color);border-color:var(--error-color);transform:scale(1.05)}.layers-list-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden}.layers-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px}.layers-list::-webkit-scrollbar{width:8px}.layers-list::-webkit-scrollbar-track{background:var(--bg-tertiary)}.layers-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.layers-list::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.layers-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;color:var(--text-tertiary)}.layers-empty svg{width:48px;height:48px;margin-bottom:12px;opacity:.5}.layers-empty p{margin:0 0 4px;font-size:14px;font-weight:600;color:var(--text-secondary)}.layers-empty span{font-size:12px}.layer-item{display:flex;align-items:center;gap:8px;padding:8px;margin-bottom:4px;border-radius:6px;cursor:pointer;transition:all .15s ease;border:1px solid transparent;background-color:var(--bg-primary)}.layer-item:hover{background-color:var(--bg-hover);border-color:var(--border-color)}.layer-item.selected{background-color:var(--accent-bg);border-color:var(--accent-color)}.layer-item.selected .layer-name{color:var(--accent-color);font-weight:600}.layer-item.hidden{opacity:.4}.layer-item.hidden:hover{opacity:.6}.layer-visibility-toggle{background:none;border:none;cursor:pointer;font-size:16px;padding:2px;display:flex;align-items:center;justify-content:center;transition:transform .2s;flex-shrink:0}.layer-visibility-toggle:hover{transform:scale(1.15)}.layer-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.layer-icon svg{width:100%;height:100%}.layer-name{flex:1;font-size:13px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none}.layer-name-input{flex:1;background-color:var(--bg-input);border:1px solid var(--accent-color);border-radius:4px;padding:4px 6px;font-size:13px;color:var(--text-primary);font-family:inherit;outline:none}.layer-lock-indicator{font-size:12px;opacity:.7;flex-shrink:0}@media (max-width: 1024px){.layers-panel{right:10px;width:240px;height:55vh}}@media (max-width: 768px){.layers-panel{width:200px;height:50vh;max-height:400px}.layer-name{font-size:12px}}@media (max-height: 600px){.layers-panel{height:70vh;max-height:420px}}.canvas-container{position:relative;flex:1;width:100%;height:100%;overflow:hidden;background-color:var(--bg-canvas)}.canvas-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:.75rem;background-color:var(--header-bg);border-bottom:1px solid var(--border-color);padding:.5rem 1rem;backdrop-filter:blur(10px);z-index:150;font-size:.8rem;min-height:48px}.canvas-header-left{display:flex;align-items:center;gap:.75rem;flex:1}.canvas-header-right{display:flex;align-items:center;gap:.75rem;flex:1;justify-content:flex-end}.canvas-header-stats{color:var(--text-secondary);font-weight:500;font-size:.75rem}.canvas-header-hint{color:var(--text-tertiary);font-size:.7rem}.canvas-header-fps{color:var(--success-color);font-family:Monaco,Menlo,monospace;font-size:.7rem}.btn-small{padding:.3rem .6rem;font-size:.75rem}@media (max-width: 768px){.canvas-header{flex-direction:row;flex-wrap:wrap;gap:.5rem;padding:.4rem .75rem;min-height:40px}.canvas-header-hint{font-size:.65rem}.canvas-header-left,.canvas-header-right{flex:1 1 auto}}.canvas-svg{width:100%;height:100%;display:block;user-select:none;touch-action:none}.fps-counter{position:absolute;top:72px;left:88px;background-color:var(--panel-bg);border:1px solid var(--border-color);border-radius:8px;padding:.75rem 1rem;font-family:Monaco,Menlo,monospace;font-size:.85rem;color:var(--success-color);min-width:140px;backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);z-index:100}.fps-value{font-size:1.1rem;font-weight:700;margin-bottom:.25rem;color:var(--success-color)}.fps-render,.fps-objects,.fps-zoom,.fps-pos,.fps-firestore{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}.fps-firestore.connected{color:var(--success-color)}.fps-firestore.error{color:var(--error-color)}.fps-firestore.testing{color:var(--warning-color)}@media (max-width: 768px){.fps-counter{top:60px;left:68px;padding:.5rem .75rem;font-size:.75rem;min-width:120px}.fps-value{font-size:1rem}.fps-render,.fps-objects,.fps-zoom,.fps-pos,.fps-firestore{font-size:.7rem}}.canvas-info{position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%);background-color:var(--panel-bg);border:1px solid var(--border-color);border-radius:8px;padding:1rem 1.5rem;text-align:center;backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);pointer-events:none;z-index:100}.canvas-info p{margin:.25rem 0;color:var(--text-secondary);font-size:.9rem}.canvas-hint{color:var(--text-tertiary);font-size:.8rem}.canvas-size{color:var(--text-tertiary);font-size:.8rem;font-family:Monaco,Menlo,monospace}.canvas-rectangle{transition:opacity .15s ease,filter .15s ease}.canvas-rectangle:hover{opacity:.95;filter:brightness(1.1)}.canvas-rectangle.locked{opacity:.7;cursor:not-allowed!important}.selection-highlight{animation:selection-pulse 2s ease-in-out infinite}@keyframes selection-pulse{0%,to{opacity:1}50%{opacity:.6}}.preview-rectangle{animation:preview-pulse 1s ease-in-out infinite}@keyframes preview-pulse{0%,to{opacity:.4}50%{opacity:.6}}.canvas-grid{pointer-events:none}.cursor-group{transition:transform .1s ease-out;cursor:pointer}.cursor-group:hover{transform:scale(1.1)}.canvas-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--modal-overlay);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px)}.canvas-loading-overlay p{margin-top:1.5rem;color:var(--text-secondary);font-size:1rem}.canvas-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--modal-overlay);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(8px)}.error-content{background-color:var(--error-bg);border:2px solid var(--error-color);border-radius:12px;padding:2rem 2.5rem;text-align:center;max-width:500px;box-shadow:var(--shadow-lg)}.error-icon{font-size:3rem;margin-bottom:1rem}.error-content h3{color:var(--error-color);margin:0 0 1rem;font-size:1.5rem}.error-content p{color:var(--text-secondary);margin:.5rem 0;font-size:1rem;line-height:1.5}.error-hint{color:var(--text-tertiary);font-size:.9rem;margin-top:1rem}.connection-status{position:absolute;bottom:1.5rem;left:1rem;background-color:var(--panel-bg);border:1px solid var(--border-color);border-radius:20px;padding:.5rem 1rem;display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;backdrop-filter:blur(8px);box-shadow:var(--shadow-sm);z-index:100;transition:all .3s ease}.status-dot{width:8px;height:8px;border-radius:50%;animation:pulse 2s ease-in-out infinite}.connection-status-connecting .status-dot{background-color:orange}.connection-status-connecting{color:orange;border-color:orange}.connection-status-connected .status-dot{background-color:#4caf50;animation:none}.connection-status-connected{color:#4caf50;border-color:#4caf50}.connection-status-reconnecting .status-dot{background-color:#ff9800}.connection-status-reconnecting{color:#ff9800;border-color:#ff9800}.connection-status-offline .status-dot{background-color:#9e9e9e}.connection-status-offline{color:#9e9e9e;border-color:#9e9e9e}.connection-status-error .status-dot{background-color:#f44336}.connection-status-error{color:#f44336;border-color:#f44336}.layers-toggle-btn{position:fixed;bottom:140px;right:20px;width:48px;height:48px;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px;box-shadow:var(--shadow-md);transition:all .2s;z-index:90}.layers-toggle-btn:hover{background-color:var(--accent-color);border-color:var(--accent-color);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.layers-toggle-btn svg{width:24px;height:24px;color:var(--text-primary);transition:color .2s}.layers-toggle-btn:hover svg{color:#fff}.layers-count{font-size:10px;font-weight:600;color:var(--text-secondary);line-height:1;transition:color .2s}.layers-toggle-btn:hover .layers-count{color:#fff}@media (max-width: 768px){.layers-toggle-btn{bottom:120px;right:15px;width:44px;height:44px}.layers-toggle-btn svg{width:20px;height:20px}}.presence-minimized-tab{position:fixed;right:16px;top:72px;width:56px;height:72px;background:var(--panel-bg);border:1px solid var(--border-color);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-md);backdrop-filter:blur(10px);z-index:101}.presence-minimized-tab:hover{background:var(--bg-hover);transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--accent-color)}.minimized-icon{color:var(--text-secondary);display:flex;align-items:center;justify-content:center}.minimized-count{background:linear-gradient(135deg,#646cff,#9333ea);color:var(--text-on-accent);padding:3px 10px;border-radius:12px;font-size:13px;font-weight:700;min-width:28px;text-align:center;box-shadow:0 2px 8px var(--accent-shadow)}.presence-sidebar{position:fixed;right:-280px;top:64px;height:calc(100% - 64px);width:280px;background:var(--sidebar-bg);border-left:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden;backdrop-filter:blur(10px);transition:right .3s ease-in-out;z-index:100}.presence-sidebar.collapsed{right:-280px;pointer-events:none}.presence-sidebar.expanded{right:0;pointer-events:auto}.presence-header{padding:20px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.presence-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary)}.user-count{background:var(--accent-bg);color:var(--accent-color);padding:4px 10px;border-radius:12px;font-size:13px;font-weight:600}.presence-list{flex:1;overflow-y:auto;padding:12px}.presence-empty{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-tertiary);font-size:14px}.presence-user{display:flex;align-items:center;gap:12px;padding:12px;border-radius:8px;margin-bottom:8px;transition:background-color .2s ease;cursor:pointer}.presence-user:hover{background:var(--bg-hover)}.presence-user.current-user{background:var(--accent-bg);border:1px solid rgba(100,108,255,.3)}.user-indicator{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px;color:var(--text-on-accent);flex-shrink:0;box-shadow:var(--shadow-sm)}.user-info{flex:1;min-width:0}.user-name{font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.you-label{font-size:11px;color:var(--text-tertiary);font-weight:400}.user-status{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.status-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-indicator.online,.status-indicator.active{background:var(--success-color);box-shadow:0 0 8px var(--success-bg);animation:pulse 2s ease-in-out infinite}.status-indicator.away{background:var(--warning-color);box-shadow:0 0 8px var(--warning-bg)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.status-text{text-transform:capitalize}.presence-list::-webkit-scrollbar{width:6px}.presence-list::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:3px}.presence-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}.presence-list::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}@media (max-width: 768px){.presence-sidebar{width:240px}.presence-minimized-tab{right:12px;top:60px;width:52px;height:64px}.minimized-icon svg{width:20px;height:20px}.minimized-count{font-size:12px;padding:2px 8px}}.share-modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px;animation:fadeIn .2s ease-out}.share-modal{background:#1e1e1e;border-radius:12px;width:100%;max-width:600px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080;animation:slideUp .3s ease-out}.share-modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px 28px;border-bottom:1px solid #333}.share-modal-header h2{margin:0;font-size:24px;font-weight:600;color:#fff}.share-modal-close{background:none;border:none;font-size:24px;color:#888;cursor:pointer;padding:4px 8px;transition:color .2s;line-height:1}.share-modal-close:hover{color:#fff}.share-modal-content{padding:28px;overflow-y:auto;flex:1}.share-section{margin-bottom:32px}.share-section:last-child{margin-bottom:0}.share-section h3{margin:0 0 8px;font-size:16px;font-weight:600;color:#fff}.share-section-description{margin:0 0 16px;font-size:14px;color:#888}.share-link-role-selector{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.share-link-role-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;background:#2a2a2a;border:2px solid #444;border-radius:8px;cursor:pointer;transition:all .2s}.share-link-role-btn:hover{border-color:#646cff;background:#333}.share-link-role-btn.active{border-color:#646cff;background:#646cff1a}.share-link-role-btn .role-icon{font-size:24px}.share-link-role-btn .role-label{font-size:14px;font-weight:600;color:#fff}.share-link-role-btn .role-desc{font-size:12px;color:#888}.share-link-role-btn.active .role-desc{color:#aaa}.share-link-container{display:flex;gap:12px}.share-link-input{flex:1;padding:12px 16px;background:#2a2a2a;border:1px solid #444;border-radius:8px;color:#fff;font-size:14px;font-family:Monaco,Courier New,monospace}.share-link-input:focus{outline:none;border-color:#646cff}.share-link-copy-btn{padding:12px 20px;background:#646cff;border:none;border-radius:8px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.share-link-copy-btn:hover{background:#535bf2;transform:translateY(-1px)}.share-link-copy-btn.copied{background:#10b981}.share-invite-form{display:flex;flex-direction:column;gap:12px}.share-invite-inputs{display:flex;gap:12px}.share-invite-input{flex:1;padding:12px 16px;background:#2a2a2a;border:1px solid #444;border-radius:8px;color:#fff;font-size:14px}.share-invite-input:focus{outline:none;border-color:#646cff}.share-invite-input::placeholder{color:#666}.share-role-select{padding:12px 16px;background:#2a2a2a;border:1px solid #444;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;min-width:120px}.share-role-select:focus{outline:none;border-color:#646cff}.share-invite-btn{padding:12px 24px;background:#646cff;border:none;border-radius:8px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.share-invite-btn:hover:not(:disabled){background:#535bf2;transform:translateY(-1px)}.share-invite-btn:disabled{opacity:.5;cursor:not-allowed}.share-collaborators-list{display:flex;flex-direction:column;gap:8px;margin-top:16px}.share-collaborator-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#2a2a2a;border-radius:8px;transition:background .2s}.share-collaborator-item:hover{background:#333}.share-collaborator-info{display:flex;align-items:center;gap:12px;flex:1}.share-collaborator-name{font-size:14px;color:#fff;font-weight:500}.share-role-badge{padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;text-transform:uppercase}.share-role-badge.role-owner{background:#fbbf24;color:#1e1e1e}.share-role-badge.role-editor{background:#646cff;color:#fff}.share-role-badge.role-viewer{background:#666;color:#fff}.share-remove-btn{background:none;border:none;color:#888;font-size:18px;cursor:pointer;padding:4px 8px;line-height:1;transition:color .2s}.share-remove-btn:hover:not(:disabled){color:#ef4444}.share-remove-btn:disabled{opacity:.5;cursor:not-allowed}.share-empty-state{margin:16px 0 0;padding:24px;background:#2a2a2a;border-radius:8px;text-align:center;color:#888;font-size:14px}.share-modal-error{padding:12px 16px;background:#ef44441a;border:1px solid #ef4444;border-radius:8px;color:#ef4444;font-size:14px;margin-bottom:20px}.share-modal-success{padding:12px 16px;background:#10b9811a;border:1px solid #10b981;border-radius:8px;color:#10b981;font-size:14px;margin-bottom:20px}.share-modal-footer{padding:20px 28px;border-top:1px solid #333;display:flex;justify-content:flex-end}.share-modal-done-btn{padding:12px 32px;background:#2a2a2a;border:1px solid #444;border-radius:8px;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.share-modal-done-btn:hover{background:#333;border-color:#555}@media (max-width: 640px){.share-modal{max-width:100%;margin:0;border-radius:0}.share-modal-header,.share-modal-content,.share-modal-footer{padding:20px}.share-invite-inputs{flex-direction:column}.share-role-select{width:100%}.share-link-container{flex-direction:column}.share-link-copy-btn{width:100%}}@media (prefers-color-scheme: light){.share-modal{background:#fff}.share-modal-header{border-bottom-color:#e5e7eb}.share-modal-header h2{color:#1e1e1e}.share-modal-close{color:#6b7280}.share-modal-close:hover,.share-section h3{color:#1e1e1e}.share-section-description{color:#6b7280}.share-link-input,.share-invite-input,.share-role-select{background:#f9fafb;border-color:#e5e7eb;color:#1e1e1e}.share-link-input:focus,.share-invite-input:focus,.share-role-select:focus{border-color:#646cff}.share-collaborator-item{background:#f9fafb}.share-collaborator-item:hover{background:#f3f4f6}.share-collaborator-name{color:#1e1e1e}.share-remove-btn{color:#6b7280}.share-empty-state{background:#f9fafb;color:#6b7280}.share-modal-footer{border-top-color:#e5e7eb}.share-modal-done-btn{background:#f9fafb;border-color:#e5e7eb;color:#1e1e1e}.share-modal-done-btn:hover{background:#f3f4f6;border-color:#d1d5db}}.settings-modal-overlay{position:fixed;inset:0;background-color:var(--modal-overlay);display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px;animation:fadeIn .2s ease-out}.settings-modal{background:var(--modal-bg);border-radius:12px;width:100%;max-width:500px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:slideUp .3s ease-out;border:1px solid var(--border-color)}.settings-modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px 28px;border-bottom:1px solid var(--border-color);flex-wrap:wrap;gap:8px}.settings-modal-header h2{margin:0;font-size:24px;font-weight:600;color:var(--text-primary);flex:1 1 auto}.settings-modal-subtitle{margin:0;font-size:14px;color:var(--text-secondary);width:100%;order:3}.settings-modal-close{background:none;border:none;font-size:24px;color:var(--text-secondary);cursor:pointer;padding:4px 8px;transition:color .2s;line-height:1;order:2}.settings-modal-close:hover{color:var(--text-primary)}.settings-modal-content{padding:28px;overflow-y:auto;flex:1}.settings-canvas-name{padding:12px 16px;background:var(--bg-secondary);border-radius:8px;margin-bottom:24px;display:flex;gap:12px}.settings-label{color:var(--text-secondary);font-size:14px;font-weight:500}.settings-value{color:var(--text-primary);font-size:14px;font-weight:600}.settings-section{margin-bottom:32px}.settings-section:last-child{margin-bottom:0}.settings-section h3{margin:0 0 8px;font-size:16px;font-weight:600;color:var(--text-primary)}.settings-section-description{margin:0 0 16px;font-size:14px;color:var(--text-secondary)}.settings-color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:8px;margin-bottom:16px}.settings-color-swatch{aspect-ratio:1;border-radius:8px;cursor:pointer;border:3px solid transparent;transition:all .2s}.settings-color-swatch:hover{transform:scale(1.05)}.settings-color-swatch.selected{border-color:var(--accent-color);box-shadow:0 0 0 2px var(--accent-bg)}.settings-color-swatch-check{font-size:20px;font-weight:700;text-shadow:0 0 4px rgba(0,0,0,.5);color:var(--text-on-accent);filter:drop-shadow(0 0 2px rgba(0,0,0,.8))}.settings-custom-color{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-secondary);border-radius:8px}.settings-custom-color label{font-size:14px;color:var(--text-secondary);font-weight:500}.settings-color-input-wrapper{display:flex;align-items:center;gap:8px;flex:1}.settings-color-input{width:50px;height:38px;border-radius:6px;border:2px solid var(--border-color);cursor:pointer;transition:border-color .2s}.settings-color-input:hover{border-color:var(--accent-color)}.settings-color-value{font-family:Monaco,Courier New,monospace;font-size:13px;color:var(--text-secondary);padding:6px 12px;background:var(--bg-tertiary);border-radius:4px}.settings-toggle{display:flex;align-items:center;gap:12px}.settings-toggle input{position:absolute;opacity:0;width:0;height:0}.settings-toggle-slider{position:relative;display:inline-block;width:52px;height:28px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:14px;transition:background .3s;cursor:pointer}.settings-toggle-handle{position:absolute;width:22px;height:22px;border-radius:50%;background:var(--text-primary);top:3px;left:3px;transition:transform .3s}.settings-toggle input:checked+.settings-toggle-slider{background:var(--accent-color);border-color:var(--accent-color)}.settings-toggle input:checked+.settings-toggle-slider .settings-toggle-handle{transform:translate(24px);background:var(--text-on-accent)}.settings-toggle-label{font-size:14px;color:var(--text-primary);font-weight:500}.settings-error{padding:12px 16px;background:var(--error-bg);border:1px solid var(--error-border);border-radius:8px;color:var(--error-color);font-size:14px;margin-bottom:20px}.settings-success{padding:12px 16px;background:var(--success-bg);border:1px solid var(--success-border);border-radius:8px;color:var(--success-color);font-size:14px;margin-bottom:20px}.settings-modal-footer{display:flex;gap:12px;justify-content:flex-end;padding:20px 28px;border-top:1px solid var(--border-color)}.settings-modal-btn{padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s;border:none}.settings-modal-btn:disabled{opacity:.5;cursor:not-allowed}.settings-modal-cancel-btn{background:var(--bg-button);color:var(--text-primary);border:1px solid var(--border-color)}.settings-modal-cancel-btn:hover:not(:disabled){background:var(--bg-button-hover);border-color:var(--border-hover)}.settings-modal-save-btn{background:var(--accent-color);color:var(--text-on-accent)}.settings-modal-save-btn:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 12px var(--accent-shadow)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.settings-modal-content::-webkit-scrollbar{width:8px}.settings-modal-content::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:4px}.settings-modal-content::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.settings-modal-content::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}:root,[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: #e9ecef;--bg-hover: #f1f3f5;--bg-canvas: #f5f5f5;--bg-input: #ffffff;--bg-button: #f0f0f0;--bg-button-hover: #e5e5e5;--text-primary: #1a1a1a;--text-secondary: #666666;--text-tertiary: #999999;--text-inverse: #ffffff;--text-on-accent: #ffffff;--border-color: #dee2e6;--border-hover: #adb5bd;--border-focus: #646cff;--accent-color: #646cff;--accent-hover: #535bf2;--accent-bg: rgba(100, 108, 255, .1);--accent-shadow: rgba(100, 108, 255, .2);--accent-border: rgba(100, 108, 255, .3);--success-color: #10b981;--success-bg: rgba(16, 185, 129, .1);--success-border: rgba(16, 185, 129, .3);--warning-color: #f59e0b;--warning-bg: rgba(245, 158, 11, .1);--warning-border: rgba(245, 158, 11, .3);--error-color: #ef4444;--error-bg: rgba(239, 68, 68, .1);--error-border: rgba(239, 68, 68, .3);--header-bg: rgba(255, 255, 255, .95);--sidebar-bg: rgba(255, 255, 255, .95);--panel-bg: rgba(255, 255, 255, .98);--modal-bg: #ffffff;--modal-overlay: rgba(0, 0, 0, .6);--tooltip-bg: rgba(50, 50, 50, .95);--tooltip-text: #ffffff;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .15)}[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #242424;--bg-tertiary: #2a2a2a;--bg-hover: #333333;--bg-canvas: #0a0a0a;--bg-input: #2a2a2a;--bg-button: #2a2a2a;--bg-button-hover: #333333;--text-primary: #ffffff;--text-secondary: #aaaaaa;--text-tertiary: #888888;--text-inverse: #1a1a1a;--text-on-accent: #ffffff;--border-color: #444444;--border-hover: #666666;--border-focus: #646cff;--accent-color: #646cff;--accent-hover: #535bf2;--accent-bg: rgba(100, 108, 255, .2);--accent-shadow: rgba(100, 108, 255, .3);--accent-border: rgba(100, 108, 255, .4);--success-color: #10b981;--success-bg: rgba(16, 185, 129, .15);--success-border: rgba(16, 185, 129, .3);--warning-color: #f59e0b;--warning-bg: rgba(245, 158, 11, .15);--warning-border: rgba(245, 158, 11, .3);--error-color: #ef4444;--error-bg: rgba(239, 68, 68, .15);--error-border: rgba(239, 68, 68, .3);--header-bg: rgba(0, 0, 0, .9);--sidebar-bg: rgba(26, 26, 26, .95);--panel-bg: rgba(26, 26, 26, .98);--modal-bg: #1e1e1e;--modal-overlay: rgba(0, 0, 0, .75);--tooltip-bg: rgba(50, 50, 50, .95);--tooltip-text: #ffffff;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .3);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .5)}*{transition:background-color .2s ease,color .2s ease,border-color .2s ease}[data-theme]{transition:none}
