/* ==========================================================================
   Thuisbatterij Plaatsing Checker — Custom Styles
   ========================================================================== */

/* Score Gauge */
.score-gauge {
    width: 160px;
    height: 160px;
    position: relative;
}

.score-gauge svg {
    transform: rotate(-90deg);
}

.score-gauge__track,
.score-gauge__fill {
    fill: none;
    stroke-width: 18;
    stroke-linecap: round;
}

.score-gauge__track {
    stroke: #fff;
}

.score-gauge__fill {
    transition: stroke-dashoffset 1.5s ease-in-out, stroke 0.5s ease;
}

.score-gauge__fill--success {
    stroke: var(--clr-success);
}

.score-gauge__fill--warning {
    stroke: var(--clr-warning);
}

.score-gauge__fill--danger {
    stroke: var(--clr-danger);
}

.score-gauge__value--success { color: var(--clr-success); }
.score-gauge__value--warning { color: var(--clr-warning); }
.score-gauge__value--danger  { color: var(--clr-danger); }

.score-gauge__value {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Upload Zone */
.upload-zone {
    border: 2px dashed var(--bs-gray-400);
    border-radius: var(--bs-border-radius-lg);
    transition: border-color 0.2s ease, background-color 0.2s ease;
    cursor: pointer;
    min-height: 200px;
}

.upload-zone:hover,
.upload-zone.dragover {
    border-color: var(--clr-primary);
    background-color: rgba(var(--clr-primary-rgb), 0.05);
}

/* Preview Thumbnails */
.preview-thumb {
    width: 120px;
    height: 120px;
    object-fit: cover;
    border-radius: var(--bs-border-radius);
}

.preview-item {
    position: relative;
    display: inline-block;
}

.preview-item__remove {
    position: absolute;
    top: -8px;
    right: -8px;
    width: 24px;
    height: 24px;
    padding: 0;
    line-height: 24px;
    font-size: 12px;
}

/* Criteria cards */
.criteria-icon {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--bs-border-radius);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.criteria-toggle {
    cursor: pointer;
    user-select: none;
    transition: background-color 0.15s ease;
}

.criteria-toggle:hover {
    background-color: var(--bs-gray-100);
}

.criteria-toggle__arrow {
    font-size: 1rem;
    color: var(--bs-secondary);
    transition: transform 0.25s ease;
    flex-shrink: 0;
}

.criteria-toggle[aria-expanded="true"] .criteria-toggle__arrow {
    transform: rotate(180deg);
}

/* Geuploade foto's in resultaten */
.result-images {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .5rem;
}

.result-image-slot {
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: var(--bs-border-radius);
    overflow: hidden;
    background: #f1f5f9;
    border: 2px solid var(--bs-border-color);
}

.result-image-thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    cursor: pointer;
    transition: opacity 0.15s ease;
    display: block;
}

.result-image-thumb:hover {
    opacity: .85;
}

.result-image-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #cbd5e1;
    font-size: 2rem;
}

/* Status badges — specifieke achtergrondkleuren */
.status-veilig {
    background-color: rgba(var(--clr-success-rgb), 0.1);
    color: var(--clr-success);
}

.status-waarschuwing {
    background-color: rgba(var(--clr-warning-rgb), 0.1);
    color: var(--clr-warning);
}

.status-onveilig {
    background-color: rgba(var(--clr-danger-rgb), 0.1);
    color: var(--clr-danger);
}

.status-niet_beoordeeld {
    background-color: rgba(var(--bs-secondary-rgb), 0.1);
    color: var(--bs-secondary);
}

/* Wizard Steps */
.wizard-step {
    display: none;
}

.wizard-step.active {
    display: block;
}

/* Loading spinner */
.analyze-spinner {
    width: 32px;
    height: 32px;
}

/* Score counter animation */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translate(-50%, -40%);
    }
    to {
        opacity: 1;
        transform: translate(-50%, -50%);
    }
}

.score-gauge__value--animated {
    animation: fadeInUp 0.8s ease forwards;
}
