body{background-color:#000;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root,body,html{height:100%;margin:0;padding:0;width:100%}.loading-spinner-container{align-items:center;display:flex;flex-direction:column;gap:10px;justify-content:center}.loading-spinner{border:4px solid #f3f3f3;border-top-color:#3498db}.spinner-small{border-width:2px;height:20px;width:20px}.spinner-medium{border-width:4px;height:40px;width:40px}.spinner-large{border-width:6px;height:60px;width:60px}.loading-message{color:#666;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;margin:0;text-align:center}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.loading-spinner.pulse{animation:pulse 1.5s ease-in-out infinite}.image-loading-overlay{background:#f5f5f5e6}.image-error-overlay,.image-loading-overlay{align-items:center;border-radius:8px;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:10}.image-error-overlay{background:#ffe6e6e6;border:1px solid #fcc;flex-direction:column}.error-message{color:#d32f2f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:12px;margin:0;text-align:center}.message-modal-overlay{align-items:center;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;pointer-events:all!important;position:fixed;right:0;top:0;z-index:10000}.message-modal{background-color:#222;border:1px solid #444;border-radius:8px;box-shadow:0 5px 15px #00000080;max-width:500px;overflow:hidden;width:90%;z-index:10001}.message-modal-header{align-items:center;background-color:#333;border-bottom:1px solid #444;display:flex;justify-content:space-between;padding:15px 20px}.message-modal-header h3{color:#fff;font-size:18px;margin:0}.close-button{color:#aaa;line-height:1}.close-button:hover{color:#fff}.message-modal-body{padding:20px;position:relative}.message-input{background-color:#333;border:1px solid #444;border-radius:4px;color:#fff;font-size:16px;outline:none;padding:12px 15px;transition:border-color .3s;width:100%}.message-input:focus{border-color:#4caf50}.character-count{bottom:25px;color:#aaa;font-size:12px;position:absolute;right:25px}.message-modal-footer{background-color:#333;border-top:1px solid #444;display:flex;justify-content:flex-end;padding:15px 20px}.cancel-button,.submit-button{font-weight:700;transition:all .3s}.cancel-button{background-color:initial;border:1px solid #555;color:#aaa;margin-right:10px}.cancel-button:hover{background-color:#444;color:#fff}.submit-button{background-color:#4caf50}.submit-button:hover{background-color:#45a049}.submit-button:disabled{background-color:#555;opacity:.7}.gallery-modal-overlay{background-color:#000000b3;z-index:1000}.gallery-modal{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #0003;max-width:90%;overflow:hidden;width:400px}.gallery-modal-header{align-items:center;background-color:#f5f5f5;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:15px 20px}.gallery-modal-header h3{color:#333;font-size:18px;margin:0}.gallery-modal-body{display:flex;flex-direction:column;padding:20px}.gallery-modal-body label{color:#333;display:block;font-weight:500;margin-bottom:8px}.gallery-title-input{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;font-size:16px;padding:10px;width:100%}.gallery-title-input:focus{border-color:#4a90e2;box-shadow:0 0 0 2px #4a90e233;outline:none}.delete-confirmation{display:flex;flex-direction:column;text-align:center}.delete-confirmation .warning{font-weight:500}.gallery-modal-footer{background-color:#f5f5f5;border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end;padding:15px 20px}.cancel-button,.submit-button{border:none;border-radius:4px;cursor:pointer;font-size:14px;margin-left:10px;padding:8px 16px}.cancel-button{background-color:#e0e0e0;color:#333}.cancel-button:hover{background-color:#d0d0d0}.submit-button{background-color:#4a90e2}.submit-button:hover{background-color:#3a80d2}.submit-button:disabled{background-color:#a0c0e8}.delete-button{background-color:#d32f2f}.delete-button:hover{background-color:#b71c1c}.delete-confirmation .warning{background-color:#d32f2f1a;border-left:4px solid #d32f2f;border-radius:4px;color:#d32f2f;font-weight:700;margin-top:10px;padding:10px}.gallery-modal-footer button{border-radius:6px;cursor:pointer;font-size:16px;padding:12px 24px;transition:all .2s ease}.gallery-modal-footer .cancel-button{background-color:#f5f5f5;border:1px solid #ddd;color:#333}.gallery-modal-footer .cancel-button:hover{background-color:#e5e5e5}.gallery-modal-footer .submit-button{background-color:#4caf50;border:none;color:#fff;margin-left:10px}.gallery-modal-footer .submit-button:hover{background-color:#45a049}.gallery-modal-footer .delete-button{background-color:#d32f2f}.gallery-modal-footer .delete-button:hover{background-color:#b71c1c}.gallery-modal{z-index:10001}.gallery-modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;pointer-events:all!important;position:fixed;right:0;top:0;z-index:10000}.gallery-modal,.gallery-modal-overlay{cursor:default!important;user-select:auto!important;-webkit-user-select:auto!important}.gallery-modal button{cursor:pointer!important}.gallery-modal-overlay{display:flex!important}.gallery-modal,.gallery-modal-overlay{opacity:1!important;visibility:visible!important}.gallery-modal{display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;height:auto!important;max-width:90%!important;width:400px!important}.gallery-modal-body,.gallery-modal-footer,.gallery-modal-header{flex-shrink:0!important;width:100%!important}.gallery-modal-body{flex-grow:1!important;overflow-y:auto!important}.gallery-modal-footer{display:flex!important;flex-direction:row!important;justify-content:flex-end!important}.delete-modal-overlay{align-items:center;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.delete-modal{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #0003;display:flex;flex-direction:column;max-width:90%;overflow:hidden;width:400px;z-index:10001}.delete-modal-header{align-items:center;background-color:#f5f5f5;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:15px 20px}.delete-modal-header h3{color:#333;font-size:18px;margin:0}.delete-modal-body{display:flex;flex-direction:column;padding:20px}.delete-confirmation-text{margin-bottom:15px;text-align:center}.delete-warning{background-color:#d32f2f1a;border-left:4px solid #d32f2f;border-radius:4px;color:#d32f2f;font-weight:700;margin-top:10px;padding:10px;text-align:left}.delete-modal-footer{background-color:#f5f5f5;border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end;padding:15px 20px}.delete-cancel-button{background-color:#f5f5f5;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:16px;margin-right:10px;padding:12px 24px;transition:all .2s ease}.delete-cancel-button:hover{background-color:#e5e5e5}.delete-confirm-button{background-color:#d32f2f;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;padding:12px 24px;transition:all .2s ease}.delete-confirm-button:hover{background-color:#b71c1c}.delete-confirm-button:disabled{background-color:#999;cursor:not-allowed;opacity:.7}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;overflow:hidden}.App{background:#000;height:100vh;position:relative;width:100vw}.userbox{align-items:flex-end;background-color:#000;border:2px solid #181818;border-radius:12px;color:#f0f0f0;display:flex;flex-direction:column;font-size:18px;padding:10px;position:absolute;right:30px;top:10px}.userbox a{color:#4caf50;text-decoration:none}.userbox a:hover{text-decoration:underline}.user-help-text{color:#ccc;font-size:12px;font-style:italic}.instructions{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#000c;border:1px solid #ffffff1a;border-radius:10px;color:#fff;font-family:Arial,sans-serif;left:20px;max-height:90vh;max-width:350px;overflow-y:auto;padding:20px;position:absolute;top:20px;z-index:100}.instructions h2{color:#fff;font-size:24px;margin-bottom:15px;text-align:center}.instructions h3{color:#4caf50;font-size:18px;margin-bottom:10px;margin-top:15px}.instructions p{color:#ccc;font-size:14px;line-height:1.4;margin-bottom:8px}.instructions p:first-of-type{color:#4caf50;font-weight:700;margin-bottom:15px;text-align:center}.commands-section{margin-top:10px}.commands-toggle{align-items:center;background:none;border:none;color:#4caf50;cursor:pointer;display:flex;font-size:14px;font-weight:700;gap:5px;margin-bottom:10px;padding:5px 0}.commands-toggle:hover{color:#66bb6a}.commands-list{margin-left:10px}.key-highlight{color:#4caf50;font-weight:700}.gallery-controls{border-top:1px solid #fff3;margin-top:15px;padding-top:15px}.create-gallery-btn{background:linear-gradient(135deg,#4caf50,#45a049);border:none;border-radius:8px;box-shadow:0 2px 8px #4caf504d;color:#fff;cursor:pointer;font-size:14px;font-weight:700;padding:12px 16px;transition:all .3s ease;width:100%}.create-gallery-btn:hover{background:linear-gradient(135deg,#45a049,#3d8b40);box-shadow:0 4px 12px #4caf5066;transform:translateY(-2px)}.create-gallery-btn:active{box-shadow:0 2px 6px #4caf504d;transform:translateY(0)}.current-location{background-color:#ffffff1a;border:1px solid #fff3;border-radius:8px}.upload-section{border-top:1px solid #fff3;margin-top:15px;padding-top:15px}body:has(canvas:focus) .instructions{opacity:.3;transition:opacity .3s ease}body:has(canvas:focus) .instructions:hover{opacity:1}canvas{cursor:crosshair}canvas:focus{outline:none}.loading{color:#fff;font-size:18px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1000}.userbox.anonymous{background-color:#333;border:2px solid #444}.login-prompt{background-color:#ffffff1a;border:1px solid #fff3;border-radius:8px;margin-top:15px;padding:15px;text-align:center}.login-btn{background:linear-gradient(135deg,#2196f3,#1976d2);border:none;border-radius:8px;box-shadow:0 2px 8px #2196f34d;color:#fff;cursor:pointer;font-size:14px;font-weight:700;margin-top:10px;padding:10px 16px;transition:all .3s ease;width:100%}.login-btn:hover{background:linear-gradient(135deg,#1976d2,#0d47a1);box-shadow:0 4px 12px #2196f366;transform:translateY(-2px)}.login-btn:active{box-shadow:0 2px 6px #2196f34d;transform:translateY(0)}@media (max-width:768px){.instructions{left:10px;max-width:none;padding:15px;right:10px;top:10px}.instructions h2{font-size:20px}.instructions p{font-size:12px}}.delete-gallery-btn{background-color:#d32f2f;border:none;border-radius:8px;box-shadow:0 2px 8px #d32f2f4d;color:#fff;cursor:pointer;font-size:14px;font-weight:700;margin-top:10px;padding:12px 16px;transition:all .3s ease;width:100%}.delete-gallery-btn:hover{background-color:#b71c1c;box-shadow:0 4px 12px #d32f2f66;transform:translateY(-2px)}.delete-gallery-btn:active{box-shadow:0 2px 6px #d32f2f4d;transform:translateY(0)}.message-board-help{background-color:#4a90e2cc;border-radius:8px;bottom:20px;box-shadow:0 2px 10px #0003;left:50%;padding:10px 20px;position:fixed;text-align:center;transform:translateX(-50%);z-index:1000}.message-board-help h3{color:#fff;font-size:16px;margin-top:0}.message-board-help p{color:#fff;font-size:14px;margin-bottom:0}.mouse-settings{margin-top:15px}.invert-mouse-btn{background-color:#4a90e2;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background-color .2s;width:100%}.invert-mouse-btn:hover{background-color:#3a80d2}.invert-mouse-btn.active{background-color:#2c3e50}.owner-badge{background-color:#4caf50;border-radius:4px;color:#fff;display:inline-block;font-size:12px;margin-left:5px;padding:2px 6px}canvas.modal-open{pointer-events:none!important}body.modal-open{cursor:default!important}.gallery-modal button,.message-modal button,.signin-modal button,.signup-modal button{cursor:pointer!important;pointer-events:auto!important}.modal-content{pointer-events:all!important}.modal-content a,.modal-content button,.modal-content input,.modal-content select,.modal-content textarea{cursor:pointer!important;pointer-events:auto!important}.modal-overlay{align-items:center;background-color:#000000b3;bottom:0;display:flex;justify-content:center;left:0;pointer-events:all!important;position:fixed;right:0;top:0;z-index:10000}.modal-content{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #0003;max-height:90vh;overflow-y:auto;padding:20px}.signin-modal,.signup-modal{max-width:90vw;width:400px}.signup-form{margin:20px 0}.signup-button{background-color:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:background-color .2s;width:100%}.signup-button:hover{background-color:#218838}.signup-button:disabled{cursor:not-allowed;opacity:.5}.signin-link-button{background-color:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:background-color .2s}.signin-link-button:hover{background-color:#0056b3}.signin-link-button:disabled{cursor:not-allowed;opacity:.5}.modal-header{border-bottom:1px solid #eee;margin-bottom:20px;padding-bottom:10px}.modal-header h2{font-size:24px}.close-button{border-radius:50%;transition:background-color .2s}.close-button:hover{background-color:#f0f0f0;color:#333}.close-button:disabled{opacity:.5}.modal-body{margin-bottom:20px}.processing-indicator{border-radius:6px}.loading-spinner{border:3px solid #f3f3f3;height:30px;width:30px}.error-message{background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:6px;color:#721c24;margin-bottom:20px;padding:12px}.auth-button-container{display:flex;justify-content:center;margin-bottom:15px}.google-signin-button{align-items:center;background-color:#fff;border:1px solid #dadce0;border-radius:4px;color:#3c4043;cursor:pointer;display:flex;font-family:Roboto,sans-serif;font-size:14px;font-weight:500;justify-content:center;max-width:300px;padding:12px 16px;transition:box-shadow .2s;width:100%}.google-signin-button:hover{box-shadow:0 1px 2px 0 #3c40434d,0 1px 3px 1px #3c404326}.google-signin-button:disabled{cursor:not-allowed;opacity:.5}.gsi-material-button-content-wrapper{align-items:center;display:flex;justify-content:center;width:100%}.gsi-material-button-icon{align-items:center;display:flex;margin-right:12px}.google-icon{height:20px;width:20px}.gsi-material-button-contents{color:#3c4043;font-size:14px;font-weight:500}.auth-divider{margin:25px 0;position:relative;text-align:center}.auth-divider hr{border:none;border-top:1px solid #eee;margin:0}.auth-divider span{background-color:#fff;color:#666;font-size:14px;left:50%;padding:0 15px;position:absolute;top:-10px;transform:translateX(-50%)}.auth-footer{margin-top:20px;text-align:center}.auth-footer p{color:#666;font-size:14px;margin:0 0 10px}.signup-link-button{background-color:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:background-color .2s}.signup-link-button:hover{background-color:#0056b3}.signup-link-button:disabled{cursor:not-allowed;opacity:.5}.notification-message{animation:slideInRight .3s ease-out;background-color:#d4edda;border:1px solid #c3e6cb;border-radius:6px;box-shadow:0 2px 8px #0000001a;color:#155724;max-width:400px;padding:15px 40px 15px 15px;position:fixed;right:20px;top:20px;z-index:10001}.notification-message p{font-size:14px;line-height:1.4;margin:0}.notification-close{align-items:center;background:none;border:none;color:#155724;cursor:pointer;display:flex;font-size:18px;height:20px;justify-content:center;padding:0;position:absolute;right:10px;top:5px;width:20px}.notification-close:hover{color:#0a3622}@keyframes slideInRight{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}.artwork-info-panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#000000e6;border:1px solid #fff3;border-radius:12px;bottom:80px;box-shadow:0 4px 20px #0000004d;color:#fff;left:50%;min-width:300px;padding:20px 30px;position:fixed;text-align:center;transform:translateX(-50%);z-index:1001}.artwork-details h3{color:#fff;font-size:18px;font-weight:600;margin:0 0 8px}.artwork-details .artist-name{color:#ccc;font-size:14px;font-style:italic;margin:0 0 15px}.like-section{flex-wrap:wrap;gap:10px;justify-content:center}.like-button,.like-section{align-items:center;display:flex}.like-button{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:25px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;gap:8px;padding:8px 16px;transition:all .3s ease}.like-button:hover:not(:disabled){background:#fff3;border-color:#ffffff80;transform:translateY(-1px)}.like-button.liked{background:#e91e6333;border-color:#e91e6380;color:#e91e63}.like-button.liked:hover{background:#e91e634d;border-color:#e91e63b3}.like-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.heart-icon{font-size:16px;line-height:1}.like-count{font-size:14px;font-weight:600}.auth-required{color:#999;font-size:12px;margin:5px 0 0;text-align:center;width:100%}.artwork-help,.gallery-creation-help,.image-upload-help,.message-board-help{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#000c;border:1px solid #fff3;border-radius:10px;bottom:20px;color:#fff;left:50%;padding:15px 25px;position:fixed;text-align:center;transform:translateX(-50%);z-index:1000}.artwork-help h3,.gallery-creation-help h3,.image-upload-help h3,.message-board-help h3{font-size:16px;font-weight:600;margin:0 0 8px}.artwork-help p,.gallery-creation-help p,.image-upload-help p,.message-board-help p{font-size:14px;margin:0;opacity:.9}.processing-indicator{background-color:#f8f9fa;border-radius:8px;margin-bottom:20px;padding:20px;text-align:center}.loading-spinner{animation:spin 1s linear infinite;border:2px solid #f3f3f3;border-radius:50%;border-top-color:#007bff;height:20px;margin:10px auto;width:20px}.image-versions-info{background-color:#e9ecef;border-radius:4px;font-size:14px;margin-bottom:20px;padding:12px}.image-versions-info p{color:#495057;margin:4px 0}.image-upload-modal{max-height:80vh;max-width:600px;overflow-y:auto;width:90%}.image-preview-container{background-color:#f8f9fa;border:2px dashed #dee2e6;border-radius:8px;margin-bottom:20px;padding:20px;text-align:center}.image-preview{border-radius:4px;box-shadow:0 2px 8px #0000001a;max-height:300px;max-width:100%}.image-upload-modal .form-group{margin-bottom:20px}.image-upload-modal label{color:#333;display:block;font-weight:500;margin-bottom:8px}.image-upload-modal input[type=text]{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;font-size:16px;padding:12px;width:100%}.image-upload-modal input[type=text]:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.image-upload-modal input[type=text]:disabled{background-color:#f8f9fa;cursor:not-allowed}.file-info{background-color:#f8f9fa;border-radius:4px;margin-bottom:20px;padding:12px}.file-info p{color:#666;font-size:14px;margin:4px 0}.modal-footer{background-color:#f5f5f5;border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;margin:0 -20px -20px;padding:15px 20px}.cancel-button,.upload-button{border:none;border-radius:4px;cursor:pointer;font-size:14px;padding:10px 20px;transition:all .2s ease}.cancel-button{background-color:#6c757d;color:#fff}.cancel-button:hover:not(:disabled){background-color:#5a6268}.upload-button:hover:not(:disabled){background-color:#0056b3}.cancel-button:disabled,.upload-button:disabled{cursor:not-allowed;opacity:.6}.modal-header{align-items:center;background-color:#f5f5f5;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;margin:-20px -20px 20px;padding:15px 20px}.modal-header h2{color:#333;font-size:18px;margin:0}.close-button{align-items:center;background:none;border:none;color:#666;cursor:pointer;display:flex;font-size:24px;height:30px;justify-content:center;padding:0;width:30px}.close-button:hover:not(:disabled){color:#333}.close-button:disabled{cursor:not-allowed;opacity:.6}.artwork-delete-modal,.artwork-edit-modal{max-width:500px;min-width:400px;width:90%}.artwork-delete-modal h2,.artwork-edit-modal h2{color:#333;font-size:20px;margin:0 0 15px;text-align:center}.artwork-edit-modal .form-group{margin-bottom:20px}.artwork-edit-modal label{color:#333;display:block;font-weight:600;margin-bottom:8px}.artwork-edit-modal input[type=text]{border:2px solid #ddd;border-radius:6px;font-size:16px;padding:12px;transition:border-color .3s ease;width:100%}.artwork-edit-modal input[type=text]:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.artwork-delete-modal .artwork-title{background:#f8f9fa;border-left:4px solid #dc3545;border-radius:6px;color:#333;font-style:italic;font-weight:600;margin:15px 0;padding:10px}.artwork-delete-modal .warning-text{color:#dc3545;font-weight:500;margin:15px 0}.gallery-customization-modal{max-width:500px;min-width:400px;width:90%}.gallery-customization-modal .form-group{margin-bottom:20px}.gallery-customization-modal label{color:#333;display:block;font-weight:600;margin-bottom:8px}.gallery-customization-modal input[type=text]{border:2px solid #ddd;border-radius:6px;font-size:16px;padding:12px;transition:border-color .3s ease;width:100%}.gallery-customization-modal input[type=text]:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.color-input-group{align-items:center;display:flex;gap:10px}.color-picker{background:none;border:2px solid #ddd;border-radius:6px;cursor:pointer;height:40px;padding:0;width:60px}.color-picker:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.color-text-input{border:2px solid #ddd;border-radius:6px;flex:1 1;font-family:monospace;font-size:14px;padding:8px 12px;transition:border-color .3s ease}.color-text-input:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.color-preview{background-color:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin-top:20px;padding:15px}.color-preview h4{color:#495057;font-size:14px;margin:0 0 10px}.preview-container{border:1px solid #dee2e6;border-radius:6px;display:flex;flex-direction:column;gap:8px;overflow:hidden}.ceiling-preview,.floor-preview{color:#333;font-size:14px;font-weight:600;padding:20px;text-align:center;text-shadow:1px 1px 2px #fffc;transition:all .3s ease}.ceiling-preview{border-bottom:1px solid #dee2e6}.submit-button{background:#007bff;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .3s ease}.submit-button:hover:not(:disabled){background:#0056b3;transform:translateY(-1px)}.submit-button:disabled{background:#6c757d;cursor:not-allowed;transform:none}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:25px}.modal-actions button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .3s ease}.submit-btn{background:#007bff;color:#fff}.submit-btn:hover:not(:disabled){background:#0056b3;transform:translateY(-1px)}.submit-btn:disabled{background:#6c757d;cursor:not-allowed}.delete-btn{background:#dc3545;color:#fff}.delete-btn:hover{background:#c82333;transform:translateY(-1px)}.cancel-btn{background:#6c757d;color:#fff}.cancel-btn:hover{background:#545b62;transform:translateY(-1px)}.modal-help{border-top:1px solid #eee;margin-top:15px;padding-top:15px;text-align:center}.user-info-modal{max-width:500px;min-width:400px;width:90%}.user-info-modal .form-group{margin-bottom:20px}.user-info-modal label{color:#333;display:block;font-weight:600;margin-bottom:8px}.user-info-modal input[type=text]{border:2px solid #ddd;border-radius:6px;font-size:16px;padding:12px;transition:border-color .3s ease;width:100%}.user-info-modal input[type=text]:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.field-help{color:#666;font-size:12px;font-style:italic;margin-top:5px}.current-info{background-color:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin-top:20px;padding:15px}.current-info h4{color:#495057;font-size:14px;margin:0 0 10px}.current-info p{color:#666;font-size:14px;margin:5px 0}.current-info strong{color:#333}.modal-help p{color:#666;font-size:12px;margin:0}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.image-uploader{margin-top:10px;width:100%}.upload-area{background-color:#f8f8f8;border:2px dashed #ccc;border-radius:8px;cursor:pointer;padding:20px;text-align:center;transition:all .3s ease}.upload-area.dragging{background-color:#007bff1a;border-color:#007bff}.upload-area.uploading{background-color:#28a7451a;border-color:#28a745;cursor:default}.upload-area.disabled{background-color:#dc35451a;border-color:#dc3545;cursor:not-allowed}.upload-area p{color:#666;margin:5px 0}.upload-button{background-color:#007bff;border-radius:4px;color:#fff;cursor:pointer;display:inline-block;margin-top:10px;padding:8px 16px;transition:background-color .3s ease}.upload-button:hover{background-color:#0056b3}.upload-error{background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;margin-top:10px;padding:8px}.upload-form{margin-bottom:15px;width:100%}.upload-input{border:1px solid #ccc;border-radius:4px;font-size:14px;margin-bottom:10px;padding:8px;width:100%}textarea.upload-input{height:60px;resize:vertical}.current-location{background-color:#e9ecef;border-radius:4px;margin-top:15px;padding:10px}.current-location h3{font-size:16px;margin-bottom:10px;margin-top:0}.current-location p{font-size:14px;margin:5px 0}.upload-progress{align-items:center;display:flex;flex-direction:column;gap:15px;padding:20px}.upload-progress .loading-message{color:#28a745;font-weight:500;line-height:1.4;max-width:300px;text-align:center}