@media screen and (max-width: 1200px) {
    header {
        width: 94%;
        margin: 0 auto;
    }
}

@media screen and (max-width: 991px) {
    header {
        width: 100%;
        padding: 18px 0;
    }

    header .header-content {
        justify-content: flex-end;
        min-height: 28px;
    }

    header .navicon {
        display: block;
        visibility: visible;
    }

    .header-nav {
        position: fixed;
        background-color: #F7F3EC;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        z-index: 99999;
        visibility: hidden;
        opacity: 0;
        transition: opacity 0.4s, visibility 0s 0.4s;
    }

    .header-nav.open {
        visibility: visible;
        opacity: 1;
        transition: opacity 0.4s;
    }

    header nav {
        position: relative;
        top: 50%;
        transform: translateY(-50%);
    }

    header ul.primary-nav {
        display: block;
        text-align: center;
        margin: 0;
        padding: 0;
    }

    header ul.primary-nav li {
        display: block;
        margin-bottom: 22px;
    }

    header ul.primary-nav li a {
        color: #2F3D2E;
        font-size: 26px;
        letter-spacing: 0.08em;
    }

    .hero .hero-content {
        padding-top: 22vh;
    }

    .story-section .story-countdown {
        gap: 8px;
        width: 100%;
        max-width: 520px;
    }

    .story-section .story-countdown .countdown-sep {
        display: none;
    }

    .events .leftcol,
    .events .rightcol {
        border: none;
        padding-left: 15px;
        padding-right: 15px;
    }

    .story-photos img {
        height: 320px;
    }

    .party-photo {
        width: 55%;
        height: auto;
        aspect-ratio: 1;
    }
}

@media screen and (max-width: 640px) {
    .couple-names {
        font-size: 3rem !important;
    }

    .hero .hero-content {
        padding-top: 26vh;
    }

    .story-section .story-invite {
        padding: 48px 14px 44px;
    }

    .story-section .story-copy {
        line-height: 1.7;
    }

    .story-photos img {
        height: 260px;
    }

    #map-canvas {
        height: 300px;
    }

    .venue-details .venue-address {
        font-size: 16px;
    }

    .venue-details .venue-sep {
        display: block;
        margin: 4px 0;
        opacity: 0;
        height: 0;
    }

    .venue-details .venue-meta a {
        display: inline-block;
        margin: 0 6px;
    }

    .gallery-row .img-wrap img {
        height: 160px;
    }
}
