@import "reset.css";

/*
// ==========================================================================
// Typography and core elements
// ==========================================================================
*/
/* @link https://utopia.fyi/type/calculator?c=360,14,1.25,1820,20,1.333,5,1,&s=0.75|0.5|0.25,1.5|2|3|4|6,s-l&g=s,l,xl,12 */

:root {
    --step--1: clamp(0.8rem, 0.6414rem + 0.2605vw, 0.9377rem);
    --step-0: clamp(1rem, 0.7825rem + 0.411vw, 1.25rem);
    --step-1: clamp(1.2rem, 0.9526rem + 0.6274vw, 1.6663rem);
    --step-2: clamp(1.3672rem, 1.1566rem + 0.9358vw, 2.2211rem);
    --step-3: clamp(1.709rem, 1.4003rem + 1.3718vw, 2.9607rem);
    --step-4: clamp(2.1362rem, 1.6898rem + 1.984vw, 3.9467rem);
    --step-5: clamp(2.6703rem, 2.0315rem + 2.839vw, 5.2609rem);
  }

/*
// ==========================================================================
// Fade in effect
// ==========================================================================
*/
@keyframes fadein {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

html {
    /* Color settings light-mode */
    --bg: hsl(40, 8%, 95%);
    --kiesel: hsl(41, 12%, 80%);
    --taupe: hsl(39, 16%, 68%);
    --umbra: hsl(32, 13%, 40%);
    --umbra-dark: hsl(32, 15%, 22%);
    --c: hsl(0, 100%, 0%);
    --shadow: hsla(0, 0%, 16%, 0.08);
    scroll-behavior: smooth;
}

body {
    background: var(--bg);
    color: var(--c);
    font-family: "Helvetica", sans-serif;
    font-size: var(--step-0);
    font-weight: 400;
    hyphens: auto;
    letter-spacing: 0.04em;
    line-height: 1.2;
    overscroll-behavior: none;
    text-wrap: auto;
    animation: fadein 1s;
}

h1 {
    font-size: var(--step-5);
    font-weight: 300;
    line-height: 1;
    margin-block-end: .3em;
    text-wrap: balance;
}
h2 {
    font-size: var(--step-4);
    font-weight: 300;
    line-height: 1;
    margin-block-end: .3em;
    text-wrap: balance;
}
h3 {
    font-size: var(--step-3);
    font-weight: 300;
    line-height: 1;
    margin-block-end: .3em;
    text-wrap: balance;
}
p {
    margin-block-end: .8em;
}
ul {
    margin-block-end: .8em;
    li {
        margin-block-end: .2em;
    }
}
small {
    font-size: var(--step--1);
}
strong {
    font-weight: 700;
}
a {
    transition: opacity linear .2s;
}

nav ul {
    list-style-type: none;
    margin-block-end: 0;
    padding: 0;
}

/*
// ==========================================================================
// Intro
// ==========================================================================
*/
#intro {   
    block-size: calc(100dvb - 6em);
    font-size: var(--step-3);
    padding-block-start: 6dvb;
}

.intro-slogan {
    text-align: center;
    padding-block: 1.33rem;
    position: relative;
    &:before {
        content: '';
        position: absolute;
        inset: 0;
        background-image: url(../img/design/logo-farbkuebel.png);
        background-size: contain;
        background-repeat: no-repeat;
        background-position: 50% 50%;
        opacity: 0.33;
        z-index: -1;
    }
}
.intro-images {
    display: flex;
    flex-direction: column;
    margin-block: 2rem 2rem; /*7rem 2rem;*/
    position: relative;
    .logo {
        block-size: 10rem;
        inline-size: 16ch;
        inset-block-start: -6rem;
        position: absolute;
        transition: block-size 0.4s;
        img {
            block-size: 100%;
            filter: drop-shadow(0 .4rem .4rem rgba(41, 41, 41, 40%));
            margin-inline: auto;
        }
    }
    .hero {
        block-size: 35dvb;
        display: flex;
        inline-size: 100%;
        img {
            block-size: 100%;
            object-fit: cover;
            object-position: 50% 50%;
        }
    }
}

