/* ==========================================================================
   Drobe Configurator – CSS
   ========================================================================== */

/* ==========================================================================
   Fullscreen Mode
   ========================================================================== */

.drobe-configurator-container.fullscreen-mode {
    width: 100%;
    height: 100vh;
    min-height: unset;
    margin: 0;
    border-radius: 0;
    position: relative; /* Changed from fixed to relative */
}

/* ==========================================================================
   1. Reset og base
   ========================================================================== */

/* Drobe Configurator – CSS for Shortcode */

/* 1. Container layout for shortcode */
.drobe-configurator-container {
    position: relative;
    width: 100%;
    height: 70vh; /* Justerbar høyde */
    min-height: 500px; /* Minimum høyde */
    background-color: #000;
    color: #fff;
    overflow: hidden;
    border-radius: 8px; /* Litt avrundede hjørner */
    margin: 20px 0; /* Margin til resten av siden */
}

/* Sikre at konfigurator ikke påvirker side-styling */
.drobe-configurator-container * {
    box-sizing: border-box;
}

#primary {
    flex: 1;
}

#main {
    flex: 1;
}

.hidden {
    display: none;
}

:root {
    --circle-radius: 160px;
}

/* Deaktiver tekstmarkering over hele siden */
* {
    user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
}

/* ==========================================================================
    2. Bakgrunnsbilde og Hotspots
    ========================================================================== */

#configurator-background-image-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    overflow: hidden;
}

/* Create wrapper that maintains responsive hotspot positioning */
.image-aspect-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    /* No aspect ratio restriction - let image fill container */
}

#configurator-background-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* Hotspots Container - positioned relative to the aspect ratio wrapper */
.hotspots-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 9999;
    pointer-events: none;
    /* Now hotspots are positioned relative to the image's actual aspect ratio */
}

/* Base Hotspot Styling */
.hotspot {
    position: absolute;
    width: clamp(30px, 4vw, 45px); /* Smaller responsive size */
    height: clamp(30px, 4vw, 45px);
    border-radius: 50%;
    cursor: pointer;
    pointer-events: all;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    z-index: 99999; /* Highest z-index to stay above everything */
    background: rgba(255, 255, 255, 0.2);
    border: 2px solid rgba(255, 255, 255, 0.8);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(0, 0, 0, 0.1);
}

.hotspot-pulse {
    width: 80%; /* Relative to hotspot size */
    height: 80%;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.4);
    border: 2px solid white;
    animation: pulse 2s infinite;
    position: absolute;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
}

.hotspot-label {
    position: absolute;
    bottom: calc(-100% - 8px); /* Position below hotspot */
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 4px 8px;
    border-radius: 4px;
    font-size: clamp(10px, 2vw, 12px); /* Responsive font */
    font-weight: bold;
    text-transform: uppercase;
    white-space: nowrap;
    opacity: 0; /* Hidden by default */
    transition: opacity 0.3s ease;
    pointer-events: none;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}

/* Hotspot Positioning - Based on actual suitcase image coordinates */
/* These positions are now relative to the image's aspect ratio, not the container */

/* CLOSED VIEW POSITIONS (default) */
.hotspot-top-base {
    /* Position on the suitcase top section - moved left as requested */
    top: 39%; /* Top section of the suitcase image */
    left: 54%; /* Left side of center on the suitcase */
    transform: translate(-50%, -50%);
}

.hotspot-mid {
    /* Position on the suitcase middle section */
    top: 48%; /* Middle section of the suitcase */
    left: 43%; /* Left side where the middle compartment is */
    transform: translate(-50%, -50%);
}

.hotspot-wheels {
    /* Position on the suitcase bottom/wheels area */
    top: 66%; /* Moved up significantly from 68% to be much more accessible */
    left: 55%; /* Right side where wheels are positioned */
    transform: translate(-50%, -50%);
    z-index: 99999; /* Highest z-index to ensure clickability above everything */
}

