* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    overflow: hidden;
}

a {
    text-decoration: none;
}

ul {
    list-style: none;
}

body {
    width: 100vw;
    height: 100dvh;
    overflow: hidden;
    font-size: var(--font-size-text);
    letter-spacing: var(--letter-spacing);
    line-height: var(--line-height-text);
    font-family: 'Inter', sans-serif;
}

.hidden {
    display: none !important;
}

h1, h2, h3, h4, h5 {
    line-height: var(--line-height-headline);
}

h1 {
    font-size: var(--font-size-h1);
}

h2 {
    font-size: var(--font-size-h2);
}

h3 {
    font-size: var(--font-size-h3);
}

h4 {
    font-size: var(--font-size-h4);
}

h5 {
    font-size: var(--font-size-h5);
}

@supports (-moz-appearance: none) {
    * {
        scrollbar-width: thin;
        scrollbar-color: var(--color-control-overlay-input) var(--color-dashboard-btn);
    }
}

*::-webkit-scrollbar {
    width: 4px;
}
  
*::-webkit-scrollbar-track {
    background-color: var(--color-dashboard-btn);
    border-radius: var(--border-radius-small);
}

*::-webkit-scrollbar-thumb {
    background-color: var(--color-control-overlay-input);
    border-radius: var(--border-radius-small);
    transition: var(--transition);
    cursor: pointer;
}

*::-webkit-scrollbar-thumb:hover {
    background-color: var(--color-white);
}

body.layout--administration *::-webkit-scrollbar,
.modal-container *::-webkit-scrollbar {
    width: 4px;
}

body.layout--administration *::-webkit-scrollbar-track,
.modal-container *::-webkit-scrollbar-track {
    background-color: #f4f4f450;
}

body.layout--administration *::-webkit-scrollbar-thumb,
.modal-container *::-webkit-scrollbar-thumb {
    background-color: var(--color-grey-light);
}

body.layout--administration *::-webkit-scrollbar-thumb:hover,
.modal-container *::-webkit-scrollbar-thumb:hover {
    background-color: var(--color-grey-medium);
}

[aria-hidden="true"]:not(.splide__slide) {
    display: none !important;
}

/* header */

header {
    position: fixed;
    display: flex;
    flex-direction: row;
    align-items: center;
    width: 100vw;
    height: var(--layout-header-height);
    z-index: 12;
    transition: var(--transition);
}

body header .menu-brand-wrapper {
    width: var(--navigation-width);
    min-width: max-content;
    display: flex;
    align-items: center;
    transition: var(--transition);
}

body.navigation--closed header .menu-brand-wrapper {
    width: calc(var(--layout-padding) * 2 + var(--icon-size) + 82px);
    min-width: max-content;
}

/** menu **/

#menu-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--icon-size);
    height: var(--icon-size);
    flex-direction: column;
    gap: 5px;
    position: absolute;
    left: var(--layout-padding);
    z-index: 10;
    cursor: pointer;
    border: 0;
    background-color: unset;
}

#menu-icon .line {
    background-color: var(--color-white);
    width: 100%;
    height: 2px;
    border-radius: 2px;
    transition: var(--transition);
    position: relative;
    width: 90%;
    left: 10%;
}

#menu-icon .line--fourth {
    display: none;
}

body:not(.navigation--closed) #menu-icon .line {
    background-color: var(--color-grey-medium) !important;
    position: absolute;
}

body:not(.navigation--closed) #menu-icon .line--first {
    transform: translate(-50%, 100%) rotate(45deg);
    top: 25%;
    left: 65%;
    width: 50%;
}

body:not(.navigation--closed) #menu-icon .line--second {
    transform: translate(-50%, -25%) rotate(-45deg);
    bottom: 25%;
    left: 65%;
    width: 50%;
}

body:not(.navigation--closed) #menu-icon .line--third {
    transform: translate(-50%, 100%) rotate(45deg);
    top: 35%;
    left: 40%;
    width: 25%;
}

