:root {
    /* Colors */
    --clr-teal: hsl(177 100% 33%);
    --clr-dark-teal: hsl(177 100% 17%);
    --clr-light-teal: hsl(177 12% 90%);
    --clr-soft-teal: hsl(177 18% 96%);
    --clr-light-yellow: hsl(60 100% 80%);
    --clr-red: hsl(0 100% 55%);
    --clr-white: hsl(0 0% 100%);
    --clr-black: hsl(0 0% 0%);
    --clr-gray: hsl(0 0% 85%);
    --clr-dark-gray: hsl(0 0% 50%);

    /* Content */
    --content-side-indent: 8.00rem;
}

@media (max-width: 80em) {
    :root {
        --content-side-indent: 4.00rem;
    }
}

@media (max-width: 60em) {
    :root {
        --content-side-indent: 2.00rem;
    }
}

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

h2,
h3,
h4,
h5,
h6 {
    line-height: 1.10;

    strong {
        color: var(--clr-teal);
        font-weight: inherit;
    }
}

small {
    color: var(--clr-dark-gray);
}

/**
 * Forms
 */
input,
textarea,
select {
    width: 100%;
    padding-inline: 0.50rem;
    padding-block: 1.00rem;
    border: 1px solid var(--clr-light-teal);
    background-color: var(--clr-white);
    font-family: Arial, Helvetica, sans-serif;
    font-size: 1.00rem;
}

label {
    display: block;
    font-weight: bold;
}

.hidden-fields-container {
    display: none;
    visibility: hidden;
}

/**
 * Buttons
 */
.button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    padding-block: 0.50rem;
    padding-inline: 1.00rem;
    border: 2px solid var(--clr-teal);
    background-color: var(--clr-teal);
    color: var(--clr-white);
    font-size: 1.00rem;
    font-weight: 600;
    font-family: Arial, Helvetica, sans-serif;
    text-decoration: none;
    cursor: pointer;

    &[data-invert="true"] {
        background-color: transparent;
        color: var(--clr-dark-teal);
    }
}

/**
 * Images
 */
img {
    display: block;
    width: 100%;
    height: auto;
}

/**
 * Lists
 */
.tick-list {
    li::marker {
        content: "\f00c  ";
        color: var(--clr-teal);
        font-size: 1.25rem;
        font: var(--fa-font-solid);
    }
}

/**
 * Pre
 */
pre {
    .error {
        color: var(--clr-red);
    }
}

/**
 * Layout
 */
.site {
    background-color: var(--clr-white);
    color: var(--clr-black);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.50;

    .site__header {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        padding-block: 1.00rem;
        padding-inline: var(--content-side-indent);
        background-color: var(--clr-light-teal);
    }

    .site__logo {
        width: auto;
        max-height: 3.00rem;
    }

    .site__footer {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-between;
        align-items: center;
        gap: 1.00rem;
        padding-inline: var(--content-side-indent);
        padding-block: 2.00rem;
        background-color: var(--clr-light-teal);

        .attribution {
            font-size: 0.85rem;
        }
    }
}

@media (max-width: 60em) {
    .site {
        .site__footer {
            flex-direction: column;
            gap: 1.00rem;
            text-align: center;
        }
    }
}

@media (max-width: 40em) {
    .site {
        .site__header {
            justify-content: center;
            gap: 1.00rem;
        }
    }
}

/**
 * Hero
 */
.hero {
    display: grid;
    grid-template-columns: 1fr 0.75fr;
    gap: 2.00rem;
    align-items: center;
    padding-block: 2.00rem;
    padding-inline: var(--content-side-indent);
    background-color: var(--clr-soft-teal);

    .hero__left-column {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;
    }

    .hero__heading {
        font-size: 2.00rem;
    }

    .hero__buttons {
        display: flex;
        flex-wrap: wrap;
        gap: 1.00rem;
    }

    .tick-list {
        display: flex;
        flex-wrap: wrap;
        gap: 0.50rem;
        list-style-position: inside;
    }
}