/* OPEN VIEW POSITIONS */
.hotspots-container.view-open .hotspot-top-base {
    top: 22%;
    left: 54%;
}

.hotspots-container.view-open .hotspot-mid {
    top: 41%;
    left: 43%;
}

.hotspots-container.view-open .hotspot-wheels {
    top: 66%; /* Same as closed view */
    left: 55%; /* Same as closed view */
}

/* ZOOM VIEW POSITIONS */
.hotspots-container.view-zoom .hotspot-top-base {
    top: 35%;
    left: 61%;
}

.hotspots-container.view-zoom .hotspot-mid {
    top: 49%;
    left: 42%;
}

.hotspots-container.view-zoom .hotspot-wheels {
    top: 62%;
    left: 62%;
}

/* Active State */
.hotspot.active .hotspot-pulse {
    background: rgba(255, 255, 255, 0.8);
    border-color: #ffffff;
    animation: pulse-active 1.5s infinite;
}

.hotspot.active .hotspot-label {
    opacity: 1;
    background: rgba(255, 255, 255, 0.9);
    color: black;
}

/* Hover States */
.hotspot:hover .hotspot-pulse {
    background: rgba(255, 255, 255, 0.5);
    transform: scale(1.1);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
}

.hotspot:hover .hotspot-label {
    opacity: 1;
}

/* Animations */
@keyframes pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.7);
    }
    70% {
        box-shadow: 0 0 0 10px rgba(255, 255, 255, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
    }
}

@keyframes pulse-active {
    0% {
        box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.7);
    }
    70% {
        box-shadow: 0 0 0 12px rgba(255, 255, 255, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
    }
}

/* ==========================================================================
    How to use bilde
    ========================================================================== */

#how-to-use-container {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    text-align: center;
    z-index: 10;
    overflow: hidden;
}

#how-to-use-image {
    display: block;
    margin: 0 auto;
    max-width: 100%;
    /* Sørg for at bildet ikke overskrider containerens bredde */
    height: auto;
    /* Bevar proporsjonene */
    object-fit: contain;
    /* Sørg for at bildet ikke klippes */
}

@media (max-width: 768px) {
    #how-to-use-container {
        width: 95%;
        /* Nesten full bredde på mobil */
    }
}

@media (min-width: 769px) {
    #how-to-use-container {
        width: 80%;
        /* Standard bredde på større skjermer */
    }
}

/* ==========================================================================
    Navigasjon, vertikal liste
    ========================================================================== */

/* Container for navigasjonen */
#configurator-steps {
    position: absolute;
    top: 17.5%;
    right: 3%;
    height: 65%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    /* Fordeler trinnene jevnt over høyden */
    padding: 20px 0;
    /* Litt padding på topp og bunn */
    z-index: 1000;
}

@media screen and (max-width: 600px) {
    #configurator-steps {
        right: 1.5%;
        top: 10.5%;
        height: 65%;
    }
}

/* Hver steg-container */
#configurator-steps .step-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    cursor: pointer;
}

/* Label over hver knapp */
#configurator-steps .step-label {
    font-size: 14px;
    color: #fff;
    text-transform: uppercase;
    font-weight: bold;
    margin-bottom: 4px;
    text-align: center;
}

@media screen and (max-width: 600px) {
    #configurator-steps .step-label {
        font-size: 12px;
    }
}

/* Selve knappen (dot) */
#configurator-steps .step {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 8px rgba(255, 255, 255, 0.8);
}

/* Vertikal linje som forbinder stegene */
#configurator-steps .step-container:not(:last-child)::after {
    content: "";
    position: absolute;
    width: 2px;
    height: calc((100dvh - 5 * 14px) / 10);
    /* Beregner høyden basert på tilgjengelig plass */
    background: rgba(255, 255, 255, 0.5);
    top: calc(14px + 20px);
    /* Plasserer linjen rett under sirkelen */
    left: 50%;
    transform: translateX(-50%);
    z-index: 1;
}

