* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    min-height: 100%;
}

body {
    min-height: 100vh;

    font-family: Georgia, "Times New Roman", serif;
    color: #d9d2c7;

    background-image:
        linear-gradient(
            rgba(5, 3, 4, 0.62),
            rgba(4, 2, 6, 0.86)
        ),
        url("../res/images/bg/bg.png");

    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-attachment: fixed;
}


/* Dark vignette */

body::before {
    content: "";

    position: fixed;
    inset: 0;

    pointer-events: none;

    box-shadow:
        inset 0 0 180px rgba(0, 0, 0, 0.94);

    z-index: 0;
}


/* ========================= */
/*           PAGE            */
/* ========================= */

.hints-page {
    position: relative;
    z-index: 1;

    width: min(860px, 92%);

    margin: auto;
    padding: 55px 0 85px;

    text-align: center;
}


/* ========================= */
/*          HEADER           */
/* ========================= */

h1 {
    margin: 0;

    font-size: clamp(48px, 8vw, 74px);

    letter-spacing: 10px;

    color: #eee6da;

    text-shadow:
        0 2px 4px #000,
        0 0 20px rgba(125, 72, 116, 0.25);
}

.latin {
    margin-top: 10px;

    color: #ad9aae;

    font-size: 15px;
    font-style: italic;

    letter-spacing: 4px;
}

.latin-translation {
    margin-top: 5px;

    color: #6d6170;

    font-size: 12px;

    opacity: 0;

    transition: opacity 0.3s ease;
}

.latin:hover + .latin-translation {
    opacity: 1;
}


/* ========================= */
/*          DIVIDER          */
/* ========================= */

.divider {
    width: min(620px, 75%);

    height: 1px;

    margin: 32px auto;

    background:
        linear-gradient(
            90deg,
            transparent,
            #4a314b,
            #9b729d,
            #4a314b,
            transparent
        );

    box-shadow:
        0 0 10px rgba(137, 86, 142, 0.25);
}


/* ========================= */
/*          WARNING          */
/* ========================= */

.warning {
    max-width: 650px;

    margin: 0 auto 36px;

    padding: 18px 24px;

    color: #aaa1a7;

    font-size: 15px;

    line-height: 1.7;

    background:
        rgba(10, 7, 10, 0.72);

    border:
        1px solid rgba(120, 84, 122, 0.25);

    box-shadow:
        0 7px 22px rgba(0, 0, 0, 0.35);

    backdrop-filter: blur(2px);
}


/* ========================= */
/*         HINTS             */
/* ========================= */

.hints {
    display: flex;
    flex-direction: column;

    gap: 12px;
}


/* Entire clickable card */

.hint {
    display: grid;

    grid-template-columns: 70px 1fr;

    align-items: center;

    min-height: 70px;

    padding: 16px 22px;

    text-align: left;

    cursor: pointer;
    user-select: none;

    background:
        rgba(10, 7, 11, 0.82);

    border:
        1px solid rgba(111, 79, 114, 0.28);

    box-shadow:
        0 7px 20px rgba(0, 0, 0, 0.42);

    backdrop-filter: blur(3px);

    transition:
        transform 0.18s ease,
        border-color 0.18s ease,
        background 0.18s ease,
        box-shadow 0.18s ease;
}


.hint:hover {
    transform: translateX(3px);

    border-color:
        rgba(169, 121, 172, 0.55);

    background:
        rgba(18, 10, 20, 0.90);

    box-shadow:
        0 9px 25px rgba(0, 0, 0, 0.48),
        0 0 12px rgba(120, 72, 125, 0.10);
}


/* Hint number */

.hint-number {
    color: #9e789f;

    font-size: 22px;
    font-weight: bold;

    letter-spacing: 2px;

    transition:
        color 0.2s ease,
        text-shadow 0.2s ease;
}


/* Right side of card */

.hint-body {
    min-width: 0;
}


/* "Reveal Hint" text */

.hint-placeholder {
    color: #78687b;

    font-size: 13px;

    letter-spacing: 3px;

    text-transform: uppercase;

    transition:
        color 0.2s ease,
        opacity 0.2s ease;
}


.hint:hover .hint-placeholder {
    color: #ae8eb2;
}


/* Actual hidden hint */

.hint-text {
    display: none;

    color: #c0b7bc;

    font-size: 16px;

    line-height: 1.55;

    opacity: 0;
}


/* ========================= */
/*      REVEALED STATE       */
/* ========================= */

.hint.revealed {
    background:
        rgba(20, 11, 23, 0.92);

    border-color:
        rgba(169, 121, 172, 0.58);

    box-shadow:
        0 9px 26px rgba(0, 0, 0, 0.50),
        0 0 15px rgba(125, 75, 133, 0.12);
}


.hint.revealed .hint-number {
    color: #b991bd;

    text-shadow:
        0 0 8px rgba(180, 125, 190, 0.18);
}


.hint.revealed .hint-placeholder {
    display: none;
}


.hint.revealed .hint-text {
    display: block;

    animation: revealHint 0.3s ease forwards;
}


@keyframes revealHint {

    from {
        opacity: 0;
        transform: translateY(4px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}


/* ========================= */
/*       FINAL HINT          */
/* ========================= */

.final-hint {
    margin-top: 8px;

    border-color:
        rgba(151, 104, 165, 0.42);

    background:
        rgba(20, 11, 25, 0.88);
}


.final-hint .hint-number {
    color: #b68cc3;
}


.final-hint.revealed {
    border-color:
        rgba(190, 134, 207, 0.62);

    background:
        rgba(29, 14, 36, 0.94);
}


/* ========================= */
/*          FOOTER           */
/* ========================= */

.bottom-divider {
    margin-top: 48px;
}


.footer-latin {
    color: #806f82;

    font-size: 14px;
    font-style: italic;

    letter-spacing: 4px;
}


.home-link {
    display: inline-block;

    margin-top: 28px;

    padding: 12px 22px;

    color: #aa9cab;

    text-decoration: none;

    letter-spacing: 3px;

    background:
        rgba(10, 7, 11, 0.78);

    border:
        1px solid rgba(116, 83, 120, 0.35);

    transition:
        transform 0.2s ease,
        color 0.2s ease,
        border-color 0.2s ease,
        background 0.2s ease,
        box-shadow 0.2s ease;
}


.home-link:hover {
    transform: translateY(-2px);

    color: #ecdeed;

    border-color:
        rgba(175, 127, 180, 0.65);

    background:
        rgba(31, 15, 34, 0.88);

    box-shadow:
        0 0 15px rgba(130, 78, 136, 0.14);
}


/* ========================= */
/*          MOBILE           */
/* ========================= */

@media (max-width: 600px) {

    h1 {
        letter-spacing: 5px;
    }


    .hints-page {
        width: 94%;
    }


    .hint {
        grid-template-columns: 52px 1fr;

        padding: 15px 16px;
    }


    .hint-number {
        font-size: 18px;
    }


    .hint-placeholder {
        font-size: 12px;

        letter-spacing: 2px;
    }


    .hint-text {
        font-size: 15px;
    }

}