* {
    box-sizing: border-box;
}

body {
    margin: 0;
    min-height: 100vh;

    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

    background:
        linear-gradient(
            rgba(255, 255, 255, 0.25),
            rgba(255, 255, 255, 0.25)
        ),
        url("/images/background.png");

    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-attachment: fixed;

    color: #222;
}

main {
    max-width: 900px;
    margin: 0 auto;
    padding: 100px 30px;
}

h1 {
    font-size: 48px;
    margin-bottom: 10px;
}

main > p {
    color: #777;
}

#days-together {
    margin-top: 8px;
    margin-bottom: 60px;
}

.projects {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 24px;
}

.project-card {
    display: block;
    padding: 30px;

    background: white;
    border: 1px solid #ddd;
    border-radius: 16px;

    color: inherit;
    text-decoration: none;

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

.project-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 30px rgba(0,0,0,0.08);
}

.project-card h2 {
    margin-top: 0;
}

.project-card p {
    color: #666;
}

/* =========================
   两个动的脑袋
   ========================= */

.moving-character {
    position: fixed;

    width: 75px;
    height: auto;

    left: 0;
    top: 0;

    z-index: 100;

    pointer-events: none;
    user-select: none;

    transform-origin: center;
}

#cz-character {
    width: 65px;
}

/* =========================
   爱心
   ========================= */

.floating-heart {
    position: fixed;

    font-size: 32px;
    color: #ff6b81;

    z-index: 101;

    pointer-events: none;

    animation: heart-pop 1.5s ease-out forwards;
}


@keyframes heart-pop {

    0% {
        opacity: 0;

        transform:
            translate(-50%, -50%)
            scale(0.4);
    }

    30% {
        opacity: 1;

        transform:
            translate(-50%, -80%)
            scale(1.3);
    }

    100% {
        opacity: 0;

        transform:
            translate(-50%, -180%)
            scale(0.8);
    }
}