@import url("brand.css");
.registration-closure-dialog { width: min(32rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); overflow: auto; padding: 2rem; border: 0; border-top: .5rem solid var(--brand-yellow); color: var(--ink); background: white; }
.registration-closure-dialog::backdrop { background: rgb(57 29 70 / 70%); }
.registration-closure-dialog h2 { color: var(--brand-purple); font-size: 2rem; }
.registration-closure-dialog p { margin-block: 1.25rem; line-height: 1.7; }
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body { margin: 0; }
a { color: var(--brand-purple); text-underline-offset: .22em; }
a:hover { color: var(--brand-magenta); }
button, input, select, textarea { font: inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid var(--brand-purple); outline-offset: 4px; }
.site-header, .site-footer, .hero, .registration, .event-details { width: min(100% - 2rem, 72rem); margin-inline: auto; }
.site-header { min-height: 7rem; display: flex; align-items: center; }
.brand { display: inline-flex; }
.official-logo { display: block; width: 130px; height: 85px; object-fit: contain; }
h1, h2, h3 { color: var(--brand-purple); font-family: inherit; }
h1, h2 { margin: 0; line-height: 1.12; }
h2 { font-size: clamp(1.9rem, 4vw, 2.8rem); font-weight: 600; letter-spacing: -.035em; }
h3 { font-size: 1.15rem; }
.hero { display: grid; grid-template-columns: .85fr 1.1fr 1.25fr; min-height: 19rem; margin-bottom: 2rem; }
.hero__identity { display: grid; place-content: center; padding: 1.5rem; border: 1px solid var(--line); }
.hero__identity h1 { display: grid; place-items: center; }
.event-logo { display: block; width: 100%; max-width: 12rem; height: 15rem; object-fit: contain; }
.hero__copy { display: flex; flex-direction: column; justify-content: space-between; gap: 2rem; padding: 2rem; background: var(--brand-purple); color: white; }
.eyebrow { margin: 0 0 1rem; font-size: .72rem; font-weight: 700; line-height: 1.6; letter-spacing: .12em; text-transform: uppercase; color: var(--brand-magenta); }
.hero__copy .eyebrow { color: white; }
.hero__subtitle { margin: 0; font-weight: 500; font-size: clamp(1.25rem, 2.3vw, 1.65rem); line-height: 1.3; letter-spacing: -.025em; }
.hero__visual { position: relative; overflow: hidden; }
.event-hero-image { display: block; width: 100%; height: 100%; object-fit: cover; }
.hero__pattern { position: absolute; right: 0; bottom: 0; width: 5rem; height: 5rem; }
.registration { position: relative; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); column-gap: clamp(2rem, 5vw, 5rem); row-gap: 1.5rem; padding: clamp(1.5rem, 5vw, 4rem); border: 1px solid var(--line); border-top: .5rem solid var(--brand-yellow); scroll-margin-top: 1rem; }
.registration__header { grid-column: 1 / -1; min-width: 0; }
.registration__intro { min-width: 0; }
.registration__intro > :first-child, #formIntro > :first-child { margin-top: 0; }
.registration__note { color: var(--muted); line-height: 1.7; text-align: justify; hyphens: auto; }
.registration-form, .registration-form label { display: grid; align-content: start; gap: .5rem; }
.registration-form { align-self: start; grid-auto-rows: max-content; gap: 1.25rem; min-width: 0; }
#registrationForm { scroll-margin-top: 1rem; }
.field-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
label { color: var(--brand-purple); font-size: .75rem; font-weight: 700; letter-spacing: .045em; text-transform: uppercase; min-width: 0; }
.field-label { display: inline-flex; align-items: baseline; gap: .25rem; }
input, textarea, select { width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: 0; padding: .85rem .75rem; color: var(--ink); background: var(--paper); font-size: 1rem; font-weight: 400; letter-spacing: 0; text-transform: none; }
.registration-form input[type="text"], .registration-form input[type="email"], .registration-form select { height: 3rem; max-height: 3rem; padding-block: .65rem; }
.registration-form button[type="submit"] { width: 16rem; max-width: 100%; height: 3.25rem; max-height: 3.25rem; padding: .5rem .8rem; }
input:hover, textarea:hover, select:hover { border-color: var(--brand-purple); }
input:focus, textarea:focus, select:focus { border-color: var(--brand-purple); }
input[readonly], input:disabled, textarea:disabled, select:disabled { background: var(--surface); color: var(--muted); opacity: 1; }
textarea { resize: vertical; }
.attendance-fieldset { margin: 0; border: 0; padding: .25rem 0; min-width: 0; }
.attendance-fieldset legend { margin-bottom: .7rem; color: var(--brand-purple); font-size: .75rem; font-weight: 700; letter-spacing: .045em; text-transform: uppercase; }
.companion-fields { min-width: 0; margin: 0; padding: 1rem; border: 1px solid var(--line); background: var(--surface); }
.companion-fields legend { padding-inline: .35rem; color: var(--brand-purple); font-size: .8rem; font-weight: 600; }
.choice-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: .7rem; }
.registration-form .choice-card { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: .7rem; border: 1px solid var(--line); padding: .9rem; cursor: pointer; }
.choice-card:has(input:checked) { border-color: var(--brand-purple); background: var(--surface); }
.choice-card input { width: 1rem; margin: 0; accent-color: var(--brand-purple); }
.choice-card span { display: grid; gap: .2rem; }
.choice-card small { color: var(--muted); font-size: .75rem; font-weight: 400; letter-spacing: 0; text-transform: none; }
.registration-form .privacy-check { grid-template-columns: auto 1fr; align-items: start; color: var(--ink); font-size: .88rem; font-weight: 400; letter-spacing: 0; line-height: 1.5; text-transform: none; }
.privacy-check input { width: 1.15rem; height: 1.15rem; margin-top: .2rem; accent-color: var(--brand-purple); }
.required-marker, .form-status[data-state="error"] { color: var(--brand-magenta); }
.form-status { line-height: 1.6; font-size: .95rem; }
.form-status, #modalMessage { white-space: pre-line; }
.form-status[data-state="success"] { color: var(--brand-purple); }
.form-status:empty, #availability:empty { display: none; }
.form-note { margin: 0; color: var(--muted); font-size: .8rem; }
.honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.button { display: inline-flex; width: fit-content; max-width: 100%; align-items: center; justify-content: center; text-align: center; border: 1px solid transparent; border-radius: 0; padding: 1rem 1.5rem; font-size: .76rem; font-weight: 700; line-height: 1.4; letter-spacing: .07em; text-decoration: none; text-transform: uppercase; cursor: pointer; }
.button--primary { color: white; background: var(--brand-magenta); }
.button--primary:hover { background: var(--brand-purple); }
.button--secondary { color: var(--brand-purple); border-color: var(--brand-purple); background: white; }
.button--secondary:hover { background: var(--surface); }
.button--download, .button--directions { align-items: center; gap: .5rem; padding: .65rem .9rem; border: 1px solid #d7cadc; border-radius: .2rem; color: var(--brand-purple); background: white; font-size: .8rem; font-weight: 600; letter-spacing: .01em; text-transform: none; }
.button--download:hover, .button--download:focus-visible, .button--directions:hover, .button--directions:focus-visible { color: var(--brand-purple); border-color: var(--brand-purple); background: #f3edf5; }
.button--download svg, .button--directions svg { flex: 0 0 auto; width: 1.1rem; height: 1.1rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.location-map { overflow: hidden; margin-top: 1.25rem; border: 1px solid var(--line); border-radius: .25rem; background: white; }
.location-map iframe { display: block; width: 100%; height: clamp(16rem, 35vw, 23rem); border: 0; }
.location-map__caption { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem; }
.location-map__caption p { margin: 0; color: var(--muted); font-size: .85rem; line-height: 1.6; }
.location-map__caption strong { color: var(--brand-purple); }
.button:disabled { opacity: .6; cursor: default; }
.event-details { margin-block: 3rem; line-height: 1.8; }
.event-details h2 { font-size: clamp(1.55rem, 3vw, 2rem); padding-bottom: .75rem; border-bottom: .25rem solid var(--brand-purple); }
.event-details p { max-width: 65rem; }
.wine-map__image { display: block; width: 50%; height: auto; margin: 1.5rem auto 0; }
.winery-grid-title { margin: 2.5rem 0 1rem; color: var(--brand-purple); font-size: 1.6rem; font-weight: 700; text-align: left; }
.winery-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; margin: 0; padding: 0; list-style: none; }
.winery-grid li { min-width: 0; }
.winery-grid a { display: flex; align-items: center; justify-content: center; height: 100%; padding: .75rem; border: 1px solid var(--line); border-radius: .25rem; background: white; }
.winery-grid a:hover { border-color: var(--brand-purple); }
.winery-grid a:focus-visible { outline: 3px solid var(--brand-purple); outline-offset: 3px; }
.winery-grid img { display: block; width: 100%; max-width: 260px; height: auto; object-fit: contain; }
.program-agenda { max-width: 65rem; margin-block: 1.5rem; }
.program-agenda h3 { margin: 0 0 .8rem; padding-bottom: .35rem; border-bottom: .45rem solid var(--brand-yellow); color: var(--brand-purple); font-size: 1rem; font-weight: 700; }
.program-agenda__list { margin: 0; padding: 0; list-style: none; }
.program-agenda__list > li { position: relative; padding-left: 1rem; margin-block: .35rem; line-height: 1.65; }
.program-agenda__list > li::before { content: ''; position: absolute; left: .1rem; top: .65em; width: .45rem; height: .45rem; background: var(--brand-yellow); }
.program-agenda__list strong { color: var(--ink); font-weight: 700; font-variant-numeric: tabular-nums; }
.program-agenda__intro { margin: 1rem 0 1.5rem; font-size: .95rem; }
.program-agenda__workshop-title { display: block; margin: .15rem 0 .75rem; }
.program-agenda__introduction { margin: .75rem 0; font-size: .95rem; line-height: 1.65; text-align: left; }
.program-agenda__speakers { margin: .5rem 0 1.5rem; font-size: .95rem; }
.program-agenda__speakers p { margin: .3rem 0; line-height: 1.65; text-align: left; }
.program-agenda__moderator { margin: .75rem 0 1.5rem; font-size: .95rem; }
.program-agenda__speakers .program-agenda__speakers-title { margin-bottom: 1rem; }
.program-agenda__speaker-list { margin: 0 0 1.5rem; padding-left: 1.25rem; list-style: disc; }
.program-agenda__speaker-list li { margin-bottom: 1rem; padding-left: 0; }
.program-agenda__speaker-list em { font-size: .9rem; }
.program-agenda__note { font-size: .9rem; }
.program-agenda--coral h3 { border-bottom-color: var(--brand-coral); }
.program-agenda--coral .program-agenda__list > li::before { background: var(--brand-coral); }
.event-notice { border-left: .25rem solid var(--brand-yellow); padding-left: 1rem; }
.site-footer { margin-top: 4rem; padding-bottom: 2rem; border-top: 1px solid var(--line); }
.funding { padding: 2.5rem 0; border-bottom: 1px solid var(--line); }
.funding__logos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: center; gap: 2rem; max-width: 48rem; margin-inline: auto; }
.funding__logos img { display: block; width: 100%; height: 8rem; object-fit: contain; }
.funding__text { max-width: 54rem; margin: 1.5rem auto 0; text-align: center; font-size: .75rem; line-height: 1.7; }
.footer-inner { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 2rem; padding-top: 2rem; font-size: .75rem; line-height: 1.6; }
.footer-brand { display: flex; align-items: center; gap: 1.25rem; }
.footer-logo { width: 90px; height: 70px; object-fit: contain; }
.footer-privacy { justify-self: center; margin: 0; }
.footer-contact { justify-self: end; text-align: right; overflow-wrap: anywhere; }
.footer-contact p { margin: .25rem 0; }
.modal { position: fixed; inset: 0; z-index: 10; display: none; place-items: center; padding: 1rem; }
.modal.is-open { display: grid; }
.modal__backdrop { position: absolute; inset: 0; width: 100%; border: 0; background: rgb(57 29 70 / 70%); }
.modal__dialog { position: relative; width: min(100%, 32rem); max-height: calc(100dvh - 2rem); overflow: auto; padding: 2.5rem; border-top: .5rem solid var(--brand-yellow); background: white; }
.modal__dialog h2 { font-size: 2rem; }
.modal__dialog p { line-height: 1.7; }
.modal__message { white-space: pre-line; line-height: 1.7; margin-block: 1rem; }
.modal__message > p { margin: 0 0 1rem; }
.modal__close { position: absolute; top: .65rem; right: .65rem; border: 0; padding: .2rem .5rem; color: var(--brand-purple); background: white; font-size: 1.75rem; cursor: pointer; }
@media (max-width: 900px) {
  .hero { grid-template-columns: .8fr 1.2fr; }
  .hero__visual { grid-column: 1 / -1; height: 11rem; }
  .event-logo { height: 12rem; }
  .hero__copy { padding: 1.5rem; }
}
@media (max-width: 760px) {
  .winery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
  .winery-grid a { padding: .5rem; }
  .wine-map__image { width: 100%; }
  .registration, .field-grid { grid-template-columns: 1fr; }
  .registration { gap: 1.5rem; }
  .registration__header { grid-row: 1; }
  .registration-form { grid-row: 2; }
  .registration__intro { grid-row: 3; }
  .site-header { min-height: 6rem; }
  .official-logo { width: 110px; height: 75px; }
  .hero__identity { padding: 1rem; }
  .event-logo { height: 10rem; }
  .hero__copy { padding: 1rem; gap: 1rem; }
  .hero__subtitle { font-size: 1.1rem; }
  .hero__copy .eyebrow { font-size: .62rem; }
  .footer-inner { grid-template-columns: 1fr; gap: 1rem; }
  .footer-privacy, .footer-contact { justify-self: start; text-align: left; }
  .funding__logos { grid-template-columns: 1fr; max-width: 15rem; gap: 1.5rem; }
  .funding__logos img { height: 7rem; }
}
@media (max-width: 380px) {
  .choice-grid { grid-template-columns: 1fr; }
  .hero { grid-template-columns: 1fr; }
  .hero__visual { grid-column: auto; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
