/* Waldrain Christmas menu: the site's own typography and colours on a quiet invitation. */
.holiday-dialog {
  --holiday-pine: var(--brand-dark, #4f6b48);
  --holiday-paper: var(--cream, #faf7ef);
  --holiday-gold: var(--gold, #b08a4d);
  --holiday-red: #803a35;
  --holiday-ink: var(--text, #2e2c27);
  --holiday-muted: var(--text-soft, #6a6357);
  --holiday-line: #ded8c9;
  width: min(980px, calc(100% - 48px));
  max-width: none;
  max-height: calc(100vh - 48px);
  max-height: calc(100dvh - 48px);
  margin: auto;
  padding: 0;
  border: 0;
  border-radius: 3px;
  overflow: hidden;
  color: var(--holiday-ink);
  background: var(--holiday-paper);
  box-shadow: 0 24px 90px #17211740;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
}
.holiday-dialog:not([open]) { display: none; }
.holiday-dialog::backdrop {
  background: #1a241bc4;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.holiday-dialog[open] { animation: holiday-arrive .3s ease both; }
body.holiday-open { overflow: hidden; }
.holiday-dialog :focus-visible { outline: 2px solid var(--holiday-pine); outline-offset: 4px; }
.holiday-close {
  position: absolute;
  z-index: 2;
  top: 12px;
  right: 12px;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 2px;
  background: var(--holiday-paper);
  color: var(--holiday-pine);
  cursor: pointer;
}
.holiday-close:hover { background: var(--cream-warm); }
.holiday-close svg { width: 20px; height: 20px; }
.holiday-scroll {
  max-height: calc(100vh - 48px);
  max-height: calc(100dvh - 48px);
  padding: 38px 54px 0;
  overflow: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: #a7b09f var(--holiday-paper);
}
.holiday-scroll:focus-visible { outline-offset: -5px; }
.holiday-masthead {
  position: relative;
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) 100px;
  align-items: center;
  gap: 20px;
  padding: 0 0 31px;
  border-bottom: 1px solid var(--holiday-gold);
}
.holiday-brand { display: flex; flex-direction: column; align-items: center; width: 140px; color: var(--holiday-pine); }
.holiday-brand img { width: 69px; height: 68px; object-fit: contain; }
.holiday-brand > span { display: flex; flex-direction: column; align-items: center; }
.holiday-brand i { margin-top: 1px; font-family: var(--font-italic); font-size: 16px; line-height: 1.15; }
.holiday-brand b { font-family: var(--font-display); font-size: 17px; font-weight: 400; letter-spacing: .19em; text-transform: uppercase; line-height: 1.5; }
.holiday-title-wrap { padding-top: 1px; text-align: center; }
.holiday-dialog .holiday-season { margin: 0 0 9px; color: var(--holiday-red); font-size: 10px; font-weight: 400; letter-spacing: .18em; text-transform: uppercase; }
.holiday-dialog #holiday-title {
  margin: 0;
  color: var(--holiday-pine);
  font-family: var(--font-italic);
  font-size: 64px;
  font-weight: 400;
  line-height: .97;
  letter-spacing: -.035em;
  text-transform: none;
  overflow-wrap: normal;
}
.holiday-dialog #holiday-title em { display: block; margin-top: 6px; font-size: 31px; letter-spacing: -.01em; font-weight: 400; }
.holiday-ribbon { display: block; width: 104px; height: 118px; color: var(--holiday-red); transform: rotate(9deg); }
.holiday-columns { display: grid; grid-template-columns: minmax(0, .83fr) minmax(0, 1.17fr); gap: 42px; padding: 31px 0 28px; }
.holiday-visit { padding: 6px 34px 0 0; border-right: 1px solid var(--holiday-line); }
.holiday-dialog .holiday-small-heading { margin: 0 0 15px; color: var(--holiday-pine); font-family: var(--font-display); font-size: 12px; font-weight: 400; line-height: 1.4; letter-spacing: .09em; text-transform: uppercase; }
.holiday-hours { margin: 0; }
.holiday-hours > div { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 11px 0; border-bottom: 1px solid var(--holiday-line); font-size: 12px; }
.holiday-hours > div:first-child { padding-top: 0; }
.holiday-hours dt { min-width: 0; }
.holiday-hours dt small { display: block; margin-top: 1px; color: var(--holiday-muted); font-size: 10px; }
.holiday-hours dd { flex-shrink: 0; }
.holiday-hours > div:nth-child(2) dd { color: var(--holiday-red); }
.holiday-buvette { margin-top: 25px; }
.holiday-dialog .holiday-buvette .holiday-small-heading { margin-bottom: 8px; }
.holiday-dialog .holiday-buvette p, .holiday-dialog .holiday-break p { margin: 0; color: var(--holiday-muted); font-size: 12px; font-weight: 400; line-height: 1.7; }
.holiday-break { margin-top: 26px; }
.holiday-dialog .holiday-break .holiday-small-heading { margin-bottom: 8px; color: var(--holiday-red); }
.holiday-dialog .holiday-break .holiday-break-dates { margin-bottom: 6px; color: var(--holiday-ink); font-family: var(--font-italic); font-size: 23px; line-height: 1.1; white-space: nowrap; letter-spacing: -.015em; }
.holiday-break-dates span { color: var(--holiday-gold); }
.holiday-dialog .holiday-signoff { margin: 28px 0 0; color: var(--holiday-pine); font-family: var(--font-italic); font-size: 19px; font-weight: 400; line-height: 1.3; }
.holiday-signoff em { font-size: 22px; }
.holiday-menu-column { min-width: 0; text-align: center; }
.holiday-dialog .holiday-brunch-date { margin: 0 0 5px; color: var(--holiday-red); font-size: 10px; font-weight: 400; letter-spacing: .055em; }
.holiday-brunch-date span { padding: 0 3px; }
.holiday-dialog .holiday-brunch-title { margin: 0; color: var(--holiday-pine); font-family: var(--font-italic); font-size: 38px; font-weight: 400; line-height: 1.15; letter-spacing: -.025em; text-transform: none; overflow-wrap: normal; }
.holiday-dialog .holiday-brunch-time { margin: 7px 0 0; color: var(--holiday-red); font-size: 11px; font-weight: 400; letter-spacing: .055em; }
.holiday-dialog .holiday-brunch-intro { margin: 9px 0 0; color: var(--holiday-muted); font-size: 12px; font-weight: 400; line-height: 1.55; }
.holiday-menu { display: flex; flex-direction: column; gap: 6px; margin: 18px 0; padding: 0; list-style: none; }
.holiday-menu li { font-family: var(--font-italic); font-size: 20px; line-height: 1.2; }
.holiday-menu li:nth-child(4), .holiday-menu li:nth-child(5), .holiday-menu li:nth-child(6) { margin-top: 4px; }
.holiday-menu small { display: block; margin-top: 3px; color: var(--holiday-muted); font-family: var(--font-body); font-size: 11px; line-height: 1.5; }
.holiday-dialog .holiday-price { margin: 0 0 14px; color: var(--holiday-muted); font-size: 11px; font-weight: 400; }
.holiday-price strong { color: var(--holiday-ink); font-weight: 400; }
.holiday-price > span { padding: 0 5px; color: var(--holiday-gold); }
.holiday-reserve { display: flex; align-items: center; justify-content: center; gap: 18px; min-height: 46px; padding: 12px 18px; border: 1px solid var(--holiday-pine); border-radius: 1px; color: var(--holiday-paper); background: var(--holiday-pine); font-size: 12px; transition: background .2s; }
.holiday-reserve:hover { color: var(--holiday-paper); background: #425a3d; }
.holiday-reserve span { font-size: 18px; line-height: 1; }
.holiday-footer { display: flex; justify-content: space-between; align-items: center; gap: 18px; min-height: 58px; border-top: 1px solid var(--holiday-line); color: var(--holiday-muted); font-size: 10px; }
.holiday-footer > span > span { margin: 0 5px; color: var(--holiday-gold); }
.holiday-dismiss { display: inline-flex; align-items: center; gap: 12px; flex-shrink: 0; min-height: 44px; padding: 6px 0; border: 0; color: var(--holiday-pine); background: none; font: inherit; font-size: 11px; cursor: pointer; }
.holiday-dismiss:hover { text-decoration: underline; text-underline-offset: 4px; }
.holiday-launch { display: inline-flex; align-items: center; justify-content: center; gap: 10px; margin-top: 24px; padding: 10px 15px; border: 1px solid #b08a4d60; border-radius: 1px; color: var(--brand-dark); background: var(--cream-warm); font-family: var(--font-body); font-size: 13px; cursor: pointer; }
.holiday-launch[hidden] { display: none; }
.holiday-launch:hover { background: #eae1ce; }
.holiday-launch svg { width: 19px; height: 19px; }
@keyframes holiday-arrive { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@media (min-width: 761px) and (max-width: 950px) {
  .holiday-scroll { padding: 32px 34px 0; }
  .holiday-masthead { grid-template-columns: 115px minmax(0, 1fr) 80px; gap: 10px; }
  .holiday-brand { width: 115px; }
  .holiday-dialog #holiday-title { font-size: 56px; }
  .holiday-ribbon { width: 80px; }
  .holiday-columns { grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 25px; }
  .holiday-visit { padding-right: 24px; }
  .holiday-dialog .holiday-small-heading { font-size: 11px; }
  .holiday-dialog .holiday-break .holiday-break-dates { font-size: 20px; }
  .holiday-dialog .holiday-brunch-title { font-size: 33px; }
  .holiday-menu li { font-size: 18px; }
  .holiday-hours > div { font-size: 11px; gap: 8px; }
}
@media (max-width: 760px) {
  .holiday-dialog { width: calc(100% - 24px); max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); }
  .holiday-scroll { max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); padding: 25px 25px 0; }
  .holiday-close { top: 7px; right: 7px; width: 36px; height: 36px; }
  .holiday-masthead { display: block; padding-bottom: 24px; }
  .holiday-brand { flex-direction: row; justify-content: center; gap: 9px; width: auto; margin: 0 auto 20px; }
  .holiday-brand img { width: 44px; height: 44px; }
  .holiday-brand b { font-size: 14px; }
  .holiday-brand i { font-size: 14px; }
  .holiday-title-wrap { position: relative; z-index: 1; }
  .holiday-dialog .holiday-season { margin-bottom: 9px; font-size: 9px; }
  .holiday-dialog #holiday-title { font-size: 52px; }
  .holiday-dialog #holiday-title em { font-size: 27px; }
  .holiday-ribbon { position: absolute; top: 76px; right: -16px; width: 49px; height: 76px; transform: rotate(14deg); }
  .holiday-columns { display: flex; flex-direction: column; gap: 29px; padding: 26px 0 25px; }
  .holiday-menu-column { order: -1; }
  .holiday-dialog .holiday-brunch-title { font-size: 35px; }
  .holiday-dialog .holiday-brunch-date { font-size: 10px; }
  .holiday-dialog .holiday-brunch-intro { font-size: 12px; }
  .holiday-menu { margin: 19px 0; gap: 8px; }
  .holiday-menu li { font-size: 21px; }
  .holiday-menu small { font-size: 12px; }
  .holiday-dialog .holiday-price { font-size: 11px; }
  .holiday-price > span { padding: 0 3px; }
  .holiday-reserve { min-height: 48px; padding: 12px 10px; gap: 12px; font-size: 12px; }
  .holiday-visit { border-right: 0; border-top: 1px solid var(--holiday-gold); padding: 26px 0 0; }
  .holiday-hours > div { font-size: 13px; padding: 13px 0; }
  .holiday-hours dt small { font-size: 11px; }
  .holiday-dialog .holiday-buvette p, .holiday-dialog .holiday-break p { font-size: 13px; }
  .holiday-dialog .holiday-break .holiday-break-dates { font-size: 25px; }
  .holiday-dialog .holiday-signoff { margin-top: 23px; }
  .holiday-footer { flex-direction: column; gap: 0; padding-top: 14px; text-align: center; }
  .holiday-dismiss { min-height: 48px; font-size: 12px; }
}
@media (max-width: 380px) {
  .holiday-scroll { padding: 24px 20px 0; }
  .holiday-dialog #holiday-title { font-size: 44px; }
  .holiday-dialog #holiday-title em { font-size: 25px; }
  .holiday-ribbon { right: -12px; top: 80px; width: 40px; height: 61px; }
  .holiday-dialog .holiday-brunch-title { font-size: 31px; }
  .holiday-dialog .holiday-break .holiday-break-dates { font-size: 23px; }
  .holiday-menu li { font-size: 20px; }
  .holiday-dialog .holiday-price { font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .holiday-dialog[open] { animation: none; }
  .holiday-dialog *, .holiday-launch { transition: none; scroll-behavior: auto; }
}
