/* FONTS */
@font-face {
    font-family: default-font;
    src: url(../fonts/subset-DIN2014-Regular.woff);
    font-weight: 400;
}

@font-face {
    font-family: default-font;
    src: url(../fonts/subset-DIN2014-Bold.woff);
    font-weight: 700;
}
@font-face {
    font-family: heading-font;
    src: url(../fonts/subset-Pragmatica-Book.woff);
    font-weight: 400;
}

@font-face {
    font-family: heading-font;
    src: url(../fonts/subset-Pragmatica-Bold.woff);
    font-weight: 700;
}

@font-face {
    font-family: icon-font;
    src: url(../fonts/icon-font.woff);
    font-weight: 400;
}

/* KEYFRAMES */
@keyframes pulse {
    from {
        transform: scale(0);
        border-width: 1em;
    }
    to {
        transform: scale(1);
        border-width: 0;
    }
}

@keyframes fade-out {
  to {
    opacity: 0;
  }
}

@keyframes fade-in {
  from {
      opacity: 0;
  }
}

/* VIEW TRANSITION */
@view-transition {
    navigation: auto;
}

::view-transition-group(main) {
    animation-delay: 0.3s;
    animation-duration: 0s;
}

::view-transition-old(main) {
    animation: 0.3s fade-out both;
}

::view-transition-new(main) {
    animation: 0.3s 0.3s fade-in both;
}

::view-transition-group(menu) {
	z-index: 1;
    animation-duration: 0s;
}

::view-transition-old(menu) {
    animation: none;
    opacity: 0;
}
::view-transition-new(menu) {
    animation: none;
    opacity: 1;
}

/* GENERAL */
:root{
    view-transition-name: none;
}

html {
	font-size: 62.5%;
    scroll-behavior: smooth;
}

body {
    margin: 0;
	font-family: default-font, sans-serif;
	font-size: 1.6rem;
	line-height: 1.4em;
	background-color: #212C36;
	color: #ffffff;
	-webkit-font-smoothing: antialiased;
}

p {
	margin: 2rem 0;
}

ul{
    margin: 2rem 0;
    padding-left: 2rem;
}

li{
	margin: 1rem 0;
}

figure{
    margin: 2rem 0;
    padding: 0;
}

figure img{
    width: 100%;
}

figure figcaption{
    font-style: italic;
    margin-top: 1rem;
}

hr {
	margin: 3rem 0;
	background-color: #e5e5e5;
	height: 0.1rem;
	border: 0;
}

a {
	color: #ffb91d;
	text-decoration: none;
    outline: 0;
	cursor: pointer;
}

a:hover,
a:focus-visible{
	text-decoration: underline;
}

sub{
    line-height: 0;
}

img,
svg,
video{
	width:auto;
	max-width: 100%;
	height:auto;
    vertical-align: top;
}

h1, h2, h3, h4{
	margin: 3rem 0 2rem 0;
}

h1,
.h1{
    font-family: heading-font, sans-serif;
	font-size: 4rem;
	line-height: 1.2em;
    font-weight: 700;
}

h2,
.h2{
    font-family: heading-font, sans-serif;
	font-size: 3rem;
	line-height: 1.2em;
    font-weight: 700;
}

h3,
.h3{
    font-family: heading-font, sans-serif;
	font-size: 2.6rem;
	line-height: 1.2em;
    font-weight: 700;
}

h4,
.h4{
    font-family: heading-font, sans-serif;
	font-size: 1.8rem;
	line-height: 1.2em;
    font-weight: 700;
}

h5,
.h5{
    font-family: heading-font, sans-serif;
	font-size: 1.4rem;
	line-height: 1.2em;
    font-weight: 400;
}

@media screen and (max-width: 60em) {
    h1,
    .h1{
        font-size: 3rem;
        line-height: 1.2em;
    }

    h2,
    .h2{
        font-size: 2.5rem;
        line-height: 1.2em;
    }
}

