.hero {
    position: relative;
    min-height: 73rem;
    padding: 5.7rem var(--page-gutter) 4.5rem;
    display: flex;
    flex-direction: column;
    gap: 2.7rem;
    overflow: hidden;
    color: var(--color-paper);
    background: var(--color-plum);
}

.hero::before {
    content: "";
    position: absolute;
    z-index: 0;
    top: 32.5rem;
    right: -72vw;
    width: 184vw;
    height: 46rem;
    background: var(--color-ochre);
    border-left: .8rem solid var(--color-ink);
    transform: rotate(7deg);
}

.halftone {
    position: absolute;
    z-index: 1;
    inset: 0;
    opacity: .18;
    background-image: radial-gradient(var(--color-cream) 1.1px, transparent 1.3px);
    background-size: .62rem .62rem;
    mask-image: linear-gradient(112deg, #000, transparent 74%);
}

.hero-copy {
    position: relative;
    z-index: 5;
}

.hero .kicker {
    min-height: 2.6rem;
    margin-left: 5.8rem;
}

.hero h1 {
    font-size: clamp(4.15rem, 21vw, 5.2rem);
    text-shadow: .3rem .38rem 0 var(--color-ink);
}

.hero-copy > p:not(.kicker) {
    max-width: 27rem;
    margin: 2rem 0 1.8rem;
    font-family: var(--font-serif);
    font-size: 1.1rem;
}

.hero-image {
    position: relative;
    z-index: 4;
    width: 94%;
    height: 32.5rem;
    align-self: center;
    overflow: visible;
    border: .55rem solid var(--color-ink);
    box-shadow: .75rem .75rem 0 var(--color-paper);
    clip-path: polygon(4% 0, 100% 4%, 95% 97%, 0 100%);
    transform: rotate(2deg);
    transition: transform 450ms var(--ease-print), box-shadow 450ms var(--ease-print);
}

.hero-image::after {
    content: "";
    position: absolute;
    z-index: 5;
    inset: -.55rem;
    pointer-events: none;
    border: .18rem solid var(--color-orange);
    opacity: 0;
    transform: translate(.2rem, -.2rem);
    transition: opacity 250ms ease, transform 400ms var(--ease-print);
}

.hero-image:hover,
.hero-image:focus-within {
    box-shadow: 1rem .45rem 0 var(--color-paper);
    transform: rotate(1deg) translate(.15rem, -.12rem);
}

.hero-image:hover::after,
.hero-image:focus-within::after {
    opacity: 1;
    transform: translate(.5rem, -.45rem);
}

.hero-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.issue-stamp {
    position: absolute;
    z-index: 8;
    top: 1.4rem;
    left: var(--page-gutter);
    width: 5.2rem;
    padding: .55rem;
    color: var(--color-ink);
    background: var(--color-paper);
    border: .2rem solid var(--color-ink);
    text-align: center;
    text-transform: uppercase;
    transform: rotate(-7deg);
}

.issue-stamp span,
.issue-stamp small {
    display: block;
    font-size: .43rem;
    letter-spacing: .08em;
}

.issue-stamp strong {
    display: block;
    font-family: var(--font-display);
    font-size: 2.2rem;
    line-height: 1;
}

.speech {
    position: absolute;
    z-index: 9;
    display: grid;
    place-items: center;
    color: var(--color-ink);
    background: var(--color-paper);
    border: .25rem solid var(--color-ink);
    font-family: var(--font-serif);
    font-size: .78rem;
    line-height: 1.05;
    text-align: center;
    text-transform: uppercase;
    transition: transform 300ms var(--ease-print);
}

.speech:hover,
.speech:focus-visible {
    transform: scale(1.045) rotate(1deg);
}

.speech strong {
    font-family: var(--font-display);
    font-size: 1.3rem;
}

.speech-one {
    top: 34rem;
    right: .5rem;
    width: 7.4rem;
    height: 6rem;
    border-radius: 50%;
    transform: rotate(7deg);
}

.speech-one::after {
    content: "";
    position: absolute;
    left: .2rem;
    bottom: -1.3rem;
    width: 2rem;
    height: 1.8rem;
    background: var(--color-paper);
    border-left: .25rem solid var(--color-ink);
    transform: skew(-35deg) rotate(12deg);
}

.speech-two {
    left: .5rem;
    bottom: 1.3rem;
    width: 8rem;
    height: 5.6rem;
    clip-path: polygon(0 12%, 13% 18%, 16% 2%, 30% 14%, 41% 0, 51% 14%, 67% 2%, 72% 18%, 91% 10%, 86% 29%, 100% 39%, 87% 52%, 99% 70%, 78% 76%, 74% 98%, 55% 85%, 39% 100%, 34% 82%, 13% 92%, 16% 70%, 0 61%, 12% 43%);
}

.cover-note {
    display: none;
}

.motion-ready .hero [data-hero-layer] {
    opacity: 0;
    transition: opacity 500ms ease, transform 750ms var(--ease-print);
}

.motion-ready .hero .halftone {
    transform: scale(1.05);
}

.motion-ready .hero .hero-copy {
    transform: translateX(-2rem);
}

.motion-ready .hero .hero-image {
    transform: translateX(2.5rem) rotate(4deg);
}

.motion-ready .hero.is-loaded [data-hero-layer] {
    opacity: 1;
}

.motion-ready .hero.is-loaded .halftone,
.motion-ready .hero.is-loaded .hero-copy {
    transform: none;
}

.motion-ready .hero.is-loaded .hero-image {
    transform: rotate(2deg);
}

.motion-ready .hero.is-loaded .issue-stamp {
    transform: rotate(-7deg);
}

.motion-ready .hero.is-loaded .speech-one {
    transform: rotate(7deg);
}

.menu-section {
    position: relative;
    min-height: 66rem;
    padding: 5.7rem var(--page-gutter) 5rem;
    overflow: hidden;
    background: var(--color-cream);
}

.menu-section::after {
    content: "";
    position: absolute;
    z-index: 0;
    top: 0;
    right: -82vw;
    width: 122vw;
    height: 100%;
    background: rgb(217 166 46 / 30%);
    transform: skew(-9deg);
}

.menu-heading,
.menu-lines,
.menu-button {
    position: relative;
    z-index: 2;
}

.menu-heading h2 {
    font-size: clamp(4rem, 19vw, 4.8rem);
}

.menu-heading > p:last-child {
    max-width: 32rem;
    margin: 2rem 0 0;
    font-family: var(--font-serif);
    font-size: 1.08rem;
}

.menu-lines {
    margin: 4.2rem 0 0;
    padding: 0;
    list-style: none;
    border-top: var(--border-heavy);
}

.menu-item {
    border-bottom: var(--border-heavy);
}

.menu-item:nth-child(even) {
    color: var(--color-paper);
    background: var(--color-plum);
}

.menu-item button {
    width: 100%;
    min-height: 6.25rem;
    padding: .85rem .65rem;
    display: grid;
    grid-template-columns: 2.6rem minmax(0, 1fr) 2rem;
    align-items: center;
    border: 0;
    color: inherit;
    background: transparent;
    text-align: left;
    cursor: pointer;
}

.menu-item button > span {
    font-size: .62rem;
    font-weight: 900;
    letter-spacing: .13em;
}

.menu-item button strong {
    font-family: var(--font-display);
    font-size: clamp(2.55rem, 11vw, 3.25rem);
    font-weight: 900;
    line-height: .9;
    text-transform: uppercase;
}

.menu-item button b {
    color: var(--color-orange);
    font-size: 1.8rem;
    transition: transform 250ms ease;
}

.menu-item button[aria-expanded="true"] b {
    transform: rotate(90deg);
}

.menu-panel {
    padding: 0 3rem 1.35rem;
    font-family: var(--font-serif);
}

.menu-panel p {
    margin-bottom: .5rem;
    font-weight: 700;
}

.menu-panel small {
    display: block;
    max-width: 42rem;
    opacity: .82;
}

.menu-button {
    margin-top: 2.8rem;
    padding: .8rem 2.2rem;
    background: var(--color-ochre);
    box-shadow: .5rem .5rem 0 var(--color-ink);
    transform: rotate(-2deg);
    cursor: pointer;
}

.night {
    color: var(--color-paper);
    background: var(--color-ink);
}

.night-photo {
    position: relative;
    min-height: 28rem;
    overflow: hidden;
    clip-path: polygon(0 0, 96% 3%, 100% 95%, 4% 100%);
    transition: clip-path 1100ms var(--ease-print);
}

.motion-ready .night-photo:not(.is-visible) {
    clip-path: polygon(0 6%, 100% 0, 96% 100%, 4% 94%);
}

.night-photo img {
    width: 100%;
    height: 100%;
    min-height: 28rem;
    object-fit: cover;
}

.night-copy {
    min-height: 45rem;
    padding: 5.6rem var(--page-gutter);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.night h2 {
    font-size: clamp(3.75rem, 17vw, 4.4rem);
}

.night-copy > p:not(.chapter) {
    margin: 2.4rem 0 3rem;
    font-family: var(--font-serif);
    font-size: 1.08rem;
}

.night dl {
    margin: 0;
}

.night dl div {
    padding: 1.25rem 0;
    display: grid;
    grid-template-columns: 5.8rem 1fr;
    gap: .9rem;
    border-top: 1px solid rgb(255 247 227 / 28%);
}

.night dt {
    color: var(--color-ochre);
    font-size: .61rem;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.night dd {
    margin: 0;
    font-family: var(--font-serif);
    font-size: 1rem;
}

.event {
    position: relative;
    min-height: 67.5rem;
    padding: 5.7rem var(--page-gutter);
    display: grid;
    align-content: center;
    gap: 3.3rem;
    overflow: hidden;
    background: var(--color-ochre);
}

.event::before {
    content: "";
    position: absolute;
    inset: 0;
    opacity: .18;
    background-image: radial-gradient(var(--color-ink) 1.3px, transparent 1.5px);
    background-size: .68rem .68rem;
}

.event > * {
    position: relative;
    z-index: 2;
}

.event-date {
    width: 8.75rem;
    height: 8.75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .65rem;
    background: var(--color-paper);
    border: .35rem solid var(--color-ink);
    border-radius: 50%;
    transform: rotate(-6deg);
}

.motion-ready .event-date.is-visible {
    transform: rotate(-6deg);
}

.event-date strong {
    font-family: var(--font-display);
    font-size: 3.65rem;
    line-height: 1;
}

.event-date span {
    font-size: .9rem;
    font-weight: 900;
    line-height: 1.1;
}

.event h2 {
    font-size: clamp(4.2rem, 20vw, 5rem);
}

.event h2 em {
    color: var(--color-plum);
}

.event-copy > p:last-child {
    max-width: 34rem;
    margin: 2rem 0 0;
    font-family: var(--font-serif);
    font-size: 1.08rem;
}

.event-ticket {
    min-height: 19rem;
    padding: 3rem 2rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    color: var(--color-paper);
    background: var(--color-plum);
    border: .3rem solid var(--color-ink);
    box-shadow: .7rem .7rem 0 var(--color-paper);
    transform: rotate(3deg);
    transition: transform 350ms var(--ease-print);
}

.event-ticket:hover,
.event-ticket:focus-within,
.motion-ready .event-ticket.is-visible:hover,
.motion-ready .event-ticket.is-visible:focus-within {
    transform: rotate(1deg) translateY(-.25rem);
}

.motion-ready .event-ticket.is-visible {
    transform: rotate(3deg);
}

.event-ticket::before,
.event-ticket::after {
    content: "";
    position: absolute;
    left: -1.25rem;
    width: 2.2rem;
    height: 2.2rem;
    background: var(--color-ochre);
    border-right: .25rem solid var(--color-ink);
    border-radius: 50%;
}

.event-ticket::before {
    top: 4rem;
}

.event-ticket::after {
    bottom: 4rem;
}

.event-ticket > span {
    font-size: .66rem;
    font-weight: 900;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.event-ticket > strong {
    margin: 2.8rem 0 .85rem;
    font-family: var(--font-display);
    font-size: 2.75rem;
    line-height: .95;
    text-transform: uppercase;
}

.event-ticket small {
    line-height: 1.5;
}

.event-ticket a {
    width: fit-content;
    margin-top: 1.8rem;
    padding-bottom: .25rem;
    border-bottom: .15rem solid var(--color-ochre);
    font-size: .62rem;
    font-weight: 900;
    letter-spacing: .12em;
    text-decoration: none;
    text-transform: uppercase;
}

.where {
    min-height: 65rem;
    padding: 5.7rem var(--page-gutter);
    display: grid;
    align-content: center;
    gap: 3.5rem;
    color: var(--color-paper);
    background: var(--color-plum);
}

.where-copy {
    order: 1;
}

.where-brand {
    order: 2;
    border: .45rem solid var(--color-paper);
    box-shadow: 1rem 1rem 0 var(--color-ochre);
    transform: rotate(-3deg);
}

.motion-ready .where-brand.is-visible {
    transform: rotate(-3deg);
}

.where-brand img {
    width: 100%;
}

.where h2 {
    font-size: clamp(4rem, 19vw, 4.7rem);
}

.where address {
    margin-top: 3rem;
    font-family: var(--font-serif);
    font-size: 1.28rem;
    font-style: normal;
}

.where-actions {
    margin-top: 1.6rem;
    display: flex;
    flex-wrap: wrap;
    gap: 1.1rem 1.7rem;
}

.where-actions a {
    padding-bottom: .25rem;
    color: var(--color-ochre);
    border-bottom: .2rem solid;
    font-family: var(--font-display);
    font-size: 1.7rem;
    letter-spacing: .02em;
    text-decoration: none;
    text-transform: uppercase;
}

.open-note {
    order: 3;
    padding-top: 1.5rem;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    border-top: .12rem solid var(--color-paper);
    text-transform: uppercase;
}

.open-note span {
    max-width: 10rem;
    font-size: .61rem;
    font-weight: 900;
    letter-spacing: .15em;
}

.open-note strong {
    color: var(--color-ochre);
    font-family: var(--font-display);
    font-size: 1.7rem;
}

@media (min-width: 48rem) {
    .hero {
        min-height: 58.75rem;
        padding: 5rem var(--page-gutter) 4.4rem;
        display: grid;
        grid-template-columns: .82fr 1.18fr;
        align-items: center;
        gap: 3vw;
    }

    .hero::before {
        top: -9rem;
        right: -8vw;
        width: 67vw;
        height: 68rem;
        transform: rotate(9deg);
    }

    .hero .kicker {
        min-height: 0;
        margin-left: 0;
    }

    .hero h1 {
        font-size: clamp(5rem, 11.5vw, 5.9rem);
    }

    .hero-image {
        width: 100%;
        height: 40.6rem;
    }

    .issue-stamp {
        top: 2rem;
        left: 2rem;
        width: 6.6rem;
    }

    .issue-stamp strong {
        font-size: 2.75rem;
    }

    .speech-one {
        top: 2rem;
        right: 2vw;
        width: 9.4rem;
        height: 7.4rem;
    }

    .speech-two {
        right: 43%;
        bottom: 1.5rem;
        left: auto;
    }

    .cover-note {
        position: absolute;
        z-index: 5;
        right: 1.3rem;
        bottom: 2rem;
        display: block;
        margin: 0;
        font-size: .48rem;
        font-weight: 900;
        letter-spacing: .17em;
        text-transform: uppercase;
        writing-mode: vertical-rl;
    }

    .menu-section {
        min-height: 68.75rem;
        padding: 8rem 7vw 7.5rem;
    }

    .menu-section::after {
        right: -8vw;
        width: 38vw;
    }

    .menu-heading {
        max-width: 48rem;
    }

    .menu-heading h2 {
        font-size: clamp(5.6rem, 11vw, 7.2rem);
    }

    .menu-heading > p:last-child {
        margin-left: auto;
    }

    .menu-lines {
        margin-top: 6.2rem;
    }

    .menu-item button {
        min-height: 8rem;
        padding-inline: 1.1rem;
        grid-template-columns: 5rem 1fr 4rem;
    }

    .menu-item button strong {
        font-size: clamp(3rem, 6vw, 5.2rem);
    }

    .menu-button {
        float: right;
        padding-inline: 2.8rem;
    }

    .night-photo {
        min-height: 40.6rem;
    }

    .night-photo img {
        min-height: 40.6rem;
    }

    .night-copy {
        min-height: 43.75rem;
        padding: 6.2rem 5vw;
    }

    .night h2 {
        font-size: clamp(4.8rem, 10vw, 6.6rem);
    }

    .event {
        min-height: 61rem;
        padding: 7.5rem 7vw;
        grid-template-columns: 11rem 1fr;
        gap: 4vw;
    }

    .event-ticket {
        grid-column: 1 / -1;
        min-height: 15rem;
        margin-inline: 8vw;
    }

    .event h2 {
        font-size: clamp(5rem, 10vw, 7.5rem);
    }

    .where {
        min-height: 53rem;
        padding: 6.8rem 7vw;
        grid-template-columns: 1fr 1fr;
        align-items: center;
        gap: 6vw;
    }

    .where-brand,
    .where-copy {
        order: initial;
    }

    .where h2 {
        font-size: clamp(4.8rem, 9vw, 6.8rem);
    }

    .open-note {
        grid-column: 1 / -1;
    }

    .open-note span {
        max-width: none;
    }
}

@media (min-width: 73.75rem) {
    .hero {
        min-height: 56.25rem;
        padding: 5rem var(--page-gutter) 4.4rem;
        grid-template-columns: .88fr 1.12fr;
    }

    .hero h1 {
        font-size: clamp(5.75rem, 10vw, 9.8rem);
    }

    .hero-copy > p:not(.kicker) {
        font-size: 1.3rem;
    }

    .hero-image {
        height: 42.5rem;
    }

    .menu-section {
        min-height: 71.25rem;
        padding: 8.75rem 7vw 7.5rem;
    }

    .menu-heading h2 {
        font-size: clamp(5.6rem, 10vw, 10rem);
    }

    .night {
        min-height: 62.5rem;
        display: grid;
        grid-template-columns: 1.1fr .9fr;
    }

    .night-photo,
    .night-photo img {
        min-height: 62.5rem;
    }

    .night-copy {
        min-height: 62.5rem;
        padding: 9.3rem 7vw 6.2rem 5vw;
    }

    .night h2 {
        font-size: clamp(4.75rem, 8vw, 7.9rem);
    }

    .event {
        min-height: 48.75rem;
        grid-template-columns: 15rem 1fr 21.875rem;
        align-items: center;
        gap: 5vw;
    }

    .event-date {
        width: 13.75rem;
        height: 13.75rem;
    }

    .event-date strong {
        font-size: 5.8rem;
    }

    .event-ticket {
        grid-column: auto;
        min-height: 24.4rem;
        margin: 0;
        padding: 3.75rem 2.75rem;
    }

    .event-ticket > strong {
        font-size: 3.25rem;
    }

    .where {
        min-height: 53.1rem;
    }

    .where h2 {
        font-size: clamp(4.8rem, 8vw, 8.25rem);
    }

    .where-actions a {
        font-size: 2.2rem;
    }

    .open-note strong {
        font-size: 2.25rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .motion-ready .hero [data-hero-layer],
    .motion-ready .hero .hero-image,
    .motion-ready .night-photo:not(.is-visible),
    .motion-ready [data-reveal] {
        opacity: 1;
        clip-path: none;
        transform: none;
    }
}