@media (max-width: 60em) {
    .hero {
        grid-template-columns: 1fr;

        .hero__left-column {
            align-items: center;
        }

        .hero__heading {
            text-align: center;

            strong {
                display: block;
            }
        }

        .hero__buttons {
            justify-content: center;
        }

        .tick-list {
            justify-content: center;
        }
    }
}

/**
 * Problems in project
 */
.problems {
    align-items: center;
    margin-block: 2.00rem;

    .equal-columns[data-columns] {
        grid-template-columns: 1fr 0.75fr;
    }

    .problems__left-column {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;
    }

    .problems__heading {
        font-size: 1.75rem;
    }

    .problems__description {
        font-size: 1.25rem;
    }

    .numbered {
        .numbered__item:not(:last-child) {
            padding-bottom: 1.00rem;
            border-bottom: 2px solid var(--clr-gray);
        }
    }
}

/**
 * Subjects blocking a project
 */
.project-block {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    padding-inline: var(--content-side-indent);
    padding-block: 2.00rem;
    background-color: var(--clr-soft-teal);
}

/**
 * Offered help
 */
.offered-help {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    margin-block: 2.00rem;
    padding-inline: var(--content-side-indent);
}

/**
 * Goals
 */
.goals {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    padding-inline: var(--content-side-indent);
    padding-block: 2.00rem;
    background-color: var(--clr-soft-teal);

    .goals__graph {
        display: grid;
        grid-template-columns: 1fr 0.25fr 1fr;
        justify-content: center;
        gap: 2.00rem;
        max-width: 85%;
        margin-inline: auto;
        margin-top: 2.00rem;
    }

    .goals__today,
    .goals__after-completion {
        padding-block: 1.00rem;
        padding-inline: 1.00rem;
        background-color: var(--clr-white);

        .goals__heading {
            margin-bottom: 1.00rem;
            font-size: 1.50rem;
        }
    }

    .goals__arrow {
        align-self: center;
        text-align: center;
        font: var(--fa-font-solid);
    }

    .goals__arrow::before {
        content: "\f061";
        color: var(--clr-teal);
        font-size: 4.00rem;
    }

    .tick-list {
        font-size: 1.25rem;
        list-style-position: inside;

        li {
            padding-block: 1.00rem;

            &:not(:last-child) {
                margin-bottom: 1.00rem;
                border-bottom: 1px solid var(--clr-gray);
            }
        }
    }

    .goals__today {
        .tick-list {
            li::marker {
                content: "\f00d  ";
                color: var(--clr-red);
            }
        }
    }
}

@media (max-width: 60em) {
    .goals {
        .goals__graph {
            grid-template-columns: 1fr;
            gap: 1.00rem;
            max-width: 100%;
            margin-inline: 0.00rem;
        }

        .goals__arrow::before {
            content: "\f063";
        }
    }
}

/**
 * Solution
 */
.solution {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    padding-inline: var(--content-side-indent);
    padding-block: 2.00rem;
    background-color: var(--clr-soft-teal);

    .solution__buttons {
        display: flex;
        flex-wrap: wrap;
        gap: 1.00rem;
    }

    .solution__content {
        display: grid;
        grid-template-columns: 1fr 0.75fr;
        grid-template-areas: "list example";
        align-items: center;
        gap: 1.00rem;
    }

    .solution__detail {
        grid-area: list;

        &.tick-list {
            display: none;
            visibility: hidden;
            flex-direction: column;
            gap: 1.00rem;
            list-style-position: inside;

            li {
                padding-inline: 1.00rem;
                padding-block: 2.00rem;
                background-color: var(--clr-white);
                font-size: 1.50rem;
            }
        }

        &[data-active="true"] {
            display: flex;
            visibility: visible;
        }
    }

    .solution__example {
        grid-area: example;
        padding-inline: 1.00rem;
        padding-block: 1.00rem;
        background-color: var(--clr-dark-teal);
        color: var(--clr-white);

        small {
            color: var(--clr-gray);
        }
    }

    .solution__assignment {
        font-size: 2.00rem;
    }
}