body:not(.navigation--closed) #menu-icon .line--fourth {
    transform: translate(-50%, -135%) rotate(-45deg);
    bottom: 25%;
    left: 40%;
    width: 25%;
    display: unset;
}

/** logo **/
body header #brand {
    display: flex;
    max-width: calc(var(--navigation-width) - (var(--layout-padding) * 2 + var(--icon-size)) - var(--layout-padding));
    height: calc(var(--layout-header-height) - (var(--layout-padding) * 2));
    margin-left: calc(var(--layout-padding) * 2 + var(--icon-size));
}

body header #brand svg {
    height: 100%;
    width: auto;
    max-width: 100%;
}

body #brand svg path {
    transition: var(--transition);
}

/** breadcrums **/

header #breadcrumbs {
    align-items: center;
    display: flex;
    margin-left: var(--layout-padding);
    width: calc(100% - var(--navigation-width) - var(--btn-edit-height) - var(--layout-padding) - var(--layout-padding));
    height: var(--layout-header-height);
}

body.navigation--closed header #breadcrumbs {
    width: calc(100% - (var(--layout-padding) * 2 + var(--icon-size)) - var(--btn-edit-height) - (var(--layout-padding) * 2) - 82px);
}

header #breadcrumbs > ul {
    display: flex;
    flex-wrap: wrap;
}

header #breadcrumbs > ul > li:not(:first-of-type) {
    margin-left: var(--layout-space-s)
}

header #breadcrumbs > ul li a {
    color: var(--color-black);
    font-weight: 500;
    position: relative;
    padding-left: calc(var(--icon-size) + var(--layout-space-s));
}

header #breadcrumbs > ul li:not(:last-of-type) a {
    display: block;
    max-width: var(--breadcrumb-max-width);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

header #breadcrumbs > ul li a::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    transform: translate(0, -50%);
    width: var(--icon-size);
    height: var(--icon-size);
    background-image: var(--icon-breadcrumb-arrow);
    background-size: cover;
    background-position: center; 
    background-repeat: no-repeat;
}

/** profile **/

header #profile {
    margin-left: auto;
    margin-right: var(--layout-padding);
    width: var(--btn-edit-height);
    height: var(--btn-edit-height);
    background-image: var(--icon-profile);
    background-position: center; 
    background-repeat: no-repeat;
    background-color: var(--color-grey);
    border: 2px solid var(--color-white);
    position: absolute;
    right: 0;
    border-radius: var(--border-radius-circle);
    transition: var(--transition);
    cursor: pointer;
}

header #profile:hover {
    background-color: var(--color-grey) !important;
}

#profile .profile-menu-wrapper {
    position: absolute;
    top: calc(var(--layout-header-height) - var(--layout-padding));
    width: fit-content;
    background: var(--color-white);
    right: 0;
    padding: var(--layout-padding-s);
    display: flex;
    box-shadow: var(--box-shadow);
    border-radius: var(--border-radius-base);
}

#profile ul li {
    border-radius: var(--border-radius-base);
}

#profile ul li.active,
#profile ul li:hover {
    background-color: var(--color-grey-light);
}

#profile ul li a {
    color: var(--color-black);
    width: 185px;
    padding: 0 var(--layout-padding-s);
    height: var(--menu-item-height);
    display: flex;
    align-items: center;
    font-size: var(--font-size-text-s);
    transition: var(--transition);
}



/* main */

main {
    position: relative;
    height: 100dvh;
    display: flex;
}

/** main navigaion **/

main #main-navigation {
    position: relative;
    width: var(--navigation-width);
    height: 100dvh;
    left: 0;
    background-color: var(--color-grey-light);
    transition: var(--transition);
    z-index: 10;
}

body.navigation--closed main #main-navigation {
    left: calc(0px - var(--navigation-width));
}

#main-navigation ul {
    padding: 0 var(--layout-padding);
    padding-top: var(--layout-header-height);
}

