/* Replaces the Framer runtime animations with the exact parameters
   extracted from the original site's JS bundles. */

/* ---- Hero intro (home) ----------------------------------------------------
   Ticker container: opacity .001 / scale 1.5 / rotate -10deg -> rest,
   4s, cubic-bezier(0.12, 0.23, 0.5, 1)  (the "diagonal" entrance) */
[data-framer-appear-id="1lnca7s"] {
  animation: intro-ticker 4s cubic-bezier(0.12, 0.23, 0.5, 1) both;
}
@keyframes intro-ticker {
  from { opacity: 0.001; transform: perspective(1163px) scale(1.5) rotate(-10deg); }
  to   { opacity: 1; transform: none; }
}

/* Hero content: y 50 -> 0, 1s duration, 1s delay, same easing */
[data-framer-appear-id="ocbpjh"] {
  animation: intro-hero 1s cubic-bezier(0.12, 0.23, 0.5, 1) 1s both;
}
@keyframes intro-hero {
  from { opacity: 0.001; transform: perspective(1200px) translateY(50px); }
  to   { opacity: 1; transform: none; }
}

/* ---- Scroll reveals --------------------------------------------------------
   Hidden states only apply when JS runs (html.js); without JS everything
   stays visible. Curves approximate the original springs:
   y100: spring(stiffness 400, damping 80, delay .1s)
   y40s: spring(stiffness 161, damping 30)  */
html.js [data-reveal] {
  opacity: 0;
  will-change: transform;
}
html.js [data-reveal="y100"] { transform: perspective(1200px) translateY(100px); }
html.js [data-reveal="y40s"] { transform: perspective(1200px) translateY(40px) scale(0.9); }
html.js [data-reveal="fade"] { transform: perspective(1200px); }
/* fixed navbar slides down from above; stays opaque (spring 200/60 ~ 0.5s) */
html.js [data-reveal="nav"] { opacity: 1; transform: perspective(1200px) translateY(-66px); }

html.js [data-reveal].is-in {
  opacity: 1;
  transform: none;
}
html.js [data-reveal="y100"].is-in { transition: opacity 0.9s cubic-bezier(0.19, 0.6, 0.24, 1) 0.1s, transform 0.9s cubic-bezier(0.19, 0.6, 0.24, 1) 0.1s; }
html.js [data-reveal="y40s"].is-in,
html.js [data-reveal="fade"].is-in { transition: opacity 1s cubic-bezier(0.2, 0.65, 0.3, 1), transform 1s cubic-bezier(0.2, 0.65, 0.3, 1); }
html.js [data-reveal="nav"].is-in { transition: transform 0.5s cubic-bezier(0.22, 0.61, 0.36, 1); }

/* ---- Hero ticker tile hover ------------------------------------------------
   Original: tile rests at opacity .5; hover -> 1 in 0.3s tween
   cubic-bezier(.44,0,.56,1); reverts 500ms after the pointer leaves.
   (!important needed: the resting opacity is inline on the element.) */
.framer-mu37X.framer-4qgoqk {
  transition: opacity 0.3s cubic-bezier(0.44, 0, 0.56, 1) 0.5s;
}
.framer-mu37X.framer-4qgoqk:hover {
  opacity: 1 !important;
  transition-delay: 0s;
}

/* ---- FAQ accordion (contact) ---------------------------------------------
   Original: spring(stiffness 400, damping 40) height + opacity. */
.framer-16can1k div.faq-answer {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  overflow: hidden;
  padding: 0; /* original padding lives on the <p> inside the collapsible row */
  transition: grid-template-rows 0.4s cubic-bezier(0.3, 0.9, 0.4, 1), opacity 0.4s ease;
}
.framer-16can1k .faq-answer > .framer-11zn4hn {
  min-height: 0;
  overflow: hidden;
  padding: 0;
}
.framer-16can1k .faq-answer p.framer-text {
  padding: 0 40px 20px 0;
}
.framer-16can1k.faq-open .faq-answer {
  grid-template-rows: 1fr;
  opacity: 1;
}

.faq-arrow { transition: transform 0.3s ease; }
.framer-16can1k.faq-open .faq-arrow { transform: rotate(180deg); }

