@charset "UTF-8";

body {
    font-family: "Hepta Slab", serif;
}

/* Layout foundation (inspired by W3Schools: Box Sizing, Responsive Web Design, Flexbox/Grid) */
*,
*::before,
*::after {
    box-sizing: border-box; /* https://www.w3schools.com/css/css3_box-sizing.asp */
}

:root {
    --bg: #ffffff;
    --text: #222;
    --muted: #667085;
    --surface: #f7f7f9;
    --border: #e4e6eb;
    --clr-space-cadet: #222E50;
    --clr-cerulean: #007991;
    --clr-zomp: #439A86;
    --clr-celadon: #BCD8C1;
    --clr-flax: #E9D985;

    --radius: 12px;
    --space-xs: .5rem;
    --space-sm: .75rem;
    --space: 1rem;
    --space-md: 1.25rem;
    --space-lg: 2rem;
    --space-xl: 3rem;

    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);
    --shadow-md: 0 4px 14px rgba(0, 0, 0, .08);
}

html, body {
    margin: 0;
    padding: 0;
    color: var(--text);
    background: var(--bg);
    line-height: 1.6;
}

/* Container and flow spacing (https://www.w3schools.com/howto/howto_css_center-website.asp) */
.container {
    margin-top: var(--space-lg);
    width: min(1100px, 92%);
    margin-inline: auto;
}

.flow > * + * {
    margin-top: var(--space-lg);
}

/* Top navigation: sticky and responsive (https://www.w3schools.com/howto/howto_js_navbar_sticky.asp) */
.top-nav {
    position: sticky;
    top: 0;
    z-index: 1000;
    display: flex; /* https://www.w3schools.com/css/css3_flexbox.asp */
    gap: .5rem;
    align-items: center;
    padding: .75rem 1rem;
    background: var(--clr-space-cadet);
    overflow-x: auto;
}

.top-nav a {
    color: #ffffff;
    text-decoration: none;
    padding: .5rem .75rem;
    border-radius: 999px;
    white-space: nowrap;
    opacity: .85;
}

.top-nav a:hover {
    background: var(--clr-flax);
    color: var(--text);
    opacity: 1;
}

.top-nav a.active {
    background: var(--clr-cerulean);
    color: #ffffff;
    font-weight: 700;
}

/* Hero section */
.hero {
    background: linear-gradient(180deg, #f5f7ff, #ffffff);
    border-bottom: 1px solid var(--border);
}

.hero__content {
    display: grid; /* https://www.w3schools.com/css/css_grid.asp */
    grid-template-columns: 1.2fr .8fr;
    gap: var(--space-lg);
    align-items: center;
    padding: var(--space-xl) 0;
}

.page-title {
    margin: 0 0 var(--space-sm);
    font-size: clamp(1.75rem, 2.5vw + 1rem, 2.75rem); /* https://www.w3schools.com/cssref/func_clamp.php */
}

.lead {
    font-size: 1.1rem;
    color: #444;
    max-width: 60ch;
}

.hero__figure {
    margin: 0;
    justify-self: end;
}

.hero__img {
    width: 320px;
    max-width: 100%;
    aspect-ratio: 4/3; /* https://www.w3schools.com/cssref/css3_pr_aspect-ratio.php */
    object-fit: cover; /* https://www.w3schools.com/cssref/css3_pr_object-fit.php */
    border-radius: var(--radius);
    box-shadow: var(--shadow-md);
}

/* Cards and content blocks */
.card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: var(--space-lg);
    box-shadow: var(--shadow-sm);
    height: 100%;
    display: flex;
    flex-direction: column;
}

.card h2 {
    margin-top: 0;
    margin-bottom: var(--space-sm);
}

/* Media block */
.media {
    margin: 0 0 var(--space-sm);
}

.media__img {
    width: 100%;
    height: auto; /* https://www.w3schools.com/howto/howto_css_responsive_images.asp */
    border-radius: var(--radius);
    display: block;
}

.media__caption {
    margin-top: var(--space-xs);
    font-size: .9rem;
    color: var(--muted);
}

/* Grid utilities */
.grid-two {
    display: grid;
    grid-template-columns: 1fr;
}

.gap-lg {
    gap: var(--space-lg);
}

.align-start {
    align-items: start;
}

/* Photo gallery using CSS Grid (https://www.w3schools.com/css/css_grid.asp) */
.photo-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space);
}

.photo {
    width: 100%;
    height: 220px;
    object-fit: cover;
    border-radius: calc(var(--radius) - 2px);
    border: 1px solid var(--border);
    box-shadow: var(--shadow-sm);
    display: block;
}

/* Footer */
.site-footer {
    margin-top: var(--space-xl);
    padding: var(--space-lg) 0;
    border-top: 1px solid var(--border);
    background: #fafafa;
}

/* Text helpers */
.small {
    font-size: .925rem;
}

.muted {
    color: var(--muted);
}

/* Responsive adjustments (https://www.w3schools.com/css/css_rwd_mediaqueries.asp) */
@media (min-width: 840px) {
    .grid-two {
        grid-template-columns: 1fr 1fr;
    }

    .photo-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (min-width: 1024px) {
    .photo-grid {
        grid-template-columns: repeat(4, 1fr);
    }
}