:root {
    /* --scale: calc((100vw + var(--vh)) / 3000);
    --scalew: calc(100vw / 1920);
    --scaleh: calc(var(--vh) / 1080); */
    --catalog-stage-width: 30rem;
    --catalog-stage-height: 24rem;
}

@media only screen and (max-width: 600px) {
    /* Mobile portrait */
    :root {
        --catalog-stage-width: 30rem;
    }
    html, body {
        touch-action: pan-y, pan-x;
    }
}

@media only screen and (max-width: 900px) {
    /* Mobile lanscape */
    :root {
        --catalog-stage-width: 24rem;
    }
    html, body {
        touch-action: pan-y, pan-x;
    }
}

html, body {
    padding: 0; margin: 0; height: 100%; overflow: hidden;
    background-color: var(--main-bg);
    transition: background 0.5s;
}


#main {
    position: relative; width: 100%; height: 100%;
    transition: filter 0.3s, opacity 0.3s;
    overflow: hidden;
    background-color: var(--main-bg);
    opacity: 1;
    /* animation: main_scale_up 0.5s both; */
}

body.intro #main {
    /* opacity: 0; */
}

.stage {
    position: absolute; width: 100%; height: 100%;
}

#intro {
    z-index: 10000;
    background-color: var(--intro-bg-color);
}

#intro .bg {
    position: absolute;
    left: 0; top: 0; width: 100%; height: 100%;
    z-index: 0;
    background-image: url(images/webp/intro_bg_brushed_metall.webp);
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    transition: opacity 1s;
}

#intro .logo {
    position: absolute;
    z-index: 1;
    pointer-events: none;
    left: 50%; top: 50%; width: 80%; height: 40%; max-width: 80rem; max-height: 26rem;
    transform: translate(-50%,-50%);
    /* background-image: url(images/logo.svg);
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain; */
    opacity: 1;
}

#intro .logo svg {
    width: 100%;
}

#bg_video {
    z-index: 0;
    position: absolute;
    left: 0; top: 0;
    width: 100%; height: 100%;
    object-fit: fill;
    opacity: 0.05;
}

body.type_water #bg_video {
    display: none;
}

#model_stage {
    position: absolute;
    left: 0; top: 0; width: 100%; height: 100%;
    z-index: 0;
    overflow: hidden;
    /* opacity: 0; */
    transition: opacity var(--catalog-transition-duration), height var(--catalog-transition-duration)  ease-in-out;
}

#model_stage model-viewer {
    position: absolute;
    left: -3rem; top: -3rem; right: -3rem; bottom: -3rem;
    width: auto; height: auto;    
    z-index: 1;
    transition: left var(--catalog-transition-duration) ease-in-out, top var(--catalog-transition-duration) ease-in-out, opacity 1s;
}

model-viewer::part(default-ar-button) {
    display: none;
}

body.catalog #model_stage model-viewer {
    left: calc(0px - 3rem - var(--catalog-stage-width)); 
}


#model_stage model-viewer.item_model {
    top: -15rem; 
}

#spinner_model_stage {
    position: absolute;
    left: 50%; top: 50%;
    width: 10rem; height: 10rem;
    transform: translate(-50%,-50%);
    pointer-events: none;
}

#spinner_model_stage .progress {
    position: absolute;
    left: 50%; top: 50%;
    transform: translate(-50%,-50%);
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1rem;
    color: var(--main-master-color);
}

#ui_stage {
    position: absolute;
    left: 0; top: 0;
    width: 100%; height: 100%;
    /* display: flex; */
    /* flex-direction: row; */
    z-index: 2;
    pointer-events: none;
}

#section_ui {
    position: absolute;
    left: 0; right: 0;
    height: 100%; width: auto;
    transition: left var(--catalog-transition-duration) ease-in-out, right var(--catalog-transition-duration) ease-in-out, height var(--catalog-transition-duration) ease-in-out;
    /* flex-grow: 1; */
}

.flex_stage_column {
    position: absolute;
    left: 0; top: 0;
    width: 100%; height: 100%;
    display: flex;
    flex-direction: column;
}

#section_catalog {
    position: absolute;
    right: 0; top: 0;
    height: 100%; width: 0;
    /* flex-grow: 0; */
    background-color: var(--catalog-bg-color); 
    backdrop-filter: blur(3rem);
    transition: width var(--catalog-transition-duration) ease-in-out, top var(--catalog-transition-duration) ease-in-out, background 0.5s;
    overflow: hidden;
    pointer-events: all;
    z-index: 10;
}

.catalog_close {
    position: absolute;
    right: 2rem; top: 2rem;
    display: none;
}

