.landing{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.landing-header{text-align:center;margin-bottom:1.5rem}.landing-title{display:flex;align-items:center;justify-content:center;gap:2px;font-size:3.5rem;font-weight:700;margin:0 0 .5rem;color:var(--text-primary)}.landing-brand-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);color:#fff;font-weight:700;font-size:48px;border-radius:16px}.landing-subtitle{font-size:1.1rem;color:var(--text-secondary);margin:0}.landing-panels{display:flex;align-items:stretch;gap:0;max-width:900px;width:100%}.landing-panel{flex:1;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:16px;padding:1.5rem;display:flex;flex-direction:column}.quick-share-panel{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.collaborate-panel{border-top-left-radius:0;border-bottom-left-radius:0}.panel-divider{display:flex;align-items:center;justify-content:center;width:1px;background:var(--border-color);flex-shrink:0;position:relative}.panel-divider span{position:absolute;background:var(--bg-surface);padding:.75rem .4rem;color:var(--text-muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.panel-header{text-align:center;margin-bottom:1rem}.panel-title{font-size:1.5rem;font-weight:600;color:var(--text-primary);margin:0 0 .5rem}.panel-description{font-size:.9rem;color:var(--text-muted);margin:0;min-height:2.6em}.panel-error{color:var(--accent-danger);font-size:.85rem;margin:.75rem 0 0;text-align:center}.drop-zone{flex:1;min-height:120px;border:2px dashed var(--border-color);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;transition:border-color .2s,background .2s;cursor:pointer}.drop-zone:hover:not(.has-files){background:#1e40af26}.drop-zone.drag-over{border-color:var(--accent-primary);background:#1e40af26}.drop-zone.has-files{justify-content:flex-start;cursor:default}.drop-zone-clickable{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer}.drop-zone-icon{font-size:3rem;font-weight:700;color:var(--text-muted);line-height:1;margin-bottom:.25rem}.drop-zone-text{font-size:1rem;color:var(--text-secondary);margin:0}.file-list{width:100%;display:flex;flex-direction:column;gap:.5rem}.file-item{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--bg-primary);border-radius:8px;border:1px solid var(--border-color);position:relative;overflow:hidden}.file-progress{position:absolute;bottom:0;left:0;height:3px;background:var(--accent-primary);transition:width .15s ease-out}.file-name{flex:1;font-size:.9rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-size:.8rem;color:var(--text-muted);flex-shrink:0}.file-remove{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;border-radius:4px;transition:background .2s,color .2s;flex-shrink:0}.file-remove:hover{background:var(--accent-danger);color:#fff}.add-more-btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem;font-size:.85rem;color:var(--accent-primary);cursor:pointer;border-radius:6px;transition:background .2s}.add-more-btn:hover{background:#1e40af40}.share-now-btn{margin-top:1rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;font-family:inherit;color:#fff;background:var(--accent-primary);border:none;border-radius:8px;cursor:pointer;transition:background .2s,opacity .2s}.share-now-btn:hover:not(:disabled){opacity:.9}.share-now-btn:disabled{opacity:.5;cursor:not-allowed}.share-beta-form{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-top:1rem}.share-link-container{margin-bottom:1.25rem}.share-link-box{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;background:var(--bg-primary);border:1px solid var(--accent-primary);border-radius:8px}.share-link-url{flex:1;font-size:.85rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.share-link-copy{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--accent-primary);border:none;border-radius:6px;color:#fff;cursor:pointer;flex-shrink:0;transition:background .2s}.share-link-copy:hover{background:var(--accent-secondary)}.share-link-copied{display:block;text-align:center;font-size:.8rem;color:var(--accent-primary);margin-top:.4rem}.share-another-btn{width:100%;padding:.75rem 1.5rem;font-size:.95rem;font-weight:500;color:var(--accent-primary);background:transparent;border:1px solid var(--accent-primary);border-radius:8px;cursor:pointer;transition:background .2s,color .2s}.share-another-btn:hover{background:var(--accent-primary);color:#000}.collaborate-content{flex:1;display:flex;flex-direction:column}.join-zone{flex:1;min-height:120px;border:2px dashed var(--border-color);border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;gap:.75rem}.join-zone-label{font-size:1rem;color:var(--text-secondary);margin:0}.sharespace-id-input{display:flex;align-items:center;gap:.25rem}.sharespace-digit{width:28px;height:36px;text-align:center;font-size:1.1rem;font-weight:600;font-family:monospace;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);transition:border-color .2s}.sharespace-digit:focus{outline:none;border-color:var(--accent-primary)}.sharespace-digit:disabled{opacity:.6;cursor:not-allowed}.sharespace-id-dash{font-size:1.2rem;color:var(--text-muted);margin:0 .15rem}.join-zone-error{color:var(--accent-danger);font-size:.85rem;margin:0;text-align:center}.create-sharespace-btn{margin-top:1rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;font-family:inherit;color:#fff;background:var(--accent-primary);border:none;border-radius:8px;cursor:pointer;transition:opacity .2s}.create-room-btn:hover{opacity:.9}.beta-form{display:flex;flex-direction:column;align-items:center;gap:.5rem}.beta-notice{color:var(--text-muted);font-size:.85rem;margin:0}.beta-input{padding:.7rem .75rem;font-size:.95rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);width:180px;text-align:center}.beta-input:focus{outline:none;border-color:var(--accent-primary)}.beta-input:disabled{opacity:.6;cursor:not-allowed}.beta-error{color:var(--accent-danger);font-size:.8rem;margin:0;text-align:center}.beta-buttons{display:flex;gap:.5rem}.beta-cancel-btn{padding:.6rem 1rem;font-size:.85rem;font-weight:500;border:1px solid var(--border-color);border-radius:8px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:border-color .2s,color .2s}.beta-cancel-btn:hover:not(:disabled){border-color:var(--text-secondary);color:var(--text-primary)}.beta-cancel-btn:disabled{opacity:.5;cursor:not-allowed}.beta-submit-btn{background:var(--accent-primary);color:#fff;border:none;padding:.6rem 1.25rem;font-size:.85rem;font-weight:600;font-family:inherit;border-radius:8px;cursor:pointer;transition:opacity .2s}.beta-submit-btn:hover:not(:disabled){opacity:.9}.beta-submit-btn:disabled{opacity:.5;cursor:not-allowed}.landing-footer{margin-top:1rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.footer-link{font-size:.75rem;color:var(--text-muted);text-decoration:none;transition:color .2s}.footer-link:hover{color:var(--accent-primary)}.footer-link.footer-pro{color:var(--accent-primary);font-weight:500}.footer-link.footer-pro:hover{filter:brightness(1.2)}.footer-separator{color:var(--text-muted);opacity:.5}.version-info{position:fixed;bottom:1rem;right:1rem;font-size:.75rem;color:var(--text-muted);opacity:.6}.theme-toggle-fixed{position:fixed;top:1rem;right:1rem;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:50%;font-size:1.25rem;cursor:pointer;color:var(--text-secondary);transition:transform .2s,border-color .2s,color .2s;z-index:100}.theme-toggle-fixed:hover{transform:scale(1.1);border-color:var(--accent-primary);color:var(--accent-primary)}@media(max-width:768px){.landing-panels{flex-direction:column}.landing-panel{border-radius:16px}.quick-share-panel{border-right:1px solid var(--border-color);border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.collaborate-panel{border-top-left-radius:0;border-top-right-radius:0}.panel-divider{width:100%;height:1px;background:var(--border-color)}.panel-divider span{padding:.25rem .5rem}}.toolbar{position:fixed;top:16px;left:50%;transform:translate(-50%);height:44px;background:var(--bg-toolbar);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:22px;z-index:1000;box-shadow:0 4px 24px var(--shadow-color),0 1px 2px #0000001a;transition:background .2s,border-color .2s,box-shadow .2s}.toolbar:hover{box-shadow:0 8px 32px var(--shadow-color),0 2px 4px #0000001a}.toolbar-content{display:flex;align-items:center;gap:6px;height:100%;padding:0 6px;white-space:nowrap}.toolbar-brand{display:flex;align-items:center;gap:1px;padding:0 10px 0 8px}.brand-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);color:#fff;font-weight:700;font-size:13px;border-radius:6px}.brand-text{font-weight:600;font-size:14px;color:var(--text-primary);letter-spacing:-.01em}.toolbar-sharespace{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#4fc3f714;border:1px solid rgba(79,195,247,.15);border-radius:16px;cursor:pointer;transition:background .15s ease,border-color .15s ease;font:inherit}.toolbar-sharespace:hover{background:#4fc3f726;border-color:#4fc3f740}.toolbar-sharespace:active{background:#4fc3f733}.toolbar-sharespace:focus{outline:none}.sharespace-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.sharespace-code{font-size:13px;font-weight:600;font-family:SF Mono,Fira Code,Consolas,monospace;color:var(--accent-primary);letter-spacing:.02em}.sharespace-copy-icon{display:flex;align-items:center;justify-content:center;color:var(--accent-primary);opacity:.6;transition:opacity .15s}.toolbar-sharespace:hover .sharespace-copy-icon{opacity:1}.toolbar-presence-wrapper{position:relative}.toolbar-presence{display:flex;align-items:center;gap:6px;padding:6px 10px;background:transparent;border:1px solid var(--border-color);border-radius:16px;cursor:default;transition:background .15s ease,color .15s ease}.toolbar-presence:disabled{cursor:default}.toolbar-presence.clickable{cursor:pointer}.toolbar-presence.clickable:hover{background:#80808033}.presence-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-danger);transition:background .3s,box-shadow .3s}.presence-dot.connected{background:#22c55e;box-shadow:0 0 8px #22c55e66}.presence-dot.disconnected{animation:pulse-dot 1.5s infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.presence-icon{color:var(--text-muted)}.presence-count{font-size:13px;font-weight:600;color:var(--text-secondary)}.toolbar-expiry{display:flex;align-items:center}.expiry-time{padding:4px 10px;background:#fb923c26;border:1px solid rgba(251,146,60,.25);border-radius:12px;font-size:12px;font-weight:600;font-family:SF Mono,Fira Code,Consolas,monospace;color:#fb923c}.toolbar-spacer{flex:1;min-width:8px}.toolbar-icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:1px solid var(--border-color);border-radius:50%;color:var(--text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.toolbar-icon-btn:hover{background:#80808033;color:var(--text-primary)}.toolbar-icon-btn.active{background:#4fc3f71a;border-color:#4fc3f733;color:var(--accent-primary)}.toolbar-more{position:relative;display:none}.toolbar-actions{position:relative}.toolbar-leave-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:16px;color:#ef4444;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.toolbar-leave-btn:hover{background:#ef444433;border-color:#ef44444d}.toolbar-leave-btn.active{background:#ef444433;border-color:#ef444466}.leave-text{font-weight:500}.leave-chevron{transition:transform .2s ease}.leave-chevron.open{transform:rotate(180deg)}.dropdown-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 8px 32px var(--shadow-color),0 2px 8px #0000001a;overflow:hidden;z-index:1001;animation:dropdown-in .15s ease}.dropdown-menu-right{right:0;left:auto}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 14px;background:transparent;border:none;cursor:pointer;text-align:left;color:var(--text-primary);transition:background .1s ease}.dropdown-item:hover{background:#ffffff0d}.dropdown-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown-item svg{color:var(--text-muted);flex-shrink:0}.dropdown-item-content{display:flex;flex-direction:column;gap:2px}.dropdown-item-title{font-size:13px;font-weight:500;color:var(--text-primary)}.dropdown-item-desc{font-size:11px;color:var(--text-muted)}.dropdown-item-danger{color:#ef4444}.dropdown-item-danger svg{color:#ef4444}.dropdown-item-danger .dropdown-item-title{color:#ef4444}.dropdown-item-danger:hover{background:#ef44441a}.diagnostics-panel{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);min-width:280px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 8px 32px var(--shadow-color),0 2px 8px #0000001a;overflow:hidden;z-index:1001;animation:diagnostics-fade-in .2s ease}@keyframes diagnostics-fade-in{0%{opacity:0;transform:translate(-50%)}to{opacity:1;transform:translate(-50%)}}.diagnostics-header{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border-color);background:#00000026}.diagnostics-title{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}.diagnostics-header-actions{display:flex;align-items:center;gap:4px}.diagnostics-refresh,.diagnostics-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:transparent;border:1px solid var(--border-color);border-radius:50%;color:var(--text-muted);font-size:14px;cursor:pointer;transition:background .15s ease,color .15s ease}.diagnostics-refresh:hover:not(:disabled),.diagnostics-close:hover{background:#80808033;color:var(--text-primary)}.diagnostics-refresh:disabled{opacity:.4;cursor:not-allowed}.diagnostics-close{font-size:18px}.diagnostics-loading,.diagnostics-error{padding:16px;text-align:center;font-size:13px;color:var(--text-muted)}.diagnostics-error{color:#ef4444}.diagnostics-content{padding:4px 0}.diagnostics-section{padding:10px 14px}.diagnostics-section:not(:last-child){border-bottom:1px solid var(--border-color)}.diagnostics-label{font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}.diagnostics-children{padding-left:12px;display:flex;flex-direction:column;gap:4px}.diagnostics-row{display:flex;align-items:center;gap:8px;font-size:12px}.diagnostics-row-label{color:var(--text-muted);min-width:50px}.diagnostics-row-value{font-family:SF Mono,Fira Code,Consolas,monospace;color:var(--text-secondary);font-size:12px}.diagnostics-connections{display:flex;flex-direction:column;gap:4px}.diagnostics-connection{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#ffffff08;border-radius:6px}.diagnostics-connection.is-host{background:#4fc3f71a}.conn-type{font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;background:#ffffff14;color:var(--text-muted)}.diagnostics-connection.is-host .conn-type{background:var(--accent-primary);color:#fff}.conn-id{font-size:11px;font-family:SF Mono,Fira Code,Consolas,monospace;color:var(--text-muted)}.diagnostics-state{font-size:12px;color:var(--text-secondary);display:flex;flex-direction:column;gap:4px}.grace-warning{color:#fb923c;font-weight:500}.hide-mobile{display:flex}.show-mobile{display:none}@media(max-width:700px){.sharespace-label{display:none}.toolbar-sharespace{gap:6px}}@media(max-width:540px){.toolbar{left:12px;right:12px;transform:none;border-radius:16px}.toolbar-content{gap:4px;padding:0 4px}.toolbar-brand{padding:0 6px}.brand-text{display:none}.toolbar-sharespace{padding:5px 8px;gap:4px}.sharespace-code{font-size:12px}.toolbar-presence{padding:5px 8px;gap:4px}.presence-icon{display:none}.toolbar-leave-btn{padding:5px 10px;gap:4px}.leave-text,.hide-mobile{display:none}.show-mobile,.toolbar-more.show-mobile{display:flex}.toolbar-more .dropdown-menu{right:0;min-width:140px}}.resize-handle{position:absolute;bottom:1px;right:1px;width:16px;height:16px;cursor:se-resize;opacity:0;transition:opacity .2s;z-index:5}.resize-handle.visible{opacity:1}.resize-handle:before{content:"";position:absolute;bottom:0;right:0;width:10px;height:10px;border:2px solid rgba(255,255,255,.95);border-top:none;border-left:none;border-radius:0 0 7px;filter:drop-shadow(0 0 1px rgba(0,0,0,.8)) drop-shadow(0 0 2px rgba(0,0,0,.5))}[data-theme=light] .resize-handle:before{border-color:#282828f2;filter:drop-shadow(0 0 1px rgba(255,255,255,.9)) drop-shadow(0 0 2px rgba(255,255,255,.7))}.canvas-object{position:absolute;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;cursor:move;-webkit-user-select:none;user-select:none;transition:box-shadow .2s,border-color .2s,background .3s;isolation:isolate}.canvas-object:hover{border-color:var(--accent-primary);box-shadow:0 4px 20px var(--shadow-color)}.canvas-object.dragging{box-shadow:0 8px 30px var(--shadow-color);border-color:var(--accent-primary);z-index:1000;opacity:.95}.canvas-object.dragging .object-toolbar{opacity:0!important;pointer-events:none}.canvas-object.resizing{z-index:1000}.canvas-object.editing,.canvas-object.editing-title{cursor:text}.object-titlebar{display:flex;align-items:center;padding:.4rem .6rem;background:#0009;border-bottom:1px solid var(--border-color);border-radius:8px 8px 0 0;min-height:28px}[data-theme=light] .object-titlebar{background:#ffffffd9}.title-text{font-size:.75rem;font-weight:500;color:var(--text-secondary);cursor:move;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.1rem 0}.title-text:hover{color:var(--text-primary)}.title-input{flex:1;background:transparent;border:none;outline:none;font-size:.75rem;font-weight:500;color:var(--text-primary);font-family:inherit;padding:.1rem 0;width:100%}.title-input::placeholder{color:var(--text-muted)}.canvas-object:hover .resize-handle,.canvas-object.resizing .resize-handle{opacity:1}.object-toolbar{position:absolute;top:6px;right:6px;display:flex;gap:4px;opacity:0;transform:translateY(-4px);transition:opacity .2s,transform .2s;z-index:10}.canvas-object:hover .object-toolbar{opacity:1;transform:translateY(0)}.toolbar-btn{width:28px;height:28px;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all .2s;box-shadow:0 2px 8px var(--shadow-color)}.toolbar-btn:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--accent-primary);transform:scale(1.1)}.toolbar-btn-danger:hover{background:var(--accent-danger);color:#fff;border-color:var(--accent-danger)}[data-theme=light] .toolbar-btn{box-shadow:0 2px 8px #0000001a}.object-image{display:flex;flex-direction:column;cursor:pointer}.object-image img{display:block;width:100%;height:auto;object-fit:contain;transition:opacity .2s}.object-image:hover img{opacity:.9}.object-image.refreshing,.object-image.error,.object-image.uploading,.object-image.upload-failed{cursor:default}.image-refreshing,.image-error,.image-uploading,.image-upload-failed{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-height:100px;padding:1.5rem;color:var(--text-muted);font-size:.85rem}.image-uploading{background:#8be9fd0d;border-radius:0 0 8px 8px}.image-uploading .upload-icon{color:var(--accent-primary);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.upload-progress-container{width:100%;max-width:150px;height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}[data-theme=light] .upload-progress-container{background:#0000001a}.upload-progress-bar{height:100%;background:linear-gradient(90deg,var(--accent-primary),var(--accent-secondary, #50fa7b));border-radius:3px;transition:width .15s ease-out}.upload-percent{font-size:.75rem;font-weight:600;color:var(--accent-primary)}.image-upload-failed{background:#ef44441a;border-radius:0 0 8px 8px;color:var(--accent-danger)}.image-upload-failed svg{color:var(--accent-danger)}.upload-error-detail{font-size:.7rem;opacity:.8;text-align:center;max-width:150px;word-break:break-word}.image-refreshing .spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.image-error{background:#ef44441a;border-radius:0 0 8px 8px}.retry-btn{padding:.4rem .8rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);font-size:.75rem;cursor:pointer;transition:all .2s}.retry-btn:hover{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.object-label{padding:.5rem;font-size:.75rem;color:var(--text-muted);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;background:var(--bg-tertiary);border-radius:0 0 8px 8px}.object-file{display:flex;align-items:center;gap:.75rem;padding:1rem}.file-icon{font-size:2rem}.file-info{flex:1;min-width:0}.file-name{font-size:.85rem;color:var(--text-primary);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.file-size{font-size:.7rem;color:var(--text-muted);margin-top:.25rem}.object-file.uploading .file-icon{display:flex;align-items:center;justify-content:center}.object-file .upload-icon{color:var(--accent-primary);animation:pulse 1.5s ease-in-out infinite}.object-file .error-icon{color:var(--accent-danger)}.file-upload-progress{display:flex;align-items:center;gap:.5rem;margin-top:.25rem}.file-upload-progress .upload-progress-container{flex:1;max-width:none}.file-upload-progress .upload-percent{font-size:.7rem;min-width:32px}.file-upload-error{font-size:.7rem;color:var(--accent-danger);margin-top:.25rem}.object-file.upload-failed{border-color:#ef444480}.video-play-button{position:relative;width:48px;height:48px;background:#8be9fd26;border:2px solid var(--accent-primary);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s,border-color .2s;flex-shrink:0}.video-play-button:hover{transform:scale(1.1);background:#8be9fd4d}.video-play-button:after{content:"";width:0;height:0;border-style:solid;border-width:9px 0 9px 14px;border-color:transparent transparent transparent var(--accent-primary);margin-left:4px}[data-theme=light] .video-play-button{background:#0096b41a}[data-theme=light] .video-play-button:hover{background:#0096b433}.object-file.playable .file-icon{display:none}.object-note{padding:.75rem;min-height:80px}.note-content{color:var(--text-primary);font-size:.9rem;line-height:1.4;white-space:pre-wrap;word-break:break-word}.note-placeholder{color:var(--text-muted);font-size:.85rem;font-style:italic;opacity:.7}.object-note textarea{width:100%;height:100%;min-height:60px;background:transparent;border:none;color:var(--text-primary);font-size:.9rem;font-family:inherit;line-height:1.4;resize:none;outline:none}.canvas-object.note{background:#3d3a2e;border-color:#ffeb3b80}[data-theme=light] .canvas-object.note{background:#fffde7;border-color:#f9a82580}.canvas-object.note:hover{border-color:var(--accent-warning)}.canvas-object.image{padding:0;background:transparent;overflow:hidden}.canvas-object.file{background:#2a3540;border-color:#4fc3f766}[data-theme=light] .canvas-object.file{background:#e3f2fd;border-color:#0288d166}.canvas-object.file:hover{border-color:var(--accent-primary)}.canvas-object.code{background:#1e1e2e;border-color:#8be9fd33;padding:0;overflow:hidden}[data-theme=light] .canvas-object.code{background:#f8f8f8;border-color:#00000026}.canvas-object.code:hover{border-color:#8be9fd80}[data-theme=light] .canvas-object.code:hover{border-color:#0000004d}.object-code{display:flex;flex-direction:column;height:100%;overflow:hidden}.code-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:#0003;border-bottom:1px solid rgba(255,255,255,.1)}[data-theme=light] .code-header{background:#0000000d;border-bottom:1px solid rgba(0,0,0,.1)}.code-language{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-primary)}[data-theme=light] .code-language{color:var(--accent-primary)}.code-content{flex:1;overflow:auto;padding:.75rem}.code-content pre{margin:0;font-family:Fira Code,Consolas,Monaco,monospace;font-size:.8rem;line-height:1.5;white-space:pre;width:max-content;min-width:100%}.code-content code{font-family:inherit;background:transparent!important;display:block}.code-content textarea{width:100%;height:100%;min-height:100px;background:transparent;border:none;color:#f8f8f2;font-family:Fira Code,Consolas,Monaco,monospace;font-size:.8rem;line-height:1.5;resize:none;outline:none;white-space:pre;overflow-wrap:normal;overflow:hidden}.canvas-object.editing .code-content{overflow:hidden}.canvas-object.editing .code-content textarea{overflow:auto}[data-theme=light] .code-content textarea{color:#1a1a2e}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#6272a4}.token.punctuation{color:#f8f8f2}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#50fa7b}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#f1fa8c}.token.keyword{color:#ff79c6}.token.regex,.token.important{color:#ffb86c}[data-theme=light] .token.comment,[data-theme=light] .token.prolog,[data-theme=light] .token.doctype,[data-theme=light] .token.cdata{color:#6a737d}[data-theme=light] .token.punctuation{color:#24292e}[data-theme=light] .token.property,[data-theme=light] .token.tag,[data-theme=light] .token.constant,[data-theme=light] .token.symbol,[data-theme=light] .token.deleted{color:#d73a49}[data-theme=light] .token.boolean,[data-theme=light] .token.number{color:#005cc5}[data-theme=light] .token.selector,[data-theme=light] .token.attr-name,[data-theme=light] .token.string,[data-theme=light] .token.char,[data-theme=light] .token.builtin,[data-theme=light] .token.inserted{color:#22863a}[data-theme=light] .token.operator,[data-theme=light] .token.entity,[data-theme=light] .token.url,[data-theme=light] .language-css .token.string,[data-theme=light] .style .token.string,[data-theme=light] .token.variable{color:#24292e}[data-theme=light] .token.atrule,[data-theme=light] .token.attr-value,[data-theme=light] .token.function,[data-theme=light] .token.class-name{color:#6f42c1}[data-theme=light] .token.keyword{color:#d73a49}[data-theme=light] .token.regex,[data-theme=light] .token.important{color:#e36209}.lightbox-overlay{position:fixed;inset:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:2000;padding:2rem;cursor:pointer}.lightbox-close:hover{background:#ffffff59!important;transform:scale(1.1)}.lightbox-content{display:flex;flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;cursor:default}.lightbox-content img,.lightbox-content video{max-width:100%;max-height:calc(90vh - 3rem);object-fit:contain;border-radius:4px;box-shadow:0 10px 50px #00000080}.lightbox-video{background:#000}.lightbox-caption{margin-top:1rem;color:#ffffffb3;font-size:.9rem;text-align:center}.lightbox-loading,.lightbox-error{color:#ffffffb3;font-size:1rem;padding:2rem}.lightbox-loading{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.canvas-container{position:fixed;inset:0;overflow:hidden;background:var(--bg-primary);cursor:grab;transition:background .3s}.canvas-container.panning{cursor:grabbing}.canvas-grid{position:absolute;inset:0;background-image:linear-gradient(to right,var(--grid-color) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-color) 1px,transparent 1px);pointer-events:none}.canvas-content{position:absolute;top:0;left:0;transform-origin:0 0}.drop-overlay{position:absolute;inset:0;background:#4fc3f71a;border:3px dashed var(--accent-primary);display:flex;align-items:center;justify-content:center;pointer-events:none}.drop-message{background:var(--bg-toolbar);color:var(--accent-primary);padding:1.5rem 3rem;border-radius:12px;font-size:1.25rem;font-weight:600}.canvas-container.drag-over{cursor:copy}.view-controls{position:fixed;bottom:20px;right:20px;display:flex;align-items:center;gap:4px;height:40px;background:var(--bg-toolbar);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:0 6px;border-radius:20px;border:1px solid var(--border-color);box-shadow:0 4px 24px var(--shadow-color),0 1px 2px #0000001a;transition:background .2s,border-color .2s,box-shadow .2s}.view-controls:hover{box-shadow:0 8px 32px var(--shadow-color),0 2px 4px #0000001a}.view-btn{display:flex;align-items:center;justify-content:center;height:28px;padding:0 10px;background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:14px;font-size:11px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.view-btn:hover:not(:disabled){background:#80808033;color:var(--text-primary)}.view-btn:active:not(:disabled){background:#80808059;color:var(--text-primary)}.view-btn:disabled{opacity:.3;cursor:not-allowed}.zoom-indicator{color:var(--text-secondary);font-size:12px;font-weight:500;font-family:SF Mono,Fira Code,Consolas,monospace;min-width:44px;text-align:center;padding:0 4px}.empty-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.empty-state-content{text-align:center;max-width:400px;padding:2rem}.empty-state-title{font-size:1.75rem;font-weight:600;color:var(--text-muted);margin:0 0 .5rem;opacity:.7}.empty-state-subtitle{font-size:1rem;color:var(--text-muted);margin:0 0 2rem;opacity:.5}.empty-state-actions{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}.empty-state-action{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:8px;opacity:.6}.action-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#4fc3f726;color:var(--accent-primary);border-radius:6px;font-weight:700;font-size:.85rem;flex-shrink:0}.action-text{color:var(--text-secondary);font-size:.9rem;text-align:left}.empty-state-hint{font-size:.8rem;color:var(--text-muted);opacity:.4;margin:0}.share-hint{position:absolute;top:75px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;opacity:.5}.share-hint-arrow{width:100px;height:42px;color:var(--accent-primary)}.share-hint-text{font-family:Caveat,cursive;font-size:1.4rem;color:var(--accent-primary);white-space:nowrap;transform:rotate(-2deg);margin-top:5px}.sharespace-closed-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000}.sharespace-closed-modal{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:12px;padding:2rem;text-align:center;max-width:400px;box-shadow:0 8px 32px #0006}.sharespace-closed-modal h2{margin:0 0 1rem;color:var(--text-primary);font-size:1.5rem}.sharespace-closed-modal p{margin:0 0 1.5rem;color:var(--text-secondary);font-size:1rem}.sharespace-closed-btn{background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);color:#000;border:none;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;border-radius:8px;cursor:pointer;transition:transform .2s,box-shadow .2s}.sharespace-closed-btn:hover{transform:translateY(-2px);box-shadow:0 4px 15px var(--shadow-color)}.app{min-height:100vh}.page-loader{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--text-muted);font-size:14px}*{margin:0;padding:0;box-sizing:border-box}:root{--build: "0.2.0-61";--bg-primary: #0f0f14;--bg-secondary: #1a1a22;--bg-tertiary: #24242e;--bg-surface: rgba(26, 26, 34, .98);--bg-toolbar: rgba(20, 20, 28, .98);--text-primary: #f0f0f0;--text-secondary: #a0a0a0;--text-muted: #606060;--accent-primary: #1e40af;--accent-secondary: #1e40af;--accent-danger: #f87171;--accent-warning: #fbbf24;--border-color: rgba(255, 255, 255, .08);--border-color-hover: rgba(255, 255, 255, .15);--grid-color: rgba(255, 255, 255, .02);--shadow-color: rgba(0, 0, 0, .4);--landing-gradient: #0f0f14}[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #fafafa;--bg-tertiary: #f5f5f5;--bg-surface: #ffffff;--bg-toolbar: #ffffff;--text-primary: #1a1a1a;--text-secondary: #4a4a4a;--text-muted: #8a8a8a;--accent-primary: #1e40af;--accent-secondary: #1e40af;--accent-danger: #ef4444;--accent-warning: #f59e0b;--border-color: #e5e5e5;--border-color-hover: #d0d0d0;--grid-color: rgba(0, 0, 0, .03);--shadow-color: rgba(0, 0, 0, .08);--landing-gradient: #fafafa}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--landing-gradient);min-height:100vh;color:var(--text-primary);transition:background .3s,color .3s}#root{min-height:100vh}
