/* Food show (the anatomy, then the line-up, above the menu). Behaviour in js/food-show.js: one pinned stage, scrubbed by
   the scroll; the foods and tickets are placed by transform every frame, so only stage chrome lives here. */
.food-show {
  --steps: 6;
  position: relative;
  height: calc(var(--steps) * 52svh + 100svh);        /* ~9.5 steps: the anatomy, the wrap, the table filling in, a short hold */
  background:
    radial-gradient(90% 70% at 55% 52%, var(--paper-3) 0%, rgb(251 249 244 / 0) 70%),
    var(--paper);
  color: var(--shop-blue);
}
.food-show__stage {
  position: sticky;
  top: 0;
  height: 100svh;
  overflow: hidden;
}
/* the heat behind the anatomy and the wrapped pita: a warm glow and a canvas of slow smoke */
.food-show__glow {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 0;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgb(255 188 96 / .6), rgb(255 170 80 / .3) 32%, rgb(255 164 74 / .1) 58%, rgb(255 160 70 / 0) 82%);
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
}
.food-show__smoke {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.food-show__flash {                                  /* the cut's flash, over the stack and the pita */
  position: absolute;
  left: 0;
  top: 0;
  z-index: 4;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgb(255 252 242 / .95), rgb(255 226 170 / .5) 40%, rgb(255 210 140 / 0) 72%);
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
}
.food-show__head {
  position: absolute;
  z-index: 3;
  top: clamp(84px, 12svh, 120px);
  left: clamp(24px, 6vw, 96px);
  max-width: 34rem;
  pointer-events: none;
}
.food-show__head.is-swapped {                       /* the heading changes between the two acts */
  animation: food-show-head .6s cubic-bezier(.23, 1, .32, 1) both;
}
@keyframes food-show-head {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: none; }
}
.food-show__kicker {
  margin: 0 0 10px;
  font-family: var(--outfit), sans-serif;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--shop-ink);
  opacity: .7;
}
.food-show__title {
  margin: 0;
  font-family: var(--veneer), sans-serif;
  font-size: clamp(52px, 7.4vw, 128px);
  font-weight: 400;
  line-height: .86;
  text-transform: uppercase;
}
.food-show__count {
  position: absolute;
  z-index: 3;
  left: clamp(24px, 6vw, 96px);
  bottom: clamp(24px, 5svh, 48px);
  margin: 0;
  font-family: var(--outfit), sans-serif;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .18em;
  font-variant-numeric: tabular-nums;
  color: var(--shop-ink);
}
.food-show__item {
  position: absolute;
  z-index: 1;
  left: 0;
  top: 0;
  padding: 0;
  border: 0;
  background: none;
  cursor: default;
  opacity: 0;
  transform-origin: center;
  will-change: transform, opacity;
  pointer-events: none;                              /* only a food that has landed answers the pointer */
  -webkit-tap-highlight-color: transparent;
}
.food-show__item.is-landed {
  cursor: pointer;
  pointer-events: auto;
}
.food-show__item--hero {                             /* the wrapped pita sits above the stack it grows out of */
  z-index: 2;
}
.food-show__ground {                                 /* contact shadow, scaled and faded by food-show.js */
  position: absolute;
  left: 4%;
  right: 4%;
  bottom: -3%;
  height: 9%;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgb(16 26 67 / .4), rgb(16 26 67 / .16) 55%, rgb(16 26 67 / 0));
  opacity: 0;
  pointer-events: none;
  will-change: transform, opacity;
}
.food-show__sheen {                                  /* one glossy sweep, clipped to the pita's own shape */
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  -webkit-mask: url(../assets/hero/pita.webp) center / contain no-repeat;
  mask: url(../assets/hero/pita.webp) center / contain no-repeat;
}
.food-show__sheen i {
  position: absolute;
  top: -10%;
  bottom: -10%;
  left: 0;
  width: 22%;
  background: linear-gradient(100deg, rgb(255 250 236 / 0), rgb(255 250 236 / .6) 50%, rgb(255 250 236 / 0));
  opacity: 0;
  will-change: transform, opacity;
}
.food-show__garnish {                                /* loose garnish around the wrapped pita */
  z-index: 0;
  pointer-events: none;
}
/* every item on the line-up table is a toy once it has landed (js/food-show.js): repel, hover lift, pop */
.food-show__toy.is-toy-live {
  pointer-events: auto;
  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}