/*
// ==========================================================================
// Layout
// ==========================================================================
*/
.wrapper {
    margin-inline: auto;
    max-inline-size: 120rem;
    padding-inline: 2dvi;
}
main {
    #main-navigation {
        background: var(--bg);
        block-size: 10.5em;
        font-size: var(--step-1);
        padding-block: 1em;
        position: sticky;
        inset-block-start: 0;
        z-index: 10;
        ul {
            display: flex;
            flex-direction: column;
        }
        a {
            color: var(--c);
            text-decoration: none;
            &:hover,
            &:focus,
            &:active {
                opacity: .6;
            }
        }
    }
}

#fassade,
#spachtel {
    background-color: var(--kiesel);
}
#anstriche,
#tapeten {
    background-color: var(--taupe);
}

.section__content {
    padding-block: 12rem 6rem;
    .content__copy {
        max-inline-size: 58ch;
    }
}

.section__figure {
    margin-block-end: 2rem;
}

footer {
    .h-card {
        margin-inline: auto;
        max-inline-size: 120rem;
        padding-block: 2rem;
        padding-inline: 2dvi;
        .u-email {
            display: block;
            margin-block-start: 1em;
        }
        .ecg {
            margin-block-start: 2rem;
            max-inline-size: 58ch;
        }
    }
    a {
        color: var(--bg);
        text-decoration: none;
        &:hover,
        &:focus,
        &:active {
            opacity: .6;
        }
    }
}

.content__gallery {
    list-style-type: none;
    margin-block-start: 2rem;
    padding: 0;
    .gallery__item {
        transition: all 0.4s;
        &:focus-within,
        &:hover {
            transform: scale(1.03);
        }
    }
    a {
        inline-size: 100%;
        block-size: 100%;
        color: var(--c);
        text-decoration: none;
    }
}

.logo__gallery {
    list-style-type: none;
    margin-block-start: 2rem;
    padding: 0;
    .gallery__item {
        margin-block-end: 1rem;
        transition: all 0.4s;
        &:focus-within,
        &:hover {
            transform: scale(1.03);
        }
    }
    a {
        inline-size: 100%;
        block-size: 100%;
        color: var(--c);
        text-decoration: none;
        figure {
            align-items: start;
            border: none;
            display: flex;
            flex-direction: column;
            img {
                max-block-size: 5rem;
                inline-size: auto;
                object-fit: contain;
            }
        }
    }
}

@supports (display: grid) {
    .content__gallery {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        grid-auto-rows: auto;
        grid-auto-flow: dense;
        gap: 2dvi;
    }
}

.gallery__figure {
    border: solid 1rem var(--bg);
    img {
        block-size: 100%;
        inline-size: 100%;
        object-fit: cover;
    }
    figcaption {
        background-color: var(--bg);
        font-size: var(--step--1);
        padding-block-start: 1em;
    }
}

/*
// ==========================================================================
// Media queries
// ==========================================================================
*/
@media (prefers-color-scheme: dark) {
    html {
        /* Color settings dark-mode */
        --bg: hsl(0, 0%, 16%);
        --c: hsl(0, 0%, 83%);
    }
}

@media only screen and (min-width:48rem) {
    #intro {
        padding-block-start: 9dvb;/*12dvb;*/
    }
    .intro-images {
        /*margin-block: 4rem 2rem;*/
        .logo {
            block-size: 14rem;
            inset-inline-start: 16ch;
            inset-block-start: -9rem;
            margin-block-end: 0;
        }
        .hero {
            block-size: 40dvb;
        }
    }

    @supports (display: grid) {
        .section__content {
            align-items: baseline;
            display: grid;
            gap: 2rem;
            grid-template-columns: repeat(2, 1fr);
            .grid--full-width {
                grid-column: 1 / span 2;
            }
        }

        .content__gallery {
            grid-column: 1 / span 2;
            grid-template-columns: subgrid;
        }

        .logo__gallery {
            align-items: end;
            display: grid;
            grid-template-columns: subgrid;
            grid-auto-rows: auto;
            grid-auto-flow: dense;
            gap: 2dvi;
        }
    }
}

