:root {
    font-family: 'Inter', sans-serif;
}

@supports (font-variation-settings: normal) {
    :root {
        font-family: 'Inter var', sans-serif;
    }
}

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

html,
body {
    max-width: 90dvw;
    margin: 0 auto;
    scroll-behavior: smooth;

    /* scroll-snap-type: y mandatory; */
    scroll-padding: 7rem;
}

mark {
    animation: highlight linear forwards;
    animation-timeline: view(60% 20%);
    background: linear-gradient(
    to right,
		oklch(0.86 0.19 84.89 / 1) 50%,
		oklch(0.86 0.19 84.89 / 0) 50%
    );
    background-position: 100%;
    background-size: 200% 100%;
    border-radius: 0.125rem;
    padding-inline: 0.125rem;
    padding-block: 0.1rem 0.5svh;
}

@keyframes highlight {
    to {
        background-position: 0;
    }
}

/* figure {
  overflow: hidden;
}

figure img {
  display: inline-block;
  will-change: transform, opacity;
  animation: fadeInAndScroll 10s linear infinite;
}

@keyframes fadeInAndScroll {
  0% {
    transform: translateX(100%);
    opacity: 0;
  }
  30% {
    opacity: 0.7;
  }
  100% {
    transform: translateX(-100%);
    opacity: 1;
  }
}

figure img:hover {
  animation-play-state: paused;
} */
@media (prefers-reduced-motion: reduce) {
    * {
        animation: none !important;
        transition: none !important;
        transform: none !important;
        filter: none !important;
    }

    figure img {
        animation: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    * {
        animation: none !important;
        transition: none !important;
        transform: none !important;
        filter: none !important;
    }

    html {
        scroll-behavior: auto;

        /* scroll-snap-type: none; */
    }

    body {
        background-image: url(../img/hintergrund.webp);
        background-repeat: no-repeat;
        background-size: cover;
        background-position: center;
    }

    #myVideo {
        display: none;
    }

    aside {
        display: none;
    }

    section.grid-main-hero {
        display: flex;
        gap: 1rem;
        align-items: center;
        height: 80dvh;
    }
}

#myVideo {
    position: fixed;
    left: 0;
    bottom: 0;
    min-width: 100%;
    min-height: 100%;
    z-index: -1;
    filter: blur(5px);
}

video {
    object-fit: cover;
}

body {
    font-family: Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Nimbus Sans', Arial, sans-serif;
    color: #333;
    line-height: 1.3;
    margin: 0;
    padding: 0;
}

#magicPointer {
    z-index: 10002;
}

.bp-wrap {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    position: fixed;
    z-index: 10000;
    contain: strict;
    touch-action: none;
    -webkit-tap-highlight-color: transparent;
}

h1,
h2,
h3 {
    padding: 1rem;
    margin: auto;
    text-align: center;
    color: #333;
    text-shadow: #333 0 0 1px;
}

h1 {
    font-size: calc(1.1rem + 1vw);
}

h2 {
    font-size: calc(1rem + 1vw);
}

h3 {
    font-size: calc(0.9rem + 1vw);
}

/* Responsive hamburger menu */
/* header */
.header {
    display: flex;
    justify-content: space-around;
    align-items: center;
    position: fixed;
    width: 98%;
    z-index: 10000;
    top: 0.6rem;
    padding: 5px;
    right: 0;
    left: 0;
    margin-right: auto;
    margin-left: auto;
}

.header ul {
    margin: 0;
    padding: 0;
    list-style: none;
    overflow: hidden;
}

.header li a {
    font-size: 1rem;
    font-weight: 600;
    color: #333;
    display: block;
    padding: 0.5rem 0.5rem;
    text-decoration: none;
    transition: 800ms;
}

.header li a:hover,
.header .menu-btn:hover {
    color: #f4f4f4;
    background-color: #333;
    border-radius: 0.5rem;
    transition: 800ms;
}

/* menu */
.header .menu {
    clear: both;
    max-height: 0;
    transition: max-height .2s ease-out;
    text-align: center;
}

/* menu icon */
.header .menu-icon {
    cursor: pointer;
    display: inline-block;
    padding: 2rem 1.5rem;
    position: relative;
    -webkit-user-select: none;
    user-select: none;
}

.header .menu-icon .navicon {
    background: #333;
    display: block;
    height: 3px;
    position: relative;
    transition: background .2s ease-out;
    width: 1.5em;
}

.header .menu-icon .navicon:before,
.header .menu-icon .navicon:after {
    background: #333;
    content: '';
    display: block;
    height: 100%;
    position: absolute;
    transition: all .2s ease-out;
    width: 100%;
}

.header .menu-icon .navicon:before {
    top: 5px;
}

.header .menu-icon .navicon:after {
    top: -5px;
}

/* menu btn */
.header .menu-btn {
    display: none;
}

.header .menu-btn:checked ~ .menu {
    max-height: 15rem;
}

.header .menu-btn:checked ~ .menu-icon .navicon {
    background: transparent;
}

