/* =========================================
   CONFIGURAÇÕES GERAIS
========================================= */

* {
    box-sizing: border-box;
}

html {
    width: 100%;
    min-height: 100%;
    overflow-x: hidden;
}

body {
    margin: 0;
    min-height: 100vh;
    width: 100%;

    display: flex;
    flex-direction: column;
    align-items: center;

    gap: 40px;

    background-color: #f2acac;

    overflow-x: hidden;

    font-family: Arial, sans-serif;
}


/* =========================================
   PRIMEIRA PÁGINA
========================================= */

.caixa {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    padding: 25px;
    background-color: #fff0f3;
    width: 300px;
    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .15),
        30px 0 50px rgba(0, 0, 0, .3);
    border-radius: 30px;
    text-align: center;
    margin-top: 40px;
}

.introducao p:first-child {
    font-size: 25px;
    color: #ba1c1c;
    font-weight: bold;
}

/* BOTÃO DA PRIMEIRA PÁGINA */

.botao-inicio {
    display: flex;
    justify-content: center;
    align-items: center;

    width: 100px;
    height: 40px;

    margin-top: -10px;
}


/* =========================================
   BOTÕES
========================================= */

.botao {
    display: flex;

    align-items: center;
    justify-content: space-between;

    width: 200px;
    height: 40px;

    margin: 30px auto 0;
}

button {
    width: 75px;
    height: 40px;

    border: none;
    border-radius: 10px;

    background-color: #fff0f3;

    cursor: pointer;

    transition: .3s;

    box-shadow: 0 3px 10px rgba(0, 0, 0, .15);
}

button:hover {
    transform: scale(1.05);
    background-color: #f8dce4;
}

button a {
    text-decoration: none;
    color: #ce5656;
    font-size: 14px;
}

button a:hover {
    color: #b98295;
}


/* =========================================
   CARTA
========================================= */

.carta {
    position: relative;

    width: 300px;
    height: 300px;

    margin-top: 130px;

    transform-style: preserve-3d;
    perspective: 2500px;
}


/* =========================================
   INPUT
========================================= */

#open {
    display: none;
}


/* =========================================
   PARTE DA FRENTE
========================================= */

.frente {
    position: absolute;

    width: 300px;
    height: 300px;

    top: 0;
    left: 0;

    background-color: #fff0f3;

    transform-origin: left;

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .15),
        30px 0 50px rgba(0, 0, 0, .3);

    transition: transform .8s ease, box-shadow .8s ease;

    z-index: 4;
}


/* QUADRADO VERMELHO */

.frente::before {
    content: "";

    position: absolute;

    width: 280px;
    height: 280px;

    top: 10px;
    left: 10px;

    background-color: #d04e4e;

    transition: .8s ease;
}


/* =========================================
   PARTE INTERNA
========================================= */

.dentro {
    position: absolute;

    width: 300px;
    height: 300px;

    top: 0;
    left: 0;

    background-color: #fff0f3;

    z-index: 1;

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .22),
        100px 20px 100px rgba(0, 0, 0, .1);
}


/* ÁREA CLICÁVEL */

.open {
    position: absolute;

    width: 300px;
    height: 300px;

    top: 0;
    left: 0;

    z-index: 10;

    cursor: pointer;
}


/* =========================================
   CARTA ABERTA
========================================= */

#open:checked ~ .frente {
    transform: rotateY(-155deg);

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .13),
        30px 0 50px rgba(0, 0, 0, .1);
}

#open:checked ~ .frente::before {
    z-index: 5;

    background-color: #fff0f3;

    width: 300px;
    height: 300px;

    top: 0;
    left: 0;

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .1),
        30px 0 50px rgba(0, 0, 0, .1);
}


/* =========================================
   NOTA / DETALHE DA FRENTE
========================================= */

.nota {
    position: absolute;

    width: 200px;
    height: 150px;

    top: 75px;
    left: 50px;

    background-color: #fff0f3;

    color: #333;

    display: flex;
    align-items: center;
    justify-content: center;

    text-align: center;

    filter: drop-shadow(0 0 20px rgba(0, 0, 0, .3));

    z-index: 2;
}