/* Aktiv eller fullført steg */
#configurator-steps .step-container.active .step,
#configurator-steps .step-container.completed .step {
    background: white;
    box-shadow: 0 0 12px rgba(240, 192, 64, 1);
}

/* Kommende steg */
#configurator-steps .step-container.upcoming .step {
    opacity: 0.4;
    background: rgba(255, 255, 255, 0.3);
    box-shadow: none;
}

/* ==========================================================================
    Preview
    ========================================================================== */

#cabin-product-container {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    text-align: center;
    color: white;
    overflow: hidden;
    padding: 5% 0;
}

#configurator-background-image-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

#configurator-background-image-container img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -1;
}

.step-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}

/* Step Label (Text Above) */
.step-label {
    font-size: 10px;
    color: white;
    text-transform: uppercase;
    font-weight: bold;
    margin-bottom: 6px;
    /* Space between label and circle */
}

/* White Circle Under Step Label */
.step {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: white;
    position: relative;
    z-index: 9;
    /* Ensure it's above everything */
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0px 0px 8px rgba(255, 255, 255, 0.8);
    /* Glow effect */
}

/* Vertical Line Between Steps */
.step-container:not(:last-child)::after {
    content: "";
    position: absolute;
    width: 2px;
    height: 30px;
    /* Adjusted line height */
    background: rgba(255, 255, 255, 0.5);
    top: calc(100% + 5px);
    /* Adjusted so it aligns with the next step */
    left: 50%;
    transform: translateX(-50%);
}

/* Completed Steps with Glow */
.completed .step {
    background: white;
    box-shadow: 0px 0px 12px rgba(255, 255, 255, 1);
    /* Stronger glow */
}

/* Upcoming Steps Faded */
.upcoming .step {
    opacity: 0.4;
    background: rgba(255, 255, 255, 0.3);
    box-shadow: none;
}

.upcoming {
    opacity: 0.4;
}

/* PRODUCT INFO */

#color-info {
    position: absolute;
    top: 20vh;
    left: 50%;
    transform: translateX(-50%);
    font-size: 16px;
    line-height: 0.9;
    color: white;
}

/* RESERVE SECTION */

/* --- Reserve Section Container --- */
#reserve-section {
    position: absolute;
    bottom: 1%;
    left: 50%;
    transform: translateX(-50%);
    z-index: 20;
    text-align: center;
    width: 90%;
    max-width: 400px;
    padding: 20px;
    border-radius: 20px;
    color: white;
}

#reserve-section.hidden {
    display: none;
}

/* --- Reserve Button --- */
#reserve-button {
    background: rgba(255, 255, 255, 0.8);
    color: #1c3055;
    font-size: 16px;
    font-weight: bold;
    padding: 10px 70px;
    border: none;
    border-radius: 15px;
    cursor: pointer;
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
    transition: all 0.3s ease;
}

#reserve-button:hover {
    box-shadow: 0 0 20px rgba(255, 255, 255, 0.8);
    transform: scale(1.05);
}

/* --- Pricing Info --- */
#pricing-info {
    font-size: 16px;
    margin-top: 12px;
}

.earlybird {
    margin-bottom: 4px;
}

.original-price {
    text-decoration: line-through;
    opacity: 0.7;
    margin-left: 6px;
}

.discounted-price {
    font-size: 18px;
    font-weight: bold;
    margin-top: 2px;
}

.reservation-price {
    font-size: 13px;
    margin-top: 4px;
}

.reservation-price .price-value {
    font-weight: bold;
}

/* --- Product Details Section --- */
#product-details {
    margin-top: 40px;
    text-align: left;
}

details {
    background: rgba(255, 255, 255, 0.1);
    padding: 6px 10px;
    border-radius: 8px;
    margin-bottom: 6px;
    font-size: 13px;
    transition: all 0.3s ease;
}