.header .menu-btn:checked ~ .menu-icon .navicon:before {
    transform: rotate(-45deg);
}

.header .menu-btn:checked ~ .menu-icon .navicon:after {
    transform: rotate(45deg);
}

.header .menu-btn:checked ~ .menu-icon:not(.steps) .navicon:before,
.header .menu-btn:checked ~ .menu-icon:not(.steps) .navicon:after {
    top: 0;
}

/* 48em = 768px */
@media (min-width: 48rem) {
    .header li {
        float: left;
    }

    .header li a {
        padding: 1.3rem 2rem;
    }

    .header .menu {
        clear: none;
        float: right;
        max-height: none;
    }

    .header .menu-icon {
        display: none;
    }
}

main {
    padding-top: 10%;
    height: auto;
}

section {
    /* -moz-scroll-snap-align: start;
  -moz-scroll-snap-stop: always;
  -webkit-scroll-snap-stop: always;
  scroll-snap-stop: always;
  scroll-snap-align: start; */
    height: auto;
    margin-top: 4rem;
    padding: 10dvh 0 10dvh 0;
}

article {
    padding: 1rem;
    text-align: center;
}

article img {
    max-width: 100%;
    border-radius: 0.25rem;
}

article img:hover {
    position: relative;
    z-index: 1;
    box-shadow: 0 0.5rem 1.875rem rgba(0, 0, 0, 0.2);

    /* SCALE */
    filter: invert(1) sepia(0) saturate(0) hue-rotate(60deg);
}

article input {
    background: #333;
    border: 0;
    margin: auto;
    border-radius: 0.25rem;
    color: #f4f4f4;
    cursor: pointer;
    display: inline-block;
    font-size: 1rem;
    padding: 1rem;
    text-align: center;
    transition: 800ms;
}

article input:hover {
    background: #f4f4f4;
    border: 0;
    color: #333;
    cursor: pointer;
    display: block;
    font-size: 1rem;
    padding: 1rem;
    text-align: center;
    transition: 800ms;
}

figure {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-evenly;
    align-items: center;
    gap: 2rem;
}

figure.dev {
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

figure img {
    max-width: 100%;
    height: auto;
    border-radius: 0.25rem;

    /* VERZÖGERUNG */
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
    transition: all 0.3s linear;
    cursor: zoom-in;
}

figure img:hover {
    position: relative;
    z-index: 1;
    box-shadow: 0 0.5rem 1.875rem rgba(0, 0, 0, 0.2);
    filter: invert(1) sepia(0) saturate(0) hue-rotate(60deg);
    -webkit-transition: all 0.3s linear;
    -moz-transition: all 0.3s linear;
    -ms-transition: all 0.3s linear;
    -o-transition: all 0.3s linear;
    transition: all 0.3s linear;
}

figcaption p {
    color: #333;
    text-align: center;
    padding: 1rem;
    font-size: calc(1rem + 0.3vw);
    -webkit-font-smoothing: auto;
    -moz-osx-font-smoothing: auto;
}

.hero-text {
    flex-basis: 100%;
}

.hero-text h1,
.hero-text h2 {
    color: #f4f4f4;
    background: #111;
    margin: 1rem auto;
    padding: 1rem;
    width: -moz-fit-content;
    width: fit-content;
    border-radius: 0.3rem;
    box-shadow: 0 0.25rem 1.875rem rgba(0, 0, 0, 0.5);
}

/* Glassmorphism */
.glass {
    position: relative;
    background: rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(2px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.8);
    border-radius: 2rem;
    box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2), 
              inset 0 4px 20px rgba(255, 255, 255, 0.3);
}

.glass::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2rem;
    backdrop-filter: blur(1px);
    box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1),
              inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
    opacity: 0.6;
    z-index: -1;
    filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
}

/* Grid */
.grid {
    display: grid;
    grid-template-areas: "header header header"
    "main main main"
    "footer footer footer";
    grid-template-columns: 1fr 2fr 1fr;
    grid-template-rows: auto;
    gap: 1rem;
    padding: 1rem;
}

.grid-header {
    grid-area: header / header / header;
}

.grid-main {
    grid-area: main / main / main;
}

.grid-main-hero {
    display: flex;
    gap: 1rem;
    align-items: center;
    height: 70dvh;
}

@media screen and (max-width: 48rem) {
    .grid-main-hero {
        display: flex;
        flex-direction: column;
        gap: 1rem;
        align-items: center;
        justify-content: center;
        height: 85dvh;
    }
}

.grid-footer {
    grid-area: footer / footer / footer;
    gap: 1rem;
}

/* slideshow */
aside {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: #111;
}

aside.test {
    transform: translate3d(0, 0, 3rem) rotate(270deg);
}

.tech-slideshow {
    height: 15rem;
    max-width: 100%;
    margin: 0 auto;
    position: relative;
    overflow: hidden;
    transform: translate3d(0, 0, 3rem) rotate(90deg);
    border-radius: 0.5rem;
}