.food-show__toy img {
  transition: filter .3s ease;
}
@media (hover: hover) {
  .food-show__toy.is-toy-live:hover img {
    filter: drop-shadow(14px 24px 22px rgb(16 26 67 / .28)) drop-shadow(2px 4px 4px rgb(16 26 67 / .14));
  }
}
.food-show__item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(10px 18px 18px rgb(16 26 67 / .22)) drop-shadow(2px 4px 4px rgb(16 26 67 / .12));
  pointer-events: none;
  user-select: none;
}
.food-show__item:focus {
  outline: none;
}
.food-show__item:focus-visible {
  outline: 2px dashed var(--focus-ring);
  outline-offset: 8px;
  border-radius: 14px;
}
.food-show__tag {                                    /* the hero ticket, placed by food-show.js */
  z-index: 2;
}
.food-show__sr {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

@media (max-width: 767px) {
  .food-show {
    height: calc(var(--steps) * 48svh + 100svh);
  }
  .food-show__head {
    top: 76px;
    left: 20px;
    right: 20px;
  }
  .food-show__kicker {
    font-size: 12px;
  }
  .food-show__title {
    font-size: 44px;
  }
  .food-show__count {
    left: 20px;
    bottom: 18px;
  }
  /* compact tickets: the food stays the star on a small screen */
  .food-show__tag .hero-tag__card {
    max-width: 176px;
    padding: 8px 10px 6px 20px;
    -webkit-mask: radial-gradient(circle 5px at 0 50%, transparent 97%, #000);
    mask: radial-gradient(circle 5px at 0 50%, transparent 97%, #000);
  }
  .food-show__tag .hero-tag__card::before {
    left: 10px;
    top: 7px;
    bottom: 7px;
  }
  .food-show__tag .hero-tag__kicker {
    font-size: 15px;
  }
  .food-show__tag .hero-tag__name {
    font-size: 21px;
  }
  .food-show__tag .hero-tag__note {
    margin-top: 3px;
    font-size: 11.5px;
    line-height: 1.35;
  }
  .food-show__tag .hero-tag__link {
    min-height: 40px;
    margin-top: 0;
    font-size: 11px;
  }
}

/* ---- reduced motion: no pin, no scrub; the foods sit in a grid with their tickets open ---- */
.food-show.is-static {
  height: auto;
}
.food-show.is-static .food-show__stage {
  position: relative;
  height: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 48px 32px;
  padding: 120px clamp(24px, 6vw, 96px) 96px;
}
.food-show.is-static .food-show__item,
.food-show.is-static .food-show__tag {
  position: relative;
  transform: none !important;
  opacity: 1;
}
.food-show.is-static .food-show__item {
  pointer-events: auto;
}
.food-show.is-static .food-show__ground,
.food-show.is-static .food-show__sheen,
.food-show.is-static .food-show__glow,
.food-show.is-static .food-show__smoke,
.food-show.is-static .food-show__flash {
  display: none;
}
.food-show.is-static .food-show__item {
  width: auto !important;
  height: 200px !important;
}
.food-show.is-static .food-show__tag .hero-tag__card,
.food-show.is-static .food-show__tag .hero-tag__ch {
  opacity: 1;
  scale: 1;
  filter: none;
  translate: none;
}
.food-show.is-static .food-show__count {
  display: none;
}
.food-show.is-static .food-show__garnish {
  display: none;
}
.food-show--duo.is-static .food-show__build {       /* reduced motion, two acts: the line-up grid carries it */
  display: none;
}
.food-show.is-static .food-show__head {
  position: relative;
  top: auto;
  left: auto;
  grid-column: 1 / -1;
}
@media (forced-colors: active) {
  .food-show__item img {
    filter: none;
  }
}

/* ---- 'layers': the pita, built layer by layer ---- */
.food-show__build,
.food-show__leads {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.food-show__leads {
  z-index: 1;
  overflow: visible;
}
.food-show__leads path {
  fill: none;
  stroke: var(--shop-blue);
  stroke-width: 1.5;
  stroke-dasharray: 3 4;
  stroke-linecap: round;
  transition: opacity .3s ease;
}
.food-show__build {
  z-index: 2;
}
.food-show__stack {                                  /* the layers move as one for the squeeze and the cut */
  position: absolute;
  inset: 0;
  will-change: transform, opacity;
}
.food-show__contact {                                /* a layer's soft shadow on the one below */
  position: absolute;
  left: 0;
  top: 0;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgb(16 26 67 / .55), rgb(16 26 67 / .2) 55%, rgb(16 26 67 / 0));
  opacity: 0;
  will-change: transform, opacity;
}
.food-show__layer {
  position: absolute;
  left: 0;
  top: 0;
  height: auto;
  max-width: none;
  opacity: 0;
  transform-origin: center;
  will-change: transform, opacity;
  user-select: none;
  filter: drop-shadow(8px 16px 14px rgb(16 26 67 / .2)) drop-shadow(2px 3px 3px rgb(16 26 67 / .12));
}
.food-show__label {
  position: absolute;
  z-index: 3;
  left: 0;
  top: 0;
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin: 0;
  white-space: nowrap;
  font-family: var(--outfit), sans-serif;
  font-size: clamp(15px, 1.2vw, 19px);
  color: var(--shop-ink);
  opacity: 0;
  transition: color .3s ease, font-weight .3s ease;
}
.food-show__label-num {
  font-size: .72em;
  font-weight: 600;
  letter-spacing: .1em;
  color: var(--shop-blue);
  opacity: .55;
}
.food-show__label span:last-child {
  opacity: .5;
  transition: opacity .3s ease;
}
.food-show__label.is-landed span:last-child {
  opacity: .85;
}
.food-show__label.is-current span:last-child {
  opacity: 1;
  font-family: var(--veneer), sans-serif;
  font-size: 1.7em;
  line-height: 1;
  text-transform: uppercase;
  color: var(--shop-blue);
}
.food-show__label.is-current .food-show__label-num {
  opacity: 1;
}
.food-show__caption {
  position: absolute;
  z-index: 3;
  left: 0;
  top: 0;
  margin: 0;
  font-family: var(--veneer), sans-serif;
  font-size: 34px;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--shop-blue);
}
@media (max-width: 767px), (orientation: portrait) {
  .food-show__leads,
  .food-show__label {
    display: none;
  }
}
.food-show.is-static .food-show__build {
  position: relative;
  grid-column: 1 / -1;
  height: 70svh;
}
.food-show.is-static .food-show__layer,
.food-show.is-static .food-show__label,
.food-show.is-static .food-show__leads,
.food-show.is-static .food-show__caption {
  display: none;
}