/* ICON FONT */
.icon-font{
    font-family: icon-font;
    font-weight: 400;
}

/* BODY */
#body{
    display: flex;
    min-height: 100vh;
}

@media screen and (max-width: 60em) {
    #body{
        flex-direction: column-reverse;
    }
}

/* MENU */
#menu{
    flex-shrink: 0;
    background-color: #203A4F;
    z-index: 1;
    view-transition-name: menu;
}

#menu ul{
    display: flex; flex-direction: column;
    list-style: none;
    margin: 0;
    padding: 0;
    border-bottom: 0.1rem solid rgba(255, 255, 255, 0.2);
}

#menu li{
    margin: 0;
    padding: 0;
    border-top: 0.1rem solid rgba(255, 255, 255, 0.2);
    border-bottom: 0.1rem solid rgba(0, 0, 0, 0.5);
}

#menu li.current{
    background-color: #1c2b39;
    border-color: transparent;
}

#menu a{
    display: flex; align-items: center; gap: 1em;
    width: 14rem;
    padding: 1.5rem;
    box-sizing: border-box;
    color: #ffffff;
    text-decoration: none;
}

#menu a:hover,
#menu a:focus-visible{
    color: #ffb91d;
}

#menu li.current a{
    color: #ffffff;
}

#menu a img{
    margin: auto;
}

#menu .icon{
    display: block;
    width: 6rem;
    margin: 0 auto 1rem auto;
    position: relative;
}

#menu .current a .icon,
#menu a:hover .icon,
#menu a:focus-visible .icon{
    filter: brightness(0) invert(1);
}

#menu .icon::before{
    content: "";
    display: block;
    padding-bottom: 100%;
}

#menu .icon img{
    position: absolute; top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: scale-down;
}

@media screen and (max-width: 60em) {
    #menu{
        position: sticky; bottom: 0;
        flex-direction: row;
        flex-basis: auto;
        overflow: auto;
    }
    #menu .sidebar{
        min-height: 0;
    }
    #menu ul{
        flex-direction: row;
        border-bottom: 0;
    }
    #menu li{
        border-top: 0;
        border-bottom: 0;
        border-left: 0.1rem solid rgba(255, 255, 255, 0.2);
        border-right: 0.1rem solid rgba(0, 0, 0, 0.5);
    }
    #menu a{
        height: 100%;
    }
    #menu .icon{
        width: 4rem;
    }
}

/* MAIN */
#main{
    display: flex; flex-direction: column;
    flex-grow: 1;
    z-index: 0;
    view-transition-name: main;
}

#main .header{
    margin-top: 5rem;
    padding: 0 5rem;
    display: flow-root;
}

#main .header > .inner{
    display: flex; flex-direction: row-reverse; flex-wrap: wrap;
    margin: -1.5rem;
}

#main .header .title{
    flex-basis: 0;
    flex-grow: 1;
    margin: -1.5rem 0;
}

#main .header .logo{
    max-width: 40%;
    flex-shrink: 0;
    margin: -1.5rem 0;
    text-align: right;
}

#main .header .title > .inner,
#main .header .logo > .inner{
    margin: 3rem 0;
    padding: 0 1.5rem;
}

@media screen and (max-width: 60em) {
    #main .header{
        padding: 0 2.5rem;
    }
}

/* MAP */
#map{
    flex-grow: 1;
    position: relative;
}

#map > .inner{
    position: absolute; top: 0; bottom: 0; left: 0; right: 0;
    max-width: 100%;
    max-height: 100%;
    aspect-ratio: 16/9;
    margin: auto;
	font-size: min(1vw, 1.6rem);
    container-type: inline-size;
    font-size: 0.8cqi;
}

#map > .inner::before {
    content: "";
    display: block;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    box-shadow: inset 0 0 2em 1em #1c2b39;
}

#map video{
    width: 100%;
}

#map .hotspots{
    visibility: hidden;
    opacity: 0;
}

