/* Custom styles for PixelForge Studio */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; user-select: none; } /* Dropdown menu styles */ .menu-dropdown:hover .absolute { display: block !important; } /* Canvas styles */ #photo-canvas { cursor: crosshair; } #main-canvas { transform-origin: center center; transition: transform 0.3s ease; } /* Tool button active state */ .tool-btn.active { background-color: #3b82f6; color: white; } /* Layer item styles */ .layer-item.active { background-color: #3b82f6; } .layer-item:hover { background-color: #374151; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #1f2937; } ::-webkit-scrollbar-thumb { background: #4b5563; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #6b7280; } /* Color picker styles */ #fg-color { position: relative; z-index: 2; } #bg-color { position: absolute; bottom: -8px; right: -8px; z-index: 1; } /* Panel transitions */ .panel { transition: all 0.3s ease; } /* Tooltips */ [title] { position: relative; } [title]:hover::after { content: attr(title); position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); background-color: #1f2937; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px; white-space: nowrap; z-index: 1000; pointer-events: none; margin-bottom: 4px; } /* Zoom controls */ #zoom-controls button { transition: all 0.2s ease; } #zoom-controls button:hover { transform: scale(1.1); } /* Canvas grid */ .canvas-grid { background-image: linear-gradient(rgba(255,255,255,0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.1) 1px, transparent 1px); background-size: 20px 20px; background-position: -1px -1px; } /* Loading spinner */ .loading-spinner { border: 3px solid #1f2937; border-top: 3px solid #3b82f6; border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Modal backdrop */ .modal-backdrop { backdrop-filter: blur(4px); } /* Layer thumbnail */ .layer-thumbnail { image-rendering: pixelated; image-rendering: -moz-crisp-edges; image-rendering: crisp-edges; } /* Selection box */ .selection-box { border: 1px dashed #3b82f6; background-color: rgba(59, 130, 246, 0.1); position: absolute; pointer-events: none; } /* Transform handles */ .transform-handle { width: 8px; height: 8px; background-color: white; border: 1px solid #3b82f6; position: absolute; } /* Responsive adjustments */ @media (max-width: 1024px) { .w-80 { width: 16rem; } } @media (max-width: 768px) { .w-80 { display: none; } } /* File upload area */ .file-upload-area { border: 2px dashed #4b5563; border-radius: 8px; padding: 2rem; text-align: center; transition: all 0.3s ease; } .file-upload-area.dragover { border-color: #3b82f6; background-color: rgba(59, 130, 246, 0.1); } /* History panel */ .history-item { padding: 0.5rem; cursor: pointer; border-radius: 4px; transition: background-color 0.2s ease; } .history-item:hover { background-color: #374151; } .history-item.active { background-color: #3b82f6; } /* Filter preview */ .filter-preview { width: 60px; height: 60px; border-radius: 4px; overflow: hidden; cursor: pointer; transition: transform 0.2s ease; } .filter-preview:hover { transform: scale(1.1); } /* Tool options panel */ .tool-options { background-color: #1f2937; border-radius: 4px; padding: 1rem; margin-top: 1rem; } /* Brush preview */ .brush-preview { width: 40px; height: 40px; border: 1px solid #4b5563; border-radius: 4px; display: flex; align-items: center; justify-content: center; } .brush-preview-circle { border-radius: 50%; background-color: currentColor; } /* Animation classes */ .fade-in { animation: fadeIn 0.3s ease-in; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .slide-in { animation: slideIn 0.3s ease-out; } @keyframes slideIn { from { transform: translateY(-10px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }