.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-darkest);display:flex;align-items:center;justify-content:center;z-index:2000}.login-dialog{background:var(--bg-dark);border:1px solid var(--bg-light);border-radius:var(--radius-lg);padding:var(--spacing-xl);width:100%;max-width:320px;box-shadow:var(--shadow-lg)}.login-title{font-size:20px;font-weight:600;text-align:center;margin-bottom:var(--spacing-xs);background:linear-gradient(135deg,var(--accent),#ff9b6b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-subtitle{font-size:13px;color:var(--text-secondary);text-align:center;margin-bottom:var(--spacing-lg)}.login-dialog .form-group{margin-bottom:var(--spacing-md)}.login-dialog input{width:100%;text-align:center;font-size:16px;padding:var(--spacing-md)}.login-error{color:var(--danger);font-size:13px;text-align:center;margin-bottom:var(--spacing-md)}.login-dialog .btn-primary{width:100%;padding:var(--spacing-md)}.login-dialog .btn-primary:disabled{opacity:.5;cursor:not-allowed}.project-picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-darkest);display:flex;align-items:center;justify-content:center;z-index:1000}.project-picker-dialog{background:var(--bg-dark);border:1px solid var(--bg-light);border-radius:var(--radius-lg);padding:var(--spacing-xl);width:100%;max-width:420px;box-shadow:var(--shadow-lg)}.project-picker-title{font-size:24px;font-weight:600;text-align:center;margin-bottom:var(--spacing-lg);background:linear-gradient(135deg,var(--accent),#ff9b6b);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dialog-section{background:var(--bg-medium);border-radius:var(--radius-md);padding:var(--spacing-md);margin-bottom:var(--spacing-md)}.dialog-section:last-child{margin-bottom:0}.dialog-section h2{font-size:14px;font-weight:500;color:var(--text-secondary);margin-bottom:var(--spacing-md)}.form-group{margin-bottom:var(--spacing-md)}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:12px;color:var(--text-secondary);margin-bottom:var(--spacing-xs);text-transform:uppercase;letter-spacing:.5px}.form-row{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.form-row .form-group{flex:1;margin-bottom:0}.btn-full{width:100%}.file-upload{cursor:pointer;margin-top:var(--spacing-sm)}.recent-projects{max-height:180px;overflow-y:auto;margin-bottom:var(--spacing-sm)}.recent-project-item{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-dark);border:1px solid transparent;border-radius:var(--radius-sm);margin-bottom:var(--spacing-xs);cursor:pointer;transition:all .2s;text-align:left;color:var(--text-primary);font-family:inherit;font-size:14px}.recent-project-item:hover{background:var(--bg-light);border-color:var(--accent-dim)}.recent-project-item:last-child{margin-bottom:0}.recent-project-name{font-weight:500}.recent-project-dims{font-size:11px;color:var(--text-dim);font-family:var(--font-mono)}.empty-state{color:var(--text-dim);font-style:italic;text-align:center;padding:var(--spacing-md)}.editor{display:flex;flex-direction:column;height:100vh;background:var(--bg-darkest)}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-dark);border-bottom:1px solid var(--bg-light);z-index:100}.header-left{display:flex;align-items:center;gap:var(--spacing-sm)}.project-title{font-weight:600}.project-dims{color:var(--text-dim);font-size:12px;font-family:var(--font-mono)}.header-right{display:flex;align-items:center;gap:var(--spacing-sm)}.history-controls{display:flex;align-items:center;gap:4px;background:var(--bg-dark);border:1px solid var(--bg-light);border-radius:var(--radius-sm);padding:2px 6px}.history-position{font-family:var(--font-mono);font-size:11px;color:var(--text-dim);min-width:40px;text-align:center}.btn-icon{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:16px;background:transparent;border:none;color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm);transition:background .15s,color .15s}.btn-icon:hover:not(.btn-disabled){background:var(--bg-light);color:var(--accent)}.btn-icon.btn-disabled{color:var(--text-dim);cursor:not-allowed;opacity:.4}.saving-indicator{font-size:11px;color:var(--accent);margin-left:var(--spacing-sm);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.history-warning{font-size:11px;color:#f59e0b;margin-left:var(--spacing-sm);background:#f59e0b1a;padding:2px 8px;border-radius:var(--radius-sm)}.canvas-container{flex:1;position:relative;overflow:hidden}.canvas-container canvas{display:block}.control-panel{position:fixed;left:var(--spacing-md);bottom:var(--spacing-md);width:200px;background:#141416f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--bg-light);border-radius:var(--radius-md);padding:var(--spacing-md);z-index:100}.panel-section{margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--bg-light)}.panel-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.panel-section>label{display:block;font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--spacing-sm)}.button-group{display:flex;gap:2px}.btn-toggle{flex:1;padding:var(--spacing-xs) var(--spacing-sm);background:var(--bg-dark);color:var(--text-secondary);border:1px solid var(--bg-lighter);font-size:12px}.btn-toggle.active{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-toggle:not(.active):hover{background:var(--bg-light)}.color-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-xs)}.color-row:last-child{margin-bottom:0}.color-row>span{font-size:11px;color:var(--text-secondary);flex-shrink:0;width:70px}.color-input-group{display:flex;align-items:center;gap:4px}.color-input-group input[type=color]{width:28px;height:22px;padding:0;border:1px solid var(--bg-lighter);border-radius:3px;cursor:pointer;flex-shrink:0}.hex-input{width:70px;padding:2px 4px;font-family:var(--font-mono);font-size:10px;background:var(--bg-dark);border:1px solid var(--bg-lighter);border-radius:3px;color:var(--text-primary);text-transform:lowercase}.hex-input:focus{outline:none;border-color:var(--accent)}.panel-hint{font-size:10px;color:var(--text-secondary);margin:4px 0 0;font-style:italic}.cube-count{font-family:var(--font-mono);font-size:24px;font-weight:600;color:var(--accent)}.btn-full{width:100%;margin-bottom:var(--spacing-sm)}.btn-full:last-child{margin-bottom:0}.editor-hint{position:fixed;bottom:var(--spacing-md);left:50%;transform:translate(-50%);background:#000000b3;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-md);font-size:12px;color:var(--text-secondary);pointer-events:none;z-index:50}:root{--bg-darkest: #0a0a0b;--bg-dark: #141416;--bg-medium: #1e1e22;--bg-light: #2a2a30;--bg-lighter: #3a3a42;--text-primary: #e8e8eb;--text-secondary: #9a9aa3;--text-dim: #5a5a65;--accent: #ff6b35;--accent-hover: #ff8555;--accent-dim: rgba(255, 107, 53, .2);--success: #4ade80;--danger: #ef4444;--danger-hover: #f87171;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--font-family: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", "Fira Code", "Consolas", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-family);font-size:14px;color:var(--text-primary);background:var(--bg-darkest);line-height:1.5}input[type=text],input[type=number]{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-dark);border:1px solid var(--bg-lighter);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:inherit;transition:border-color .2s,box-shadow .2s}input[type=text]:focus,input[type=number]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}input[type=number]{text-align:center;font-family:var(--font-mono)}input[type=color]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:36px;height:28px;border:none;border-radius:var(--radius-sm);cursor:pointer;background:transparent}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:2px solid var(--bg-lighter);border-radius:var(--radius-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);font-size:14px;font-weight:500;font-family:inherit;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all .2s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--bg-light);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-lighter)}.btn-small{padding:var(--spacing-xs) var(--spacing-sm);font-size:12px}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--bg-lighter);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-darkest);color:var(--text-secondary);font-size:16px}input[type=password]{width:100%;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-dark);border:1px solid var(--bg-lighter);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:inherit;transition:border-color .2s,box-shadow .2s}input[type=password]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