#map.active .hotspots{
    visibility: inherit;
    opacity: 1;
    transition: opacity 0.5s;
}

#map .hotspot{
    position: absolute;
    display: flex; align-items: center; gap: 1.5em;
    width: 0;
    height: 0;
    color: #ffffff;
}

#map .hotspot.reverse{
    flex-direction: row-reverse;
    text-align: right;
}

#map a.hotspot:hover,
#map a.hotspot:focus-visible{
    text-decoration: none;
    color: #ffb91d;
}

#map .hotspot .spot{
    width: 3em;
    height: 3em;
    flex-shrink: 0;
    margin: -1.5em;
    position: relative;
}

#map .hotspot .spot::before,
#map .hotspot .spot::after{
    content: "";
    display: block;
    position: absolute; top: 0; bottom: 0; left: 0; right: 0;
	width: 75%;
	height: 75%;
    margin: auto;
    border-radius: 50%;
    border: 0.25em solid #ffb91d;
    box-sizing: border-box;
    transform: scale(0.75);
}

#map .hotspot .spot::after{
    border-width: 0.75em;
    transform: scale(0.25);
}

#map a.hotspot:hover .spot::before,
#map a.hotspot:focus-visible .spot::before{
    animation: pulse 2s linear -1.5s infinite;

}
#map a.hotspot:hover .spot::after,
#map a.hotspot:focus-visible .spot::after{
    animation: pulse 2s linear -0.5s infinite;
}

#map .hotspot .label{
    font-family: heading-font, sans-serif;
    line-height: 1.2em;
    white-space: nowrap;
    line-height: 1.2em;
}

/* PAGE */
#page{
    margin: 5rem 0;
    padding: 0 5rem;
}

#page > .inner{
    display: flex; flex-wrap: wrap;
    margin: -2.5rem;
}

#page .sidebar{
    width: 50%;
    z-index: 1;
    max-width: 30rem;
    margin: -2.5rem 0;
}

#page .sidebar .sticky{
    display: flow-root;
}

#page .sidebar .sticky > .inner{
    margin: 5rem 0;
    padding: 0 2.5rem;
}

#page .sidebar .select button{
    display: none;
}

#page .sidebar .menu{
    list-style: none;
    margin: 0;
    padding: 0;
}

#page .sidebar .menu ul{
    list-style: none;
    margin: 0;
    padding: 0;
}

#page .sidebar .menu li{
    margin: 0;
    padding: 0;
    border-top: 0.1rem solid rgba(255, 255, 255, 0.2);
}

#page .sidebar .menu a{
    display: block;
    padding: 1rem 0;
    color: currentColor;
    border-bottom: 0.1rem solid rgba(255, 255, 255, 0.2);
}

#page .sidebar .menu ul a{
    padding: 0.5rem 0 0.5rem 1.5rem;
}

#page .sidebar .menu a.current,
#page .sidebar .menu a:hover,
#page .sidebar .menu a:focus-visible{
    text-decoration: none;
    color: #ffb91d;
}

#page .content{
    width: 50%;
    flex-grow: 1;
    margin: -2.5rem 0;
}

#page .content > .inner{
    margin: 5rem 0;
    padding: 0 2.5rem;
}

#page .footer{
    display: flow-root;
}

#page .footer > .inner{
    display: flex; align-items: center; flex-wrap: wrap;
    margin: -1.5rem;
}

#page .footer .logo{
    max-width: 40%;
    flex-shrink: 0;
    margin: -1.5rem 0 -1.5rem auto;
    text-align: right;
}

#page .footer .back-to-top{
    width: 12rem;
    margin: -1.5rem 0 -1.5rem calc(50% - 6rem);
    text-align: center;
}

#page .footer .back-to-top > .inner,
#page .footer .logo > .inner{
    margin: 3rem 0;
    padding: 0 1.5rem;
}

#page .footer .back-to-top a{
    display: flex; flex-direction: column; align-items: center; gap: 1rem;
    color: currentColor;
    text-align: center;
}