/* CORAÇÃO DA FRENTE */

.nota::before,
.nota::after {
    content: "";

    position: absolute;

    background-color: #ba1c1c;

    width: 40px;
    height: 40px;
}

.nota::before {
    transform: rotate(-45deg);

    top: 55px;
    left: 80px;
}

.nota::after {
    border-radius: 50%;

    top: 40px;
    left: 65px;

    box-shadow: 30px 0 #ba1c1c;
}


/* =========================================
   TEXTO DA CARTA
========================================= */

.texto {
    position: absolute;

    width: 260px;

    top: 35px;
    left: 20px;

    color: #333;

    font-size: 16px;

    line-height: 1.7;

    text-align: center;

    z-index: 2;
}


/* =========================================
   CORAÇÃO
========================================= */

.coracao {
    position: absolute;

    background-color: #d04e4e;

    height: 60px;
    width: 60px;

    top: 190px;
    left: 120px;

    transform: rotate(-45deg);

    animation: beat .8s infinite;

    z-index: 2;
}

.coracao::before,
.coracao::after {
    content: "";

    position: absolute;

    border-radius: 50%;

    height: 60px;
    width: 60px;

    background-color: #d04e4e;
}

.coracao::before {
    top: -30px;
    left: 0;
}

.coracao::after {
    left: 30px;
    top: 0;
}


/* =========================================
   ANIMAÇÃO DO CORAÇÃO
========================================= */

@keyframes beat {

    0%,
    40%,
    100% {
        transform: scale(1) rotate(-45deg);
    }

    25%,
    60% {
        transform: scale(1.1) rotate(-45deg);
    }
}


/* =========================================
   PÁGINA DE FOTOS
========================================= */

.fotos {
    width: 100%;

    display: flex;
    flex-direction: column;
    align-items: center;

    padding: 20px 0 60px;
}


/* =========================================
   INTRODUÇÃO 2
========================================= */

.introducao2 {
    display: flex;

    justify-content: center;
    align-items: center;

    flex-direction: column;

    padding: 30px;

    background-color: #fff0f3;

    width: min(600px, calc(100% - 30px));

    min-height: 300px;

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .15),
        30px 0 50px rgba(0, 0, 0, .3);

    border-radius: 30px;

    margin: 40px 15px 20px;

    text-align: center;

    color: #555;

    line-height: 1.7;
}


/* =========================================
   ÁLBUM
========================================= */

.album {
    width: min(850px, calc(100% - 30px));

    padding: 25px;

    background-color: #fff0f3;

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .15),
        30px 0 50px rgba(0, 0, 0, .3);

    border-radius: 30px;

    margin: 30px 15px;
}


.subtitulo {
    text-align: center;

    color: #b98295;

    margin-bottom: 30px;

    font-size: 18px;
}


/* =========================================
   GALERIA
========================================= */

.galeria {
    display: grid;

    grid-template-columns: repeat(3, 1fr);

    gap: 20px;
}


/* =========================================
   FOTOS
========================================= */

.foto {
    width: 100%;

    background: #fff;

    border-radius: 15px;

    border: 2px solid #f5d2df;

    box-shadow:
        0 5px 15px rgba(200, 110, 140, 0.12);

    transition: .3s ease;

    overflow: hidden;
}

.foto:hover {
    transform: translateY(-7px) rotate(1deg);

    box-shadow:
        0 12px 25px rgba(200, 110, 140, .2);
}

.foto img {
    display: block;

    width: 100%;

    aspect-ratio: 1 / 1;

    object-fit: cover;
}


/* =========================================
   PLAYLIST
========================================= */

.introducao3 {
    display: flex;

    justify-content: center;
    align-items: center;

    flex-direction: column;

    padding: 30px;

    background-color: #fff0f3;

    width: min(500px, calc(100% - 30px));

    min-height: 250px;

    box-shadow:
        inset 100px 20px 100px rgba(0, 0, 0, .15),
        30px 0 50px rgba(0, 0, 0, .3);

    border-radius: 30px;

    margin-top: 100px;

    text-align: center;

    color: #555;

    line-height: 1.6;
}