@media (max-width: 60em) {
    .solution {
        .solution__content {
            grid-template-columns: 1fr;
            grid-template-areas: "list" "example";
        }
    }
}

/**
 * Security
 */
.security {
    align-items: center;
    padding-block: 2.00rem;

    .security__left-column {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;
    }

    .numbered {
        .numbered__item::before {
            background-color: var(--clr-teal);
            color: var(--clr-white);
        }
    }
}

/**
 * Plan
 */
.plan {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    padding-inline: var(--content-side-indent);
    padding-block: 4.00rem;
    background-color: var(--clr-dark-teal);
    color: var(--clr-white);

    .plan__steps {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 1.00rem;

        .plan__step {
            .plan__number {
                color: var(--clr-teal);
                font-size: 2.00rem;
                font-weight: bold;
            }

            .plan__heading {
                margin-bottom: 1.00rem;
            }
        }
    }
}

@media (max-width: 60em) {
    .plan {
        .plan__steps {
            grid-template-columns: 1fr;
        }
    }
}

/**
 * Dependency
 */
.dependency {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.00rem;
    align-items: center;
    padding-inline: var(--content-side-indent);
    margin-block: 2.00rem;

    .dependency__left-column {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;
    }

    .dependency__right-column {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        gap: 1.00rem;

        .dependency__item {
            padding-inline: 1.00rem;
            padding-block: 1.00rem;
            background-color: var(--clr-soft-teal);
            font-size: 1.25rem;

            &::before {
                content: "\f00c  ";
                font-size: 1.50rem;
                color: var(--clr-teal);
                font: var(--fa-font-solid);
            }
        }
    }
}

@media (max-width: 60em) {
    .dependency {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 40em) {
    .dependency {
        .dependency__right-column {
            grid-template-columns: 1fr;
        }
    }
}

/**
 * Contact
 */
.contact {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2.00rem;
    padding-inline: var(--content-side-indent);
    padding-block: 2.00rem;
    background-color: var(--clr-soft-teal);

    .contact__left-column {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;

        .tick-list {
            list-style-position: inside;
        }
    }

    .contact__right-column {
        .name-email,
        .project-detail {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 1.00rem;
            margin-bottom: 1.00rem;
        }

        .phase,
        .block {
            margin-bottom: 1.00rem;
        }
    }
}

@media (max-width: 60em) {
    .contact {
        grid-template-columns: 1fr;

        .contact__right-column {
            .name-email,
            .project-detail {
                grid-template-columns: 1fr;
            }
        }
    }
}

/**
 * FAQ
 */
.faq {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    padding-inline: var(--content-side-indent);
    margin-block: 2.00rem;

    .faq__question {
        font-size: 1.25rem;

        &:not(:last-child) {
            padding-bottom: 1.00rem;
            margin-bottom: 0.50rem;
            border-bottom: 1px solid var(--clr-gray);
        }

        p {
            margin-top: 0.50rem;
        }
    }
}

/**
 * Cards
 */
.cards-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.00rem;
}

.card {
    display: flex;
    flex-direction: column;
    gap: 0.50rem;
    padding-inline: 2.00rem;
    padding-block: 2.00rem;
    background-color: var(--clr-soft-teal);

    .card__heading {
        font-size: 1.75rem;
    }

    &[data-top-border="true"] {
        border-top: 4px solid var(--clr-teal);
    }

    &[data-left-border="true"] {
        border-left: 4px solid var(--clr-teal);
    }

    ul {
        list-style-position: inside;
    }
}

