/* Additional styles for the generate page */

/* Toggle checkbox styling */
.toggle-checkbox {
    appearance: none;
    width: 40px;
    height: 20px;
    background-color: hsl(var(--muted));
    border-radius: 20px;
    position: relative;
    cursor: pointer;
    transition: background-color 0.3s;
}

.toggle-checkbox:checked {
    background-color: hsl(var(--primary));
}

.toggle-checkbox::before {
    content: "";
    position: absolute;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background-color: white;
    top: 2px;
    left: 2px;
    transition: transform 0.3s;
}

.toggle-checkbox:checked::before {
    transform: translateX(20px);
}

/* Model viewer styling */
#model-viewer {
    background: linear-gradient(to bottom right, #1a1a2e, #16213e);
    position: relative;
}

#three-canvas {
    width: 100%;
    height: 100%;
    display: block;
}

#drop-zone {
    transition: opacity 0.3s, border-color 0.3s;
}

#drop-zone.active {
    border-color: hsl(var(--primary));
}

#drop-zone.hidden {
    opacity: 0;
    pointer-events: none;
}

/* Loading spinner */
.spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    border-top-color: hsl(var(--primary));
    animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

#loading-screen {
    background: rgba(0, 0, 0, 0.85);
}

#loading-screen.visible {
    opacity: 1;
    pointer-events: auto;
}

/* Fix for layout on generate page */
@media (min-width: 700px) {
    .lg\:flex-row {
        flex-direction: row !important;
    }

    .lg\:w-1\/3 {
        width: 33.333333% !important;
    }

    .lg\:w-2\/3 {
        width: 66.666667% !important;
    }

    .lg\:sticky {
        position: sticky !important;
    }

    .lg\:top-24 {
        top: 6rem !important;
    }

    .lg\:self-start {
        align-self: flex-start !important;
    }
}

/* Preview images */
.preview-item {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    overflow: hidden;
}

.preview-image-container {
    position: relative;
    aspect-ratio: 1;
    background-color: #0f0f0f;
    border-radius: 0.5rem;
    overflow: hidden;
}

.preview-image {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.preview-label {
    font-size: 0.75rem;
    color: hsl(var(--muted-foreground));
    text-align: center;
}

/* Generation button */
#generate-btn:disabled {
    cursor: not-allowed;
}

/* Input styling */
input[type="number"] {
    background-color: hsl(var(--background));
}

input[type="color"] {
    -webkit-appearance: none;
    border: none;
    border-radius: 4px;
    overflow: hidden;
    cursor: pointer;
}

input[type="color"]::-webkit-color-swatch-wrapper {
    padding: 0;
}

input[type="color"]::-webkit-color-swatch {
    border: none;
}

/* Gradient preview styling */
#light-color-gradient-preview {
    background: linear-gradient(to right, #CCE0FF, #FFFFFF);
}

.color-stop-item:hover .remove-color-stop {
    display: block;
}

select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.5rem center;
    background-size: 1rem;
    padding-right: 2rem;
}

/* Animation for the test buttons */
@keyframes pulse {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.05);
    }

    100% {
        transform: scale(1);
    }
}

.pulse-animation {
    animation: pulse 0.5s ease-in-out;
}

/* Tooltip styling */
.tooltip {
    position: relative;
    display: inline-block;
}

.tooltip .tooltip-text {
    visibility: hidden;
    width: 120px;
    background-color: hsl(var(--popover));
    color: hsl(var(--popover-foreground));
    text-align: center;
    border-radius: 6px;
    padding: 5px;
    position: absolute;
    z-index: 1;
    bottom: 125%;
    left: 50%;
    margin-left: -60px;
    opacity: 0;
    transition: opacity 0.3s;
    font-size: 0.75rem;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    border: 1px solid hsl(var(--border));
}

.tooltip:hover .tooltip-text {
    visibility: visible;
    opacity: 1;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    #preview-container {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .grid-cols-3 {
        grid-template-columns: 1fr;
    }

    .grid-cols-4 {
        grid-template-columns: 1fr;
    }
}