.banquet-page { min-width: 0; --ball-navy: #071a36; --ball-gold: #e4c58d; --ball-red: #bc1837; }
.banquet-page .skip-link { position: absolute; top: -100px; left: 1rem; z-index: 100; padding: 1rem; background: white; color: #071a36; }
.banquet-page .skip-link:focus { top: 1rem; }
.banquet-page .ball-hero { background: radial-gradient(ellipse at 70% 20%, #243e63, #071a36 75%); color: #fff; padding: 5rem 0 3rem; }
.ball-hero__grid { display: grid; grid-template-columns: 1fr .85fr; gap: clamp(2rem, 6vw, 6rem); align-items: center; }
.ball-eyebrow { text-transform: uppercase; font-size: .72rem; font-weight: 800; letter-spacing: .16em; margin: 0 0 1.2rem; }
.ball-hero .ball-eyebrow, .ball-season { color: var(--ball-gold); }
.ball-season { font: italic 1.6rem Georgia, serif; margin: 0 0 .75rem; }
.banquet-page .ball-hero h1 { font: 400 clamp(3.4rem, 6.6vw, 6rem)/.98 Georgia, serif; letter-spacing: -.04em; margin: 0 0 1.75rem; color: white; }
.ball-hero h1 span { display: block; font: 400 1.2rem 'Open Sans', sans-serif; letter-spacing: .3em; margin-top: 1.2rem; color: var(--ball-gold); }
.ball-intro { font-size: 1.25rem; line-height: 1.5; }
.ball-hero__copy > p:not(.ball-eyebrow):not(.ball-season) { max-width: 38ch; }
.ball-date { border-top: 1px solid #667387; margin: 1.75rem 0; padding-top: 1.5rem; display: grid; gap: .35rem; }
.ball-date strong { font-size: 1.2rem; }
.ball-button { display: inline-flex; justify-content: center; align-items: center; gap: .8rem; padding: 1rem 1.25rem; background: var(--ball-red); color: white; border: 2px solid var(--ball-red); font: 700 .95rem 'Open Sans', sans-serif; text-decoration: none; cursor: pointer; }
.ball-button:hover { background: #94132b; border-color: #94132b; color: white; }
.ball-button svg { width: 1.3rem; height: 1.3rem; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; }
.ball-button:disabled { opacity: .65; cursor: wait; }
.ball-venue { margin-top: 1.5rem; font-weight: 700; }
.ball-venue small { font-weight: 400; color: #cbd2de; }
.ball-poster { margin: 0; }
.ball-poster img { width: 100%; height: auto; display: block; box-shadow: 0 20px 70px #0006; border: 1px solid #617087; }
.ball-poster figcaption { font-size: .72rem; color: #d0d7e2; text-align: center; margin-top: .8rem; }
.banquet-page .ball-tickets { background: #f6f2e9; padding: 5rem 0; color: var(--ball-navy); }
.banquet-page h2 { font: 400 clamp(2.2rem, 4vw, 3.5rem)/1.1 Georgia, serif; letter-spacing: -.035em; margin: 0 0 1rem; }
.ball-section-intro { max-width: 60ch; }
.ball-packages { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-top: 2.25rem; }
.ball-package { background: white; border: 1px solid #d2cbbb; padding: 2rem; display: flex; flex-direction: column; align-items: start; }
.ball-package--gold { border-top: 4px solid #997333; padding-top: calc(2rem - 3px); }
.ball-package h3 { font: 400 1.9rem Georgia, serif; margin: 0; }
.ball-price { font: 400 3rem Georgia, serif; margin: 1.5rem 0 1rem; }
.ball-price span { display: block; font: 400 .8rem 'Open Sans', sans-serif; margin-top: .4rem; }
.ball-package ul { padding-left: 1.2rem; line-height: 1.9; margin: 0 0 1rem; }
.ball-package a { color: #9e1530; font-weight: 700; margin-top: auto; padding-top: 1rem; text-underline-offset: .25rem; }
.ball-individual { margin: 1.7rem 0 0; font-size: .9rem; overflow-wrap: anywhere; }
.ball-individual a { color: inherit; }
.banquet-page .ball-enquiry { padding: 5rem 0; background: white; color: var(--ball-navy); scroll-margin-top: 6rem; }
.ball-enquiry__grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 4rem; align-items: start; }
.ball-enquiry__grid > div > p { max-width: 37ch; }
.ball-enquiry a { color: inherit; }
.ball-form { min-width: 0; background: #f6f2e9; padding: 2rem; border-top: 4px solid var(--ball-red); }
.ball-form h3 { font: 400 1.9rem Georgia, serif; margin: 0 0 .5rem; }
.ball-form-note { font-size: .78rem; line-height: 1.65; color: #4e5867; }
.ball-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1.5rem 0 1rem; align-items: end; }
.ball-form label { display: block; font-size: .8rem; font-weight: 700; }
.ball-form label span { font-weight: 400; }
.ball-form input, .ball-form select, .ball-form textarea { display: block; margin-top: .5rem; width: 100%; min-width: 0; border: 1px solid #8a9097; border-radius: 0; padding: .8rem; font: 400 1rem 'Open Sans', sans-serif; background: white; color: var(--ball-navy); }
.ball-form-note { margin: .75rem 0; }
.ball-enquiry__grid > div > p { margin-bottom: 1rem; }
.ball-form textarea { resize: vertical; }
.ball-form .ball-button { width: 100%; margin-top: 1rem; }
.ball-form .ball-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.ball-status { font-size: .9rem; margin-bottom: 0; overflow-wrap: anywhere; }
.ball-status.is-error { color: #a4102a; }
.ball-status.is-success { color: #17623b; font-weight: 700; }
.banquet-page :focus-visible { outline: 3px solid #2472bb; outline-offset: 4px; }
@media (max-width: 900px) { .ball-enquiry__grid { grid-template-columns: 1fr; gap: 2rem; } .ball-enquiry__grid > div > p { max-width: 60ch; } .ball-hero__grid { gap: 2rem; } }
@media (max-width: 640px) { .ball-hero__grid, .ball-packages, .ball-fields { grid-template-columns: 1fr; } .banquet-page .ball-hero, .banquet-page .ball-tickets, .banquet-page .ball-enquiry { padding: 3rem 0; } .ball-poster { max-width: 420px; margin: 1rem auto 0; } .ball-form, .ball-package { padding: 1.25rem; } .ball-form label span { display: inline; } .ball-button { width: 100%; } }