summary {
    font-weight: bold;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.arrow {
    font-size: 10px;
    transition: transform 0.3s ease;
}

details[open] .arrow {
    transform: rotate(90deg);
}

/* --- Responsive --- */
@media (max-width: 768px) {
    #reserve-section {
        width: 95%;
        padding: 16px;
    }

    #reserve-button {
        font-size: 14px;
        padding: 8px 24px;
    }

    details {
        font-size: 12px;
    }

    details {
        background: rgba(255, 255, 255, 0.15);
        padding: 3px 10px;
        border-radius: 8px;
        margin-bottom: 6px;
        font-size: 13px;
        transition: all 0.3s ease;
    }

    #reserve-section {
        position: absolute;
        bottom: -1%;
        left: 50%;
        transform: translateX(-50%);
        z-index: 20;
        text-align: center;
        width: 90%;
        max-width: 400px;
        padding: 20px;
        border-radius: 20px;
        color: white;
    }

    #product-details {
        margin-top: 10px;
        text-align: left;
    }

    #pricing-info {
        font-size: 14px;
        margin-top: 12px;
    }

    .discounted-price {
        font-size: 14px;
        font-weight: bold;
        margin-top: 2px;
    }

    #color-info {
        position: absolute;
        top: 20vh;
        left: 50%;
        transform: translateX(-50%);
        font-size: 14px;
        line-height: 0.3;
        color: white;
    }
}

/* === Special Launch Offer Reservation === */

/* Grid-oppsett: 2 rader med 3 kolonner */
.color-select-container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    /* 3 jevne kolonner */
    gap: 2rem;
    max-width: 660px;
    margin: 0 auto;
}

/* Hver color-select-wrapper */
.color-select {
    aspect-ratio: 1 / 1;
    width: 100%;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    cursor: pointer;
}

/* Hjulbilde */
.color-select img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: all 0.3s ease;
    border-radius: 50%;
    border: 2px solid white;
}

/* Hover-effekt */
.color-select:hover img {
    transform: scale(1.05);
}

/* Aktivt valg */
.color-select.active img {
    transform: scale(1.12);
    box-shadow: 0 0 12px currentColor;
    border-color: currentColor;
}

/* Glow-farger basert på data-color */
.color-select[data-color="blue"].active img {
    color: #3daeff;
}

.color-select[data-color="orange"].active img {
    color: #ffa500;
}

.color-select[data-color="green"].active img {
    color: #7bdc62;
}

.color-select[data-color="yellow"].active img {
    color: #ffd700;
}

.color-select[data-color="red"].active img {
    color: #ff4b4b;
}

.color-select[data-color="black"].active img {
    color: #ccc;
}

/* ==========================================================================
    3. SVG container og dial
    ========================================================================== */

.svg-container {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translate(-50%, -65%);
    width: 500px; /* Smaller since we only need color wheel */
    max-width: 90%;
    max-height: 60%;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    z-index: 1; /* Much lower z-index to stay behind hotspots */
}

svg {
    width: 100%;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    pointer-events: none; /* Prevents SVG from blocking clicks */
}

/* ==========================================================================
    4. SVG: Farger, tekster og piler
    ========================================================================== */
.cls-2 {
    fill: none;
    stroke: #fff;
    stroke-miterlimit: 10;
}

.cls-7 {
    fill: #fff;
}

.cls-12 path {
    opacity: 1.4;
    transform-origin: center;
}

#compartmentText {
    font-size: 32px;
    fill: white;
    text-anchor: middle;
}

.label-text,
.label-arrow {
    fill: #fff;
    font-size: 24px;
    font-family: sans-serif;
    user-select: none;
    pointer-events: auto;
    text-anchor: middle;
}

#closed-label-group,
#open-label-group,
#zoom-label-group {
    pointer-events: all;
}

#closed-label-group:hover,
#open-label-group:hover,
#zoom-label-group:hover {
    opacity: 0.8;
}