#section_catalog .gradient {
    position: absolute;
    left: 0; top: 10%; width: 1px; height: auto; bottom: 10%;
    background: var(--gradient-bg-color1);
    background: linear-gradient(180deg, var(--gradient-bg-color2) 0%, var(--gradient-bg-color1) 50%, var(--gradient-bg-color2) 100%);
}

body.catalog #section_ui {
    right: var(--catalog-stage-width);
}

body.catalog #section_catalog {
    width: var(--catalog-stage-width);
}


@media only screen and (max-width: 900px) {
    /* #model_stage model-viewer {
        left: 0rem; top: -3rem; right: 0rem; bottom: -3rem;
    }
    
    body.catalog #model_stage model-viewer {
        left: 0; 
    } 
    body.catalog #section_ui {
        left: calc(0px - var(--catalog-stage-width));
    }   
    body.catalog #section_catalog {
        width: var(--catalog-stage-width);
    } 
    .catalog_close {
        display: block;
    }*/
}

@media only screen and (max-width: 600px) {
    #model_stage model-viewer {
        left: 0rem; top: -3rem; right: 0rem; 
        width: 100%; height: calc(100 * var(--vh) - var(--catalog-stage-height) -3rem);
    }
    body.catalog #model_stage {
        /* height: calc(100 * var(--vh) - var(--catalog-stage-height)); */
    } 
    body.catalog #model_stage model-viewer {
        left: 0; 
        top: calc(0px - 3rem - var(--catalog-stage-height)); 
    } 
    body #section_ui {
        left: 0; top: 0; width: 100%; height: calc(100 * var(--vh));
    }   
    body.catalog #section_ui {
        left: 0; top: 0; width: 100%; 
        height: calc(100 * var(--vh) - var(--catalog-stage-height));
    }   
    body #section_catalog {
        left: 0; top: calc(100 * var(--vh)); height: var(--catalog-stage-height);
        width: 100%; height: var(--catalog-stage-height);
    } 
    body.catalog #section_catalog {
        top: calc(100 * var(--vh) - var(--catalog-stage-height));
        width: 100%; height: var(--catalog-stage-height);
    } 
    /* .catalog_close {
        display: block;
    } */
    body #section_catalog > div:first-child {
        width: 100%; height: 100%;
    } 
}

#section_catalog > div {
    width: var(--catalog-stage-width);
}

#section_catalog > div > .bar {
    width: 100%;
    overflow-y: auto;
    pointer-events: all;
}

#section_catalog > div > .bar .item {
    position: relative;
    border: 1rem solid transparent;
    height: auto;
    margin-bottom: 1rem;
    cursor: pointer;
}

#section_catalog > div > .bar .item .frame {
    position: absolute;
    box-sizing: border-box;
    left: 0; top: 0; width: 100%; height: 100%;
    pointer-events: none;
    background-color: var(--catalog-item-selected-bg-color);
    z-index: -1;
    opacity: 0;
    border: 1px solid var(--catalog-item-selected-border-color);
    box-shadow: 0 0 3rem rgba(255,0,0,0.1);
    transition: opacity 0.5s, background 0.5s;
}

#section_catalog > div > .bar .item.active .frame {
    opacity: 1;
}

#section_catalog > div > .bar .item .frame svg {
    position: absolute; 
    display: none;
}

#section_catalog > div > .bar .item .frame svg.lt {
    left: 0; top: 0;
}

#section_catalog > div > .bar .item .frame svg.lb {
    left: 0; bottom: 0; transform: rotate(-90deg);
}

#section_catalog > div > .bar .item .frame svg.rt {
    right: 0; top: 0; transform: rotate(90deg);
}

#section_catalog > div > .bar .item .frame svg.rb {
    right: 0; bottom: 0; transform: rotate(180deg);
}


#section_catalog > div > .bar .item .thumb {
    background-position: center;
    background-size: contain;
    background-repeat: no-repeat;
    width: 80%; height: 10rem;
    margin: 1rem 0;
    margin-left: 10%;
}

#section_catalog > div > .bar .item .title {
    padding: 1rem 3rem;
    text-align: center;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1.6rem;
    color: var( --main-font-color);
    white-space: normal;
}

@media only screen and (max-width: 600px) {
    #section_catalog > div > .bar .item .title {
        margin: 0;
        height: 3rem;

        display: -webkit-box; 
        -webkit-box-orient: vertical; 
        -webkit-line-clamp: 2; 
        overflow: hidden; 
        text-overflow: ellipsis; 
    }
}

