/* =========================================================
   VuSpaces Panorama Viewer
   File: /assets/panorama/viewer.css
   ========================================================= */

:root {
    --vuspaces-viewer-bg: #111111;
    --vuspaces-viewer-panel: rgba(24, 26, 27, 0.82);
    --vuspaces-viewer-panel-light: rgba(255, 255, 255, 0.94);
    --vuspaces-viewer-text: #ffffff;
    --vuspaces-viewer-muted: rgba(255, 255, 255, 0.72);
    --vuspaces-viewer-dark: #202326;
    --vuspaces-viewer-radius: 9px;
}


html,
body {
    width: 100%;
    height: 100%;
    min-height: 100%;

    margin: 0;
    padding: 0;
}


html {
    background: var(--vuspaces-viewer-bg);
}


body.vuspaces-panorama-page {
    width: 100%;
    height: 100vh;
    height: 100dvh;

    overflow: hidden;
    overscroll-behavior: none;

    background: var(--vuspaces-viewer-bg);

    font-family:
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Helvetica,
        Arial,
        sans-serif;
}


/* =========================================================
   VIEWER
   ========================================================= */

#vuspaces-panorama {
    position: fixed;

    inset: 0;

    width: 100%;
    height: 100vh;
    height: 100dvh;

    background: var(--vuspaces-viewer-bg);
}


/* =========================================================
   BRAND
   Bottom right
   ========================================================= */

.vuspaces-panorama-brand {
    all: unset;

    position: fixed;

    right: 18px;
    bottom: 18px;

    z-index: 50;

    display: inline-flex;
    flex-direction: column;

    padding: 10px 14px;

    border-radius: var(--vuspaces-viewer-radius);

    background: var(--vuspaces-viewer-panel-light);

    color: var(--vuspaces-viewer-dark);

    box-shadow:
        0 4px 18px rgba(0, 0, 0, 0.16);

    font-family:
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Helvetica,
        Arial,
        sans-serif;

    cursor: pointer;
}


.vuspaces-panorama-brand:hover {
    background: #ffffff;
}


.vuspaces-panorama-brand-name {
    display: block;

    color: #202326;

    font-size: 18px;
    font-weight: 700;

    line-height: 1.1;

    letter-spacing: -0.35px;

    text-decoration: none;
}


.vuspaces-panorama-brand-subtitle {
    display: block;

    margin-top: 3px;

    color: #64696c;

    font-size: 10px;
    font-weight: 700;

    line-height: 1.2;

    letter-spacing: 0.08em;

    text-transform: uppercase;

    text-decoration: none;
}


/* =========================================================
   SPACE / VENUE LABEL
   Bottom left
   ========================================================= */

.vuspaces-panorama-info {
    position: fixed;

    left: max(
        24px,
        calc(env(safe-area-inset-left) + 14px)
    );

    bottom: max(
        24px,
        calc(env(safe-area-inset-bottom) + 14px)
    );

    z-index: 20;

    max-width: min(
        420px,
        calc(
            100%
            -
            48px
            -
            env(safe-area-inset-left)
            -
            env(safe-area-inset-right)
        )
    );

    padding: 12px 16px;

    border-radius: var(--vuspaces-viewer-radius);

    background: var(--vuspaces-viewer-panel);

    color: var(--vuspaces-viewer-text);

    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);

    box-shadow:
        0 4px 18px rgba(0, 0, 0, 0.16);

    pointer-events: none;
}


.vuspaces-panorama-space-name {
    display: block;

    font-size: 16px;
    font-weight: 700;

    line-height: 1.3;
}


.vuspaces-panorama-venue-name {
    display: block;

    margin-top: 3px;

    color: var(--vuspaces-viewer-muted);

    font-size: 12px;
    font-weight: 500;

    line-height: 1.4;
}


/* =========================================================
   PANNELLUM CONTROLS
   Top right
   ========================================================= */

.pnlm-controls-container {
    position: absolute !important;

    top: max(
        18px,
        calc(env(safe-area-inset-top) + 14px)
    ) !important;

    right: max(
        18px,
        calc(env(safe-area-inset-right) + 14px)
    ) !important;

    left: auto !important;

    z-index: 30 !important;
}


.pnlm-controls {
    overflow: hidden;

    border: 0 !important;

    border-radius: 8px !important;

    background:
        rgba(24, 26, 27, 0.84) !important;

    box-shadow:
        0 4px 18px rgba(0, 0, 0, 0.20) !important;
}


.pnlm-control {
    border: 0 !important;

    background-color:
        transparent !important;

    color:
        #ffffff !important;
}


.pnlm-control:hover {
    background-color:
        rgba(255, 255, 255, 0.12) !important;
}


/* =========================================================
   ZOOM BUTTONS
   White + / -
   ========================================================= */

.pnlm-zoom-in,
.pnlm-zoom-out {
    position: relative !important;

    background-image: none !important;
    background-position: initial !important;

    color: #ffffff !important;
}


.pnlm-zoom-in::after,
.pnlm-zoom-out::after {
    position: absolute;

    top: 50%;
    left: 50%;

    transform:
        translate(
            -50%,
            -53%
        );

    color: #ffffff;

    font-family:
        Arial,
        Helvetica,
        sans-serif;

    font-size: 25px;
    font-weight: 300;

    line-height: 1;

    pointer-events: none;
}


.pnlm-zoom-in::after {
    content: "+";
}


.pnlm-zoom-out::after {
    content: "−";
}


/* =========================================================
   FULLSCREEN BUTTON
   Custom white icon
   ========================================================= */

.pnlm-fullscreen-toggle-button {
    position: relative !important;

    background-image: none !important;
    background-position: initial !important;
    background-color: transparent !important;

    color: #ffffff !important;
}