@media screen and (max-width: 48rem) {
    html,
    body {
        scroll-behavior: smooth;

        /* scroll-snap-type: y proximity; */
        scroll-padding: 7rem;
    }

    .tech-slideshow {
        height: 15rem;
        max-width: 100%;
        margin: 0 auto;
        position: relative;
        overflow: hidden;
        transform: translate3d(0, -10dvh, 3rem) rotate(0deg);
        border-radius: 0.5rem;
    }

    aside.test {
        display: none;
    }

    .browser-mockup {
        display: none;
    }
}

@media screen and (min-width: 769px){
    #dev img {
        display: none;
    }
}

.tech-slideshow > div {
    width: 150rem;
    height: 100%;
    background-size: contain;
    background-attachment: fixed;
    position: absolute;
    top: 0;
    left: 0;
    transform: translate3d(0, 0, 0);
}

.tech-slideshow .mover-1 {
    animation: moveSlideshow 30s linear infinite reverse;
    mix-blend-mode: luminosity;
}

.tech-slideshow .mover-2 {
    opacity: 0;
    transition: opacity 0.5s ease-out;
    animation: moveSlideshow 35s linear infinite;
}

.tech-slideshow:hover .mover-2 {
    opacity: 1;
}

.tech-slideshow .mover-3 {
    animation: moveSlideshow 30s linear infinite reverse;
    mix-blend-mode: luminosity;
}

.tech-slideshow .mover-4 {
    opacity: 0;
    transition: opacity 0.5s ease-out;
    animation: moveSlideshow 35s linear infinite;
}

.tech-slideshow:hover .mover-4 {
    opacity: 1;
}

@keyframes moveSlideshow {
    0% {
        background-image: url(../img/capoeira-plakat-1-300w.webp);
        transform: translateX(-66.6666%);
    }

    10% {
        background-image: url(../img/ui-mockup-400w.webp);
        transform: translateX(-46.6666%);
    }

    20% {
        background-image: url(../img/layout-seite-1-400w.webp);
        transform: translateX(-26.6666%);
    }

    30% {
        background-image: url(../img/capoeira-plakat-2-300w.webp);
        transform: translateX(-66.6666%);
    }

    40% {
        background-image: url(../img/App-Icon-1.svg);
        transform: translateX(-46.6666%);
    }

    50% {
        background-image: url(../img/alvarez-mockup-400w.webp);
        transform: translateX(-26.6666%);
    }

    60% {
        background-image: url(../img/capoeira-plakat-3-300w.webp);
        transform: translateX(-66.6666%);
    }

    70% {
        background-image: url(../img/layout-seiten-4-5-400w.webp);
        transform: translateX(-46.6666%);
    }

    80% {
        background-image: url(../img/Infografik-Wolf-Web-400w.webp);
        transform: translateX(-26.6666%);
    }

    90% {
        background-image: url(../img/ui-dark-mockup-400w.webp);
        transform: translateX(-66.6666%);
    }

    100% {
        background-image: url(../img/layout-seiten-16-17-400w.webp);
        transform: translateX(-46.6666%);
    }
}

.mask {
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 15%, #000 85%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent, #000 15%, #000 65%, transparent 100%);
}

/* Footer */
footer {
    /* -moz-scroll-snap-align: start;
  -moz-scroll-snap-stop: always;
  scroll-snap-stop: always;
  scroll-snap-align: start; */
    height: auto;
    margin-top: 4rem;
    display: block;
    text-align: center;
}

footer nav {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1rem;
}

footer nav ul {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 2rem;
}

footer nav ul li {
    list-style: none;
}

footer nav ul li a {
    font-size: 1rem;
    font-weight: 600;
    color: #333;
    display: block;
    padding: 0.5rem 0.5rem;
    text-decoration: none;
    transition: 800ms;
}

footer nav ul li a:hover {
    color: #f4f4f4;
    background-color: #333;
    border-radius: 0.5rem;
    transition: 800ms;
}

.browser-mockup {
    margin-top: 2rem;
    border-top: 2em solid rgba(230, 230, 230, 0.7);
    box-shadow: 0 0.1em 1em 0 rgba(0, 0, 0, 0.4);
    position: relative;
    border-radius: 0.5rem;
    width: 70dvw;
    height: 60dvh;
}

.browser-mockup:before {
    display: block;
    position: absolute;
    content: '';
    top: -1.25em;
    left: 1em;
    width: 0.5em;
    height: 0.5em;
    border-radius: 50%;
    background-color: #f44;
    box-shadow: 0 0 0 2px #f44, 1.5em 0 0 2px #9b3, 3em 0 0 2px #fb5;
}

embed {
    width: 100%;
    height: -webkit-fill-available;
    height: -moz-available;
    height: inherit;
}

/* animate section on scroll */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

section {
    opacity: 0;

    /* Start hidden */
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

section.visible {
    opacity: 1;
    transform: translateY(0);
    animation: fadeIn 1s ease-out forwards;
}
