/* Shared menu pages: the same paper, ink, serif lettering and fine rules. */
.menu-page { position: relative; isolation: isolate; background: radial-gradient(ellipse at 50% 0, #fffaf4 0, var(--paper) 65%); }
.menu-page > .grain { position: fixed; }
.menu-shell { width: min(100% - 3rem, 72rem); margin-inline: auto; }
.skip-link { position: fixed; top: .75rem; left: .75rem; z-index: 10; padding: .75rem 1rem; background: var(--ink); color: var(--paper); transform: translateY(-200%); font-family: var(--sans); }
.skip-link:focus { transform: none; }
.menu-header { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding-block: 1.5rem; border-bottom: 1px solid var(--rule); }
.menu-brand { display: flex; align-items: center; gap: .875rem; flex-shrink: 0; min-width: 0; max-width: 100%; }
.menu-brand img { width: 52px; height: auto; flex: none; }
.menu-brand > span { display: flex; flex-direction: column; gap: .25rem; min-width: 0; }
.menu-brand__name { font-size: clamp(1.5rem, .9rem + 4vw, 2.125rem); font-weight: 600; line-height: 1; letter-spacing: .055em; text-transform: uppercase; }
.menu-brand__caption { font: 500 .6875rem/1.3 var(--sans); letter-spacing: .14em; text-transform: uppercase; }
.menu-pages { display: flex; flex-wrap: wrap; gap: .375rem 1.5rem; font: 500 1rem/1.3 var(--sans); }
.menu-pages a { display: inline-flex; align-items: center; min-height: 44px; border-bottom: 1px solid transparent; }
.menu-pages a[aria-current="page"], .menu-pages a:hover { border-bottom-color: var(--ink); }
.menu-intro { display: flex; flex-direction: column; align-items: center; padding-block: clamp(2.75rem, 6vw, 4.5rem); text-align: center; }
.menu-kicker { margin: 0; color: var(--ink-soft); font: 600 .8125rem/1.5 var(--sans); letter-spacing: .2em; text-transform: uppercase; }
.menu-intro h1 { margin: .75rem 0 1.125rem; font-size: clamp(2.75rem, 1.5rem + 5vw, 4.75rem); line-height: 1; font-weight: 500; letter-spacing: -.015em; overflow-wrap: anywhere; }
.menu-intro .divider { max-width: 14rem; }
.menu-subtitle { margin: 1rem 0 0; font: 600 .9375rem/1.5 var(--sans); letter-spacing: .08em; }
.menu-welcome { margin: .4375rem 0 0; color: var(--ink-soft); font-size: 1.25rem; line-height: 1.45; font-style: italic; }
.pdf-link { display: inline-flex; gap: 1rem; align-items: center; justify-content: center; margin-top: 1.5rem; padding: .6875rem 1rem; min-height: 44px; border: 1px solid var(--rule); font: 500 .9375rem/1.4 var(--sans); }
.pdf-link:hover { border-color: var(--ink); background: var(--ink); color: var(--paper); }
.menu-layout { display: grid; grid-template-columns: 12.25rem minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); padding-bottom: 3rem; }
.desktop-index { position: sticky; top: 1.5rem; align-self: start; max-height: calc(100vh - 3rem); max-height: calc(100svh - 3rem); overflow-y: auto; padding: 1.25rem 1rem; background: #F3EBDD; border-right: 1px solid var(--rule); scrollbar-width: thin; scrollbar-color: rgba(106, 78, 44, .35) transparent; }
.index-title { margin: 0 0 1.5rem; color: var(--ink-soft); font: 600 .75rem/1.4 var(--sans); letter-spacing: .14em; text-transform: uppercase; }
.category-links { display: flex; flex-direction: column; align-items: stretch; }
.category-group { margin: 1.375rem 0 .375rem; color: var(--ink-soft); font: 600 .75rem/1.4 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.category-group:first-of-type { margin-top: 0; }
.category-links a { padding: .4375rem .625rem; margin-left: -.625rem; border-left: 1px solid transparent; font: 500 1rem/1.25 var(--sans); overflow-wrap: anywhere; hyphens: auto; }
.category-links a:hover, .category-links a[aria-current="location"] { background: rgba(106, 78, 44, .06); border-left-color: var(--ink-soft); }
.index-pdf { display: inline-block; margin-top: 1.5rem; padding-block: .5rem; border-top: 1px solid var(--rule); font: 500 .875rem/1.4 var(--sans); color: var(--ink-soft); }
.mobile-index { display: none; }
.menu-content { min-width: 0; }
.menu-section { margin-bottom: 3.25rem; }
.section-header { display: flex; align-items: baseline; gap: .875rem; padding-top: 1rem; border-top: 1px solid var(--ink); }
.section-header h2 { margin: 0; font-size: 2rem; font-weight: 500; line-height: 1.15; scroll-margin-top: 2rem; overflow-wrap: anywhere; }
.section-header h2:focus-visible, #gerichte:focus-visible, #zusatzstoffe:focus-visible { outline: 2px solid var(--ink-soft); outline-offset: .375rem; }
.section-note { margin: .75rem 0 .25rem; max-width: 43rem; color: var(--ink-soft); font-size: 1.0625rem; line-height: 1.5; }
.dishes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 2rem; }
.dish { min-width: 0; padding-block: 1.125rem; border-bottom: 1px solid rgba(25, 23, 19, .12); }
.dish-heading { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; }
.dish h3 { margin: 0; min-width: 0; font-size: 1.3125rem; font-weight: 600; line-height: 1.2; overflow-wrap: anywhere; hyphens: auto; }
.dish sup, .section-note sup { position: relative; top: -.15em; margin-left: .3em; font: 500 .625rem/1 var(--sans); color: var(--ink-soft); white-space: nowrap; }
.dish sup a, .section-note sup a { text-decoration: underline; text-underline-offset: .15em; }
.dish-dietary { margin: .375rem 0 0; color: var(--ink-soft); font: 600 .75rem/1.4 var(--sans); letter-spacing: .04em; }
.dish-serving { margin: .375rem 0 0; color: var(--ink-soft); font: 500 .875rem/1.4 var(--sans); }
.dish-price { flex: none; white-space: nowrap; font-size: 1.25rem; font-weight: 500; line-height: 1.3; font-variant-numeric: lining-nums tabular-nums; }
.dish-description { margin: .4375rem 0 0; color: var(--ink-soft); font-size: 1.125rem; line-height: 1.4; overflow-wrap: anywhere; }
.dish-variants { margin: .75rem 0 0; display: flex; flex-wrap: wrap; gap: .625rem 1.5rem; }
.dish-variants > div { display: flex; align-items: baseline; gap: .5rem; }
.dish-variants dt { color: var(--ink-soft); font: 500 .875rem/1.4 var(--sans); }
.dish-variants dd { margin: 0; white-space: nowrap; font-size: 1.125rem; font-weight: 500; font-variant-numeric: lining-nums tabular-nums; }
.menu-notes { border-top: 1px solid var(--rule); padding-top: 1.25rem; }
.menu-notes h2 { margin: 0; font-size: 1.625rem; font-weight: 500; }
.menu-notes > p { font-size: 1.0625rem; color: var(--ink-soft); line-height: 1.5; max-width: 42rem; }
.menu-notes h3 { margin-top: 1.5rem; font: 600 .875rem/1.4 var(--sans); scroll-margin-top: 5rem; }
.additives { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem 1.5rem; font: 500 .875rem/1.4 var(--sans); color: var(--ink-soft); }
.additives > div { display: flex; gap: .625rem; }
.additives dt { min-width: 1.125rem; font-variant-numeric: tabular-nums; }
.additives dd { margin: 0; }
.menu-closing { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 1rem; border-block: 1px solid var(--rule); padding-block: 2.75rem; }
.menu-closing h2 { margin: 0; font-size: clamp(2rem, 4vw, 2.75rem); font-weight: 500; line-height: 1.2; }
.reservation-link { padding: .875rem 1.125rem; border: 1px solid var(--ink); font: 500 1rem/1.4 var(--sans); }
.reservation-link:hover { background: var(--ink); color: var(--paper); }
.other-menu-link { padding: .5rem; color: var(--ink-soft); font: 500 .9375rem/1.4 var(--sans); text-decoration: underline; text-underline-offset: .25em; }
.menu-footer { display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; padding-block: 1.5rem 2rem; color: var(--ink-soft); font: 500 .875rem/1.6 var(--sans); }
.menu-footer p { margin: 0; }
.menu-footer a { padding-block: .75rem; text-decoration: underline; text-underline-offset: .25em; }

@media (max-width: 60rem) {
  .menu-layout { display: block; }
  .desktop-index { display: none; }
  .mobile-index { display: block; position: relative; top: 0; z-index: 2; margin-bottom: 1.75rem; border-block: 1px solid var(--ink); background: var(--paper); }
  .menu-enhanced .mobile-index { position: sticky; }
  .mobile-index summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer; padding: .75rem .5rem; min-height: 48px; list-style: none; font: 500 1rem/1.4 var(--sans); touch-action: manipulation; }
  .mobile-index summary::-webkit-details-marker { display: none; }
  .mobile-index summary, .mobile-index .category-links a { -webkit-tap-highlight-color: transparent; }
  .mobile-index summary:active { background: rgba(106, 78, 44, .06); }
  .mobile-index summary:focus-visible { outline: 2px solid var(--ink-soft); outline-offset: 4px; }
  .index-selection { display: flex; align-items: baseline; gap: 1rem; min-width: 0; }
  .index-label { color: var(--ink-soft); font-size: .875rem; }
  .index-current { display: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .menu-enhanced .index-current { display: block; }
  .index-toggle { flex: none; width: .5rem; height: .5rem; margin-right: .25rem; border-right: 1px solid currentColor; border-bottom: 1px solid currentColor; transform: translateY(-.125rem) rotate(45deg); }
  .mobile-index[open] .index-toggle { transform: translateY(.125rem) rotate(225deg); }
  .mobile-index .category-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 .75rem; padding: .25rem .5rem .75rem; max-height: 60vh; max-height: 60svh; overflow-y: auto; overscroll-behavior: contain; }
  .mobile-index .category-links a { display: flex; align-items: center; min-height: 44px; margin: 0; padding: .5rem; }
  .mobile-index .category-group { grid-column: 1 / -1; margin-top: .75rem; }
  .menu-enhanced .mobile-index .category-links { position: absolute; top: 100%; left: 0; right: 0; max-height: min(60svh, var(--menu-panel-height, 60svh)); background: var(--paper); border-bottom: 1px solid var(--ink); box-shadow: 0 12px 18px -12px rgba(25, 23, 19, .25); }
  .section-header h2, #gerichte, .menu-notes h3 { scroll-margin-top: calc(var(--menu-index-height, 4rem) + 1rem); }
}
@media (max-width: 40rem) {
  .menu-shell { width: calc(100% - 2.5rem); }
  .menu-header { flex-direction: column; gap: .375rem; padding-block: .875rem .25rem; }
  .menu-brand { gap: .625rem; }
  .menu-brand img { width: 34px; }
  .menu-brand__name { font-size: 1.625rem; }
  .menu-brand__caption { font-size: .625rem; }
  .menu-pages { justify-content: space-between; width: 100%; gap: .25rem .75rem; font-size: 1rem; }
  .menu-intro { padding-block: 1.5rem 1.125rem; }
  .menu-intro h1 { margin: .375rem 0 .75rem; font-size: clamp(2.75rem, 11vw, 3.5rem); }
  .menu-intro .divider { max-width: 9rem; }
  .menu-intro .menu-kicker { font-size: .75rem; letter-spacing: .16em; }
  .menu-subtitle { margin-top: .75rem; font-size: .9375rem; letter-spacing: .025em; }
  .menu-page--speisekarte .menu-subtitle, .menu-welcome { display: none; }
  .pdf-link { margin-top: .375rem; padding: .625rem .5rem; gap: .75rem; border-color: transparent; text-decoration: underline; text-underline-offset: .25em; }
  .mobile-index { margin-bottom: 1.5rem; }
  .mobile-index summary { padding: .625rem .125rem; }
  .index-selection { flex-direction: column; gap: .0625rem; }
  .index-label { font-size: .6875rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
  .index-current { max-width: 100%; font-size: 1.0625rem; }
  .mobile-index .category-links { grid-template-columns: 1fr; gap: 0; max-height: min(60svh, 26rem); padding: .5rem 0 .75rem; }
  .mobile-index .category-links a { min-height: 48px; padding: .75rem; font-size: 1.0625rem; border-bottom: 1px solid rgba(25, 23, 19, .08); }
  .mobile-index .category-group { margin: .75rem .75rem .375rem; }
  .menu-section:first-child .section-header { padding-top: 0; border-top: 0; }
  .dishes { grid-template-columns: 1fr; }
  .dish { padding-block: 1.125rem; }
  .dish-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 1rem; }
  .dish h3 { font-size: 1.375rem; line-height: 1.2; }
  .dish-price { font-size: 1.25rem; }
  .dish-description { margin-top: .375rem; line-height: 1.45; text-wrap: pretty; }
  .dish-variants { gap: .625rem 1.25rem; }
  .section-header h2 { font-size: 2rem; }
  .section-note { margin-top: .625rem; line-height: 1.45; }
  .menu-section { margin-bottom: 2.25rem; }
  .additives { grid-template-columns: 1fr; }
  .menu-closing { padding-block: 2rem; }
  .menu-footer { flex-direction: column; text-align: center; gap: .5rem; }
}
@media print {
  .menu-shell { width: 100%; }
  .menu-pages, .skip-link, .desktop-index, .mobile-index, .pdf-link, .menu-closing, .menu-footer a { display: none; }
  .menu-layout { display: block; }
  .menu-intro { padding-block: 1rem; }
  .menu-section { break-inside: auto; }
  .section-header { break-after: avoid; }
  .dish { break-inside: avoid; }
  .dishes { display: block; }
}