/* ---- Mobile nav (hamburger) ------------------------------------------------
   Open state uses Framer's own "Phone Open" variant CSS (framer-v-6laztc),
   toggled by js/site.js. Bars form an X while open. */
.framer-w1Lem.framer-v-6laztc .framer-1pkjz97 { transform: translateY(5px) rotate(45deg) !important; }
.framer-w1Lem.framer-v-6laztc .framer-1v9amly { transform: translateY(-5px) rotate(-45deg) !important; }
.framer-1pkjz97, .framer-1v9amly { transition: transform 0.3s ease; }

/* ---- Menu page: equal-height cards -------------------------------------------
   Product descriptions vary between 2 and 4 lines, which left ragged card
   bottoms. Cards now stretch to their grid row, the text block fills the
   remaining height, and the price sits pinned at the card's bottom edge —
   so borders and prices align across every row.
   (One class group per category section: california, maki, menu, sushi,
   sashimi, autres, plateau.) */
.framer-rHCbD .framer-105bilt, .framer-rHCbD .framer-1q971la,
.framer-rHCbD .framer-1rnpx4b, .framer-rHCbD .framer-6aii5z,
.framer-rHCbD .framer-19srv35, .framer-rHCbD .framer-1ubu6dr,
.framer-rHCbD .framer-slvd2j {
  align-self: stretch;
  height: auto;
}
.framer-rHCbD .framer-1sh15x1, .framer-rHCbD .framer-18m0tdt,
.framer-rHCbD .framer-1rq9mwq, .framer-rHCbD .framer-fs5hnt,
.framer-rHCbD .framer-plvodn, .framer-rHCbD .framer-1cdveou,
.framer-rHCbD .framer-pb51wf {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
}
.framer-rHCbD .framer-d25rqy, .framer-rHCbD .framer-sbesx8,
.framer-rHCbD .framer-1vcw9jy, .framer-rHCbD .framer-aguor3,
.framer-rHCbD .framer-h3c773, .framer-rHCbD .framer-1fpw5ie,
.framer-rHCbD .framer-1cinl5y {
  margin-top: auto;
}

/* ---- Anchor navigation -------------------------------------------------------
   Offset in-page jumps so targets aren't hidden under the fixed navbar
   (and, on /menu, the sticky category-pills bar below it). */
html { scroll-behavior: smooth; }
[id] { scroll-margin-top: 80px; }
#california, #maki, #menu, #sushi, #sashimi, #autres, #plateau { scroll-margin-top: 145px; }

/* ---- Touch targets ----------------------------------------------------------
   Invisible hit-area expansion to >=44px for small text links (nav, footer)
   and the menu category pills. ::before, because Framer's borders use ::after.
   Zero visual change. */
/* vertical padding on inline links doesn't affect line layout, only hit area */
a.framer-text {
  padding-block: 12px;
  margin-block: -12px;
}

/* ---- Keyboard focus --------------------------------------------------------
   Visible only for keyboard navigation; mouse users see no change. */
a:focus-visible,
button:focus-visible,
[tabindex="0"]:focus-visible {
  outline: 2px solid rgb(191, 191, 191);
  outline-offset: 3px;
  border-radius: 2px;
}

@media (prefers-reduced-motion: reduce) {
  [data-framer-appear-id="1lnca7s"],
  [data-framer-appear-id="ocbpjh"] { animation: none; }
  html.js [data-reveal] { opacity: 1; transform: none; transition: none; }
  .faq-answer, .faq-arrow { transition: none; }
  html { scroll-behavior: auto; }
}

/* ---- Menu filter tabs: accent on the active section ----------------------
   .is-active is set by the scrollspy in site.js as you scroll or click. */
a.framer-1l7xlpd { transition: background-color 0.25s ease, border-color 0.25s ease; }
a.framer-1l7xlpd:hover {
  background-color: rgba(112, 0, 2, 0.35);
}
a.framer-1l7xlpd.is-active {
  background-color: var(--token-62b2e065-027f-4741-9d64-1b00a768170b, #700002);
  --border-color: var(--token-62b2e065-027f-4741-9d64-1b00a768170b, #700002);
}
a.framer-1l7xlpd.is-active .framer-text { color: #fff !important; }

/* ---- Menu cards: allergen line ---- */
.menu-allergenes {
  display: block;
  margin-top: 6px;
  font-size: 0.82em;
  opacity: 0.55;
}
