/* ============================================================
   SPEISEKARTE
============================================================ */
.menu-toolbar{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:1.2rem;
  margin-bottom:1.8rem;
}
.menu-filters{
  display:flex;
  flex-wrap:wrap;
  gap:0.6rem;
}
.filter-chip{
  display:inline-flex;
  align-items:center;
  gap:0.5em;
  border:1.5px solid var(--black);
  background:var(--white);
  color:var(--black);
  padding:0.42em 0.9em 0.42em 0.6em;
  font-size:0.74rem;
  font-weight:700;
  letter-spacing:0.03em;
  text-transform:uppercase;
  border-radius:4px;
  cursor:pointer;
  transition:background-color .2s var(--ease),color .2s var(--ease);
}
.filter-chip::before{
  content:"";
  width:14px;height:14px;
  flex-shrink:0;
  border:1.5px solid currentColor;
  border-radius:3px;
  background:transparent;
  position:relative;
}
.filter-chip[aria-pressed="true"]::before{
  background:var(--gold);
  border-color:var(--gold);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23111' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M3 8.5l3 3 7-7'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:center;
}
.filter-chip[aria-pressed="true"]{
  background:var(--black);
  border-color:var(--black);
  color:var(--white);
}
.filter-chip:not([aria-pressed="true"]):hover{background:var(--gray-border-soft);}

.filter-reset{
  border:0;
  background:none;
  padding:0.42em 0.2em;
  font-size:0.74rem;
  font-weight:700;
  letter-spacing:0.03em;
  text-transform:uppercase;
  color:var(--gray);
  text-decoration:underline dotted;
  text-underline-offset:3px;
  cursor:pointer;
}
.filter-reset:hover{color:var(--black);}

.menu-lang{
  display:flex;
  align-items:center;
  gap:0.7em;
}
.menu-lang__label{
  font-size:0.72rem;
  font-weight:700;
  letter-spacing:0.1em;
  text-transform:uppercase;
  color:var(--gray);
}
.menu-lang__select-wrap{position:relative;display:inline-flex;align-items:center;}
.menu-lang__select{
  appearance:none;
  -webkit-appearance:none;
  background:var(--gold);
  color:var(--black);
  border:1px solid var(--gold);
  border-radius:var(--radius);
  padding:0.55em 2.1em 0.55em 1em;
  font-family:inherit;
  font-size:0.85rem;
  font-weight:700;
  cursor:pointer;
}
.menu-lang__select-wrap::after{
  content:"";
  position:absolute;
  right:0.9em;
  top:50%;
  width:7px;height:7px;
  border-right:2px solid var(--black);
  border-bottom:2px solid var(--black);
  transform:translateY(-65%) rotate(45deg);
  pointer-events:none;
}

/* -- level 1 : pill tabs -- */
.menu-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:0.6rem;
  margin-bottom:1rem;
}
.menu-tab{
  background:transparent;
  border:1px solid var(--black);
  color:var(--black);
  padding:0.65em 1.4em;
  font-size:0.82rem;
  font-weight:700;
  letter-spacing:0.03em;
  text-transform:uppercase;
  cursor:pointer;
  border-radius:100px;
  transition:background-color 0.2s var(--ease),color 0.2s var(--ease),border-color .2s var(--ease);
}
.menu-tab:hover{border-color:var(--gold);}
.menu-tab[aria-selected="true"]{
  background:var(--gold);
  color:var(--black);
  border-color:var(--gold);
}
.menu-tab:disabled,.menu-subtab:disabled,.menu-chip:disabled{
  opacity:0.4;
  cursor:not-allowed;
}
.menu-tab-count{
  display:inline-block;
  margin-left:0.5em;
  min-width:1.4em;
  padding:0 0.35em;
  border-radius:100px;
  background:rgba(11,11,11,0.08);
  font-size:0.72em;
  font-weight:700;
}
.menu-tab[aria-selected="true"] .menu-tab-count,
.menu-subtab[aria-selected="true"] .menu-tab-count,
.menu-chip[aria-selected="true"] .menu-tab-count{
  background:rgba(11,11,11,0.16);
}