.arrow {
    fill: white;
    cursor: pointer;
    transition: filter 0.3s ease;
    transform: scale(1);
    transform-origin: center;
}

.arrow:hover,
.arrow:active {
    filter: drop-shadow(0 0 15px yellow);
}

/* ==========================================================================
    5. Fargeknapper
    ========================================================================== */

#colors {
    transform-box: fill-box;
    transform-origin: center;
    pointer-events: all;
}

.color-button {
    cursor: pointer;
    stroke: #000;
    stroke-width: 1;
    pointer-events: visiblePainted;
}

.color-button.not-available {
    opacity: 0.3;
    cursor: not-allowed;
    pointer-events: none;
}

.glow {
    -webkit-filter: drop-shadow(0 0 15px white);
    filter: drop-shadow(0 0 15px white);
}

.highlighted {
    -webkit-filter: drop-shadow(0 0 15px yellow);
    filter: drop-shadow(0 0 15px yellow);
}

#indicator {
    fill: white;
    cursor: pointer;
    -webkit-filter: drop-shadow(0 0 10px white);
    filter: drop-shadow(0 0 10px white);
    r: 18px;
}

@media (max-width: 1024px) {
    #indicator {
        r: 18px;
    }
}

/* ==========================================================================
    6. Radial farger
    ========================================================================== */
#btn-blue {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.2), rgba(0, 0, 102, 0.8), #020c66),
        radial-gradient(circle at 70% 70%, rgba(0, 0, 102, 0.9), #020c66);
}

#btn-orange {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.2), rgba(211, 90, 0, 0.8), #d35a00),
        radial-gradient(circle at 70% 70%, rgba(211, 90, 0, 0.9), #d35a00);
}

#btn-green {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.2), rgba(18, 58, 2, 0.8), #123a02),
        radial-gradient(circle at 70% 70%, rgba(18, 58, 2, 0.9), #123a02);
}

#btn-yellow {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.2), rgba(221, 158, 0, 0.8), #dd9e00),
        radial-gradient(circle at 70% 70%, rgba(221, 158, 0, 0.9), #dd9e00);
}

#btn-red {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.2), rgba(160, 7, 7, 0.8), #a00707),
        radial-gradient(circle at 70% 70%, rgba(160, 7, 7, 0.9), #a00707);
}

#btn-white {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.4), rgba(232, 222, 214, 0.9), #e8ded6),
        radial-gradient(circle at 70% 70%, rgba(232, 222, 214, 0.9), #e8ded6);
}

#btn-black {
    background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0.8), #000000),
        radial-gradient(circle at 70% 70%, rgba(0, 0, 0, 0.9), #000000);
}

/* ==========================================================================
    7. Buens plassering (Arc Path)
    ========================================================================== */
#arcPath {
    transform: translateY(10px);
}

@media (max-width: 600px) {
    #arcPath {
        transform: translateY(5px);
    }
}

/* ==========================================================================
    8. Preview button (Glass style)
    ========================================================================== */

#svg-preview-button {
    transition: all 0.3s ease;
    cursor: pointer;
    transform: translateY(15px); /* Move preview button down slightly */
}

#svg-preview-button:hover {
    filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.8)) 
            drop-shadow(0 4px 15px rgba(0, 0, 0, 0.4));
}

#svg-preview-button:hover circle {
    filter: brightness(1.2);
}

#svg-preview-button:hover text {
    fill: #ffffff;
    filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.6));
}

#svg-preview-button:active {
    filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.6)) 
            drop-shadow(0 2px 8px rgba(0, 0, 0, 0.6));
}

/* Make button more prominent and glass-like */
#svg-preview-button circle:first-child {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