#main-navigation ul li {
    padding: 0 var(--layout-space-s);
    font-size: var(--font-size-text-s);
    transition: var(--transition);
    border-radius: var(--border-radius-base);
    margin: var(--layout-space-s) 0;
}

#main-navigation ul li:first-child {
    margin-top: 0;
}

#main-navigation ul li:last-child {
    margin-bottom: 0;
}

#main-navigation ul li.active,
#main-navigation ul li:hover {
    background-color: var(--color-white);
}

#main-navigation ul li a {
    color: var(--color-black);
    background-repeat: no-repeat;
    background-position-y: center;
    background-size: var(--icon-size);
    padding-left: calc(var(--icon-size) + var(--layout-space-s));
    height: var(--menu-item-height);
    display: flex;
    align-items: center;
}

#main-navigation ul li a[title="Portalbetreiber-Verwaltung"],
#main-navigation ul li a[title="Portal operator management"] {
    background-image: var(--icon-menu-portal-admin);
}

#main-navigation ul li a[title="Benutzer-Verwaltung"],
#main-navigation ul li a[title="User management"] {
    background-image: var(--icon-menu-user);
}

#main-navigation ul li a[title="Kategorieverwaltung"],
#main-navigation ul li a[title="Category management"] {
    background-image: var(--icon-menu-category);
}

#main-navigation ul li a[title="Medienverwaltung"],
#main-navigation ul li a[title="Media management"] {
    background-image: var(--icon-menu-media);
}

#main-navigation ul li a[title="Spaces"] {
    background-image: var(--icon-menu-spaces);
}

#main-navigation ul li a[title="Showcases"] {
    background-image: var(--icon-menu-showcases);
}

/** main content **/

body main #main-content {
    position: absolute;
    right: 0;
    width: calc(100vw - var(--navigation-width));
    height: 100%;
    transition: var(--transition);
}

body.navigation--closed main #main-content {
    width: 100vw;
}



/*--------------------*/
/*   administration   */
/*--------------------*/

body.layout--administration {
    color: var(--color-black);
}

/* header */

body.layout--administration #menu-icon .line {
    background-color: var(--color-black);
}



/* main */

body.layout--administration main {
    top: var(--layout-header-height);
    height: calc(100dvh - var(--layout-header-height));
}

/** main navigaion **/

body.layout--administration main #main-navigation {
    top: calc(var(--layout-header-height) * -1);
    height: calc(100% + var(--layout-header-height));
}

/** main content **/

body.layout--administration #main-content {
    padding: 0 var(--layout-padding);
    padding-bottom: var(--layout-padding);
}

.flex {
    display: flex;
    flex-direction: column;
}



/*--------------------------------*/
/*   layout showroom, dashboard   */
/*--------------------------------*/

body.layout--dashboard,
body.layout--showroom {
    color: var(--color-white);
}

/* header */

body.control-panel-open header {
    width: calc(100% - var(--showroom-overlay-width));
}

body.layout--showroom.control-panel-open main::before {
    width: calc(100% - var(--showroom-overlay-width));
}

body.layout--dashboard header #profile:has(.profile-menu-wrapper.hidden),
body.layout--showroom header #profile:has(.profile-menu-wrapper.hidden){
    background-color: transparent;
}

body.layout--dashboard header #breadcrumbs > ul li a,
body.layout--showroom header #breadcrumbs > ul li a {
    color: var(--color-white);
}

body.layout--dashboard.navigation--closed #brand svg path,
body.layout--showroom.navigation--closed #brand svg path {
    fill: var(--color-white);
}

/* main */

body:not(.layout--administration,.layout--error) main::before,
body.layout--dashboard .dashboard-image::before,
body.layout--showroom #showroom-wrapper::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 300px;
    background: var(--color-background-gardient-top);
    opacity: 0.9;
    z-index: 2;
    pointer-events: none;
    transition: var(--transition);
}

body.layout--showroom main::before {
    height: 150px;
}

