/* ==========================================
   RESET
========================================== */

* {
    margin: 0;
    padding: 0;

    box-sizing: border-box;
}


/* ==========================================
   HTML
========================================== */

html {
    scroll-behavior: smooth;

    scroll-padding-top: 100px;
}


/* ==========================================
   BODY
========================================== */

body {
    background:
            var(--color-background);

    color:
            var(--color-text);

    font-family:
            var(--font-primary);

    line-height: 1.6;

    overflow-x: hidden;
}


/* ==========================================
   SELECTION
========================================== */

::selection {
    background:
            var(--color-accent);

    color:
            white;
}


/* ==========================================
   LINKS
========================================== */

a {
    color: inherit;

    text-decoration: none;
}


/* ==========================================
   BUTTON
========================================== */

button {
    font-family: inherit;
}


/* ==========================================
   CONTAINER
========================================== */

.container {
    width:
            min(
                    calc(100% - 4rem),
                    var(--container-width)
            );

    margin-inline: auto;
}


/* ==========================================
   HERO
========================================== */

.hero {
    min-height: 100vh;

    position: relative;

    display: flex;

    align-items: center;

    overflow: hidden;

    background:
            radial-gradient(
                    circle at 50% 50%,
                    rgba(37, 99, 235, 0.12),
                    transparent 40%
            );
}


/* ==========================================
   HERO GRID
========================================== */

.hero::before {
    content: "";

    position: absolute;

    inset: -50px;

    background-image:
            linear-gradient(
                    rgba(59, 130, 246, 0.08) 1px,
                    transparent 1px
            ),
            linear-gradient(
                    90deg,
                    rgba(59, 130, 246, 0.08) 1px,
                    transparent 1px
            );

    background-size:
            80px 80px;

    mask-image:
            radial-gradient(
                    ellipse at center,
                    black 0%,
                    transparent 70%
            );

    transform:
            translate(
                    var(--mouse-x, 0px),
                    var(--mouse-y, 0px)
            );

    transition:
            transform 0.2s ease-out;

    pointer-events: none;
}


/* ==========================================
   HERO BLUE GLOW
========================================== */

.hero::after {
    content: "";

    position: absolute;

    width: 500px;
    height: 500px;

    top: 50%;
    left: 50%;

    transform:
            translate(-50%, -50%);

    background:
            radial-gradient(
                    circle,
                    rgba(37, 99, 235, 0.12),
                    transparent 70%
            );

    filter:
            blur(40px);

    pointer-events: none;
}


/* ==========================================
   HERO CONTAINER
========================================== */

.hero .container {
    position: relative;

    z-index: 2;
}


/* ==========================================
   HERO YEAR
========================================== */

.hero__year {
    position: absolute;

    top: 7rem;

    right: 2rem;

    z-index: 2;

    color:
            var(--color-text-muted);

    font-size: 0.7rem;

    letter-spacing: 0.2em;

    writing-mode:
            vertical-rl;
}


/* ==========================================
   HERO EYEBROW
========================================== */

.hero__eyebrow {
    margin-bottom: 2rem;

    color:
            var(--color-accent-light);

    font-size: 0.75rem;

    text-transform: uppercase;

    letter-spacing: 0.3em;
}


/* ==========================================
   HERO TITLE
========================================== */

.hero__title {
    max-width: 1100px;

    font-size:
            clamp(
                    5rem,
                    13vw,
                    13rem
            );

    font-weight: 700;

    line-height: 0.82;

    letter-spacing: -0.07em;
}


.hero__title span {
    display: block;

    margin-left: 8vw;

    color: transparent;

    -webkit-text-stroke:
            1px var(--color-accent-light);
}


/* ==========================================
   HERO DESCRIPTION
========================================== */

.hero__description {
    max-width: 500px;

    margin-top: 3rem;

    margin-left: 8vw;

    color:
            var(--color-text-muted);

    font-size: 1.1rem;
}


/* ==========================================
   BUTTON
========================================== */

.button {
    position: relative;

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 1rem;

    margin-top: 2rem;

    margin-left: 8vw;

    padding:
            1rem
            1.5rem;

    border:
            1px solid
            var(--color-accent);

    border-radius:
            999px;

    color:
            var(--color-text);

    overflow: hidden;

    transition:
            color 0.4s ease,
            border-color 0.4s ease,
            box-shadow 0.4s ease;
}


.button::before {
    content: "";

    position: absolute;

    inset: 0;

    background:
            var(--color-accent);

    transform:
            translateY(100%);

    transition:
            transform 0.4s ease;

    z-index: -1;
}


.button:hover {
    color:
            white;

    border-color:
            var(--color-accent-light);

    box-shadow:
            0 0 30px
            rgba(59, 130, 246, 0.25);
}


.button:hover::before {
    transform:
            translateY(0);
}