html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    font-family: var(--font-family);
    color: var(--color-text);
    background-color: var(--color-bg);
    line-height: var(--line-height-base);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* Hero page specific styling - no scroll */
.hero-section {
    overflow: hidden;
}

html.hero-page,
body.hero-page {
    overflow: hidden;
    height: 100vh;
}

/* Page container */
.page-container {
    max-width: var(--max-width-container);
    margin: 0 auto;
    padding: var(--spacing-lg) var(--spacing-page-horizontal);
    display: flex;
    flex-direction: column;
    flex: 1;
    width: 100%;
}

/* Shared animations - used across multiple pages */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Shared page heading styles */
.page-container h1 {
    font-size: var(--font-size-3xl);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text);
    margin-bottom: var(--spacing-lg);
    animation: fadeInUp 0.6s ease-out;
}

/* Responsive page heading */
@media (max-width: 768px) {
    .page-container h1 {
        font-size: var(--font-size-2xl);
        margin-bottom: var(--spacing-md);
    }
}

/* Responsive page container */
@media (max-width: 768px) {
    .page-container {
        padding: var(--spacing-md) var(--spacing-sm);
    }

    body:not(.hero-page):not(.content-hero-page) main {
        padding-top: var(--spacing-sm);
    }
}