/* Responsive adjustments for button */
@media (max-width: 768px) {
    #svg-preview-button text {
        font-size: 28px;
    }
    
    #svg-preview-button circle {
        r: 100;
    }
    
    #svg-preview-button circle:nth-child(2) {
        r: 75;
    }
    
    #svg-preview-button circle:nth-child(3) {
        r: 78;
    }
    
    /* Adjust SVG container position for mobile browsers */
    .svg-container {
        transform: translate(-50%, -75%) !important;
        /* Safari-specific adjustment using safe-area-inset-bottom */
        transform: translate(-50%, calc(-75% - env(safe-area-inset-bottom, 0px))) !important;
    }
}

@media (max-width: 480px) {
    #svg-preview-button text {
        font-size: 28px;
    }
    
    #svg-preview-button circle {
        r: 100;
    }
    
    #svg-preview-button circle:nth-child(2) {
        r: 65;
    }
    
    #svg-preview-button circle:nth-child(3) {
        r: 68;
    }
    
    /* Fix SVG container position for mobile browsers with bottom bars - especially Safari */
    .svg-container {
        transform: translate(-50%, -80%) !important;
        /* Safari-specific adjustment using safe-area-inset-bottom */
        transform: translate(-50%, calc(-80% - env(safe-area-inset-bottom, 0px))) !important;
    }
}

/* Safari-specific targeting using @supports */
@supports (-webkit-touch-callout: none) {
    @media (max-width: 768px) {
        .svg-container {
            transform: translate(-50%, -82%) !important;
        }
    }
    
    @media (max-width: 480px) {
        .svg-container {
            transform: translate(-50%, -82%) !important;
        }
    }
}

/* ==========================================================================
    9. Statiske pil (valgfritt)
    ========================================================================== */
.static-arrow {
    position: absolute;
    top: 110px;
    left: 50%;
    transform: translateX(-50%);
    width: 80px;
    height: auto;
}

/* ==========================================================================
    Responsive Media Queries for Hotspots
    ========================================================================== */

/* Screens up to 1500px */
@media (max-width: 1500px) {
    .hotspot {
        width: clamp(35px, 3vw, 50px);
        height: clamp(35px, 3vw, 50px);
    }
    
    .hotspot-label {
        font-size: clamp(12px, 1.5vw, 14px);
        padding: 4px 8px;
    }
    
    /* 1500px and below hotspot positions - CLOSED VIEW */
    .hotspot-top-base {
        top: 40%;
        left: 56%;
    }
    
    .hotspot-mid {
        top: 48%;
        left: 40%;
    }
    
    .hotspot-wheels {
        top: 65%;
        left: 57%;
        z-index: 30;
    }
    
    /* OPEN VIEW POSITIONS for 1500px and below */
    .hotspots-container.view-open .hotspot-top-base {
        top: 22%;
        left: 54%;
    }
    
    .hotspots-container.view-open .hotspot-mid {
        top: 41%;
        left: 36%;
    }
    
    .hotspots-container.view-open .hotspot-wheels {
        top: 66%; /* Same as closed view */
        left: 57%; /* Same as closed view */
    }
    
    /* ZOOM VIEW POSITIONS for 1500px and below */
    .hotspots-container.view-zoom .hotspot-top-base {
        top: 35%;
        left: 63%;
    }
    
    .hotspots-container.view-zoom .hotspot-mid {
        top: 49%;
        left: 40%;
    }
    
    .hotspots-container.view-zoom .hotspot-wheels {
        top: 54%;
        left: 63%;
    }
}