.code-card {
    background-color: var(--clr-white);

    .code-card__header {
        display: flex;
        gap: 1.00rem;
        justify-content: space-between;
        padding-inline: 1.00rem;
        padding-block: 1.00rem;
        background-color: var(--clr-dark-teal);
        color: var(--clr-white);
    }

    .code-card__action {
        font-size: 1.00rem;
    }

    .code-card__status {
        color: var(--clr-light-yellow);
        font-weight: bold;
        text-transform: uppercase;
    }

    .code-card__content {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;
        padding-inline: 1.00rem;
        padding-block: 0.50rem;
    }

    .code-card__result {
        padding-block: 0.50rem;
        padding-inline: 0.50rem;
        border-left: 4px solid var(--clr-teal);
        background-color: var(--clr-soft-teal);
        color: var(--clr-teal);
        font-weight: bold;
        font-size: 0.90rem;
    }

    &[data-shadow="true"] {
        box-shadow: 1.00rem 1.00rem 0 0 var(--clr-light-teal);
    }
}

@media (max-width: 60em) {
    .cards-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 40em) {
    .cards-grid {
        grid-template-columns: 1fr;
    }
}

/**
 * Strips
 */
.column-strip {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    padding-inline: var(--content-side-indent);
    background-color: var(--clr-dark-teal);
    color: var(--clr-white);
    text-align: center;

    .column-strip__item {
        padding-block: 2.00rem;
        padding-inline: 1.00rem;
    }

    .column-strip__item:not(:last-child) {
        border-right: 1px solid var(--clr-white);
    }

    .column-strip__heading {
        font-size: 1.10rem;
    }

    .column-strip__description {
        font-size: 0.90rem;
    }
}

@media (max-width: 60em) {
    .column-strip {
        grid-template-columns: 1fr;
        gap: 0.00rem;

        .column-strip__item:not(:last-child) {
            border-right: none;
            border-bottom: 1px solid var(--clr-white);
        }
    }
}

/**
 * Columns
 */
.equal-columns {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2.00rem;
    padding-inline: var(--content-side-indent);

    &[data-columns="2"] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 60em) {
    .equal-columns {
        &[data-columns] {
            grid-template-columns: 1fr;
        }
    }
}

/**
 * Numbered sections
 */
@counter-style two-pad {
    system: numeric;
    symbols: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14';
    pad: 2 "0";
}

.numbered {
    display: flex;
    flex-direction: column;
    gap: 1.00rem;
    counter-reset: number;

    .numbered__item {
        display: grid;
        grid-template-columns: min-content 1.00fr;
        justify-content: center;
        align-items: flex-start;
        counter-increment: number;
    }

    .numbered__item::before {
        content: counter(number, two-pad);
        display: block;
        margin-inline: 1.00rem;
        margin-block: 0.50rem;
        padding-inline: 0.50rem;
        padding-block: 0.50rem;
        background-color: var(--clr-soft-teal);
        color: var(--clr-teal);
        font-size: 1.50rem;;
        font-weight: bold;
        aspect-ratio: 1 / 1;
    }

    .numbered__description {
        margin-top: 1.50rem;
    }
}

.selectable-steps {
    display: grid;
    grid-template-columns: 0.50fr 1.00fr;

    .selectable-steps__options,
    .selectable-steps__detail {
        display: flex;
        flex-direction: column;
        gap: 1.00rem;
        padding-inline: 1.00rem;
        padding-block: 1.00rem;
    }

    .selectable-steps__detail {
        display: none;
        visibility: hidden;

        &[data-active="true"] {
            display: flex;
            visibility: visible;
        }
    }

    .selectable-steps__options {
        background-color: var(--clr-dark-teal);
        color: var(--clr-white);
    }

    .selectable-steps__details {
        background-color: var(--clr-white);
    }

    .selectable-steps__list {
        list-style-type: none;

        li:not(:last-child) {
            padding-bottom: 0.50rem;
            margin-bottom: 0.50rem;
            border-bottom: 1px solid var(--clr-gray);
        }

        li[data-active="true"] {
            color: var(--clr-teal);
            text-decoration: underline;
        }
    }

    ul {
        list-style-position: inside;
    }
}

@media (max-width: 60em) {
    .selectable-steps {
        grid-template-columns: 1fr;
    }
}

/**
 * Utils
 */
[data-pre-heading="true"] {
    color: var(--clr-teal);
    font-weight: bold;
    text-transform: uppercase;
}