#section_catalog > div > .bar .item .more_info_btn_stage {
    height: 0rem;
    pointer-events: none;
    overflow: hidden;
    transition: height 0.5s;
    text-align: center;
}

#section_catalog > div > .bar .item .more_info_btn_stage button {
    box-sizing: border-box;
    border-radius: 2.5rem;
    height: 4.5rem;
    transform: scale(0.9);
    border: 1px solid #333;
    background-color: var(--catalog-button-more-bg-color);
    backdrop-filter: blur(2rem);
    color: var( --main-font-color);
    padding: 0 2rem;
    white-space: nowrap;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1.6rem;
    transition: border 0.5s;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.3s, background 0.3s, transform 0.3s;
    pointer-events: none;
}

@media only screen and (min-width: 600px) {
    #section_catalog > div > .bar .item .more_info_btn_stage button:hover {
        /* border: 1px solid var(--main-master-color); */
        background-color: var(--catalog-button-more-hover-bg-color);
        transform: scale(1);
    }
}


#section_catalog > div > .bar .item .more_info_btn_stage button:active {
    transform: scale(0.9);
}

body:not(.item_model) #section_catalog > div > .bar .item.active .more_info_btn_stage button {
    opacity: 1;
    pointer-events: all;
}


body:not(.item_model) #section_catalog > div > .bar .item.active .more_info_btn_stage {
    height: 5rem;
    pointer-events: all;
}


@media only screen and (max-width: 600px) {
    #section_catalog .gradient {
        position: absolute;
        left: 10%; top: 0; right: 10%; width: auto; height: 1px; bottom: auto;
        background: var(--gradient-bg-color1);
        background: linear-gradient(90deg, var(--gradient-bg-color2) 0%, var(--gradient-bg-color1) 50%, var(--gradient-bg-color2) 100%);
    }

    #section_catalog > div > .bar .item .more_info_btn_stage {
        /* display: none; */
        position: absolute;
        left: 0; bottom: 0; width: 100%;
    }

    #section_catalog > div > .bar .item .more_info_btn_stage button {
        /* box-shadow: 0 0 2rem rgba(0,0,0,1); */
    }

    #section_catalog > div > .bar {
        overflow-y: hidden;
        overflow-x: auto;
        height: 100%;
        padding: 0 1rem;
    }

    #section_catalog > div > .bar {
        white-space: nowrap;
    }

    #section_catalog > div > .bar .item {
        display: inline-block;
        border: 1rem solid transparent;
        border-width: 1rem 0;
        max-width: 60%;
        width: auto;
        height: 99%;
        box-sizing: border-box;
        margin: 0;
        overflow: hidden;
    }

    #section_catalog > div > .bar .item .title {
        padding: 1rem 2rem;
    }


}

#section_ui {
    flex-grow: 1;
    pointer-events: none;
}

.model_ui {
    position: relative;
    width: 100%; height: auto;
    flex-grow: 1;
    transition: right 0.5s;
    z-index: 2;
    pointer-events: none;
}

.model_ui .btn_stage {
    position: absolute;
    pointer-events: none;
    display: flex;
    flex-direction: row;
    gap: 1rem;
}

.model_ui .btn_stage.lt {
    left: 2rem; top: 2rem;
    gap: 2rem;
}

@media only screen and (max-width: 600px) {
    /* Mobile */
    .model_ui .btn_stage.lt {
        gap: 1rem;
        flex-direction: column;
    }
}

.model_ui .btn_stage.rt {
    right: 2rem; top: 2rem;
    overflow: hidden;
}

.model_ui .btn_stage.lb {
    left: 2rem; bottom: 2rem;
}

.model_ui .btn_stage.cb {
    left: 50%; bottom: 2rem; transform: translateX(-50%);
}

.model_ui .btn_stage.rb {
    right: 2rem; bottom: 2rem;
}


.btn {
    box-sizing: border-box;
    border-radius: 3rem;
    height: 4.5rem;
    border: 1px solid var(--model-ui-btn-border-color);
    background-color: var(--model-ui-btn-bg-color);
    backdrop-filter: blur(2rem);
    color: var(--main-font-color);
    padding: 0 2rem;
    white-space: nowrap;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1.6rem;
    pointer-events: all;
    transition: border 0.3s, opacity 0.3s, transform 0.3s, background 0.3s;
    transform: scale(0.9);
    cursor: pointer;
}

@media only screen and (min-width: 600px) {
    .btn:hover {
        /* background-color: var(--model-ui-btn-hover-bg-color); */
        transform: scale(1);
        /* border: 1px solid #C2151C; */
    }
}

.btn:active {
    transform: scale(0.9);
    /* border: 1px solid #C2151C; */
}