.introducao3 h2 {
    color: #b98295;

    margin-top: 0;
}


/* BOTÃO DA PLAYLIST */

.playlist {
    display: flex;

    justify-content: center;
    align-items: center;

    width: 65px;
    height: 65px;

    margin-top: 20px;

    background: #ca6f8f;

    color: white;

    text-decoration: none;

    border-radius: 50%;

    font-size: 25px;

    font-weight: bold;

    transition: .3s;

    box-shadow:
        0 6px 15px rgba(233, 79, 135, .3);
}

.playlist:hover {
    transform: scale(1.08);

    background: #b98295;
}


/* =========================================
   📱 CELULAR
========================================= */

@media (max-width: 650px) {

    body {
        gap: 20px;
    }


    /* ===============================
       PRIMEIRA PÁGINA
    =============================== */

    .introducao {
        width: calc(100% - 30px);

        max-width: 330px;

        min-height: 280px;

        margin-top: 25px;

        padding: 20px;
    }

    .introducao p {
        font-size: 14px;
    }

    .introducao p:first-child {
        font-size: 22px;
    }


    .botao-inicio {
        margin-top: 0;
    }


    /* ===============================
       BOTÕES
    =============================== */

    .botao {
        width: 180px;
    }

    button {
        width: 70px;
        height: 38px;
    }


    /* ===============================
       CARTA
    =============================== */

    .carta {
        width: 280px;
        height: 280px;

        margin-top: 80px;
    }

    .frente,
    .dentro,
    .open {
        width: 280px;
        height: 280px;
    }


    /* QUADRADO INTERNO */

    .frente::before {
        width: 260px;
        height: 260px;

        top: 10px;
        left: 10px;
    }


    /* CARTA ABERTA */

    #open:checked ~ .frente::before {
        width: 280px;
        height: 280px;

        top: 0;
        left: 0;
    }


    /* NOTA */

    .nota {
        width: 180px;
        height: 130px;

        top: 75px;
        left: 50px;
    }


    /* CORAÇÃO DA NOTA */

    .nota::before {
        top: 45px;
        left: 70px;
    }

    .nota::after {
        top: 30px;
        left: 85px;
    }


    /* TEXTO */

    .texto {
        width: 240px;

        left: 20px;

        top: 30px;

        font-size: 14px;

        line-height: 1.6;
    }


    /* CORAÇÃO */

    .coracao {
        width: 50px;
        height: 50px;

        top: 180px;
        left: 115px;
    }

    .coracao::before,
    .coracao::after {
        width: 50px;
        height: 50px;
    }

    .coracao::before {
        top: -25px;
    }

    .coracao::after {
        left: 25px;
    }


    /* ===============================
       INTRODUÇÃO 2
    =============================== */

    .introducao2 {
        width: calc(100% - 30px);

        min-height: 250px;

        padding: 25px;

        margin-top: 30px;

        font-size: 14px;
    }


    /* ===============================
       ÁLBUM
    =============================== */

    .album {
        width: calc(100% - 30px);

        padding: 15px;

        margin-top: 25px;
    }

    .subtitulo {
        font-size: 16px;
    }


    /* ===============================
       GALERIA MOBILE
    =============================== */

    .galeria {
        grid-template-columns: repeat(2, 1fr);

        gap: 12px;
    }


    /* ===============================
       PLAYLIST
    =============================== */

    .introducao3 {
        width: calc(100% - 30px);

        min-height: 230px;

        padding: 20px;

        margin-top: 40px;

        font-size: 14px;
    }

    .introducao3 h2 {
        font-size: 21px;
    }
}


/* =========================================
   📱 CELULARES MUITO PEQUENOS
========================================= */

@media (max-width: 380px) {

    .carta {
        transform: scale(.9);

        transform-origin: center;
    }

    .introducao {
        width: calc(100% - 20px);
    }

    .album {
        width: calc(100% - 20px);
    }

    .introducao2,
    .introducao3 {
        width: calc(100% - 20px);
    }

    .galeria {
        gap: 8px;
    }
}