/* Approved palette and semantic tokens: one source for frontend colors. */
:root {
    --blue: #045cb4;
    --midnight: #091626;
    --navy: #0b2f5f;
    --cream: #f2f0e8;
    --brass: #d6b97d;
    --white: #ffffff;
    --muted: #bac7d6;
    --line: #6c8098;
    --blue-tint: #91bfe8;
    --body: 'Source Sans 3', 'Avenir Next', system-ui, -apple-system, 'Segoe UI', Arial, sans-serif;
    --serif: 'Source Serif 4', Georgia, 'Times New Roman', serif;
    --poster: 'Barlow Condensed', 'Avenir Next Condensed', 'Arial Narrow', Impact, sans-serif;
    --text: var(--cream);
    --text-muted: var(--muted);
    --surface: var(--midnight);
    --surface-light: var(--cream);
    --on-light: var(--navy);
    --border: var(--line);
    --link: var(--cream);
    --button-bg: var(--blue);
    --button-text: var(--white);
    --focus: var(--brass);
    --focus-on-light: var(--navy);
    --focus-on-blue: var(--white);
    --image-overlay: var(--midnight);
}
*{
    box-sizing:border-box
}
html{
    scroll-behavior:smooth;
    scroll-padding-top:24px
}
body{
    margin:0;
    background:var(--surface);
    color:var(--text);
    font-family:var(--body);
    font-size:16px;
    line-height:1.65
}
h1,h2,h3,p,figure,dl,dd{
    margin:0
}
h1,h2,h3{
    font-weight:400;
    line-height:1.08;
    text-wrap:balance
}
p{
    text-wrap:pretty
}
img{
    display:block;
    width:100%;
    height:100%;
    object-fit:cover
}
a{
    color:inherit;
    text-decoration:none
}
button,summary{
    font:inherit;
    cursor:pointer
}
button{
    color:inherit
}
button,a,summary{
    -webkit-tap-highlight-color:transparent
}
a:focus-visible,button:focus-visible,summary:focus-visible{
    outline:3px solid var(--focus);
    outline-offset:5px
}
a:hover{
    text-decoration:underline;
    text-underline-offset:5px
}
button:hover{
    filter:brightness(1.08)
}
.wrap{
    width:min(1250px,calc(100% - 112px));
    margin-inline:auto
}
.eyebrow{
    font-size:12px;
    line-height:1.5;
    font-weight:600;
    letter-spacing:.13em;
    text-transform:uppercase
}
.skip{
    position:absolute;
    left:12px;
    top:-120px;
    z-index:20;
    background:var(--white);
    color:var(--navy);
    padding:12px
}
.skip:focus{
    top:8px
}
.header{
    min-height:106px;
    display:flex;
    align-items:center;
    gap:28px;
    border-bottom:1px solid var(--line)
}
.brand{
    display:flex;
    align-items:center;
    gap:13px;
    flex-shrink:0
}
.brand img{
    width:45px;
    height:45px;
    object-fit:contain
}
.brand b{
    display:block;
    font-size:23px;
    line-height:1.1;
    letter-spacing:.1em
}
.brand small{
    display:block;
    font-size:10px;
    line-height:1.35;
    letter-spacing:.025em;
    margin-top:4px
}
.header>nav{
    margin-left:auto;
    display:flex;
    gap:20px
}
.header nav a,.nav-cta{
    display:inline-flex;
    align-items:center;
    min-height:44px;
    font-size:14px
}
.nav-cta{
    border-bottom:1px solid var(--brass);
    margin-left:15px
}
.menu{
    display:none
}
.button{
    display:inline-flex;
    align-items:center;
    justify-content:space-between;
    gap:30px;
    background:var(--blue);
    color:var(--white);
    padding:14px 23px;
    min-height:52px;
    border:1px solid var(--blue-tint);
    font-size:14px;
    font-weight:600
}
.text-link{
    display:inline-flex;
    align-items:center;
    min-height:44px;
    padding:8px 0;
    border-bottom:1px solid currentColor;
    font-size:14px;
    font-weight:500
}
.admission{
    display:inline-block;
    border:1px solid currentColor;
    padding:5px 12px;
    font-size:12px;
    line-height:1.5
}
.intro-copy{
    color:var(--muted);
    line-height:1.8
}
.next-kicker{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:25px
}
.event-meta{
    display:grid;
    grid-template-columns:1fr 1.6fr .9fr;
    gap:35px;
    padding:27px 0;
    border-top:1px solid currentColor;
    margin-block:20px 28px
}
.event-meta dt{
    font-size:12px;
    letter-spacing:.1em;
    text-transform:uppercase;
    margin-bottom:8px
}
.event-meta dd{
    font-size:16px;
    line-height:1.7
}
.event-meta dd span{
    font-size:14px
}
.section-head{
    display:flex;
    justify-content:space-between;
    align-items:end;
    gap:35px;
    margin-bottom:32px
}
.section-head h2{
    font-family:var(--serif);
    font-size:52px;
    margin-top:12px;
    letter-spacing:-.045em
}
.section-head>p{
    font-size:14px;
    color:var(--muted)
}
.upcoming{
    padding-block:70px
}
.event-row{
    display:grid;
    grid-template-columns:95px 1fr auto;
    gap:32px;
    align-items:center;
    border-block:1px solid var(--line);
    padding:30px 0
}
.row-date{
    display:flex;
    flex-direction:column;
    border-right:1px solid var(--line);
    line-height:1.1
}
.row-date span{
    font-size:13px;
    letter-spacing:.12em
}
.row-date b{
    font-family:var(--serif);
    font-weight:400;
    font-size:52px;
    margin-top:8px
}
.event-row h3{
    font-family:var(--serif);
    font-size:34px;
    letter-spacing:-.025em;
    margin-block:9px
}
.event-row p:not(.eyebrow){
    font-size:15px;
    color:var(--muted)
}
.event-link{
    min-height:48px;
    min-width:70px;
    border:0;
    border-bottom:1px solid currentColor;
    background:transparent;
    font-size:14px
}
.support-grid{
    display:grid;
    grid-template-columns:1.3fr 1fr;
    gap:70px;
    align-items:end
}
.support p:not(.eyebrow){
    font-size:16px;
    max-width:430px;
    line-height:1.8;
    margin-bottom:23px
}
.support .support-note{
    font-size:12px;
    margin:17px 0 0
}
.sponsors{
    --text:var(--navy);
    --text-muted:var(--navy);
    --link:var(--navy);
    --focus:var(--navy);
    background:var(--white);
    color:var(--navy);
    padding-block:65px
}
.sponsors .eyebrow{
    color:var(--navy)
}
.sponsors h2{
    font-family:var(--serif);
    font-size:30px;
    margin:15px 0 30px
}
.sponsor-logos{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:40px;
    align-items:center;
    background:var(--white);
    padding:35px
}
.sponsor-logos img{
    height:62px;
    object-fit:contain;
    max-width:210px;
    margin-inline:auto
}
.footer{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:35px;
    border-top:1px solid var(--line);
    padding-block:40px
}
.footer>p{
    font-size:13px;
    color:var(--muted)
}
.footer nav{
    display:grid;
    gap:5px
}
.footer nav a{
    font-size:13px;
    min-height:32px;
    display:flex;
    align-items:center
}
figcaption{
    font-size:12px;
    line-height:1.6
}
.motion-enter{
    animation:arrive .4s ease-out both
}
@keyframes arrive{
    from{
        transform:translateY(7px)
    }
    to{
        transform:translateY(0)
    }
}
@media(max-width:1000px){
    .wrap{
        width:calc(100% - 64px)
    }
    .header>nav{
        gap:13px
    }
    .header nav a{
        font-size:13px
    }
    .nav-cta{
        display:none
    }
    .event-meta{
        gap:25px
    }
    .support-grid{
        gap:35px
    }
}
@media(max-width:650px){
    .wrap{
        width:calc(100% - 40px)
    }
    .header{
        min-height:88px;
        justify-content:space-between;
        position:relative;
        gap:15px
    }
    .brand img{
        width:39px;
        height:39px
    }
    .brand b{
        font-size:21px
    }
    .brand small{
        font-size:9px
    }
    .header>nav{
        display:none
    }
    .menu{
        display:block
    }
    .menu summary{
        list-style:none;
        min-height:44px;
        display:flex;
        align-items:center;
        font-size:14px;
        border-bottom:1px solid var(--brass)
    }
    .menu nav{
        position:absolute;
        top:80px;
        right:0;
        background:var(--navy);
        padding:18px 24px;
        z-index:5;
        display:grid;
        min-width:200px;
        border:1px solid var(--line)
    }
    .menu nav a{
        font-size:16px;
        min-height:48px
    }
    .eyebrow{
        font-size:11px;
        letter-spacing:.1em
    }
    .next-kicker{
        align-items:start;
        gap:15px
    }
    .next-kicker .eyebrow{
        max-width:200px
    }
    .admission{
        font-size:11px;
        white-space:nowrap
    }
    .event-meta{
        grid-template-columns:1fr;
        gap:18px;
        padding-block:22px;
        margin-bottom:23px
    }
    .event-meta>div{
        display:grid;
        grid-template-columns:80px 1fr;
        gap:15px
    }
    .event-meta dt{
        font-size:11px;
        margin:3px 0 0
    }
    .event-meta dd{
        font-size:15px
    }
    .event-meta dd span{
        font-size:13px
    }
    .section-head{
        display:block;
        margin-bottom:25px
    }
    .section-head h2{
        font-size:41px
    }
    .section-head>p{
        margin-top:18px
    }
    .upcoming{
        padding-block:45px
    }
    .event-row{
        grid-template-columns:58px 1fr;
        gap:20px;
        padding-block:23px
    }
    .row-date b{
        font-size:42px
    }
    .row-date span{
        font-size:11px
    }
    .event-row h3{
        font-size:28px;
        overflow-wrap:anywhere
    }
    .event-row .eyebrow{
        font-size:10px
    }
    .event-row p:not(.eyebrow){
        font-size:13px
    }
    .event-link{
        grid-column:2;
        justify-self:start
    }
    .support-grid{
        grid-template-columns:1fr;
        gap:25px
    }
    .support p:not(.eyebrow){
        font-size:15px
    }
    .sponsors{
        padding-block:45px
    }
    .sponsors h2{
        font-size:26px
    }
    .sponsor-logos{
        grid-template-columns:1fr 1fr;
        gap:25px;
        padding:25px 20px
    }
    .sponsor-logos img{
        height:50px
    }
    .footer{
        flex-wrap:wrap;
        padding-block:30px;
        gap:25px
    }
    .footer>p{
        width:100%;
        order:3
    }
    .footer nav a{
        min-height:40px
    }
    .button{
        width:100%;
        gap:16px
    }
}
@media(prefers-reduced-motion:reduce){
    html{
        scroll-behavior:auto
    }
    *,*:before,*:after{
        animation:none!important;
        transition:none!important
    }
    .motion-enter{
        transform:none
    }
}
.a-people a:focus-visible{
    outline-color:var(--navy)
}