@media only screen and (min-width: 64rem) {
    #intro {
        background-position: min(34rem, 100%) 14dvb;
    }

    .intro-images {
        .logo {
            block-size: 13rem;
            inset-inline-start: 16ch;
            inset-block-start: -9rem;
        }
        .hero {
            inline-size: 100%;
            block-size: 40dvb;
        }
    }

    @supports (display: grid) {
        .section__content {
            align-items: baseline;
            display: grid;
            gap: 2rem;
            grid-template-columns: repeat(4, 1fr);
            .grid--full-width {
                grid-column: 1 / span 4;
            }
        }
        .content__header {
            grid-column: 1 / 3;
        }
        .content__copy {
            grid-column: 3 / 4;
            &:not(:first-of-type) {
                grid-column: span 2;
            }
        }

        .content__gallery {
            grid-column: 1 / span 4;
            grid-template-columns: subgrid;
        }

        .logo__gallery {
            align-items: end;
            display: grid;
            grid-template-columns: subgrid;
            grid-auto-rows: auto;
            grid-auto-flow: dense;
            gap: 2dvi;
        }

        .section__figure {
            grid-column: 3 /span 2;
        }
    }
}

@media only screen and (min-width: 70rem) {
    /*
    // ==========================================================================
    // Intro
    // ==========================================================================
    */

    #intro {
        block-size: calc(100dvb - 1.7em);
    }
    .intro-images {
        margin-block: 6rem 2rem;
        .logo {
            block-size: min(18rem, 40vb);
            inset-block-start: -11rem;
        }
    }
    main {
        #main-navigation {
            block-size: 3em;
            ul {
                &.wrapper {
                    flex-direction: row;
                }
                li {
                    margin-inline-end: 1.333em;
                }
            }
        }
    }
    .section__content {
        padding-block: 10rem 6rem;
    }
    
}

@media only screen and (min-width: 72rem) {
    @supports (display: grid) {
        .section__content {
            grid-template-columns: repeat(5, 1fr);
            .content__header {
                grid-column: 1 / 3;
            }
            .content__copy {
                grid-column: 3 / 5;
                &:not(:first-of-type) {
                    grid-column: span 2;
                }
            }
            .content__gallery {
                grid-column: 1 / span 5;
                grid-template-columns: repeat(4, 1fr);;
            }
            .grid--full-width {
                grid-column: 1 / span 5;
            }
        }
        .section__figure {
            grid-column: 3 /span 2;
        }
    }
}

@media print {
    :root {
        --step--1: 4mm;
        --step-0: 5mm;
        --step-1: 6mm;
        --step-2: 8mm;
        --step-3: 10mm;
        --step-4: 12mm;
        --step-5: 14mm;
    }
    @page {
        margin: 10mm 10mm 10mm 40mm;
        size: A4 portrait;
    }
    html {
        --c: black;
        --bg:white;
    }
    a:not(.logo__link) {
        text-decoration: underline;
        &[href]:after {
            content: ' ('attr(href)')';
        }
        &:visited {
            text-decoration: underline;
        }
    }
    
}

/*
// ==========================================================================
// Helper
// ==========================================================================
*/
.nowrap {
    white-space: nowrap;
}
.noborder {
    border: none;
}
.skipto {
    position: fixed;
    inline-size: 1px;
    block-size: 1px;
    overflow: hidden;
    clip: rect(1px 1px 1px 1px);
    white-space: nowrap;
    display: block;
    inset-block-start: 0;
    inset-inline-start: 0;
    background: var(--bg);
    padding: .3em;
    color: var(--c);
    z-index: 1000;

    &:focus-within {
        block-size: auto;
        inline-size: 100%;
        clip: auto;
        & a {

                opacity: 1;

        }
    }
    
}