.pnlm-fullscreen-toggle-button::after {
    content: "⛶";

    position: absolute;

    top: 50%;
    left: 50%;

    transform:
        translate(
            -50%,
            -52%
        );

    color: #ffffff;

    font-family:
        Arial,
        Helvetica,
        sans-serif;

    font-size: 21px;
    font-weight: 400;

    line-height: 1;

    pointer-events: none;
}


/* =========================================================
   LOADING
   ========================================================= */

.pnlm-load-box {
    border: 0 !important;

    border-radius: 10px !important;

    background:
        rgba(24, 26, 27, 0.90) !important;

    color: #ffffff !important;

    box-shadow:
        0 6px 24px rgba(0, 0, 0, 0.24) !important;
}


/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 640px) {

    .vuspaces-panorama-brand {
        right: max(
            14px,
            calc(env(safe-area-inset-right) + 10px)
        );

        bottom: max(
            14px,
            calc(env(safe-area-inset-bottom) + 10px)
        );

        padding: 9px 12px;
    }


    .vuspaces-panorama-brand-name {
        font-size: 16px;
    }


    .vuspaces-panorama-info {
        left: max(
            14px,
            calc(env(safe-area-inset-left) + 10px)
        );

        bottom: max(
            14px,
            calc(env(safe-area-inset-bottom) + 10px)
        );

        max-width:
            calc(
                100%
                -
                28px
                -
                env(safe-area-inset-left)
                -
                env(safe-area-inset-right)
            );

        padding: 11px 13px;
    }


    .vuspaces-panorama-space-name {
        font-size: 15px;
    }


    .pnlm-controls-container {
        top: max(
            14px,
            calc(env(safe-area-inset-top) + 10px)
        ) !important;

        right: max(
            14px,
            calc(env(safe-area-inset-right) + 10px)
        ) !important;

        left: auto !important;
    }
}

/* =========================================================
   MULTI-SPACE NAVIGATION — published spaces only
   ========================================================= */
.vuspaces-spaces-nav {
    position: fixed;
    top: max(18px, calc(env(safe-area-inset-top) + 14px));
    left: max(18px, calc(env(safe-area-inset-left) + 14px));
    z-index: 60;
    width: min(285px, calc(100vw - 100px));
    font-family: inherit;
}
.vuspaces-spaces-toggle {
    display: block;
    width: 100%;
    border: 1px solid rgba(255,255,255,.3);
    border-radius: 9px;
    padding: 12px 14px;
    background: rgba(24,26,27,.9);
    color: #fff;
    font-family: inherit;
    line-height: 1.3;
    font-size: 13px;
    font-weight: 700;
    text-align: left;
    cursor: pointer;
    box-shadow: 0 4px 18px rgba(0,0,0,.15);
}
.vuspaces-spaces-toggle:hover,
.vuspaces-spaces-toggle:focus-visible { background: #263F40; }
.vuspaces-spaces-list {
    max-height: min(52vh, 380px);
    overflow-y: auto;
    margin-top: 7px;
    padding: 7px;
    border-radius: 9px;
    background: rgba(24,26,27,.96);
    box-shadow: 0 8px 24px rgba(0,0,0,.24);
}
.vuspaces-spaces-list[hidden] { display: none !important; }
.vuspaces-spaces-list a {
    display: block;
    padding: 11px 12px;
    border-radius: 6px;
    color: #fff;
    text-decoration: none;
    font-size: 13px;
    line-height: 1.35;
}
.vuspaces-spaces-list a:hover,
.vuspaces-spaces-list a:focus-visible { background: rgba(255,255,255,.13); }
.vuspaces-spaces-list a.is-current { background: #d9edaf; color: #263F40; font-weight: 700; }
@media (max-width: 640px) {
    .vuspaces-spaces-nav {
        top: max(14px, calc(env(safe-area-inset-top) + 10px));
        left: max(14px, calc(env(safe-area-inset-left) + 10px));
        width: min(230px, calc(100vw - 100px));
    }
}

/* Thumbnail-led space selector: progressive enhancement of text navigation */
.vuspaces-spaces-nav { width: min(336px, calc(100vw - 100px)); }
.vuspaces-spaces-list { padding: 9px; max-height: min(66vh, 540px); }
.vuspaces-spaces-list a.vuspaces-space-card {
    display: flex; align-items: center; gap: 12px;
    padding: 8px; margin: 2px 0; min-height: 74px;
    border: 1px solid transparent; border-radius: 9px;
}
.vuspaces-space-card-image {
    position: relative; display: flex; align-items: center; justify-content: center;
    width: 95px; height: 58px; flex: 0 0 95px;
    overflow: hidden; border-radius: 6px;
    background: linear-gradient(145deg, #527f78, #223f41);
}
.vuspaces-space-card-image::before {
    content: '360°'; font-size: 16px; color: rgba(255,255,255,.75);
    font-weight: 650; position: absolute;
}
.vuspaces-space-card-image img {
    position: relative; width: 100%; height: 100%; object-fit: cover;
}
.vuspaces-space-card-details { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.vuspaces-space-card-name { font-weight: 650; overflow-wrap: anywhere; }
.vuspaces-space-card-current { font-size: 11px; opacity: .75; }
.vuspaces-spaces-list a.vuspaces-space-card.is-current {
    border-color: #b8db45; background: #d9edaf; color: #263f40;
}
.vuspaces-spaces-list a.vuspaces-space-card:hover:not(.is-current) {
    background: rgba(255,255,255,.13);
}
@media (max-width:640px) {
    .vuspaces-spaces-nav { width: min(294px, calc(100vw - 100px)); }
    .vuspaces-space-card-image { width: 78px; height: 52px; flex-basis: 78px; }
}