/* Screens up to 1050px */
@media (max-width: 1050px) {
    .hotspot {
        width: clamp(30px, 4vw, 45px);
        height: clamp(30px, 4vw, 45px);
    }
    
    .hotspot-label {
        font-size: clamp(10px, 2vw, 12px);
        padding: 3px 6px;
    }
    
    /* 1050px and below hotspot positions - CLOSED VIEW */
    .hotspot-top-base {
        top: 40%;
        left: 57%;
    }
    
    .hotspot-mid {
        top: 48%;
        left: 36%;
    }
    
    .hotspot-wheels {
        top: 64%;
        left: 59%;
        z-index: 30;
    }
    
    /* OPEN VIEW POSITIONS for 1050px and below */
    .hotspots-container.view-open .hotspot-top-base {
        top: 22%;
        left: 55%;
    }
    
    .hotspots-container.view-open .hotspot-mid {
        top: 41%;
        left: 34%;
    }
    
    .hotspots-container.view-open .hotspot-wheels {
        top: 66%; /* Same as closed view */
        left: 59%; /* Same as closed view */
    }
    
    /* ZOOM VIEW POSITIONS for 1050px and below */
    .hotspots-container.view-zoom .hotspot-top-base {
        top: 35%;
        left: 70%;
    }
    
    .hotspots-container.view-zoom .hotspot-mid {
        top: 49%;
        left: 37%;
    }
    
    .hotspots-container.view-zoom .hotspot-wheels {
        top: 54%;
        left: 70%;
    }
}

/* Screens up to 500px */
@media (max-width: 500px) {
    .hotspot {
        width: clamp(28px, 5vw, 40px);
        height: clamp(28px, 5vw, 40px);
    }
    
    .hotspot-label {
        font-size: clamp(9px, 2.5vw, 11px);
        padding: 2px 4px;
    }
    
    /* 500px and below hotspot positions - CLOSED VIEW */
    .hotspot-top-base {
        top: 39%;
        left: 68%;
    }
    
    .hotspot-mid {
        top: 49%;
        left: 22%;
    }
    
    .hotspot-wheels {
        top: 64%;
        left: 72%;
        z-index: 30;
    }
    
    /* OPEN VIEW POSITIONS for 500px and below */
    .hotspots-container.view-open .hotspot-top-base {
        top: 22%;
        left: 65%;
    }
    
    .hotspots-container.view-open .hotspot-mid {
        top: 41%;
        left: 20%;
    }
    
    .hotspots-container.view-open .hotspot-wheels {
        top: 66%; /* Same as closed view */
        left: 72%; /* Same as closed view */
    }
    
    /* ZOOM VIEW POSITIONS for 500px and below */
    .hotspots-container.view-zoom .hotspot-top-base {
        top: 35%;
        left: 77%;
    }
    
    .hotspots-container.view-zoom .hotspot-mid {
        top: 50%;
        left: 22%;
    }
    
    .hotspots-container.view-zoom .hotspot-wheels {
        top: 56%;
        left: 76%;
    }
}

/* Screens up to 400px */
@media (max-width: 400px) {
    .hotspot {
        width: clamp(25px, 6vw, 35px);
        height: clamp(25px, 6vw, 35px);
    }
    
    .hotspot-label {
        font-size: clamp(8px, 3vw, 10px);
        padding: 2px 3px;
    }
    
    /* 400px and below hotspot positions - CLOSED VIEW */
    .hotspot-top-base {
        top: 40%;
        left: 60%;
    }
    
    .hotspot-mid {
        top: 48%;
        left: 36%;
    }
    
    .hotspot-wheels {
        top: 62%;
        left: 70%;
        z-index: 30;
    }
    
    /* OPEN VIEW POSITIONS for 400px and below */
    .hotspots-container.view-open .hotspot-top-base {
        top: 22%;
        left: 52%;
    }
    
    .hotspots-container.view-open .hotspot-mid {
        top: 41%;
        left: 34%;
    }
    
    .hotspots-container.view-open .hotspot-wheels {
        top: 62%; /* Same as closed view */
        left: 68%; /* Same as closed view */
    }
    
    /* ZOOM VIEW POSITIONS for 400px and below */
    .hotspots-container.view-zoom .hotspot-top-base {
        top: 35%;
        left: 70%;
    }
    
    .hotspots-container.view-zoom .hotspot-mid {
        top: 49%;
        left: 30%;
    }
    
    .hotspots-container.view-zoom .hotspot-wheels {
        top: 62%;
        left: 72%;
    }
}
