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

body {
    min-height: 100vh;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 24px;

    font-family:
        Arial,
        Helvetica,
        sans-serif;

    color: #f8f5ed;

    background:
        radial-gradient(
            circle at top,
            #173a70 0%,
            #081b38 45%,
            #030b18 100%
        );
}

main {
    width: min(100%, 720px);

    padding: 56px 32px;

    text-align: center;

    border:
        1px solid rgba(217, 180, 94, 0.35);

    border-radius: 28px;

    background:
        rgba(4, 16, 35, 0.72);

    box-shadow:
        0 30px 80px rgba(0, 0, 0, 0.42);

    backdrop-filter: blur(12px);
}

.logo-symbol {
    width: 110px;
    height: 110px;

    margin: 0 auto 28px;

    display: flex;
    align-items: center;
    justify-content: center;

    font-family: Georgia, serif;
    font-size: 78px;
    font-weight: bold;

    color: #d9b45e;

    border:
        2px solid rgba(217, 180, 94, 0.75);

    border-radius: 50%;

    background:
        linear-gradient(
            145deg,
            #12386e,
            #061a36
        );

    box-shadow:
        0 0 35px rgba(217, 180, 94, 0.2);
}

h1 {
    margin-bottom: 18px;

    font-family:
        Georgia,
        "Times New Roman",
        serif;

    font-size: clamp(38px, 7vw, 68px);
    line-height: 1.05;

    color: #f5e5b7;
}

p {
    margin-top: 10px;

    font-size: clamp(17px, 3vw, 21px);
    line-height: 1.6;

    color: #cad5e7;
}

button {
    margin-top: 36px;
    padding: 15px 28px;

    font-size: 17px;
    font-weight: bold;

    color: #08172d;

    border: 0;
    border-radius: 999px;

    background:
        linear-gradient(
            135deg,
            #f4d98d,
            #c99a38
        );

    box-shadow:
        0 12px 30px rgba(201, 154, 56, 0.28);

    cursor: pointer;

    transition:
        transform 0.2s ease,
        box-shadow 0.2s ease;
}

button:hover {
    transform: translateY(-2px);

    box-shadow:
        0 16px 36px rgba(201, 154, 56, 0.4);
}

button:focus-visible {
    outline: 3px solid #ffffff;
    outline-offset: 4px;
}

@media (max-width: 600px) {
    main {
        padding: 42px 22px;
        border-radius: 22px;
    }

    .logo-symbol {
        width: 88px;
        height: 88px;

        font-size: 62px;
    }

    button {
        width: 100%;
    }
}

.language-selector {
    margin-bottom: 28px;

    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;

    color: #cad5e7;
}

.language-selector label {
    font-size: 14px;
    font-weight: bold;
}

.language-selector select {
    padding: 9px 34px 9px 12px;

    color: #f8f5ed;

    border:
        1px solid rgba(217, 180, 94, 0.55);

    border-radius: 10px;

    background: #0c2850;

    cursor: pointer;
}

/* =================================
   Music Foundations
================================= */

.learn-page {
    width: min(100%, 1100px);

    margin: 40px auto;
    padding: 48px 36px;

    text-align: center;
}

.back-link {
    width: fit-content;

    margin-bottom: 30px;

    display: block;

    color: #d9b45e;

    font-size: 15px;
    font-weight: bold;

    text-decoration: none;
}

.back-link:hover {
    color: #f4d98d;
}