body.layout--dashboard .dashboard-image::before,
body.layout--showroom #showroom-wrapper::before {
    top: auto;
    bottom: 0;
    height: 430px;
    transform: scaleY(-1);
    transition: var(--transition);
}

body.layout--showroom #showroom-wrapper::before {
    height: 300px;
}

body.layout--showroom #showroom-wrapper:has(#information-box.open)::before {
    height: 40dvh;
}



/*-----------------------*/
/*   Flyout navigation   */
/*-----------------------*/

body.layout--showroom header .menu-brand-wrapper,
body.layout--dashboard header .menu-brand-wrapper {
    width: calc(var(--layout-padding) * 2 + var(--icon-size) + 82px);
    min-width: max-content;
}

body.layout--showroom #brand svg path,
body.layout--dashboard #brand svg path {
    fill: var(--color-white);
}

body.layout--showroom #menu-icon .line,
body.layout--dashboard #menu-icon .line {
    background-color: var(--color-grey) !important;
}

body.layout--showroom.navigation--closed main #main-navigation,
body.layout--dashboard.navigation--closed main #main-navigation {
    left: calc(0px - var(--navigation-width));
}

body.layout--showroom main #main-navigation,
body.layout--showroom.navigation--closed:has(#menu-icon:hover) main #main-navigation,
body.layout--showroom.navigation--closed main #main-navigation:hover,
body.layout--dashboard main #main-navigation,
body.layout--dashboard.navigation--closed:has(#menu-icon:hover) main #main-navigation,
body.layout--dashboard.navigation--closed main #main-navigation:hover,
body.layout--administration.navigation--closed main #main-navigation {
    height: max-content;
    position: absolute;
    top: var(--layout-header-height);
    left: var(--layout-space-s);
    background-color: transparent;
}

body.layout--showroom main #main-navigation ul,
body.layout--showroom.navigation--closed:has(#menu-icon:hover) main #main-navigation ul,
body.layout--showroom.navigation--closed main #main-navigation:hover ul,
body.layout--dashboard main #main-navigation ul,
body.layout--dashboard.navigation--closed:has(#menu-icon:hover) main #main-navigation ul,
body.layout--dashboard.navigation--closed main #main-navigation:hover ul,
body.layout--administration.navigation--closed main #main-navigation ul {
    background-color: var(--color-white);
    border-radius: var(--border-radius-base);
    box-shadow: var(--box-shadow);
}

body.layout--administration.navigation--closed main #main-navigation {
    left: calc(0px - var(--navigation-width));
    top: 0;
}

body.layout--administration.navigation--closed:has(#menu-icon:hover) main #main-navigation,
body.layout--administration.navigation--closed main #main-navigation:hover {
    left: var(--layout-space-s);
}

body.layout--administration.navigation--closed #menu-icon:hover,
body.layout--showroom.navigation--closed #menu-icon:hover,
body.layout--dashboard.navigation--closed #menu-icon:hover {
    height: 100dvh;
}

/*
body.layout--administration.navigation--closed #menu-icon:hover .line,
body.layout--showroom.navigation--closed #menu-icon:hover .line,
body.layout--showroom:has(#main-navigation:hover) #menu-icon .line,
body.layout--dashboard.navigation--closed #menu-icon:hover .line,
body.layout--dashboard:has(#main-navigation:hover) #menu-icon .line,
body.layout--administration.navigation--closed:has(#main-navigation:hover) #menu-icon .line {
    opacity: .35;
}
*/

body.layout--showroom #main-navigation ul,
body.layout--dashboard #main-navigation ul,
body.layout--administration.navigation--closed #main-navigation ul {
    padding: var(--layout-space-s);
}

body.layout--showroom #main-navigation ul li:hover,
body.layout--showroom #main-navigation ul li.active,
body.layout--dashboard #main-navigation ul li:hover,
body.layout--dashboard #main-navigation ul li.active,
body.layout--administration.navigation--closed main #main-navigation ul li:hover,
body.layout--administration.navigation--closed main #main-navigation ul li.active {
    background-color: var(--color-grey-light);
}

