/* BASE RESET + GLOBAL STYLES */
*, *::before, *::after {
    margin: 0; padding: 0; box-sizing: border-box;
}

body {
    font-family: var(--font-main);
    background-color: var(--bg-color);
    color: var(--text-main);
    line-height: 1.7;
    transition: background-color 0.4s ease, color 0.4s ease;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
}

body.no-scroll { overflow: hidden !important; }

/* Smart Content Visibility */
body.v21-mobile-priority section,
body.v21-mobile-priority .main-content,
body.v21-mobile-priority .sidebar {
    content-visibility: auto;
    contain-intrinsic-size: 1px 500px;
}

/* Headings */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 700;
    line-height: 1.3;
    margin: 0 0 15px;
    color: var(--primary-color);
}
h1 { font-size: 36px; font-weight: 900; }
h2 { font-size: 28px; font-weight: 800; }
h3 { font-size: 22px; }
h4 { font-size: 18px; }

.container {
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 20px;
}

a {
    text-decoration: none;
    color: inherit;
    transition: var(--transition);
}

ul { list-style: none; }

img {
    max-width: 100%;
    height: auto;
    display: block;
}

body.v21-aspect-ratio img {
    aspect-ratio: var(--aspect-ratio, 16 / 9);
    object-fit: cover;
    background-color: var(--border-color);
    border-radius: var(--radius-sm);
}

/* Scroll Reveal */
body.v21-scroll-reveal .reveal-on-scroll {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
body.v21-scroll-reveal .reveal-on-scroll.is-visible {
    opacity: 1; transform: translateY(0);
}