#page .footer .back-to-top a:hover,
#page .footer .back-to-top a:focus-visible{
    text-decoration: none;
    color: #ffb91d;
}

@media screen and (max-width: 90em) {
    #page .sidebar{
        width: 100%;
        max-width: none;
    }
    #page .sidebar .select{
        position: relative; z-index: 1;

    }
    #page .sidebar .select button{
        display: flex; justify-content: space-between; vertical-align: middle;
        width: 100%;
        margin: 0;
        padding: 1.5rem;
        box-sizing: border-box;
        border-radius: 0;
        border: 0;
        outline: 0;
        background-color: #203A4F;
        color: #ffffff;
        cursor:pointer;
    }
    #page .sidebar .select button:hover,
    #page .sidebar .select button:focus-visible{
        color: #ffb91d;;
    }
    #page .sidebar .select .dropdown{
        position: absolute; top: 100%; left: 0; right: 0;
        max-height: 50vh;
        overflow: auto;
        background-color: #203A4F;
        visibility: hidden;
    }
    #page .sidebar .select.open .dropdown{
        visibility: inherit;
    }
    #page .sidebar .menu a{
        padding: 1rem 1.5rem;
    }
    #page  .sidebar .menu ul a{
        padding: 1rem 1.5rem 1rem 3rem;
    }
	#page .sidebar .menu a.current{
		color: currentColor;
	}
	#page .sidebar .menu a:hover,
	#page .sidebar .menu a:focus-visible{
		color: #ffb91d;;
	}
}

@media screen and (max-width: 60em) {
    #page{
        padding: 0 2.5rem;
    }
}

/* BOX */
.box{
    display: flow-root;
    margin: 5rem 0;
    border-radius: 2rem;
	font-size: 1.8rem;
	line-height: 1.4em;
    background-color: #101921;
    overflow: hidden;
    position: relative; z-index: 0;
}

.box > .inner{
    margin: 7rem 0;
    padding: 0 5rem;
}

.box .columns{
    display: flow-root;
    margin: 3rem 0;
}

.box .columns > .inner{
    display: flex; flex-wrap: wrap;
    margin: -1.5rem -2.5rem;
}

.box .columns.four > .inner{
    margin: -1.5rem;
}

.box .columns.reverse > .inner{
    flex-direction: row-reverse;
}

.box .columns .column{
    margin: -1.5rem 0;
    flex-shrink: 0;
}

.box .columns .column.grow{
    flex-grow: 1;
}

.box .columns .column.center{
    align-self: center;
}

.box .columns.two .column{
    width: 50%;
}

.box .columns.three .column{
    width: 33.33%;
}

.box .columns.four .column{
    width: 25%;
}

.box .columns .column > .inner{
    margin: 3rem 0;
    padding: 0 2.5rem;
}

.box .columns.four .column > .inner{
    padding: 0 1.5rem;
}

.box .column-list{
    column-count: 3;
    column-gap: 5rem;
}

.box .column-list li{
    margin-top: 0;
}

.box .image{
    display: block;
    width: 100%;
}

.box .image.shadow{
    box-shadow: 0 3rem 5rem -3rem rgba(0, 0, 0, 1);
}

.box li.link::marker {
    color: #ffb91d;
}

.box .block{
    margin: 5rem 0;
}

@media screen and (max-width: 75em) {
    .box > .inner{
        margin: 5rem 0;
    }
    .box .columns.two .column,
    .box .columns.three .column{
        width: 100%;
    }
    .box .columns.four .column{
        width: 50%;
    }
    .box .column-list{
        column-count: 2;
    }
}

@media screen and (max-width: 60em) {
    .box > .inner{
        padding: 0 2.5rem;
    }
}

@media screen and (max-width: 45em) {
    .box .column-list{
        column-count: auto;
    }
}

@media screen and (max-width: 30em) {
    .box .columns.four .column{
        width: 100%;
    }
}
