
/* INTERACTIVE ESTATE MAP */

.estate-map {
    position: relative;
    width: 100%;
    max-width: 1100px;
    margin: 0 auto;
    overflow: hidden;
}

.estate-map-image {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
}


/* INTERACTIVE HOTSPOTS */

.estate-hotspot {
    position: absolute;
    transform: translate(-50%, -50%);
    width: 42px;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    text-decoration: none;
    color: #ffffff;
    z-index: 5;
    cursor: pointer;
}


/* HISTORY KENNEL LUMINOUS HALO */

.estate-hotspot::before {
    content: "";
    position: absolute;
    width: 115px;
    height: 115px;
    border-radius: 50%;

    background: radial-gradient(
        circle,
        rgba(255, 248, 210, 0.82) 0%,
        rgba(255, 232, 150, 0.58) 18%,
        rgba(255, 218, 100, 0.30) 38%,
        rgba(212, 175, 55, 0.14) 55%,
        rgba(212, 175, 55, 0) 75%
    );

    animation: estateGlow 2.8s ease-in-out infinite;
    pointer-events: none;
}


/* HISTORY KENNEL BRIGHT CORE */

.estate-hotspot::after {
    content: "";
    position: absolute;
    width: 17px;
    height: 17px;
    border-radius: 50%;

    background: rgba(255, 252, 225, 1);

    box-shadow:
        0 0 8px rgba(255, 255, 235, 1),
        0 0 18px rgba(255, 239, 160, 1),
        0 0 35px rgba(255, 220, 100, 0.95),
        0 0 55px rgba(212, 175, 55, 0.65);

    animation: estateCore 2.8s ease-in-out infinite;
    pointer-events: none;
}


/* HIDDEN LABELS */

.estate-hotspot span,
.estate-hotspot small {
    position: absolute;
    z-index: 3;
    pointer-events: none;

    font-family: Georgia, "Times New Roman", serif;
    text-align: center;
    color: #fffbe8;

    text-shadow:
        0 1px 3px rgba(0, 0, 0, 1),
        0 0 7px rgba(0, 0, 0, 1),
        0 0 15px rgba(0, 0, 0, 0.95),
        0 0 24px rgba(255, 225, 120, 0.9);

    opacity: 0;
    transition: opacity 0.3s ease;
}


/* MAIN LABEL */

.estate-hotspot span {
    top: 36px;
    left: 50%;
    transform: translateX(-50%);

    display: block;
    width: max-content;
    max-width: 240px;

    font-size: 14px;
    font-weight: bold;
    letter-spacing: 1px;
    line-height: 1.25;
    white-space: nowrap;
}


/* SECONDARY LABEL */

.estate-hotspot small {
    top: 54px;
    left: 50%;
    transform: translateX(-50%);

    display: block;
    width: max-content;
    max-width: 240px;

    font-size: 11px;
    letter-spacing: 1px;
    line-height: 1.25;
}


/* SHOW LABELS ON HOVER OR FOCUS */

.estate-hotspot:hover span,
.estate-hotspot:hover small,
.estate-hotspot:focus span,
.estate-hotspot:focus small {
    opacity: 1;
}


/* STRONGER HISTORY KENNEL HALO ON HOVER */

.estate-hotspot:hover::before,
.estate-hotspot:focus::before {
    width: 145px;
    height: 145px;

    background: radial-gradient(
        circle,
        rgba(255, 255, 235, 0.98) 0%,
        rgba(255, 239, 170, 0.78) 18%,
        rgba(255, 222, 115, 0.48) 38%,
        rgba(212, 175, 55, 0.20) 58%,
        rgba(212, 175, 55, 0) 78%
    );
}


/* BRIGHTER HISTORY KENNEL CORE ON HOVER */

.estate-hotspot:hover::after,
.estate-hotspot:focus::after {
    width: 22px;
    height: 22px;

    background: #ffffff;

    box-shadow:
        0 0 10px rgba(255, 255, 245, 1),
        0 0 22px rgba(255, 245, 190, 1),
        0 0 40px rgba(255, 220, 100, 1),
        0 0 70px rgba(212, 175, 55, 0.85);
}


/* BRIGHTER LABEL ON HOVER */

.estate-hotspot:hover span,
.estate-hotspot:hover small,
.estate-hotspot:focus span,
.estate-hotspot:focus small {
    color: #ffffff;

    text-shadow:
        0 1px 3px rgba(0, 0, 0, 1),
        0 0 8px rgba(0, 0, 0, 1),
        0 0 16px rgba(255, 255, 230, 1),
        0 0 30px rgba(255, 225, 120, 1);
}


/* HOTSPOT POSITIONS */

/* MEMORY */

.hotspot-memory {
    left: 43%;
    top: 48%;
}



/* OUR DOGS */

.hotspot-dogs {
    left: 18%;
    top: 80%;
}


/* OUR CHILDREN / PUPPIES */

.hotspot-puppies {
    left: 78%;
    top: 72%;
}


/* CHAMPIONS */

.hotspot-champions {
    left: 80%;
    top: 47%;
}


/* CANIS THERAPY */

.hotspot-canis {
    left: 29%;
    top: 58%;
}


/* GOLDEN CLUB */

.hotspot-club {
    left: 28%;
    top: 32%;
}


/* GLOW ANIMATION */

@keyframes estateGlow {
    0%,
    100% {
        opacity: 0.65;
        transform: scale(0.88);
    }

    50% {
        opacity: 1;
        transform: scale(1.12);
    }
}


/* CORE ANIMATION */

@keyframes estateCore {
    0%,
    100% {
        opacity: 0.75;
        transform: scale(0.85);
    }

    50% {
        opacity: 1;
        transform: scale(1.18);
    }
}


/* MOBILE HOTSPOTS */

@media (max-width: 700px) {

    .estate-hotspot {
        width: 28px;
        height: 28px;
    }

    .estate-hotspot::before {
        width: 34px;
        height: 34px;
    }

    .estate-hotspot::after {
        width: 7px;
        height: 7px;
    }

    .estate-hotspot span {
        top: 27px;
        font-size: 11px;
        max-width: 170px;
    }

    .estate-hotspot small {
        top: 41px;
        font-size: 9px;
        max-width: 170px;
    }

    .estate-hotspot:hover::before,
    .estate-hotspot:focus::before {
        width: 42px;
        height: 42px;
    }

    .estate-hotspot:hover::after,
    .estate-hotspot:focus::after {
        width: 9px;
        height: 9px;
    }
}


/* HISTORY SCENE TRANSITION */

body {
    opacity: 1;
    transition:
        opacity 0.45s ease,
        background-color 0.45s ease;
}

body.history-leaving {
    opacity: 0;
    background-color: #f5f0df;
}


/* HISTORY SCENE RETURN */

body.history-returning {
    animation: estateReturn 0.65s ease-out both;
}

@keyframes estateReturn {
    from {
        opacity: 0.35;
    }

    to {
        opacity: 1;
    }
}


/* REDUCED MOTION */

@media (prefers-reduced-motion: reduce) {

    body {
        transition: none;
    }

    body.history-returning {
        animation: none;
    }
}


/* ALWAYS SHOW ESTATE LABELS ON MOBILE */

@media (max-width: 700px) {

    .estate-hotspot span,
    .estate-hotspot small {
        opacity: 1;
        letter-spacing: 0.2px;
        line-height: 1.2;
    }

    .estate-hotspot span {
        font-size: 8px;
    }

    .estate-hotspot small {
        font-size: 7px;
    }
}