body.layout--showroom main #main-content,
body.layout--dashboard main #main-content,
body.layout--administration.navigation--closed:has(#menu-icon:hover) main #main-content {
    width: 100vw;
}



/*-----------*/
/*   alert   */
/*-----------*/

.alert,
.error-login-wrapper,
.success-login-wrapper {
  position: absolute;
  top: 0;
  right: var(--layout-padding);
  text-align: center;
  padding: var(--layout-padding) var(--layout-padding-s);
  border-radius: var(--border-radius-small);
  font-size: var(--font-size-text-s);
  z-index: 9999;
  color: var(--color-white);
  transition: var(--transition);
  display: inline-block;
  max-width: calc(var(--navigation-width) * 2);
  width: max-content;
}

.alert.alert-success,
.success-login-wrapper {
    background-color: var(--color-green);
}

.alert.alert-error,
.error-login-wrapper {
    background-color: var(--color-red);
}

.alert.alert-info {
    background-color: var(--color-blue);
}

.layout--default .alert,
.layout--showroom .alert,
.layout--default .error-login-wrapper,
.layout--shworoom .error-login-wrapper,
.layout--default .success-login-wrapper,
.layout--showroom .success-login-wrapper {
    top: var(--layout-padding);
}

@media (min-width: 1920px) {
    header #profile {
        background-size: var(--layout-space);
    }
}


@media (max-width: 1440px) {
    body:not(.navigation--closed) #menu-icon .line--first {
        top: 23%;
    }
    
    body:not(.navigation--closed) #menu-icon .line--second {
        bottom: 23%;
    }
    
    body:not(.navigation--closed) #menu-icon .line--third {
        top: 33%;
    }
    
    body:not(.navigation--closed) #menu-icon .line--fourth {
        transform: translate(-50%, -100%) rotate(-45deg);
        bottom: 23%;
    }
}


@media (max-width: 768px) {
    body .menu-brand-wrapper {
        width: calc(var(--layout-padding) * 2 + var(--icon-size) + 82px) !important;
    }

    header #breadcrumbs {
        width: calc(100% - (var(--layout-padding) * 2 + var(--icon-size)) - var(--btn-edit-height) - (var(--layout-padding) * 2) - 82px) !important;
        font-size: var(--font-size-text-s);
        margin-top: .15rem;
        margin-left: calc(var(--layout-padding-s) - .25rem);
        margin-left: .175rem;
    }

    header #breadcrumbs > ul li a {
        padding-left: 1.5rem;
    }

    header #breadcrumbs > ul > li:not(:first-of-type) {
        margin-left: .175rem;
    }

    header #breadcrumbs > ul > li:not(:last-of-type) {
        opacity: .6;
    }

    body main #main-navigation {
        position: absolute;
        background-color: transparent;
        left: var(--layout-space-s);
        top: 0 !important;
        height: max-content !important;
        z-index: 12;
    }

    body.navigation--closed main #main-navigation {
        left: calc(0px - var(--navigation-width)) !important;
    }

    body.layout--showroom main #main-navigation,
    body.layout--dashboard main #main-navigation {
        top: var(--layout-header-height) !important;
    }

    body main #main-navigation ul {
        background-color: var(--color-white);
        border-radius: var(--border-radius-base);
        box-shadow: var(--box-shadow);
        padding: var(--layout-space-s);
    }

    body main #main-navigation ul li.active {
        background-color: var(--color-grey-light);
    }

    body main #main-content {
        width: 100vw;
    }

    body.layout--showroom.control-panel-open main::before {
        width: 100%;
    }

    .alert,
    .error-login-wrapper,
    .success-login-wrapper {
        font-size: calc(var(--font-size-text-s) - 2px);
        max-width: calc(100vw - var(--layout-padding) * 2);
    }
}