/* -- level 2 : rectangular tabs -- */
.menu-subtabs{
  display:flex;
  flex-wrap:wrap;
  gap:0.6rem;
  margin-bottom:1rem;
}
.menu-subtab{
  background:transparent;
  border:1px solid var(--gray-border);
  color:var(--black);
  padding:0.55em 1.1em;
  font-size:0.78rem;
  font-weight:700;
  letter-spacing:0.02em;
  text-transform:uppercase;
  cursor:pointer;
  border-radius:4px;
  transition:background-color 0.2s var(--ease),color 0.2s var(--ease),border-color .2s var(--ease);
}
.menu-subtab:hover{border-color:var(--gold);}
.menu-subtab[aria-selected="true"]{
  background:var(--gold);
  color:var(--black);
  border-color:var(--gold);
}

/* -- level 3 : small pill chips -- */
.menu-chiptabs{
  display:flex;
  flex-wrap:wrap;
  gap:0.5rem;
  margin-bottom:1.8rem;
}
.menu-chip{
  background:transparent;
  border:1px solid var(--gray-border);
  color:var(--black);
  padding:0.4em 0.95em;
  font-size:0.74rem;
  font-weight:700;
  text-transform:uppercase;
  cursor:pointer;
  border-radius:100px;
}
.menu-chip[aria-selected="true"]{
  border-color:var(--gold);
  background:var(--gold);
  color:var(--black);
}

.menu-panel-wrap{position:relative;min-height:220px;}

.menu-cat__desc{color:var(--gray);font-size:0.94rem;font-style:italic;margin-top:-0.6em;margin-bottom:1.6rem;white-space:pre-line;}

/* heading group used once category nesting runs deeper than the tab rows */
.menu-group{margin:2.4rem 0 1rem;}
.menu-group:first-child{margin-top:0;}
.menu-group h3{
  font-size:1.05rem;
  margin-bottom:0.3em;
  padding-bottom:0.5em;
  border-bottom:1px solid var(--gray-border-soft);
}
.menu-group .menu-cat__desc{margin-top:0;}

.menu-items{
  display:grid;
  grid-template-columns:1fr;
  gap:1.5rem 2.2rem;
}
@media (min-width:768px){ .menu-items{grid-template-columns:repeat(2,1fr);} }

.menu-item{
  padding-bottom:1.4rem;
  border-bottom:1px solid var(--gray-border-soft);
}
.menu-item.has-image{
  display:grid;
  grid-template-columns:88px 1fr;
  align-items:start;
  gap:0.9rem;
}
.menu-item__media{
  width:88px;
  height:88px;
  border-radius:2px;
  overflow:hidden;
}
.menu-item__media img{width:100%;height:100%;object-fit:cover;}
.menu-item__body{min-width:0;}
.menu-item__row{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:1rem;
}
.menu-item__title{
  font-family:'Cormorant Garamond','Playfair Display',serif;
  font-size:1.2rem;
  font-weight:700;
  margin:0;
  display:inline;
}
.menu-item__code{
  font-family:var(--font-body);
  font-size:0.68rem;
  font-weight:700;
  color:var(--gray);
  vertical-align:middle;
}
.menu-item__titlewrap{flex:1;}
.allergen-inline{
  border:0;
  background:none;
  padding:0;
  margin-left:0.5em;
  font-family:var(--font-body);
  font-size:0.68rem;
  font-weight:600;
  letter-spacing:0.02em;
  color:var(--gray);
  text-decoration:underline dotted;
  text-underline-offset:2px;
  cursor:pointer;
  vertical-align:super;
}
.allergen-inline:hover{color:var(--gold);}

.item-price{
  font-family:var(--font-body);
  font-weight:700;
  color:var(--gold);
  white-space:nowrap;
  flex-shrink:0;
}
.item-price--ask{color:var(--gray);font-weight:500;font-size:0.85rem;}
.menu-item__desc{
  color:var(--gray);
  font-size:0.92rem;
  margin:0.45em 0 0;
  white-space:pre-line;
}
.menu-item__diet{
  display:flex;
  flex-wrap:wrap;
  gap:0.4rem;
  margin-top:0.7rem;
}
.tag{
  font-size:0.68rem;
  font-weight:700;
  letter-spacing:0.03em;
  text-transform:uppercase;
  padding:0.28em 0.7em;
  border-radius:100px;
  border:1px solid var(--gray-border);
  color:var(--black);
}

.variant-list{margin-top:0.5rem;}
.variant-list li{
  display:flex;
  justify-content:space-between;
  font-size:0.88rem;
  color:var(--gray);
  padding:0.2em 0;
  gap:1rem;
}
.variant-list li span:last-child{color:var(--gold);font-weight:600;white-space:nowrap;}