.btn .icon_inline {
    display: inline-block;
    width: 4rem;
    height: 4rem;
    vertical-align: middle;
    margin-left: 1rem;
}

.model_ui .btn.type_switcher {
    width: 10rem; height: 5rem;
    opacity: 0;
    display: none;
    pointer-events: none;
    /* transition: border 0.5s, opacity 0.5s, transform 0.5s, background 0.5s; */
}

body:not(.item_model) .model_ui .btn.type_switcher {
    opacity: 1;
    display: block;
    pointer-events: all;
}


.model_ui .btn.type_switcher svg {
    position: absolute;
    left: 0; top: 0; 
    width: 100%; height: 100%;
    pointer-events: none;
}

.model_ui .btn.type_switcher svg path {
    fill: var(--icon-normal-color)
}

.btn.type_switcher::after {
    content: '';
    display: block;
    position: absolute;
    left: 0; top: 0;
    width: 50%; height: 100%;
    border-radius: 10rem;
    background-color: var(--switcher-indicator-bg-color);
    transition: left var(--catalog-transition-duration);
    mix-blend-mode: difference;
}

body.type_water .btn.type_switcher.water::after,
body.type_block .btn.type_switcher.station::after,
body.type_solid .btn.type_switcher.view::after,
body.light_theme .btn.type_switcher.theme::after {
    left: 50%;    
}

.btn.type_switcher.theme {
    height: 4rem; width: 8rem;
}

.btn.icon_single {
    width: 4rem; height: 4rem;
}

.btn .icon_inline svg {
    width: 100%; height: 100%;
    pointer-events: none;
}

.btn.icon_single svg {
    position: absolute;
    left: 50%; top: 50%; transform: translate(-50%,-50%);
    width: 100%; height: 100%;
    pointer-events: none;
}

.btn.icon_single.ar {
    width: 5rem; height: 5rem;
}

.btn.icon_single.autorotate {
    width: 5.6rem; height: 5.6rem; margin: -0.9rem 0;
}

.btn .icon_inline svg path,
.btn.icon_single svg path {
    transition: fill 0.3s;
}

.btn .icon_inline svg path,
.btn.icon_single svg path {
    fill: var(--icon-normal-color)
}

body.catalog .model_ui .btn.catalog .icon_inline svg path,
body.infospots .model_ui .btn.infospots .icon_inline svg path,
body.catalog .model_ui .btn.catalog  svg path,
body.infospots .model_ui .btn.infospots svg path,
body.autorotate .model_ui .btn.autorotate svg path {
    fill: var(--icon-accent-color)
}

body.item_model .model_ui .btn.infospots,
body.item_model .model_ui .btn.catalog {
    opacity: 0;
    pointer-events: none;
}

.model_ui .btn.moreinfo_close {
    opacity: 0;
    pointer-events: none;
    margin-right: -5rem;
    transition: margin var(--catalog-transition-duration), background 0.3s, transform 0.3s;
}

body.item_model .model_ui .btn.moreinfo_close {
    opacity: 1;
    pointer-events: all;
    margin-right: 0rem;
}



.flex_stage_column .info_stage {
    position: relative;
    width: 100%; 
    /* height: 0rem; */
    flex-grow: 0;
    background-color: var(--info-bg-color);
    backdrop-filter: blur(3rem);
    /* transition: height var(--catalog-transition-duration) ease-in-out; */
    overflow: hidden;
}

.flex_stage_column .info_stage .gradient {
    position: absolute;
    left: 10%; top: 0; width: auto; height: 1px; right: 10%;
    background: rgb(194,21,28);
    background: linear-gradient(90deg, rgba(194,21,28,0) 0%, rgba(194,21,28,1) 50%, rgba(194,21,28,0) 100%);
}

body.item_model .flex_stage_column .info_stage {
    /* height: var(--info-stage-height); */
}

/* .flex_stage_column .info_stage .info {
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 20px 10%;
    height: auto;
    text-align: center;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    color: var(--main-font-color);
} */

.flex_stage_column .info_stage .info {
    box-sizing: border-box;
    display: grid;
    grid-template-rows: min-content 0fr;
    transition: grid-template-rows 500ms;
    text-align: center;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1.4rem;
    color: var(--main-font-color);
}

body.item_model .flex_stage_column .info_stage .info {
    grid-template-rows: min-content 1fr;
}

.flex_stage_column .info_stage .info .zero_stage {
    height: 0; overflow: hidden;
}

.flex_stage_column .info_stage .info .cont_stage {
    overflow: hidden;
}

.flex_stage_column .info_stage .info .cont {
    padding: 2rem 10%;
}