.eyebrow {
    margin-bottom: 8px;

    color: #d9b45e;

    font-size: 14px;
    font-weight: bold;

    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.portal-grid {
    margin-top: 42px;

    display: grid;
    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 22px;

    text-align: left;
}

.portal-card {
    min-height: 250px;

    padding: 26px;

    display: flex;
    flex-direction: column;

    border:
        1px solid rgba(217, 180, 94, 0.24);

    border-radius: 20px;

    background:
        linear-gradient(
            145deg,
            rgba(18, 56, 110, 0.72),
            rgba(5, 22, 47, 0.92)
        );

    box-shadow:
        0 18px 40px rgba(0, 0, 0, 0.24);

    transition:
        transform 0.2s ease,
        border-color 0.2s ease,
        box-shadow 0.2s ease;
}

.portal-card:hover {
    transform: translateY(-4px);

    border-color:
        rgba(217, 180, 94, 0.55);

    box-shadow:
        0 24px 48px rgba(0, 0, 0, 0.34);
}

.portal-number {
    margin-bottom: 16px;

    color: #d9b45e;

    font-size: 13px;
    font-weight: bold;

    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.portal-card h2 {
    margin-bottom: 12px;

    font-family:
        Georgia,
        "Times New Roman",
        serif;

    font-size: 27px;
    line-height: 1.2;

    color: #f5e5b7;
}

.portal-card p {
    margin: 0 0 24px;

    font-size: 16px;
    line-height: 1.6;

    color: #cad5e7;
}

.portal-link {
    width: fit-content;

    margin-top: auto;
    padding: 11px 18px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    color: #08172d;

    border-radius: 999px;

    background:
        linear-gradient(
            135deg,
            #f4d98d,
            #c99a38
        );

    font-size: 14px;
    font-weight: bold;

    text-decoration: none;

    transition:
        transform 0.2s ease,
        box-shadow 0.2s ease;
}

.portal-link:hover {
    transform: translateY(-2px);

    box-shadow:
        0 10px 24px rgba(201, 154, 56, 0.3);
}

.portal-link:focus-visible,
.back-link:focus-visible {
    outline: 3px solid #ffffff;
    outline-offset: 4px;
}

/* Mobiel */

@media (max-width: 700px) {
    body {
        align-items: flex-start;
    }

    .learn-page {
        margin: 16px auto;
        padding: 32px 18px;
    }

    .portal-grid {
        grid-template-columns: 1fr;
        gap: 16px;
    }

    .portal-card {
        min-height: 0;
        padding: 22px;
    }

    .portal-card h2 {
        font-size: 24px;
    }

    .portal-link {
        width: 100%;
    }
}

.journey-button {
    width: fit-content;

    margin: 36px auto 0;
    padding: 15px 28px;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    color: #08172d;

    border-radius: 999px;

    background:
        linear-gradient(
            135deg,
            #f4d98d,
            #c99a38
        );

    box-shadow:
        0 12px 30px rgba(201, 154, 56, 0.28);

    font-size: 17px;
    font-weight: bold;

    text-decoration: none;

    transition:
        transform 0.2s ease,
        box-shadow 0.2s ease;
}

.journey-button:hover {
    transform: translateY(-2px);

    box-shadow:
        0 16px 36px rgba(201, 154, 56, 0.4);
}

.journey-button:focus-visible {
    outline: 3px solid #ffffff;
    outline-offset: 4px;
}

@media (max-width: 600px) {
    .journey-button {
        width: 100%;
    }
}

/* =================================
   Portal page
================================= */

.portal-page {
    width: min(100%, 860px);

    margin: 40px auto;
    padding: 48px 36px;
}

.portal-introduction {
    text-align: center;
}

.portal-door {
    width: 180px;
    height: 230px;

    margin: 0 auto 34px;

    display: flex;
    align-items: center;
    justify-content: center;

    position: relative;
    overflow: hidden;

    border:
        3px solid rgba(217, 180, 94, 0.8);

    border-bottom: 0;

    border-radius:
        90px 90px 18px 18px;

    background:
        radial-gradient(
            circle at center,
            rgba(244, 217, 141, 0.95) 0%,
            rgba(42, 102, 184, 0.7) 35%,
            rgba(5, 22, 47, 0.98) 72%
        );

    box-shadow:
        0 0 30px rgba(217, 180, 94, 0.3),
        inset 0 0 35px rgba(244, 217, 141, 0.2);
}

.portal-door::before {
    content: "";

    width: 80px;
    height: 170px;

    position: absolute;
    bottom: 0;

    border-radius:
        42px 42px 0 0;

    background:
        linear-gradient(
            to top,
            rgba(244, 217, 141, 0.9),
            rgba(244, 217, 141, 0)
        );

    filter: blur(8px);
}

.portal-door span {
    position: relative;
    z-index: 1;

    font-family:
        Georgia,
        "Times New Roman",
        serif;

    font-size: 76px;
    font-weight: bold;

    color: #fff4ce;

    text-shadow:
        0 0 18px rgba(244, 217, 141, 0.9);
}

.portal-description {
    max-width: 620px;

    margin: 18px auto 0;
}

.portal-details {
    margin-top: 28px;

    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;

    gap: 12px;
}

.portal-details span {
    padding: 9px 14px;

    color: #dce6f4;

    border:
        1px solid rgba(217, 180, 94, 0.3);

    border-radius: 999px;

    background:
        rgba(10, 38, 78, 0.7);

    font-size: 14px;
}

.start-portal-button {
    min-width: 190px;
}

.next-portal-preview {
    margin-top: 34px;

    text-align: center;

    color: #91a6c2;

    font-size: 14px;
}

@media (max-width: 600px) {
    .portal-page {
        margin: 16px auto;
        padding: 32px 18px;
    }

    .portal-door {
        width: 145px;
        height: 190px;
    }

    .portal-door span {
        font-size: 62px;
    }

    .portal-details {
        flex-direction: column;
    }

    .portal-details span,
    .start-portal-button {
        width: 100%;
    }
}

/* =================================
   Lesson player
================================= */

.lesson-player {
    margin-top: 44px;
    padding: 32px;

    text-align: left;

    border:
        1px solid rgba(217, 180, 94, 0.38);

    border-radius: 22px;

    background:
        rgba(4, 17, 37, 0.88);

    box-shadow:
        0 22px 50px rgba(0, 0, 0, 0.28);
}

.lesson-player[hidden] {
    display: none;
}

.lesson-step-number {
    display: block;

    margin-bottom: 12px;

    color: #d9b45e;

    font-size: 13px;
    font-weight: bold;

    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.lesson-step h2 {
    margin-bottom: 18px;

    font-family:
        Georgia,
        "Times New Roman",
        serif;

    font-size: clamp(28px, 5vw, 42px);

    color: #f5e5b7;
}

.lesson-step p {
    margin: 0;

    color: #d2dceb;

    font-size: 18px;
    line-height: 1.8;
}

.lesson-instruction {
    margin-top: 24px;
    padding: 18px;

    color: #f5e5b7;

    border-left: 4px solid #d9b45e;

    border-radius: 0 12px 12px 0;

    background:
        rgba(217, 180, 94, 0.1);
}

.start-portal-button:disabled {
    opacity: 0.7;
    cursor: default;
    transform: none;
}

@media (max-width: 600px) {
    .lesson-player {
        margin-top: 30px;
        padding: 22px;
    }

    .lesson-step p {
        font-size: 16px;
        line-height: 1.7;
    }
}