details.menu-extra{margin-top:0.6rem;font-size:0.85rem;color:var(--gray);}
details.menu-extra summary{
  cursor:pointer;
  font-weight:700;
  font-size:0.76rem;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--black);
  list-style:none;
  display:flex;
  align-items:center;
  gap:0.4em;
}
details.menu-extra summary::-webkit-details-marker{display:none;}
details.menu-extra summary::after{
  content:"";
  width:6px;height:6px;
  border-right:1.5px solid var(--black);
  border-bottom:1.5px solid var(--black);
  transform:rotate(45deg);
  transition:transform .2s var(--ease);
  flex-shrink:0;
}
details[open].menu-extra summary::after{transform:rotate(225deg);}
details.menu-extra summary:hover{color:var(--gold);}
details.menu-extra .menu-extra__list{margin:0.6em 0 0;padding-left:0;list-style:none;}
details.menu-extra .menu-extra__list li{
  display:flex;
  justify-content:space-between;
  gap:1rem;
  padding:0.15em 0;
  font-size:0.86rem;
}
details.menu-extra .menu-extra__list li span:last-child{color:var(--gold);font-weight:600;white-space:nowrap;}

.menu-status{margin-top:1rem;font-size:0.85rem;color:var(--gray);}
.menu-error{
  border:1px solid var(--gray-border);
  padding:2rem;
  text-align:center;
  color:var(--gray);
}
.menu-error button{margin-top:1rem;}
.menu-empty{color:var(--gray);font-style:italic;padding:2rem 0;}

/* skeleton loading state (initial fetch / language switch) */
.skeleton-grid{display:grid;grid-template-columns:1fr;gap:1.4rem 2rem;}
@media (min-width:768px){.skeleton-grid{grid-template-columns:repeat(2,1fr);}}
.skeleton-line{
  height:0.9em;
  background:linear-gradient(90deg,#F0F0F0 25%,#E4E4E4 37%,#F0F0F0 63%);
  background-size:400% 100%;
  animation:skeleton-pulse 1.4s ease infinite;
  border-radius:2px;
  margin-bottom:0.6em;
}
.skeleton-line--title{width:60%;height:1.1em;}
.skeleton-line--desc{width:90%;}
.skeleton-line--desc2{width:75%;}
@keyframes skeleton-pulse{
  0%{background-position:100% 50%;}
  100%{background-position:0 50%;}
}

.menu-note{
  margin-top:3rem;
  padding-top:2rem;
  border-top:1px solid var(--gray-border-soft);
  font-size:0.88rem;
  color:var(--gray);
}

/* ============================================================
   ALLERGEN INFO MODAL (per-dish, built from that item's own data)
============================================================ */
.allergen-modal{
  position:fixed;inset:0;z-index:1500;
  display:flex;align-items:center;justify-content:center;
  padding:1.4rem;
  opacity:0;pointer-events:none;
  transition:opacity 0.25s var(--ease);
}
.allergen-modal.is-open{opacity:1;pointer-events:auto;}
.allergen-modal__scrim{position:absolute;inset:0;background:rgba(11,11,11,0.6);}
.allergen-modal__panel{
  position:relative;
  background:var(--white);
  max-width:440px;
  width:100%;
  max-height:82vh;
  overflow:auto;
  border-radius:3px;
  padding:clamp(1.6rem,3vw,2.2rem);
  box-shadow:0 40px 80px -20px rgba(0,0,0,0.45);
  border:1px solid var(--gray-border-soft);
  transform:translateY(8px) scale(0.98);
  transition:transform 0.25s var(--ease-out);
}
.allergen-modal.is-open .allergen-modal__panel{transform:translateY(0) scale(1);}
.allergen-modal__close{
  position:absolute;top:1rem;right:1rem;
  width:32px;height:32px;
  border-radius:50%;
  border:1px solid var(--gray-border);
  background:transparent;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  color:var(--gray);
}
.allergen-modal__close:hover{background:var(--gold-soft);color:var(--black);border-color:var(--gold);}
.allergen-modal h3{font-size:1.15rem;margin-bottom:1.1rem;}
.allergen-legend-list{display:flex;flex-direction:column;gap:0.35rem;}
.allergen-legend-item{
  display:flex;
  align-items:baseline;
  gap:0.7em;
  padding:0.4em 0;
  font-size:0.92rem;
  color:var(--black);
  border-bottom:1px solid var(--gray-border-soft);
}
.allergen-legend-item:last-child{border-bottom:0;}
.allergen-legend-item b{
  font-family:var(--font-display);
  color:var(--gold);
  min-width:1.6em;
  display:inline-block;
}
