/*
Theme Name: Beim Renert
Description: One-page bistro theme for Beim Renert, Luxembourg City
Author: Beim Renert
Version: 1.38.1
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Text Domain: renert
Domain Path: /languages
License: GPL-2.0-or-later
*/

/* Fonts are self-hosted and loaded via PHP wp_enqueue_style() in functions.php */

/* ─── Design tokens ──────────────────────────────────────────────────
   Single source of truth for the brand palette. woocommerce.css mirrors
   these as --rn-* on the shop surfaces. */
:root {
  --rn-ink:        #0C0C0C;
  --rn-rust:       #A84020;
  --rn-rust-dark:  #8A3318;
  --rn-paper:      #ffffff;
  --rn-line:       #EBEBEB;
  --rn-mute:       #888888;
  --rn-panel:      #FAFAFA;
  --rn-grey-img:   #F2F2F2;
}

/* ─── Accessibility helpers ──────────────────────────────────────────
   .screen-reader-text: visually hidden but available to assistive tech.
   :focus-visible: a clear keyboard focus ring on every interactive
   control (custom pills, swatches, tabs, accordions, links, buttons). */
.screen-reader-text {
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  width: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  position: absolute !important;
  word-wrap: normal !important;
}
.screen-reader-text:focus {
  background: var(--rn-ink);
  clip: auto;
  clip-path: none;
  color: var(--rn-paper);
  display: block;
  height: auto;
  width: auto;
  padding: 12px 24px;
  left: 5px;
  top: 5px;
  z-index: 100000;
}

:focus-visible {
  outline: 2px solid var(--rn-rust);
  outline-offset: 2px;
}
/* Dark surfaces need a light ring for contrast. */
#reservation :focus-visible,
#events :focus-visible,
#story :focus-visible,
#site-nav:not(.scrolled) :focus-visible,
.rnwc-hero :focus-visible,
#cart-drawer :focus-visible,
.rnwc-sheet :focus-visible {
  outline-color: var(--rn-paper);
}
/* Dish/menu rows draw the ring inside so it isn't clipped by the row border. */
.menu-item-row:focus-visible,
.carte-item-row:focus-visible {
  outline-offset: -2px;
}

/* ─── Reset & Base ───────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; overflow-x: hidden; }

body {
  background: var(--rn-ink);
  color: var(--rn-ink);
  font-family: 'Barlow', sans-serif;
  overflow-x: hidden;
}

a { text-decoration: none; color: inherit; }
img { display: block; max-width: 100%; }
address { font-style: normal; }
button { cursor: pointer; background: none; border: none; font-family: inherit; }
select, input, textarea { font-family: inherit; }

/* ─── Utilities ──────────────────────────────────────────────────── */
.red { color: var(--rn-rust); }

/* ─── Navigation ─────────────────────────────────────────────────── */
/* Every section reachable via a #anchor (nav, hero CTAs, footer, Site
   Settings URLs) must clear the 72px fixed nav, or the jump lands with the
   section title hidden underneath it. */
#weekly-accordion,
#about,
#menu,
#story,
#events,
#testimonials,
#shop,
#reservation {
  scroll-margin-top: 72px;
}

#site-nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  height: 72px;
  display: flex;
  align-items: center;
  background: transparent;
  border-bottom: 1px solid transparent;
  transition: background 0.3s, border-color 0.3s, transform 0.3s;
}
#site-nav.nav-hidden { transform: translateY(-100%); }
#site-nav.scrolled {
  background: rgba(255,255,255,0.97);
  border-bottom-color: rgba(12,12,12,0.1);
  backdrop-filter: blur(8px);
}
#site-nav .nav-inner {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
@media (max-width: 768px) { #site-nav .nav-inner { padding: 0 20px; } }

.nav-logo {
  transition: color 0.3s;
}

.nav-right {
  display: flex;
  align-items: center;
  gap: 16px;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 32px;
  list-style: none;
}
.nav-links a {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  opacity: 0.8;
  color: var(--rn-paper);
  transition: opacity 0.15s, color 0.3s;
}
.nav-links a:hover { opacity: 1; }
/* Scrollspy (main.js): the section currently in view gets a rust underline. */
.nav-links a.is-active {
  opacity: 1;
  box-shadow: 0 6px 0 -4px var(--rn-rust);
}
#site-nav.scrolled .nav-links a { color: var(--rn-ink); }

.nav-reserve {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  padding: 6px 16px;
  border: 1px solid var(--rn-rust);
  background: var(--rn-rust);
  color: var(--rn-paper);
  transition: background 0.2s;
}
.nav-reserve:hover { background: var(--rn-rust-dark); }

.nav-hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  padding: 4px;
}
.nav-hamburger span {
  display: block;
  width: 20px;
  height: 1px;
  background: var(--rn-paper);
  transition: transform 0.2s, opacity 0.15s, background 0.3s;
}
#site-nav.scrolled .nav-hamburger span { background: var(--rn-ink); }

/* Nav cart icon */
.nav-cart-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: var(--rn-paper);
  transition: color 0.3s;
  flex-shrink: 0;
}
#site-nav.scrolled .nav-cart-btn { color: var(--rn-ink); }
.nav-cart-btn:hover { color: var(--rn-rust); }
.nav-cart-btn svg { width: 18px; height: 18px; }
.nav-cart-badge {
  position: absolute;
  top: 0; right: 0;
  background: var(--rn-rust);
  color: var(--rn-paper);
  font-family: 'DM Mono', monospace;
  font-size: 8px;
  width: 14px; height: 14px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
  opacity: 0;
  transition: opacity 0.2s;
}
.nav-cart-badge.visible { opacity: 1; }

/* Account / login icon – mirrors the cart button */
.nav-account {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: var(--rn-paper);
  transition: color 0.3s;
  flex-shrink: 0;
}
#site-nav.scrolled .nav-account { color: var(--rn-ink); }
.nav-account:hover { color: var(--rn-rust); }
.nav-account svg { width: 18px; height: 18px; }

/* Account dropdown (logged in) */
.nav-account-wrap { position: relative; display: flex; align-items: center; height: 72px; }
.nav-account-menu {
  position: absolute;
  top: 100%; /* wrap is full nav height, so this sits flush against the nav's bottom edge */
  right: 0;
  min-width: 190px;
  background: var(--rn-paper);
  border: 1px solid rgba(12,12,12,0.1);
  box-shadow: 0 18px 44px rgba(0,0,0,0.16);
  padding: 6px 0;
  display: flex;
  flex-direction: column;
  opacity: 0;
  visibility: hidden;
  transform: translateY(6px);
  transform-origin: top right; /* unfolds from under the account icon */
  transition: opacity 0.18s, transform 0.18s, visibility 0.18s;
  z-index: 120;
}
/* Click-only: the menu opens/closes via the .is-open class toggled in JS.
   (Earlier :hover / :focus-within rules kept it pinned open, which blocked the
   second click from closing it and dropped it when crossing the icon→menu gap.) */
.nav-account-wrap.is-open .nav-account-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.nav-account-menu a {
  display: block;
  padding: 11px 20px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--rn-ink);
  white-space: nowrap;
  transition: background 0.12s, color 0.12s;
}
.nav-account-menu a:hover { background: var(--rn-panel); color: var(--rn-rust); }

@media (max-width: 768px) {
  .nav-links, .nav-reserve { display: none !important; }
  .nav-hamburger { display: flex; }
}

/* ─── Shop-mode nav ──────────────────────────────────────────────── */
.nav-links--shop {
  display: flex;
  align-items: center;
  gap: 28px;
  list-style: none;
}
.nav-links--shop a {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--rn-ink);
  opacity: 1;
  transition: opacity 0.15s, color 0.15s;
}
.nav-links--shop a:hover { color: var(--rn-rust); }
/* Current category – the rust underline the homepage scrollspy uses for the
   section you are in (.nav-links a.is-active), so "where am I" reads the same
   on both navs. Colour alone was too quiet to spot. */
.nav-links--shop a.current { color: var(--rn-rust); box-shadow: 0 6px 0 -4px var(--rn-rust); }
/* Scoped under .nav-links--shop a (0,3,1) so it out-specifies the base
   `.nav-links--shop a` rule (0,2,1) without !important. */
.nav-links--shop a.shop-nav-back {
  opacity: 0.38;
  color: var(--rn-ink);
  padding-left: 20px;
  border-left: 1px solid rgba(12,12,12,0.15);
  margin-left: 4px;
}
.nav-links--shop a.shop-nav-back:hover { opacity: 0.75; color: var(--rn-ink); }

/* Back to Bar in mobile menu */
.mobile-menu-link--back { opacity: 0.45; }
.mobile-menu-link--back:hover { opacity: 0.75 !important; }

@media (max-width: 768px) {
  .nav-links--shop { display: none !important; }
}

/* Mobile menu */
#mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 48; /* above the sticky add-to-cart bar (45), below the nav (50) */
  background: var(--rn-ink);
  display: flex;
  flex-direction: column;
  justify-content: safe center; /* "safe" → falls back to top-align when tall, so nothing is clipped */
  padding: 88px 32px 40px;      /* clear the fixed nav; allow breathing room */
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
#mobile-menu.open { opacity: 1; pointer-events: all; }

/* Lock the page behind the mobile menu / cart drawer so only the panel scrolls. */
body.menu-open,
body.cart-open { overflow: hidden; }

/* While the mobile menu is open, the cart + account icons stay visible – the nav
   sits above the menu (z-index), so they remain on top and tappable. Only the text
   "Open/Closed" badge is hidden, to avoid crowding the top bar next to the ✕. */
body.menu-open #nav-open-badge { display: none !important; }
.mobile-menu-link {
  display: block;
  padding: 24px 0;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  color: var(--rn-paper);
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 3rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.mobile-menu-reserve {
  margin-top: 32px;
  padding: 16px;
  background: var(--rn-rust);
  color: var(--rn-paper);
  text-align: center;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

/* ─── Section band ───────────────────────────────────────────────── */
.section-band {
  background: var(--rn-ink);
  padding: 12px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
@media (max-width: 768px) { .section-band { padding: 12px 20px; } }
.section-band .label {
  font-family: 'DM Mono', monospace;
  color: var(--rn-rust);
  font-size: 10px;
  letter-spacing: 0.4em;
  text-transform: uppercase;
}
.section-band .sub {
  font-family: 'DM Mono', monospace;
  color: rgba(255,255,255,0.6);
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

/* ─── Fox parallax layers ───────────────────────────────────────── */
.fox-layer {
  position: absolute;
  pointer-events: none;
  user-select: none;
  will-change: transform;
  z-index: 0;
}
.fox-layer img {
  display: block;
  width: 100%;
  height: auto;
  filter: brightness(0) invert(1);
}

/* Events: large royal fox in the lower-right of the section */
.fox-events {
  right: -2%;
  bottom: 0;
  top: auto;
  width: clamp(240px, 52vw, 720px);
  opacity: 0.08;
  mix-blend-mode: screen;
}
@media (max-width: 768px) {
  .fox-events { width: 100vw; max-width: none; right: -18%; bottom: auto; top: 8%; opacity: 0.1; }
}
/* Ensure events section contains the absolute fox */
#events { position: relative; overflow: hidden; }

/* Story: fox drifts independently from ghost text on the right */
.fox-story {
  top: 8%;
  right: 0;
  width: clamp(140px, 28vw, 380px);
  opacity: 0.07;
  mix-blend-mode: screen;
}
@media (max-width: 768px) {
  .fox-story { width: 95vw; max-width: none; right: -15%; top: 28%; opacity: 0.1; }
}

/* Reservation info column: quiet guardian, centred in column */
.fox-reservation {
  bottom: 0;
  right: -8%;
  width: clamp(220px, 28vw, 380px);
  opacity: 0.1;
  mix-blend-mode: screen;
}
@media (max-width: 768px) {
  .fox-reservation { width: 88vw; max-width: none; right: -16%; bottom: auto; top: 14%; opacity: 0.13; }
}

/* ─── Hero ───────────────────────────────────────────────────────── */
#hero {
  position: relative;
  width: 100%;
  height: 100vh;
  background: var(--rn-ink);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
#hero-bg {
  position: absolute;
  inset: 0;
}
#hero-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.4;
  transform: scale(1.05);
  transition: transform 0.1s linear;
}
.hero-content {
  position: relative;
  z-index: 10;
  display: flex;
  flex-direction: column;
  height: 100%;
}
.hero-name-wrap {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  margin-top: -24px;
  text-align: center;
}
.hero-tagline {
  font-family: 'DM Mono', monospace;
  font-size: 1rem;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.65);
  margin-top: 16px;
  animation: fadeIn 0.8s ease 0.9s both;
}
.hero-tagline .en {
  font-size: 0.9em;
  letter-spacing: 0.08em;
  margin-top: 6px;
}
@media (max-width: 768px) {
  .hero-tagline { font-size: 0.8rem; letter-spacing: 0.2em; }
}
.hero-bottom {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  padding: 0 40px 32px;
  animation: fadeIn 0.7s ease 1.1s both;
}
@media (max-width: 768px) { .hero-bottom { padding: 0 20px 32px; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.hero-ctas { display: flex; flex-direction: column; gap: 12px; }
.hero-cta {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 12px;
  /* Legibility safeguard: the CTAs sit on a photographic hero, and the
     secondary CTA uses a low-opacity white. A soft dark shadow keeps both
     above the 4.5:1 contrast threshold regardless of the image behind them. */
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}
.hero-cta .line {
  height: 1px;
  background: currentColor;
  transition: width 0.3s;
}
.hero-cta:hover .line { width: 40px !important; }
.hero-red-line {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 4px;
  background: var(--rn-rust);
}

/* ─── About ──────────────────────────────────────────────────────── */
#about {
  background: var(--rn-paper);
  border-top: 4px solid var(--rn-ink);
}
.about-grid {
  display: grid;
  grid-template-columns: 1fr;
}
@media (min-width: 900px) and (orientation: landscape) {
  .about-grid { grid-template-columns: 1fr 1fr; align-items: stretch; min-height: 60vh; }
}

.about-img-col {
  position: relative;
  overflow: hidden;
  background: #1a1a1a;
  border-right: 4px solid var(--rn-ink);
  min-height: 60vh;
}
.about-img-col img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  inset: 0;
  transform: scale(1);
  transition: transform 0.4s;
}
.about-img-col:hover img {
  transform: scale(1.05);
}

.about-text-col {
  display: flex;
  flex-direction: column;
  padding: 56px 48px;
}
@media (max-width: 768px) { .about-text-col { padding: 40px 20px; } }

.about-heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3.5rem, 9vw, 5.5rem);
  letter-spacing: -0.02em;
  text-transform: uppercase;
  color: var(--rn-ink);
  line-height: 0.9;
  margin-bottom: 32px;
}
.red-rule { width: 48px; height: 4px; background: var(--rn-rust); margin-bottom: 32px; }
.about-body p { font-size: 1rem; line-height: 1.7; margin-bottom: 20px; }
.about-body p:first-child { color: var(--rn-ink); }
.about-body p:last-child  { color: #555; }
.about-reserve-link {
  margin-top: 32px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--rn-rust);
}
.about-reserve-link .line { width: 20px; height: 1px; background: var(--rn-rust); transition: width 0.3s; }
.about-reserve-link:hover .line { width: 36px; }

/* 3-image strip */
.about-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  background: var(--rn-ink);
  border-top: 4px solid var(--rn-ink);
}
.strip-item {
  position: relative;
  overflow: hidden;
  background: #1a1a1a;
}
.strip-item img {
  display: block;
  width: 100%;
  height: auto; /* let aspect-ratio govern; the <img> height attr must not pin the box */
  aspect-ratio: 1600/1068;
  object-fit: cover;
  transition: transform 0.5s;
}
.strip-item:hover img { transform: scale(1.05); }
/* no captions */

/* ─── Weekly Menu ────────────────────────────────────────────────── */
#weekly-menu {
  background: var(--rn-paper);
}
.weekly-hero {
  display: grid;
  grid-template-columns: 1fr 420px;
  border-bottom: 4px solid var(--rn-ink);
}
@media (max-width: 900px) { .weekly-hero { grid-template-columns: 1fr; } }

@media (min-width: 901px) {
  .weekly-hero.no-image { grid-template-columns: 1fr; }
  .weekly-hero.no-image .weekly-img-col { display: none; }
  .weekly-hero.no-image .weekly-hero-text { border-right: none; }
}

.weekly-hero-text {
  padding: 56px 48px;
  border-right: 4px solid var(--rn-ink);
}
@media (max-width: 768px) {
  .weekly-hero-text { padding: 40px 20px; border-right: none; border-bottom: 4px solid var(--rn-ink); }
}
.weekly-heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3.5rem, 9vw, 5.5rem);
  color: var(--rn-ink);
  letter-spacing: -0.02em;
  line-height: 0.9;
  margin-bottom: 32px;
}
.weekly-desc {
  font-size: 0.85rem;
  line-height: 1.7;
  color: #555;
  max-width: 32rem;
}
.dotw-callout {
  margin-top: 40px;
  border-left: 4px solid var(--rn-rust);
  padding-left: 20px;
}
.dotw-label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.4em;
  color: var(--rn-rust);
  text-transform: uppercase;
  margin-bottom: 8px;
}
.dotw-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.6rem;
  color: var(--rn-ink);
}
.dotw-sub { font-size: 0.85rem; color: var(--rn-mute); margin-top: 4px; }
.dotw-price {
  font-family: 'DM Mono', monospace;
  font-size: 1rem;
  color: var(--rn-ink);
  margin-top: 8px;
}

.weekly-img-col {
  position: relative;
  overflow: hidden;
  background: #1a1a1a;
  min-height: 320px;
}

.bouletten-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  background: var(--rn-ink);
  border-top: 4px solid var(--rn-ink);
  margin-top: 24px;
}
.bouletten-strip-item {
  position: relative;
  overflow: hidden;
  background: #1a1a1a;
}
.bouletten-strip-item img {
  display: block;
  width: 100%;
  height: auto; /* let aspect-ratio govern; the <img> height attr must not pin the box */
  aspect-ratio: 1600/1068;
  object-fit: cover;
  transition: transform 0.5s;
}
.bouletten-strip-item:hover img { transform: scale(1.05); }
@media (max-width: 768px) {
  .bouletten-strip {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    gap: 0;
    background: transparent;
    border-top: none;
    margin-top: 16px;
  }
  .bouletten-strip::-webkit-scrollbar { display: none; }
  .bouletten-strip-item--hide-mobile { display: block; }
  .bouletten-strip-item {
    flex: 0 0 100%;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    display: block;
    height: auto;
    aspect-ratio: 1600/1068;
    overflow: hidden;
    border-top: 4px solid var(--rn-rust);
  }
  .bouletten-strip-item img {
    width: 100%;
    height: 100%;
    aspect-ratio: unset;
    display: block;
  }
}
.weekly-img-col img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  position: absolute;
  inset: 0;
  transform: scale(1);
  transition: transform 0.4s;
}
.weekly-img-col:hover img {
  transform: scale(1.05);
}
/* Accordion – permanently open (heading strip + body; the toggle was retired). */
.accordion-item { border-bottom: 2px solid var(--rn-line); }
#weekly-accordion-bouletten .accordion-item { border-bottom: none; }
.accordion-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 48px;
  text-align: left;
}
@media (max-width: 768px) { .accordion-trigger { padding: 20px 20px; } }
.accordion-trigger-left { display: flex; align-items: center; gap: 24px; }
.acc-fox-icon {
  height: 34px;
  width: auto;
  display: block;
  opacity: 0.85;
}
.acc-label {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.2rem;
  color: var(--rn-rust);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.menu-item-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 20px;
  align-items: center;
  padding: 16px 48px;
  border-top: 1px solid var(--rn-line);
  transition: background 0.1s;
}
@media (max-width: 768px) { .menu-item-row { padding: 16px 20px; gap: 12px; } }
.menu-item-row:hover { background: var(--rn-panel); }
.menu-item-row:hover .item-name { color: var(--rn-rust); }
.item-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 600;
  font-size: 1.05rem;
  color: var(--rn-ink);
}
.item-desc { font-size: 0.85rem; color: var(--rn-mute); margin-top: 2px; }
.veg-icon { font-size: 0.85em; vertical-align: middle; position: relative; top: -2px; }
/* The 🌱 inside the "= vegetarian" legend reads too small at note size. */
.veg-icon-legend { font-size: 1.35em; vertical-align: -0.12em; }

/* ── Sold-out rows ────────────────────────────────────────────────────────
   Muted, never struck through: the dish should stay readable (guests still
   want to see what it was), and CSS line-through on an inline parent
   propagates onto children – a child's `text-decoration: none` cannot undo
   it, which is why the old label rendered struck through too. Same pattern
   as the print export – dimmed row + a small "· SOLD OUT" mono tag after
   the name – but grey on the site. inline-block keeps the label immune to
   any inherited decoration. */
.sold-out-label {
  display: inline-block;
  font-family: 'DM Mono', monospace;
  font-size: 0.6em;
  font-weight: 500;
  text-transform: uppercase;
  color: rgba(168, 64, 32, 0.45); /* rust dimmed like the export (its tag sits in an opacity-.4 row) */
  letter-spacing: 0.14em;
  margin-left: 8px;
  white-space: nowrap;
}
.sold-out-label::before {
  content: "\00B7\2002"; /* "· " separator like the export – kept out of the editable label text */
  letter-spacing: 0;
}
.menu-item-row.sold-out .item-name,
.carte-item-row.sold-out .carte-item-name {
  color: #9A9A9A; /* neutral grey, no warm/green cast */
}
.menu-item-row.sold-out .item-desc,
.menu-item-row.sold-out .item-price,
.carte-item-row.sold-out .carte-item-desc,
.carte-item-row.sold-out .carte-item-price {
  color: #BDBDBD;
}
.menu-item-row.sold-out .veg-icon,
.carte-item-row.sold-out .veg-icon {
  filter: grayscale(1);
  opacity: 0.6;
}
/* Hovering a sold-out row must not light the name up in rust like an
   available dish – it stays muted. */
.menu-item-row.sold-out:hover .item-name,
.carte-item-row.sold-out:hover .carte-item-name {
  color: #9A9A9A;
}
.item-price {
  font-family: 'DM Mono', monospace;
  font-size: 0.85rem;
  color: var(--rn-ink);
  white-space: nowrap;
}
@media (max-width: 768px) { .item-price { font-size: 0.8rem; } }

/* ── Weekly menu: side dishes – compact optional add-on rows ─────────── */
.menu-sides-label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--rn-rust);
  padding: 18px 48px 6px;
  border-top: 2px solid var(--rn-line);
}
@media (max-width: 768px) { .menu-sides-label { padding: 16px 20px 4px; } }
.menu-item-row--side { padding: 10px 48px; }
@media (max-width: 768px) { .menu-item-row--side { padding: 9px 20px; } }
.menu-item-row--side .item-name { font-size: 0.92rem; font-weight: 500; }
.menu-item-row--side .item-desc { font-size: 0.8rem; }
.menu-item-row--side .item-price { font-size: 0.78rem; color: #666; }

.menu-footer {
  padding: 20px 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 2px solid var(--rn-line);
  border-bottom: 2px solid var(--rn-line);
  position: relative;
}
@media (max-width: 768px) { .menu-footer { padding: 20px 20px; flex-direction: column; gap: 12px; align-items: flex-start; } }
.menu-footer-note {
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  color: #757575;
  letter-spacing: 0.25em;
  text-transform: uppercase;
}
/* ─── Per-dish allergen info (click to reveal) ───────────────────── */
.menu-item-row, .carte-item-row { cursor: pointer; }
.item-allergens {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  line-height: 1.6;
  letter-spacing: 0.04em;
  color: var(--rn-rust);
  max-height: 0;
  opacity: 0;
  margin-top: 0;
  overflow: hidden;
  display: none;
  transition: max-height 0.25s ease, opacity 0.2s ease, margin-top 0.25s ease;
}
.allergens-open .item-allergens {
  display: block;
  max-height: 60px;
  opacity: 1;
  margin-top: 6px;
}
.item-allergens.bilingual .en {
  color: #B98A78;
  font-style: italic;
  font-size: 11px;
  opacity: 1;
  display: block;
  margin-top: 1px;
}
.allergens-open .item-name { color: var(--rn-rust); }
@media (max-width: 768px) {
  .item-allergens, .item-allergens.bilingual .en { font-size: 10px; }
}

/* ─── Reservation ────────────────────────────────────────────────── */
#reservation {
  background: var(--rn-ink);
  border-top: 4px solid var(--rn-rust);
}
.res-grid {
  display: grid;
  grid-template-columns: 1fr 380px;
}
@media (max-width: 900px) { .res-grid { grid-template-columns: 1fr; } }

/* Form side: white */
.res-form-col {
  padding: 56px 48px;
  background: var(--rn-paper);
  border-right: 4px solid var(--rn-ink);
}
@media (max-width: 768px) { .res-form-col { padding: 40px 20px; border-right: none; border-bottom: 4px solid var(--rn-ink); } }

.res-heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3.5rem, 9vw, 5.5rem);
  color: var(--rn-ink);
  letter-spacing: -0.02em;
  line-height: 0.88;
  margin-bottom: 16px;
  display: block;
}
.res-heading span[style*="color:var(--rn-rust)"] { color: var(--rn-rust) !important; }
.res-heading-en {
  font-family: 'Barlow', sans-serif;
  font-style: italic;
  font-size: clamp(1rem, 2vw, 1.5rem);
  color: rgba(12,12,12,0.45);
  margin-bottom: 40px;
  font-weight: 400;
}

/* Mobile tap-to-expand toggle for the reservation form. Hidden on desktop and
   when JS is off (the .res-form-col--js gate is added by frontend.js), so the
   form stays fully visible as a fallback. Heading + info column are unaffected. */
.res-form-toggle { display: none; }

@media (max-width: 768px) {
  .res-form-col--js .res-heading-en { margin-bottom: 20px; }

  /* Light, on-brand expander: no fill, thin rust hairline, mono label + chevron. */
  .res-form-col--js .res-form-toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
    margin: 0;
    padding: 14px 0;
    background: none;
    color: var(--rn-ink);
    border: none;
    border-top: 1px solid rgba(168,64,32,0.35);
    border-bottom: 1px solid rgba(12,12,12,0.10);
    cursor: pointer;
    text-align: left;
    -webkit-tap-highlight-color: transparent;
  }
  .res-form-toggle__label {
    font-family: 'DM Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    line-height: 1.4;
  }
  .res-form-toggle__label .en { color: rgba(12,12,12,0.45); }
  .res-form-toggle__label .en::before { content: '·'; margin: 0 0.5em; color: rgba(12,12,12,0.3); }
  .res-form-toggle__icon { color: var(--rn-rust); flex-shrink: 0; }
  .res-form-toggle__icon svg { width: 18px; height: 18px; display: block; transition: transform 0.3s ease; }
  .res-form-toggle[aria-expanded="true"] .res-form-toggle__icon svg { transform: rotate(180deg); }

  .res-form-col--js #res-form-wrap { display: none; }
  .res-form-col--js #res-form-wrap.is-open { display: block; margin-top: 22px; }
}

.res-form { display: flex; flex-direction: column; gap: 28px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
@media (max-width: 480px) { .form-row { grid-template-columns: 1fr; } }

.form-group { display: flex; flex-direction: column; }
.form-label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  color: rgba(12,12,12,0.45);
  margin-bottom: 8px;
}
.form-input, .form-select, .form-textarea {
  background: transparent;
  border: none;
  border-bottom: 1px solid rgba(12,12,12,0.2);
  outline: none; /* custom focus indicator via border-bottom-color change on :focus */
  font-family: 'DM Mono', monospace;
  font-size: 0.9rem;
  color: var(--rn-ink);
  letter-spacing: 0.02em;
  padding: 8px 0 10px;
  transition: border-color 0.2s;
  color-scheme: light;
  width: 100%;
}
.form-input::placeholder, .form-textarea::placeholder { color: rgba(12,12,12,0.25); }
.form-select option { background: var(--rn-paper); color: var(--rn-ink); }
.form-textarea { resize: none; }
.form-input:focus, .form-select:focus, .form-textarea:focus { border-bottom-color: var(--rn-rust); }

.res-submit {
  margin-top: 16px;
  padding: 16px 32px;
  background: var(--rn-rust);
  color: var(--rn-paper);
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 16px;
  transition: background 0.25s, color 0.25s;
}
.res-submit:hover { background: var(--rn-ink); color: var(--rn-paper); }
.res-submit .line { width: 16px; height: 1px; background: currentColor; transition: width 0.3s; }
.res-submit:hover .line { width: 32px; }

.res-confirm {
  display: none;
  animation: fadeIn 0.5s ease both;
}
.res-confirm.visible { display: block; }
.res-confirm-title {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 2.5rem;
  color: var(--rn-ink);
  margin-top: 24px;
}
.res-confirm-sub { font-size: 0.9rem; color: rgba(12,12,12,0.55); margin-top: 8px; }
/* Booking recap ("Sa. 19.07. · 19:30 · 4") – filled by reservations frontend.js. */
.res-confirm-details {
  font-family: 'DM Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--rn-ink);
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  display: inline-block;
  padding: 10px 16px;
  margin-top: 16px;
}

.res-info-col { padding: 56px 40px; position: relative; overflow: hidden; }
@media (max-width: 768px) { .res-info-col { padding: 40px 20px; } }

.info-label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.4em;
  color: var(--rn-rust);
  text-transform: uppercase;
  margin-bottom: 20px;
}
.res-phone {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.8rem;
  color: var(--rn-paper);
  letter-spacing: 0.02em;
  display: block;
  margin-bottom: 8px;
  transition: color 0.2s;
}
.res-hours-big {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.8rem;
  color: var(--rn-paper);
  letter-spacing: 0.02em;
  line-height: 1.2;
  margin: 0;
}
/* Defined after .res-hours-big, so it wins on source order – no !important. */
.res-hours-days { color: rgba(255,255,255,0.55); font-size: 1rem; letter-spacing: 0.3em; text-transform: uppercase; margin-bottom: 4px; }
.res-phone:hover { color: var(--rn-rust); }
.res-phone-note { font-size: 0.82rem; color: rgba(255,255,255,0.65); line-height: 1.6; }
.res-error { margin: 0 0 12px; }

.res-note-box {
  background: rgba(255,255,255,0.04);
  border-left: 2px solid var(--rn-rust);
  padding: 16px 20px;
  font-size: 0.85rem;
  color: rgba(255,255,255,0.5);
  line-height: 1.6;
  margin-top: 40px;
}

/* ─── Regular Menu ───────────────────────────────────────────────── */
#menu {
  background: var(--rn-paper);
  border-top: 4px solid var(--rn-rust);
}
.menu-tabs {
  display: flex;
  overflow-x: auto;
  border-bottom: 2px solid var(--rn-ink);
  scrollbar-width: none;
}
.menu-tab-btn {
  flex-shrink: 0;
  padding: 16px 32px;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--rn-mute);
  background: transparent;
  border-right: 2px solid var(--rn-ink);
  transition: background 0.15s, color 0.15s;
}
.menu-tab-btn.active { background: var(--rn-ink); color: var(--rn-paper); }
.menu-tab-btn:last-child { border-right: none; }

.menu-items-panel { display: none; }
.menu-items-panel.active { display: block; }

/* Desktop affordance: a small "expand for allergens" marker on clickable rows
   (mobile already hints via the "tap for allergens" footer note). */
@media (hover: hover) and (min-width: 760px) {
  .carte-item-row--exp .carte-item-name::after {
    content: "ⓘ";
    margin-left: 8px;
    font-size: 0.8em;
    color: #b9b9b9;
    transition: color 0.15s;
  }
  .carte-item-row--exp:hover .carte-item-name::after,
  .carte-item-row--exp[open] .carte-item-name::after {
    color: var(--rn-rust);
  }
}

/* Carte accordion: collapsed by default (JS removes the initial .active),
   a tab expands its panel below the bar. Single column – reads straight down. */
.menu-tab-btn { cursor: pointer; }

/* Collapsible sections inside an open category. */
.carte-hidden { display: none !important; }
.carte-head { position: relative; }
/* Only level-1 headings collapse; sub-headings are plain, non-clickable dividers. */
.carte-head--1 {
  cursor: pointer;
  padding-right: 44px;
  -webkit-user-select: none;
  user-select: none;
}
.carte-head--1:hover { opacity: 0.82; }
.carte-head--1::after {
  content: '';
  position: absolute;
  right: 18px;
  top: 50%;
  width: 7px;
  height: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-65%) rotate(45deg);
  transition: transform 0.2s;
  opacity: 0.55;
}
.carte-head--1.is-open::after { transform: translateY(-35%) rotate(225deg); }
.carte-head--2 { cursor: default; }

/* A carte row that reveals allergens is a native <details> (renert-menu
   1.28.0): the layout lives on its head, so both variants – <details><summary>
   and a plain <div><div> for rows with nothing to disclose – look identical. */
.carte-item-row {
  border-bottom: 1px solid var(--rn-line);
  transition: background 0.1s;
}
.carte-item-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 16px 40px;
  list-style: none; /* Firefox marker */
}
.carte-item-head::-webkit-details-marker { display: none; }
@media (max-width: 768px) { .carte-item-head { padding: 16px 20px; } }
.carte-item-row:hover { background: #F8F8F8; }
.carte-item-row:hover .carte-item-name { color: var(--rn-rust); }
summary.carte-item-head { cursor: pointer; }
/* The disclosure marker: the same chevron language as the carte headings. */
.carte-item-row--exp > .carte-item-head .carte-item-price::after {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 10px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 0.2s;
  opacity: 0.5;
}
.carte-item-row--exp[open] > .carte-item-head .carte-item-price::after {
  transform: translateY(1px) rotate(225deg);
}
.carte-item-row[open] .carte-item-name { color: var(--rn-rust); }
/* The panel itself sits under the head, inside the row's padding. */
.carte-item-row > .item-allergens { padding: 0 40px 14px; }
@media (max-width: 768px) { .carte-item-row > .item-allergens { padding: 0 20px 14px; } }
.carte-item-row[open] > .item-allergens {
  display: block;
  max-height: none;
  opacity: 1;
  margin-top: 0;
}
.carte-item-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 600;
  font-size: 1.05rem;
  color: var(--rn-ink);
  transition: color 0.15s;
}
.carte-item-desc { font-size: 0.85rem; color: var(--rn-mute); margin-top: 2px; }
.carte-item-price {
  font-family: 'DM Mono', monospace;
  font-size: 0.85rem;
  color: var(--rn-ink);
  flex-shrink: 0;
}
@media (max-width: 768px) { .carte-item-price { font-size: 0.8rem; } }

@media (min-width: 769px) {
  .item-name, .carte-item-name { font-size: 1.2rem; }
  .item-desc, .carte-item-desc { font-size: 0.95rem; }
  .item-price, .carte-item-price { font-size: 0.95rem; }
}
.carte-footer {
  padding: 16px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  background: #F8F8F8;
  position: relative;
}
@media (max-width: 768px) { .carte-footer { padding: 16px 20px; } }
.carte-footer-note {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: #757575;
  letter-spacing: 0.25em;
  text-transform: uppercase;
}
/* ─── Carte sub-headings (drinks/food grouping) ──────────────────── */
.carte-head {
  font-family: 'Barlow Condensed', sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--rn-rust);
}
.carte-head--1 {
  font-weight: 700;
  font-size: 1.35rem;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 40px;
  margin: 0;
  border-bottom: 2px solid var(--rn-ink);
}
.carte-head--2 {
  font-weight: 600;
  font-size: 1.05rem;
  color: var(--rn-rust);
  padding-top: 8px;
  padding-bottom: 4px;
  padding-left: 40px;
  margin: 0;
}
@media (max-width: 768px) {
  .carte-head--1 { padding-left: 20px; }
  .carte-head--2 { padding-left: 20px; }
}

/* Non-expandable rows (drinks have no allergen panel) shouldn't look clickable. */
.carte-item-row:not(.carte-item-row--exp) { cursor: default; }
.carte-item-row:not(.carte-item-row--exp):hover .carte-item-name { color: var(--rn-ink); }

/* Small per-item detail beside the name (ABV, volume, grape/region, …). */
.carte-item-meta {
  font-family: 'DM Mono', monospace;
  font-size: 0.7em;
  letter-spacing: 0.04em;
  color: #999;
  white-space: nowrap;
  margin-left: 6px;
}

/* ─── Story ──────────────────────────────────────────────────────── */
#story {
  background: var(--rn-ink);
  border-top: 4px solid var(--rn-rust);
}
.story-collage {
  position: relative;
  overflow: hidden;
  padding: 64px 40px;
}
@media (max-width: 768px) { .story-collage { padding: 40px 20px; } }
.story-ghost {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  pointer-events: none;
}
.story-ghost-text {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: 22vw;
  color: rgba(255,255,255,0.03);
  letter-spacing: -0.02em;
  text-transform: uppercase;
  white-space: nowrap;
  user-select: none;
  will-change: transform;
  transition: transform 0.05s linear;
}
.story-imgs {
  position: relative;
  z-index: 1;
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 4fr 5fr 3fr;
  gap: 16px;
  align-items: start;
}
@media (max-width: 768px) {
  /* Mobile story layout: the word block rides on top across the full width
     (centred), the two photos sit side by side below it – the left one a
     little smaller, the right one a little bigger. display:contents lifts
     col2's children into the grid so they can be re-placed. */
  .story-imgs { grid-template-columns: 44fr 56fr; }
  .story-col3 { display: none; }
  .story-col2 { display: contents; }
  .story-col2 > * { grid-column: 1 / -1; }
  /* As a grid item, margin:auto (the desktop centring) would shrink-wrap the
     word to its text width – the fit script then sees no room and keeps the
     font small. Stretch it across the row; text-align still centres. Word
     and explanation also sit tighter together here than on desktop. */
  .story-col2 > .story-word { margin-left: 0; margin-right: 0; margin-bottom: 2px; }
  .story-imgs .story-word-def { margin-top: 4px; }
  .story-col1 { grid-column: 1; grid-row: 3; }
  .story-col2 > .story-col2-img { grid-column: 2; grid-row: 3; margin-top: 0; }
}
.story-col1, .story-col3, .story-col2-img {
  overflow: hidden;
}
.story-col img {
  width: 100%;
  height: auto; /* let aspect-ratio govern; the <img> height attr must not pin the box */
  object-fit: cover;
  display: block;
  transition: transform 0.4s;
}
.story-col1:hover img, .story-col3:hover img, .story-col2-img:hover img {
  transform: scale(1.05);
}
.story-col1 img { aspect-ratio: 1068/1600; }
.story-col3 { padding-top: 128px; }
.story-col3 img { aspect-ratio: 1068/1600; }

.story-quote {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(2rem, 3.5vw, 3.5rem);
  color: var(--rn-paper);
  letter-spacing: -0.01em;
  line-height: 1.05;
  margin-bottom: 16px;
}
.story-attribution {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: rgba(255,255,255,0.65);
  letter-spacing: 0.35em;
  text-transform: uppercase;
}
/* Wierderbuch (word-of-the-page from the Menu plugin, replaces the static
   quote when its library has entries): word reuses .story-quote sizing but
   carries the brand rust; the explanation is a readable sentence, not the
   mono attribution style; the source is a quiet one-line citation. The whole
   block is centred (mobile AND desktop). Every 7s the plugin's inline script
   slot-machine-spins to the next word: explanation + source fade out during
   the spin (.is-veiled) and reveal again as the word settles. */
.story-word {
  text-transform: uppercase;
  color: var(--rn-rust);
  /* Always ONE line: the plugin script shrinks the font to fit the column
     (fitWord). nowrap + hidden means mid-spin glyphs can never wrap and
     nudge the photos below; the settled word always fits exactly. */
  white-space: nowrap;
  overflow: hidden;
}
.story-word-def {
  font-size: 15px;
  font-style: italic;
  line-height: 1.65;
  color: rgba(255,255,255,0.75);
  margin-top: 10px;
  max-width: 46ch;
}
.story-word-src {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.45);
  margin-top: 12px;
  max-width: 46ch;
}
/* The whole word block is centred – on desktop within its column, on mobile
   across the full-width row it now occupies. */
.story-word, .story-word-def, .story-word-src {
  text-align: center;
  margin-left: auto;
  margin-right: auto;
}
.story-word-def, .story-word-src { transition: opacity 0.35s ease; }
.story-word-def.is-veiled, .story-word-src.is-veiled { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
  /* Static for reduced motion: the script never spins here, and even if a
     veil class lingered, everything stays visible with no transitions. */
  .story-word-def, .story-word-src { transition: none !important; opacity: 1 !important; }
}
.story-col2-img { margin-top: 24px; }
.story-col2-img img { width: 100%; height: auto; aspect-ratio: 1600/1068; object-fit: cover; transition: transform 0.4s; }

.story-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid rgba(255,255,255,0.08);
}
@media (max-width: 768px) { .story-stats { grid-template-columns: repeat(2, 1fr); } }
.story-stat {
  padding: 32px;
  border-right: 1px solid rgba(255,255,255,0.08);
}
.story-stat:last-child { border-right: none; }
.story-stat-val {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: 2.5rem;
  color: var(--rn-paper);
  line-height: 1;
}
.story-stat-lbl {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: rgba(255,255,255,0.65);
  letter-spacing: 0.3em;
  text-transform: uppercase;
  margin-top: 6px;
}

.story-city {
  position: relative;
  height: 280px;
  overflow: hidden;
  border-top: 4px solid var(--rn-rust);
}
@media (min-width: 768px) { .story-city { height: 400px; } }
.story-city img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: brightness(0.7);
  transform: scale(1);
  transition: transform 0.4s;
}
.story-city:hover img {
  transform: scale(1.05);
}
.story-city-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  padding: 0 40px;
}
@media (max-width: 768px) { .story-city-text { padding: 0 20px; } }
.story-city-headline {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3rem, 10vw, 10rem);
  letter-spacing: -0.02em;
  color: var(--rn-paper);
  line-height: 0.85;
  text-transform: uppercase;
}

/* ─── Shop ───────────────────────────────────────────────────────── */
#shop {
  background: var(--rn-paper);
  border-top: 4px solid var(--rn-rust);
}
/* Bistro shop header: WHITE where the headline is – ink headline with rust
   accent, description UNDER the headline (also on mobile), light-grey fox
   watermark right, rust rule below – then the black trust band
   (markup shared via renert_wc_trust_band()). */
.shop-header {
  position: relative;
  overflow: hidden;
  padding: 48px 40px 44px;
  border-bottom: 4px solid var(--rn-rust);
}
@media (max-width: 768px) { .shop-header { padding: 40px 20px 36px; } }
.shop-heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3.5rem, 9vw, 5.5rem);
  color: var(--rn-ink);
  letter-spacing: -0.02em;
  line-height: 0.9;
  text-transform: uppercase;
  position: relative;
  z-index: 1;
}
.shop-desc {
  font-size: 0.9rem;
  color: #777;
  max-width: 34rem;
  line-height: 1.65;
  margin-top: 22px;
  position: relative;
  z-index: 1;
}
/* Hero line-link to the full shop – the hero-cta pattern in rust on white. */
.shop-header__link {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--rn-rust);
  margin-top: 26px;
  position: relative;
  z-index: 1;
}
.shop-header__link .line { width: 24px; height: 1px; background: currentColor; transition: width 0.3s; }
.shop-header__link:hover .line { width: 40px; }

/* "Leave us a review" under the testimonials strip (Site Settings →
   Testimonials – Review Link; hidden while no URL is set). */
.testimonials-review { text-align: center; padding: 8px 24px 40px; }
.testimonials-review__link {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--rn-rust);
  text-decoration: none;
}
.testimonials-review__link .line { width: 24px; height: 1px; background: currentColor; transition: width 0.3s; }
.testimonials-review__link:hover .line { width: 40px; }

/* Suited fox – light grey on the white header (ink artwork at low opacity;
   filter:none overrides the global .fox-layer white-out meant for the dark
   sections). Anchored low enough that the head stays visible; parallax via
   .fox-layer (main.js). */
.shop-header__fox {
  position: absolute;
  top: 70px;
  right: 2%;
  width: clamp(240px, 34vw, 560px);
  opacity: 0.12;
  pointer-events: none;
  user-select: none;
  will-change: transform;
  z-index: 0;
}
.shop-header__fox img { width: 100%; height: auto; display: block; filter: none; }

/* Trust / benefit band on the homepage – same rules as .rnwc-trust in
   css/woocommerce.css (which the homepage does not load). Kept in literal
   colours/fonts; if you restyle one, restyle the other. */
#shop .rnwc-trust {
  list-style: none;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 1fr;
  margin: 0;
  padding: 0;
  background: var(--rn-ink);
  border-bottom: 2px solid var(--rn-ink);
}
#shop .rnwc-trust li {
  padding: 20px 28px;
  border-right: 1px solid rgba(255,255,255,0.1);
  display: flex;
  flex-direction: column;
  gap: 5px;
}
#shop .rnwc-trust li:last-child { border-right: none; }
#shop .rnwc-trust__k {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rn-rust);
}
#shop .rnwc-trust__v {
  font-family: 'Barlow', sans-serif;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.6);
}
@media (max-width: 820px) {
  #shop .rnwc-trust { grid-auto-flow: row; grid-template-columns: repeat(2, 1fr); grid-auto-columns: auto; }
  #shop .rnwc-trust li:nth-child(2) { border-right: none; }
  #shop .rnwc-trust li:nth-child(1), #shop .rnwc-trust li:nth-child(2) { border-bottom: 1px solid rgba(255,255,255,0.1); }
}
@media (max-width: 480px) {
  #shop .rnwc-trust li { padding: 14px 16px; }
  #shop .rnwc-trust__v { font-size: 0.76rem; }
}

.shop-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-left: 2px solid var(--rn-ink);
  border-top: 2px solid var(--rn-ink);
}
@media (max-width: 600px) {
  .shop-grid { grid-template-columns: repeat(2, 1fr); }
  .shop-product .product-info { padding: 14px; }
}
/* Phones hide the description entirely – keeps the grid compact and scannable. */
@media (max-width: 768px) {
  .product-info .product-desc { display: none; }
}

/* ─── Product category filter (homepage shop · storefront · "Also Nice") ───
   Lives here (not in css/woocommerce.css) so it styles the homepage too, where
   the WooCommerce stylesheet does not load. Identical look everywhere. */
.rnwc-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 16px 40px;
  background: var(--rn-paper);
  border-bottom: 2px solid var(--rn-ink);
}
.rnwc-filter__pill {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rn-ink);
  background: none;
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  padding: 10px 18px;
  cursor: pointer;
  white-space: nowrap;
  transition: background .15s, color .15s;
}
.rnwc-filter__pill:hover,
.rnwc-filter__pill.is-active { background: var(--rn-ink); color: var(--rn-paper); }
/* Pills sit in their own wrapper so on phones only THEY scroll under the fade
   mask while the search toggle stays pinned beside the strip. On desktop the
   wrapper is dissolved – layout identical to the old flat pill row. */
.rnwc-filter__pills { display: contents; }
/* Collections row (product tags): its own full-width line under the category
   row – rust-accented pills so "collection" reads differently from "category".
   Both rows combine: a card must match the active pill of each. */
.rnwc-filter__pills--tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  flex: 1 1 100%;
}
.rnwc-filter__pill--tag {
  border-color: var(--rn-rust);
  color: var(--rn-rust);
}
.rnwc-filter__pill--tag:hover,
.rnwc-filter__pill--tag.is-active { background: var(--rn-rust); color: var(--rn-paper); }
@media (max-width: 768px) {
  .rnwc-filter {
    padding: 12px 20px;
    gap: 6px;
  }
  .rnwc-filter__pills {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1 1 0;
    min-width: 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    /* Right-edge fade hints that more pills scroll off-screen. The extra
       padding-right lets the last pill scroll clear of the faded zone. */
    padding-right: 44px;
    -webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 36px), transparent 100%);
    mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 36px), transparent 100%);
  }
  .rnwc-filter__pills::-webkit-scrollbar { display: none; }
  /* Collections keep their own scroll strip on the second line. */
  .rnwc-filter__pills--tags { flex: 1 1 100%; flex-wrap: nowrap; }
  .rnwc-filter__pill { padding: 9px 14px; }
}

/* Teaser grids (homepage strip · "Also Nice") hold the WHOLE catalogue so the
   pills can filter across all of it, but only the first data-rn-cap cards stand
   until a filter is used. Server-rendered so there's no flash of the full grid;
   js/shop.js strips the class on init and takes over with inline display. */
.rn-capped { display: none !important; }

.shop-product {
  border-bottom: 2px solid var(--rn-ink);
  border-right: 2px solid var(--rn-ink);
  display: flex;
  flex-direction: column;
  min-width: 0; /* keep the homepage grid columns equal + contained on mobile */
}

.product-img {
  position: relative;
  display: block;
  overflow: hidden;
  background: var(--rn-grey-img);
  border-bottom: 2px solid var(--rn-ink);
  aspect-ratio: 1; /* the square lives on the container, so the photo is always
                      cropped square regardless of the source image proportions */
}
.product-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.5s;
}
.shop-product:hover .product-img img { transform: scale(1.04); }

/* ─── Loop card carousel (products with multiple images) ───────────────────
   .product-img--multi reuses the .product-img square box (aspect-ratio, border,
   overflow). Inside, a scroll-snap strip swipes between full-bleed slides with
   dot indicators (wired per card by initLoopCarousels() in js/shop.js). Used on the
   homepage shop, the shop/category archive and related products. */
.product-img--multi { line-height: 0; }
.product-img--multi .product-img__strip {
  position: absolute;
  inset: 0;
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.product-img--multi .product-img__strip::-webkit-scrollbar { display: none; }
.product-img__slide {
  flex: 0 0 100%;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  display: block;
  line-height: 0;
}
.product-img__slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.5s;
}
.shop-product:hover .product-img--multi .product-img__slide img,
li.product:hover .product-img--multi .product-img__slide img { transform: scale(1.04); }
/* Dots – always visible (override the mobile-only .carousel-dots default). */
.product-img__dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  position: absolute;
  bottom: 12px;
  left: 0;
  right: 0;
  z-index: 3;
  pointer-events: none;
}
/* The dots are real <button>s (native Enter/Space + focus ring), so the browser's
   own button chrome – border, padding, background, inherited font – has to be
   cleared before the dot styling below takes effect. */
.carousel-dots .dot,
.product-img__dots .dot {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  padding: 0;
  margin: 0;
  font: inherit;
  color: inherit;
}

.product-img__dots .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255,255,255,0.55);
  box-shadow: 0 0 4px rgba(0,0,0,0.35);
  cursor: pointer;
  pointer-events: auto;
  flex-shrink: 0;
  transition: background 0.25s, transform 0.25s;
}
.product-img__dots .dot.active { background: var(--rn-paper); transform: scale(1.2); }
/* Visible keyboard focus on the carousel dots (homepage strips + loop cards). */
.carousel-dots .dot:focus-visible,
.product-img__dots .dot:focus-visible {
  outline: 2px solid var(--rn-rust);
  outline-offset: 3px;
}
/* Enlarge the carousel-dot touch target (20 wide × 36 tall) without changing the
   small visual dot: a transparent, centred ::before captures the tap. Width stays
   narrow on purpose – the dots sit ~13px apart centre-to-centre, so a full 44px
   square would overlap three neighbours and cause mis-taps; the height carries
   the thumb-friendly dimension instead. */
.carousel-dots .dot,
.product-img__dots .dot { position: relative; }
.carousel-dots .dot::before,
.product-img__dots .dot::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 36px;
  transform: translate(-50%, -50%);
}
@media (prefers-reduced-motion: reduce) {
  .product-img__slide img,
  .product-img__dots .dot { transition: none; }
}

.product-tag {
  position: absolute;
  top: 0; right: 0;
  z-index: 2; /* stay above zooming image */
  background: var(--rn-rust);
  padding: 6px 11px; /* match the shop badge exactly */
  font-family: 'DM Mono', monospace;
  color: var(--rn-paper);
  font-size: 10px;
  letter-spacing: 0.3em;
  line-height: 1;
  text-transform: uppercase;
}
/* Stack wrapper when a product shows more than one badge */
.product-tags {
  position: absolute;
  top: 0; right: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}
.product-tags .product-tag { position: static; }
/* On phones the card photo is small – several stacked badges can cover a third
   of it. Show only the highest-priority badge (they render in priority order:
   sold out → sale → new → low stock → featured → tag rules). */
@media (max-width: 768px) {
  .product-tags .product-tag:not(:first-child) { display: none; }
}
.product-info {
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
@media (max-width: 768px) { .product-info { padding: 16px; } }
/* push add-to-cart to the bottom of every card */
.product-info .add-to-cart { margin-top: auto; }
/* Card head – one markup, two layouts:
     desktop  | CAT        |        mobile  | CAT   PRICE |
              | NAME PRICE |                | NAME        |
   The price cell renders even when empty (sold out), so priced and unpriced
   cards keep identical geometry on both breakpoints. */
.product-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 12px;
  align-items: baseline;
  margin-bottom: 6px;
}
.product-head .product-cat   { grid-column: 1 / -1; margin-bottom: 6px; }
.product-head .product-name  { grid-column: 1; margin: 0; }
.product-head .product-price { grid-column: 2; }
@media (max-width: 768px) {
  .product-head {
    /* Reserve the price line's height so sold-out cards don't sit higher. */
    grid-template-rows: minmax(1.2em, auto) auto;
    align-items: start;
    /* The description is hidden on phones, so give the title room to breathe
       before the button instead of letting them sit tight together. */
    margin-bottom: 14px;
  }
  .product-head .product-cat   { grid-column: 1; grid-row: 1; margin-bottom: 0; align-self: center; }
  .product-head .product-price { grid-column: 2; grid-row: 1; }
  .product-head .product-name  { grid-column: 1 / -1; grid-row: 2; margin-top: 4px; }
}
.product-cat {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.3em;
  color: #AAA;
  text-transform: uppercase;
}
.product-price {
  font-family: 'DM Mono', monospace;
  font-size: 0.85rem;
  color: var(--rn-ink);
  white-space: nowrap;
}
.product-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.15rem;
  color: var(--rn-ink);
  letter-spacing: 0.02em;
  margin-bottom: 4px;
}
.product-desc { font-size: 0.85rem; color: var(--rn-mute); line-height: 1.5; margin-bottom: 16px; }
/* Image + title link to the product (cards now render real WooCommerce products) */
a.product-img { display: block; line-height: 0; }
.product-name a { color: inherit; text-decoration: none; transition: color 0.15s; }
.product-name a:hover { color: var(--rn-rust); }
/* Card titles: clamp to two lines so one very long name can't blow up its
   card. No height reservation – an empty second line read as a gap between
   title and description. Scoped to .product-info so the cart table's
   td.product-name is untouched. */
.product-info .product-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.add-to-cart { margin-bottom: 8px; } /* extra breathing room below button */
.add-to-cart {
  width: 100%;
  padding: 10px;
  border: 2px solid var(--rn-ink);
  color: var(--rn-ink);
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  font-weight: 400; /* never bold – match the shop card buttons */
  letter-spacing: 0.35em;
  text-transform: uppercase;
  transition: background 0.2s, color 0.2s;
  display: block;
  text-align: center;
  text-decoration: none;
  box-sizing: border-box;
  cursor: pointer;
  background: none;
}
.add-to-cart:hover { background: var(--rn-ink); color: var(--rn-paper); }
/* Keep the homepage AJAX button clean (no WC "View cart" link / tick – the
   slide-in drawer is the feedback). These bits aren't styled by woocommerce.css
   here because it isn't loaded on the front page. */
.shop-product .added_to_cart { display: none; }
.shop-product .add_to_cart_button.added::after { display: none; }
.shop-product .add_to_cart_button.loading { opacity: 1; }

/* ── Card purchase area: inline size picker + sold-out ────────────────────────
   Defined here (not css/woocommerce.css) so it also styles the homepage cards;
   css/woocommerce.css isn't loaded on the front page. */
/* Every card's purchase control pins to the SAME bottom baseline – Add to Cart,
   Sold Out, and the size/colour picker all line up. margin-bottom:0 (the gap
   comes from .product-info padding); !important overrides WooCommerce core's
   `.button` margin, which otherwise gave the Add-to-Cart links a different
   bottom margin than the Sold Out span and the picker. */
.product-info > .add-to-cart,
.product-info > .rnwc-buy,
.product-info > .rnwc-notify,
.woocommerce ul.products li.product .product-info > .add-to-cart,
.woocommerce ul.products li.product .product-info > .rnwc-buy,
.woocommerce ul.products li.product .product-info > .rnwc-notify {
  margin-top: auto !important;
  margin-bottom: 0 !important;
}
.product-info .rnwc-buy { display: flex; flex-direction: column; gap: 14px; }
.product-info .rnwc-buy .add-to-cart { margin: 0 !important; }
/* Sold-out "notify" button sits in a wrapper → zero its own margin so its box
   matches a plain Add-to-Cart exactly (same height, same bottom baseline). */
.product-info .rnwc-notify .add-to-cart { margin: 0 !important; }
/* Sold-out button label: full "Sold Out – notify me" on desktop, the shorter
   "Notify me" on mobile so it no longer wraps to two lines in the narrow card. */
.rnwc-notify__txt-short { display: none; }
@media (max-width: 768px) {
  .rnwc-notify__txt-full  { display: none; }
  .rnwc-notify__txt-short { display: inline; }
}
/* Roomier on desktop; mobile keeps the tighter spacing it already had. */
@media (min-width: 769px) { .product-info .rnwc-buy { padding-top: 8px; } }
@media (max-width: 768px) { .product-info .rnwc-buy { gap: 8px; } }
/* Size pills (bordered squares; ink-fill when chosen, struck when sold out) */
.rnwc-sizes { display: flex; flex-wrap: wrap; gap: 6px; }
.rnwc-sizes .rnwc-size {
  min-width: 38px;
  padding: 8px 9px;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-align: center;
  line-height: 1;
  color: var(--rn-ink);
  background: none;
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  cursor: pointer;
  box-sizing: border-box;
  transition: background .15s, color .15s;
}
.rnwc-sizes .rnwc-size:hover,
.rnwc-sizes .rnwc-size.is-active { background: var(--rn-ink); color: var(--rn-paper); }
.rnwc-sizes .rnwc-size--out {
  color: #c2c2c2;
  border-color: #e2e2e2;
  text-decoration: line-through;
  cursor: not-allowed;
  pointer-events: none;
}
.rnwc-sizes .rnwc-size--out:hover { background: none; color: #c2c2c2; }

/* Colour swatches (always shown). The frame is the button; the inner span is
   the colour, so a ring appears around the active one. */
.rnwc-swatches { display: flex; flex-wrap: wrap; gap: 8px; }
.rnwc-swatches .rnwc-swatch {
  width: 27px; height: 27px; padding: 2px;
  border: 2px solid transparent; border-radius: 0;
  background: none; cursor: pointer; box-sizing: border-box;
  transition: border-color .15s;
}
.rnwc-swatches .rnwc-swatch > span {
  display: block; width: 100%; height: 100%;
  background: var(--sw, #ccc);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0.18);
}
.rnwc-swatches .rnwc-swatch:hover { border-color: #bbb; }
.rnwc-swatches .rnwc-swatch.is-active { border-color: var(--rn-ink); }
.rnwc-swatches .rnwc-swatch--out { cursor: not-allowed; pointer-events: none; opacity: 0.55; }
.rnwc-swatches .rnwc-swatch--out > span {
  background:
    linear-gradient(45deg, transparent 45%, #b00 45%, #b00 55%, transparent 55%),
    var(--sw, #ccc);
}

/* Attribute group (one per attribute; the label only shows for 2-attribute
   products, e.g. Size + Colour). */
.rnwc-group { display: flex; flex-direction: column; gap: 8px; }
.rnwc-group__label {
  font-family: 'DM Mono', monospace; font-size: 9px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--rn-mute);
}
.rnwc-sheet .rnwc-group__label { font-size: 10px; color: #555; }

/* Add-to-Cart disabled until a size/colour is chosen (used inside the sheet). */
.rnwc-buy__atc--off { opacity: 0.4; pointer-events: none; }

/* Quick-add on every viewport: hide the inline picker in the card, show the
   "Select …" trigger that opens the sheet (slide-up on mobile, centered modal
   on desktop). Keeps the card clean – the size/colour choice lives in the sheet. */
.product-info > .rnwc-buy { display: none; }
.rnwc-quickadd { display: block !important; } /* !important beats the archive .add-to-cart display */

/* ── Quick-add sheet (slide-up) ─────────────────────────────────────────────── */
.rnwc-sheet { position: fixed; inset: 0; z-index: 1000; display: none; }
.rnwc-sheet.is-open { display: block; }
body.rnwc-sheet-open { overflow: hidden; }
.rnwc-sheet__backdrop {
  position: absolute; inset: 0; background: rgba(0,0,0,0.5);
  opacity: 0; transition: opacity .25s ease;
}
.rnwc-sheet.is-open .rnwc-sheet__backdrop { opacity: 1; }
.rnwc-sheet__panel {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: var(--rn-paper); border-top: 4px solid var(--rn-ink);
  padding: 22px 22px calc(22px + env(safe-area-inset-bottom, 0px));
  max-height: 85vh; overflow-y: auto; outline: none;
  transform: translateY(100%); transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.rnwc-sheet.is-open .rnwc-sheet__panel { transform: translateY(0); }
.rnwc-sheet__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.rnwc-sheet__title {
  display: block; font-family: 'Barlow Condensed', sans-serif; font-weight: 700;
  font-size: 1.4rem; line-height: 1.05; text-transform: uppercase; color: var(--rn-ink);
}
.rnwc-sheet__price { font-family: 'DM Mono', monospace; font-size: 0.95rem; color: var(--rn-ink); }
.rnwc-sheet__price del { color: #aaa; font-size: 0.8em; margin-right: 6px; }
.rnwc-sheet__price ins { text-decoration: none; color: var(--rn-rust); }
.rnwc-sheet__close {
  flex-shrink: 0; background: none; border: none; font-size: 20px; line-height: 1;
  color: var(--rn-ink); cursor: pointer; padding: 4px 4px 0; margin: -2px -2px 0 0;
}
/* The real .rnwc-buy lives here while open → bigger, tappable controls. */
.rnwc-sheet .rnwc-buy { display: flex; flex-direction: column; gap: 20px; margin: 0; padding: 0; }
.rnwc-sheet .rnwc-sizes { gap: 8px; }
.rnwc-sheet .rnwc-sizes .rnwc-size { min-width: 52px; padding: 15px 16px; font-size: 13px; }
/* Phones: slimmer pills and a tighter run down to Add to Cart. */
@media (max-width: 768px) {
  .rnwc-sheet .rnwc-sizes .rnwc-size { min-width: 44px; padding: 11px 12px; font-size: 12px; }
  .rnwc-sheet .rnwc-buy { gap: 14px; }
}
.rnwc-sheet .rnwc-swatches { gap: 12px; }
.rnwc-sheet .rnwc-swatches .rnwc-swatch { width: 42px; height: 42px; }
.rnwc-sheet .rnwc-buy__atc { padding: 17px; font-size: 12px; }
.rnwc-sheet .added_to_cart { display: none; }
.rnwc-sheet .add_to_cart_button.added::after { display: none; }
@media (prefers-reduced-motion: reduce) {
  .rnwc-sheet__panel, .rnwc-sheet__backdrop { transition: none; }
}
/* Desktop: present the quick-add picker as a centered modal card rather than a
   bottom sheet (which only reads well on a phone). Mobile keeps the slide-up.
   Scoped away from the notify sheet, which has its own centered-modal rule. */
@media (min-width: 769px) {
  .rnwc-sheet:not(.rnwc-sheet--notify) .rnwc-sheet__panel {
    left: 50%; right: auto; top: 50%; bottom: auto;
    width: min(440px, 92vw);
    max-height: 88vh;
    border: 4px solid var(--rn-ink);
    opacity: 0;
    transform: translate(-50%, -46%);
    transition: opacity .25s ease, transform .25s cubic-bezier(.22,.61,.36,1);
  }
  .rnwc-sheet:not(.rnwc-sheet--notify).is-open .rnwc-sheet__panel {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}
@media (min-width: 769px) and (prefers-reduced-motion: reduce) {
  .rnwc-sheet:not(.rnwc-sheet--notify) .rnwc-sheet__panel { transition: none; }
}

/* Sold out – muted, non-interactive button + greyscale photo. The second
   selector (0,5,2) out-specifies the archive button rule in css/woocommerce.css
   (0,4,2), so no !important is needed. */
.add-to-cart.add-to-cart--soldout,
.woocommerce ul.products li.product .add-to-cart.add-to-cart--soldout {
  border-color: #d2d2d2;
  color: #b3b3b3;
  background: none;
  cursor: not-allowed;
  pointer-events: none;
  opacity: 1;
}
.is-soldout .product-img img { filter: grayscale(1); opacity: 0.9; }

/* Back-in-stock "notify me" (sold-out cards). The card only carries the button;
   tapping it opens the shared .rnwc-sheet--notify sheet (built in js/shop.js).
   Bottom-baseline alignment is handled with the other card buttons above. */
/* Keep the notify button interactive. The sold-out base rule kills clicks via
   `.woocommerce ul.products li.product .add-to-cart.add-to-cart--soldout` (0,5,2),
   which matches on the /shop archive (body.woocommerce) but NOT the homepage – so
   the re-enable must out-specify it there. Adding the .rnwc-notify wrapper takes
   this to (0,6,2) so it wins on every surface, regardless of source order. */
.rnwc-notify .rnwc-notify__open.add-to-cart--soldout,
.woocommerce ul.products li.product .rnwc-notify .rnwc-notify__open.add-to-cart--soldout {
  cursor: pointer;
  pointer-events: auto;
  width: 100%;
}
.rnwc-notify .rnwc-notify__open.add-to-cart--soldout:hover,
.woocommerce ul.products li.product .rnwc-notify .rnwc-notify__open.add-to-cart--soldout:hover {
  border-color: var(--rn-rust);
  color: var(--rn-rust);
}

/* Notify sheet – reuses the slide-up sheet chrome, with its own body layout.
   Intro line, full-width email field, full-width submit, and a success panel. */
.rnwc-sheet--notify .rnwc-sheet__lead {
  margin: 0 0 18px;
  font-size: 0.9rem;
  line-height: 1.55;
  color: #555;
}
.rnwc-notifysheet__form { display: flex; flex-direction: column; gap: 12px; margin: 0; }
.rnwc-notifysheet__form[hidden] { display: none; } /* [hidden] must beat display:flex */
.rnwc-notifysheet__email {
  width: 100%;
  box-sizing: border-box;
  padding: 15px 16px;
  font-size: 16px; /* 16px keeps iOS from zooming on focus */
  border: 1.5px solid var(--rn-ink);
  background: var(--rn-paper);
}
/* Focus ring. The generic ".rnwc-sheet :focus-visible { outline-color:#fff }"
   ring is meant for the DARK quick-add/hero surfaces, but this notify panel is
   white, so a white ring is invisible. On the shop that generic rule lives in
   css/woocommerce.css, which loads AFTER style.css and would otherwise win at
   equal specificity – so pin the rust ring here with the .rnwc-sheet--notify
   ancestor (higher specificity) to win on the homepage AND the shop alike. */
.rnwc-sheet.rnwc-sheet--notify :focus-visible {
  outline: 2px solid var(--rn-rust);
  outline-offset: 2px;
}
.rnwc-sheet.rnwc-sheet--notify .rnwc-notifysheet__email:focus,
.rnwc-sheet.rnwc-sheet--notify .rnwc-notifysheet__email:focus-visible {
  outline: 2px solid var(--rn-rust);
  outline-offset: -2px;
}
.rnwc-notifysheet__submit {
  width: 100%;
  padding: 17px;
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--rn-paper);
  background: var(--rn-ink);
  border: 1.5px solid var(--rn-ink);
  cursor: pointer;
  transition: background 0.15s;
}
.rnwc-notifysheet__submit:hover { background: var(--rn-rust); border-color: var(--rn-rust); }
.rnwc-notifysheet__submit:disabled { opacity: 0.5; cursor: default; }
.rnwc-notifysheet__consent {
  margin: 10px 0 0;
  font-size: 0.78rem;
  line-height: 1.45;
  color: #6F6A5F;
}
.rnwc-notifysheet__done {
  margin: 0;
  padding: 18px 16px;
  text-align: center;
  font-size: 0.95rem;
  line-height: 1.5;
  color: #2e7d32;
  border: 1.5px solid #2e7d32;
  background: #f3faf3;
}

/* Desktop: present the notify sheet as a centered modal card rather than a
   bottom sheet (which only reads well on a phone). Mobile keeps the slide-up. */
@media (min-width: 769px) {
  .rnwc-sheet--notify .rnwc-sheet__panel {
    left: 50%; right: auto; top: 50%; bottom: auto;
    width: min(440px, 92vw);
    max-height: 88vh;
    border: 4px solid var(--rn-ink);
    opacity: 0;
    transform: translate(-50%, -46%);
    transition: opacity .25s ease, transform .25s cubic-bezier(.22,.61,.36,1);
  }
  .rnwc-sheet--notify.is-open .rnwc-sheet__panel {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}
@media (min-width: 769px) and (prefers-reduced-motion: reduce) {
  .rnwc-sheet--notify .rnwc-sheet__panel { transition: none; }
}

/* "See full shop" CTA – centered band under the homepage product grid */
.shop-viewall {
  display: flex;
  justify-content: center;
  padding: 40px;
  border-top: 2px solid var(--rn-ink);
}
@media (max-width: 768px) { .shop-viewall { padding: 28px 20px; } }
.shop-viewall-btn {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--rn-ink);
  border: 2px solid var(--rn-ink);
  padding: 16px 38px;
  transition: background 0.2s, color 0.2s;
}
.shop-viewall-btn:hover { background: var(--rn-ink); color: var(--rn-paper); }
.shop-viewall-btn .line { width: 22px; height: 1px; background: currentColor; transition: width 0.3s; }
.shop-viewall-btn:hover .line { width: 40px; }

/* Cart drawer */
#cart-overlay {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgba(0,0,0,0.5);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s;
}
#cart-overlay.open { opacity: 1; pointer-events: all; }
#cart-drawer {
  position: fixed;
  right: 0; top: 0; bottom: 0;
  z-index: 50;
  width: 100%;
  max-width: 384px;
  background: var(--rn-paper);
  border-left: 4px solid var(--rn-ink);
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.35s cubic-bezier(0.22,1,0.36,1);
}
#cart-drawer.open { transform: translateX(0); }
.cart-header {
  background: var(--rn-ink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 20px;
}
.cart-header-label {
  font-family: 'DM Mono', monospace;
  color: var(--rn-rust);
  font-size: 10px;
  letter-spacing: 0.4em;
  text-transform: uppercase;
}
/* Inline count inside the drawer header "[ N ]" – a plain number, NOT the
   absolutely-positioned nav badge bubble (which floated/broke when reused here). */
.cart-header-count {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.2em;
  color: var(--rn-paper);
}
.cart-close {
  color: var(--rn-paper);
  font-size: 18px;
  line-height: 1;
  transition: color 0.2s;
}
.cart-close:hover { color: var(--rn-rust); }
.cart-body { flex: 1; overflow-y: auto; padding: 20px; }
.cart-empty { font-size: 0.85rem; color: var(--rn-mute); }

/* Free-delivery progress (top of the cart drawer). */
.cart-ship-progress { margin-bottom: 18px; }
.cart-ship-progress__msg {
  margin: 0 0 8px;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--rn-ink);
}
.cart-ship-progress__msg .woocommerce-Price-amount { font-weight: 700; color: var(--rn-rust); }
.cart-ship-progress__bar { height: 4px; background: var(--rn-line); overflow: hidden; }
.cart-ship-progress__bar span {
  display: block;
  height: 100%;
  background: var(--rn-rust);
  transition: width 0.4s ease;
}
.cart-ship-progress.is-unlocked .cart-ship-progress__bar span { background: #2e7d32; }
.cart-ship-progress.is-unlocked .cart-ship-progress__msg { color: #2e7d32; }
.cart-footer { padding: 20px; border-top: 2px solid var(--rn-ink); }
.checkout-btn {
  display: block;
  width: 100%;
  padding: 16px;
  background: var(--rn-rust);
  color: var(--rn-paper);
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.4em;
  text-transform: uppercase;
  text-align: center;
  transition: background 0.2s;
  border: none;
  cursor: pointer;
  text-decoration: none;
}
.checkout-btn:hover { background: var(--rn-ink); color: var(--rn-paper); }

/* WC cart drawer items */
.wc-drawer-items {
  list-style: none;
  padding: 0;
  margin: 0;
}
.wc-drawer-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 16px 0;
  border-bottom: 1px solid var(--rn-line);
  position: relative;
}
.wc-drawer-item__img-link { flex-shrink: 0; }
.wc-drawer-item__img {
  width: 56px;
  height: 56px;
  object-fit: cover;
  border: 2px solid var(--rn-line);
  display: block;
}
.wc-drawer-item__info { flex: 1; min-width: 0; }
.wc-drawer-item__name {
  font-family: 'Barlow Condensed', sans-serif;
  font-size: 1rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--rn-ink);
  display: block;
  margin-bottom: 8px;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.wc-drawer-item__name:hover { color: var(--rn-rust); }
.wc-drawer-item__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.wc-drawer-item__qty {
  display: flex;
  align-items: center;
  gap: 0;
  border: 1px solid #ddd;
}
.wc-drawer-qty-btn {
  width: 28px;
  height: 28px;
  background: none;
  border: none;
  font-family: 'DM Mono', monospace;
  font-size: 14px;
  color: var(--rn-ink);
  cursor: pointer;
  transition: background .15s;
  display: flex;
  align-items: center;
  justify-content: center;
}
.wc-drawer-qty-btn:hover { background: var(--rn-ink); color: var(--rn-paper); }
.wc-drawer-qty-val {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  min-width: 28px;
  text-align: center;
  color: var(--rn-ink);
}
.wc-drawer-item__price {
  font-family: 'DM Mono', monospace;
  font-size: 0.82rem;
  color: var(--rn-ink);
}
.wc-drawer-item__remove {
  background: none;
  border: none;
  color: #AAA;
  font-size: 12px;
  cursor: pointer;
  padding: 4px;
  flex-shrink: 0;
  transition: color .2s;
  align-self: center;
}
.wc-drawer-item__remove:hover { color: var(--rn-rust); }

/* Transient refusal note under a drawer row ("+" past the stock ceiling) –
   injected by main.js, removed after 3s; wrap gives it its own full line. */
.wc-drawer-item { flex-wrap: wrap; }
.wc-drawer-item__note {
  flex: 1 1 100%;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--rn-rust);
  margin: 6px 0 0;
}

/* "Goes well with" cross-sell row (renert_cart_drawer_xsell) – rides the
   drawer-body fragment, so it refreshes with every cart change. */
.wc-drawer-xsell {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid rgba(12,12,12,0.12);
}
.wc-drawer-xsell__label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--rn-rust);
  margin: 0 0 12px;
}
.wc-drawer-xsell__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.wc-drawer-xsell__item {
  display: flex;
  align-items: center;
  gap: 12px;
}
.wc-drawer-xsell__img {
  width: 44px;
  height: 44px;
  object-fit: cover;
  display: block;
  border: 1px solid rgba(12,12,12,0.12);
}
.wc-drawer-xsell__info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.wc-drawer-xsell__name {
  font-size: 13px;
  font-weight: 500;
  color: var(--rn-ink);
  text-decoration: none;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.wc-drawer-xsell__name:hover { color: var(--rn-rust); }
.wc-drawer-xsell__price {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  color: rgba(12,12,12,0.55);
}
.wc-drawer-xsell__price del { margin-right: 6px; }
.wc-drawer-xsell__price ins { text-decoration: none; color: var(--rn-rust); }
.wc-drawer-xsell__btn {
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rn-ink);
  background: var(--rn-paper);
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  padding: 8px 12px;
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .15s, color .15s;
}
.wc-drawer-xsell__btn:hover,
.wc-drawer-xsell__btn.loading { background: var(--rn-ink); color: var(--rn-paper); }

/* Drawer footer: subtotal + buttons */
.cart-drawer-subtotal {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 0;
  border-top: 2px solid var(--rn-ink);
  margin-bottom: 12px;
}
.cart-drawer-subtotal-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--rn-mute);
}
.cart-drawer-subtotal-amount {
  font-family: 'DM Mono', monospace;
  font-size: 0.9rem;
  color: var(--rn-ink);
  font-weight: 500;
}
.view-cart-link {
  display: block;
  text-align: center;
  margin: 18px 0 22px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--rn-rust);
  text-decoration: none;
  transition: color .2s;
}
.view-cart-link:hover {
  color: var(--rn-rust-dark);
  font-weight: 500; /* DM Mono 500 is a loaded face – real bold, no faux-bold */
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Mobile drawer polish – roomier panel + larger touch targets */
@media (max-width: 768px) {
  #cart-drawer { max-width: min(84vw, 330px); }
  .cart-body { padding: 16px 18px; }
  .wc-drawer-qty-btn { width: 34px; height: 34px; font-size: 15px; }
  .wc-drawer-qty-val { min-width: 30px; font-size: 13px; }
  .wc-drawer-item__remove { padding: 8px; font-size: 13px; }
  .cart-footer .checkout-btn { padding: 17px; }
}

/* Invisible hit-area extensions bring the drawer's small controls up to a
   ~44px effective tap target without moving a pixel of layout: a transparent
   pseudo-element on the button itself captures the surrounding taps. */
.wc-drawer-qty-btn,
.wc-drawer-item__remove,
.cart-close { position: relative; }
.wc-drawer-qty-btn::after   { content: ""; position: absolute; inset: -5px; }
.wc-drawer-item__remove::after { content: ""; position: absolute; inset: -8px; }
.cart-close::after          { content: ""; position: absolute; inset: -13px; }

/* Section band cart button */
.cart-count-btn {
  font-family: 'DM Mono', monospace;
  color: rgba(255,255,255,0.5);
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  background: none;
  border: none;
  cursor: pointer;
  transition: color 0.2s;
}
.cart-count-btn:hover { color: var(--rn-paper); }

/* ─── Footer ─────────────────────────────────────────────────────── */
#footer { background: var(--rn-ink); border-top: 4px solid var(--rn-rust); }
.footer-cta {
  background: var(--rn-rust);
  padding: 32px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
@media (max-width: 768px) {
  .footer-cta {
    padding: 32px 20px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
  }
}
.footer-cta-title {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(1.8rem, 4vw, 3.5rem);
  color: var(--rn-paper);
  text-transform: uppercase;
  letter-spacing: -0.01em;
  line-height: 1;
}
.footer-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: var(--rn-paper);
  color: var(--rn-ink);
  padding: 16px 32px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  border: 2px solid var(--rn-paper);
  transition: background 0.2s, color 0.2s;
}
.footer-cta-btn:hover { background: var(--rn-ink); color: var(--rn-paper); }
.footer-cta-btn .line { width: 16px; height: 1px; background: currentColor; transition: width 0.3s; }
.footer-cta-btn:hover .line { width: 28px; }

.footer-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
@media (max-width: 900px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .footer-grid { grid-template-columns: 1fr; } }

.footer-col {
  padding: 32px;
  border-right: 1px solid rgba(255,255,255,0.08);
}
.footer-col:last-child { border-right: none; }

.footer-brand-tagline {
  font-size: 0.88rem;
  color: rgba(255,255,255,0.6);
  font-style: italic;
  line-height: 1.6;
  margin-bottom: 24px;
}
.footer-address { font-size: 0.85rem; color: rgba(255,255,255,0.65); line-height: 1.9; }

.footer-hours-day { font-family: 'DM Mono', monospace; font-size: 10px; color: rgba(255,255,255,0.65); letter-spacing: 0.25em; text-transform: uppercase; }
.footer-hours-time { font-family: 'DM Mono', monospace; font-size: 11px; color: rgba(255,255,255,0.85); margin-bottom: 12px; }
/* Bigger hours display */
.footer-hours-day--big { font-size: 11px; letter-spacing: 0.3em; color: rgba(255,255,255,0.7); }
.footer-hours-time--big {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 2rem;
  color: var(--rn-paper);
  letter-spacing: 0.02em;
  margin-bottom: 0;
  line-height: 1.1;
}

.footer-phone {
  display: block;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--rn-paper);
  margin-bottom: 4px;
  transition: color 0.2s;
}
.footer-phone:hover { color: var(--rn-rust); }
.footer-email {
  display: block;
  font-size: 0.85rem;
  color: rgba(255,255,255,0.65);
  margin-bottom: 32px;
  transition: color 0.2s;
}
.footer-email:hover { color: var(--rn-rust); }
.footer-social { display: flex; gap: 8px; }
.footer-social a {
  width: 32px; height: 32px;
  border: 1px solid rgba(255,255,255,0.35);
  display: flex; align-items: center; justify-content: center;
  color: rgba(255,255,255,0.65);
  transition: border-color 0.2s, color 0.2s;
}
.footer-social a svg { width: 15px; height: 15px; display: block; }
.footer-social a:hover { border-color: var(--rn-rust); color: var(--rn-rust); }

/* "Get directions" link (footer address column) */
.footer-directions {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: var(--rn-rust);
  transition: color 0.2s;
}
.footer-directions:hover { color: var(--rn-paper); }

.footer-bottom {
  padding: 16px 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
@media (max-width: 768px) {
  .footer-bottom {
    padding: 16px 20px;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
  /* Centring the bar is not enough: the links are a wrapping flex row, and a
     wrapped row lays every line out from its start – so once Privacy · Terms ·
     Shipping & Returns broke onto a second line, that line sat left under a
     centred first one. */
  .footer-links {
    order: 1;
    justify-content: center;
    row-gap: 10px;
  }
  .footer-copy { order: 2; }
}
.footer-copy {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: rgba(255,255,255,0.6);
  letter-spacing: 0.3em;
  text-transform: uppercase;
}
.footer-links { display: flex; gap: 20px; flex-wrap: wrap; }
.footer-links a {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  color: rgba(255,255,255,0.6);
  letter-spacing: 0.3em;
  text-transform: uppercase;
  transition: color 0.2s;
}
.footer-links a:hover { color: var(--rn-paper); }

/* ─── Bilingual: EN italic below LB ─────────────────────────────── */
.bilingual { display: flex; flex-direction: column; }
.bilingual .en {
  font-style: italic;
  opacity: 0.92;
  font-size: 0.85em;
  letter-spacing: 0.02em;
  line-height: 1.4;
  font-family: 'Barlow', sans-serif;
  text-transform: none;
  margin-top: 3px;
}
/* ─── Reveal animations ──────────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.visible {
  opacity: 1;
  transform: none;
}
.reveal-delay-1 { transition-delay: 0.1s; }
.reveal-delay-2 { transition-delay: 0.2s; }
.reveal-delay-3 { transition-delay: 0.3s; }

/* ─── About photo: landscape desktop only ───────────────────────── */
.about-img-col { display: none !important; }
@media (min-width: 900px) and (orientation: landscape) {
  .about-img-col { display: block !important; }
}
/* First strip item: mobile-only slide, hidden on desktop */
.strip-item--mobile-first { display: none; }

/* Strip: swipeable carousel on mobile */
@media (max-width: 768px) {
  .strip-item--mobile-first { display: block; }
  .about-mobile-photo { display: none !important; }
  .about-strip {
    display: flex !important;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    border-top: 4px solid var(--rn-rust);
    background: transparent;
    gap: 0;
    margin-top: 0;
  }
  .about-strip::-webkit-scrollbar { display: none; }
  .strip-item {
    flex: 0 0 100%;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    border-top: none;
    border-right: none;
  }
  .strip-item img { aspect-ratio: 1600/1068; }
}

/* Single photo shown on mobile/portrait, below "Reserve a Table" */
.about-mobile-photo {
  display: block;
  margin: 40px -20px -40px;
  overflow: hidden;
  border-top: 4px solid var(--rn-rust);
}
.about-mobile-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1);
  transition: transform 0.4s;
}
.about-mobile-photo:hover img {
  transform: scale(1.05);
}
@media (min-width: 900px) and (orientation: landscape) {
  .about-mobile-photo { display: none; }
}

/* ─── Mobile: respect 1080x1350 photo ratio ─────────────────────── */
@media (max-width: 768px) {
  #hero { height: auto; aspect-ratio: 1080/1920; }
  .about-mobile-photo { height: auto; aspect-ratio: 1600/1068; }
  .weekly-img-col { height: auto; aspect-ratio: 1600/1068; }
  .weekly-img-col img { position: static; height: 100%; }
  .story-city { height: auto; aspect-ratio: 1600/1068; }
}

/* ─── Nav Renert logomark ────────────────────────────────────────── */
.nav-logo {
  line-height: 0;
  display: flex;
  align-items: center;
  height: 72px;
  overflow: hidden; /* clips any SVG overflow regardless of CSS height quirks */
  flex-shrink: 0;
}
.nav-logo-img {
  display: block;
  flex-shrink: 0;
  height: 40px !important;
  width: 40px !important;
  max-height: 40px !important;
  max-width: 40px !important;
  object-fit: contain;
  filter: brightness(0) invert(1);
  transition: filter 0.3s, opacity 0.3s;
}
#site-nav.scrolled .nav-logo-img { filter: none; }
.nav-logo-img { opacity: 1; }
#site-nav:not(.shop-nav) .nav-logo-img {
  height: 56px !important;
  width: 56px !important;
  max-height: 56px !important;
  max-width: 56px !important;
}

/* ─── Hero logo ──────────────────────────────────────────────────── */
.hero-logo-img {
  width: clamp(280px, 50vw, 560px);
  height: auto;
  display: block;
}
.hero-logo-svg {
  width: 100%;
  height: auto;
  display: block;
  filter: brightness(0) invert(1);
  overflow: visible;
}
.hero-logo-svg #FOX,
.hero-logo-svg #ORNAMENTS,
.hero-logo-svg #SECUNDARY_TEXT,
.hero-logo-svg #MAIN_TEXT {
  opacity: 0;
  clip-path: inset(0 100% 0 0);
  animation: heroLogoWipe 0.9s cubic-bezier(0.65,0,0.2,1) both;
}
.hero-logo-svg #FOX            { animation-delay: 0.1s; }
.hero-logo-svg #ORNAMENTS      { animation-delay: 0.45s; }
.hero-logo-svg #SECUNDARY_TEXT { animation-delay: 0.8s; }
.hero-logo-svg #MAIN_TEXT      { animation-delay: 1.15s; }

@keyframes heroLogoWipe {
  0%   { opacity: 1; clip-path: inset(0 100% 0 0); }
  1%   { opacity: 1; }
  100% { opacity: 1; clip-path: inset(0 0 0 0); }
}

/* ─── Footer logo ────────────────────────────────────────────────── */
/* Scoped to #footer so it outranks WooCommerce core's `.woocommerce-page img
   { height:auto }` (woocommerce-layout.css) on shop/cart/account pages –
   without that, the footer logo rendered at its intrinsic ~230px there. */
#footer .footer-logo-img {
  height: 144px; /* was 96px, +50% */
  width: auto;
  display: block;
  align-self: flex-start;
  filter: brightness(0) invert(1);
  margin-bottom: 20px;
  margin-left: 0;
  opacity: 0.9;
}
@media (max-width: 768px) {
  #footer .footer-logo-img {
    height: 86px;
    align-self: center;
    margin-left: auto;
    margin-right: auto;
  }
  .footer-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
}
.res-date-error {
  display: none;
  color: var(--rn-rust);
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.05em;
  margin-top: 6px;
  grid-column: 1 / -1;
}
/* Same-day "better call us" hint: advisory, not a rejection – muted, not rust. */
.res-date-error--advice { color: #6b6b6b; }
/* The phone number inside the note: rust, tappable, never split across lines
   (the digits also arrive joined by non-breaking spaces). */
.res-date-error a.res-tel-link {
  color: var(--rn-rust);
  white-space: nowrap;
  text-decoration: underline;
  text-underline-offset: 2px;
}

/* ─── Reservation date picker ─────────────────────────────────── */
.res-datepicker { position: relative; }
.res-datepicker__trigger {
  text-align: left;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.res-datepicker__trigger::after {
  content: '';
  width: 7px;
  height: 7px;
  border-right: 1.5px solid var(--rn-rust);
  border-bottom: 1.5px solid var(--rn-rust);
  transform: rotate(45deg);
  margin-bottom: 3px;
  flex-shrink: 0;
  transition: transform 0.2s;
}
.res-datepicker__trigger[aria-expanded="true"]::after { transform: rotate(225deg); margin-bottom: -2px; }
.res-datepicker__value--empty { color: rgba(12,12,12,0.25); }

.res-datepicker__pop {
  position: absolute;
  z-index: 30;
  top: calc(100% + 8px);
  left: 0;
  width: 300px;
  max-width: calc(100vw - 48px);
  background: var(--rn-paper);
  border: 1px solid rgba(12,12,12,0.12);
  box-shadow: 0 12px 40px rgba(12,12,12,0.16);
  padding: 16px;
}
.res-datepicker__pop[hidden] { display: none; }

.rdp-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.rdp-title {
  font-family: 'DM Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rn-ink);
}
.rdp-nav {
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: 20px;
  line-height: 1;
  color: var(--rn-rust);
  padding: 2px 8px;
}
.rdp-nav:disabled { color: rgba(12,12,12,0.18); cursor: default; }

.rdp-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.rdp-wd { margin-bottom: 6px; }
.rdp-wdh {
  text-align: center;
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(12,12,12,0.4);
  padding: 4px 0;
}
.rdp-days { gap: 2px; }
.rdp-cell { aspect-ratio: 1 / 1; }
.rdp-day {
  border: none;
  background: transparent;
  cursor: pointer;
  font-family: 'DM Mono', monospace;
  font-size: 13px;
  color: var(--rn-ink);
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, color 0.15s;
}
.rdp-day:hover { background: rgba(168,64,32,0.1); }
.rdp-day.is-today { box-shadow: inset 0 0 0 1px rgba(168,64,32,0.4); }
.rdp-day.is-selected,
.rdp-day.is-selected:hover { background: var(--rn-rust); color: var(--rn-paper); }
.rdp-day.is-disabled {
  color: rgba(12,12,12,0.2);
  cursor: default;
  text-decoration: line-through;
}
.rdp-day.is-disabled:hover { background: transparent; }
/* Fully-booked day (every slot at capacity): greyed like closed days but
   with a rust tint so "full" reads differently from "closed". */
.rdp-day.is-full {
  color: rgba(168,64,32,0.35);
  text-decoration: none;
}
/* Walk-in day: open and serving, but no bookings taken. Deliberately NOT
   disabled – greying it would read as "closed" to someone who could just have
   come in. Marked with a dot; picking it explains why, in the guest's words. */
.rdp-day.is-walkin {
  position: relative;
  color: rgba(12,12,12,0.55);
}
.rdp-day.is-walkin::after {
  content: '';
  position: absolute;
  bottom: 4px;
  left: 50%;
  transform: translateX(-50%);
  width: 3px;
  height: 3px;
  background: var(--rn-rust);
}
.rdp-day.is-walkin.is-selected { color: var(--rn-paper); }
.rdp-day.is-walkin.is-selected::after { background: var(--rn-paper); }
.rdp-empty { pointer-events: none; }

/* ─── Live-availability status ("checking… / couldn't check") ──── */
.res-avail-status {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.05em;
  color: var(--rn-mute);
  margin-top: 6px;
}
.res-avail-status.is-error { color: var(--rn-rust); }
.res-avail-status__retry {
  font: inherit;
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
  padding: 0;
}

/* ─── Reservation custom selects (time / guests) ──────────────── */
.res-select { position: relative; }
.res-select__native {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.res-select__trigger {
  text-align: left;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.res-select__trigger::after {
  content: '';
  width: 7px;
  height: 7px;
  border-right: 1.5px solid var(--rn-rust);
  border-bottom: 1.5px solid var(--rn-rust);
  transform: rotate(45deg);
  margin-bottom: 3px;
  flex-shrink: 0;
  transition: transform 0.2s;
}
.res-select__trigger[aria-expanded="true"]::after { transform: rotate(225deg); margin-bottom: -2px; }
.res-select__value--empty { color: rgba(12,12,12,0.25); }

.res-select__pop {
  position: absolute;
  z-index: 30;
  top: calc(100% + 8px);
  left: 0;
  width: 100%;
  min-width: 130px;
  max-height: 240px;
  overflow-y: auto;
  background: var(--rn-paper);
  border: 1px solid rgba(12,12,12,0.12);
  box-shadow: 0 12px 40px rgba(12,12,12,0.16);
  padding: 6px;
}
.res-select__pop[hidden] { display: none; }
.res-select__opt {
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  cursor: pointer;
  font-family: 'DM Mono', monospace;
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--rn-ink);
  padding: 9px 10px;
  transition: background 0.15s, color 0.15s;
}
.res-select__opt:hover { background: rgba(168,64,32,0.1); }
.res-select__opt.is-selected,
.res-select__opt.is-selected:hover { background: var(--rn-rust); color: var(--rn-paper); }

/* ─── Events ─────────────────────────────────────────────────────── */
#events {
  background: var(--rn-ink);
  border-top: 4px solid var(--rn-rust);
}
.events-list {
  max-width: 1200px;
  margin: 0 auto;
}
.event-row {
  display: grid;
  grid-template-columns: 96px 1fr;
  gap: 32px;
  align-items: start;
  padding: 28px 40px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  transition: background 0.15s;
}
.event-row:hover { background: rgba(255,255,255,0.03); }
@media (max-width: 768px) {
  .event-row { grid-template-columns: 72px 1fr; gap: 20px; padding: 20px; }
}
.event-date { padding-top: 2px; }
.event-name {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: 1.3rem;
  color: var(--rn-paper);
  letter-spacing: 0.03em;
  margin-bottom: 4px;
}
.event-desc { font-size: 0.85rem; color: rgba(255,255,255,0.65); margin-top: 3px; line-height: 1.5; }

/* Events heading block – consistent with other section headings */
.events-heading-wrap {
  padding: 56px 40px 32px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  max-width: 1200px;
  position: relative;
  z-index: 1;
}
.events-heading-wrap h2 {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3.5rem, 9vw, 5.5rem);
  letter-spacing: -0.02em;
  text-transform: uppercase;
  line-height: 0.9;
}
@media (max-width: 768px) {
  .events-heading-wrap { padding: 40px 20px 24px; }
  .events-heading-wrap h2 { text-align: left; }
}

/* ─── Carousel dot indicators ────────────────────────────────── */
.carousel-dots { display: none; }

@media (max-width: 768px) {
  .carousel-wrap { position: relative; }

  .carousel-dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 7px;
    position: absolute;
    bottom: 14px;
    left: 0;
    right: 0;
    z-index: 2;
    pointer-events: none;
  }
  .carousel-dots .dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255,255,255,0.45);
    cursor: pointer;
    transition: background 0.25s;
    flex-shrink: 0;
    pointer-events: auto;
  }
  .carousel-dots .dot.active {
    background: var(--rn-paper);
  }
}

/* ─── Open / Closed nav badge ────────────────────────────────── */
/* A <button> since 1.9.0 (tap shows the hours popover) – hence the resets. */
#nav-open-badge {
  display: none;
  align-items: center;
  gap: 5px;
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--rn-paper);
  transition: color 0.3s;
  background: none;
  border: 0;
  border-radius: 0;
  padding: 0;
  cursor: default;
}
#nav-open-badge.has-pop { cursor: pointer; }
/* Opening-hours popover – ink card under the nav, both nav states. */
#nav-hours-pop {
  position: absolute;
  top: calc(100% + 2px);
  right: 20px;
  z-index: 1001;
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: var(--rn-ink);
  color: var(--rn-paper);
  border: 2px solid var(--rn-ink);
  padding: 14px 18px;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  white-space: nowrap;
}
#nav-hours-pop[hidden] { display: none; }
#nav-hours-pop .nav-hours-pop__time { color: rgba(255,255,255,0.65); }
/* "Opens again Tuesday 10:00" – filled by main.js while the bar is closed. */
#nav-hours-pop .nav-hours-pop__next { display: block; margin-top: 6px; color: #E8926F; }
#nav-hours-pop .nav-hours-pop__next[hidden] { display: none; }
/* "Today 10:00 – 03:00" – only when an Opening Days row makes today differ from
   the usual week, so it should read as the exception it is. */
#nav-hours-pop .nav-hours-pop__today {
  display: block;
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid rgba(255,255,255,0.18);
  color: #E8926F;
}
#nav-hours-pop .nav-hours-pop__today[hidden] { display: none; }
#nav-open-badge::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #777;
  flex-shrink: 0;
  transition: background 0.3s;
}
#nav-open-badge.is-open {
  color: var(--rn-paper);
}
#nav-open-badge.is-open::before {
  background: #4CAF50;
}
#nav-open-badge.is-closed {
  color: rgba(255,255,255,0.45);
}
#nav-open-badge.is-soon {
  color: var(--rn-paper);
}
#nav-open-badge.is-soon::before {
  background: #E0A030;
}
#site-nav.scrolled #nav-open-badge { color: var(--rn-ink); }
#site-nav.scrolled #nav-open-badge.is-closed { color: rgba(0,0,0,0.4); }
#site-nav.scrolled #nav-open-badge.is-open { color: var(--rn-ink); }
#site-nav.scrolled #nav-open-badge.is-soon { color: var(--rn-ink); }
#nav-open-badge.loaded { display: flex; margin-right: 12px; }

/* ─── Testimonials ───────────────────────────────────────────── */
/* ── Testimonials ──────────────────────────────────────────────── */
#testimonials {
  background: var(--rn-paper);
  border-top: 4px solid var(--rn-rust);
}

/* Outer container: clips the scrolling strip */
.testimonials-wrap {
  overflow: hidden;
  padding-bottom: 56px;
  cursor: ew-resize;
}

/* Scrolling strip: animation driven by CSS @keyframes injected by JS */
.testimonials-grid {
  display: flex;
  flex-wrap: nowrap;
  touch-action: pan-y;
}

/* Cards – equal fixed width with right border on every card (incl. last clone) */
.testimonial-card {
  flex: 0 0 340px;
  padding: 52px 44px 44px;
  display: flex;
  flex-direction: column;
  border-right: 1px solid var(--rn-line);
  box-sizing: border-box;
}

.testimonial-stars {
  display: flex;
  gap: 3px;
  margin-bottom: 18px;
}
.testimonial-star {
  font-size: 16px;
  color: rgba(0,0,0,0.15);
  line-height: 1;
  opacity: 0;
  transform: scale(0.4);
  transition: none;
}
.testimonial-star.filled { color: var(--rn-rust); }

/* Star reveal – triggered by JS adding .stars-revealed to .testimonial-stars */
.testimonial-stars.stars-revealed .testimonial-star {
  opacity: 1;
  transform: scale(1);
  transition: opacity 0.25s ease, transform 0.25s cubic-bezier(0.34,1.56,0.64,1);
}
.testimonial-stars.stars-revealed .testimonial-star:nth-child(1) { transition-delay: 0.00s; }
.testimonial-stars.stars-revealed .testimonial-star:nth-child(2) { transition-delay: 0.08s; }
.testimonial-stars.stars-revealed .testimonial-star:nth-child(3) { transition-delay: 0.16s; }
.testimonial-stars.stars-revealed .testimonial-star:nth-child(4) { transition-delay: 0.24s; }
.testimonial-stars.stars-revealed .testimonial-star:nth-child(5) { transition-delay: 0.32s; }

.testimonial-text {
  flex: 1;                   /* grows to fill available space above the author line */
  font-size: 15px;
  line-height: 1.7;
  color: #1a1a1a;
  font-style: italic;
  margin-bottom: 18px;       /* space between text and the author divider line */
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.testimonial-author {
  padding-top: 12px;           /* space between line and name – tighter than text→line */
  border-top: 1px solid var(--rn-line);
  margin-top: auto;
}
.testimonial-name {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rn-ink);
}
.testimonial-title { display: block; font-size: 12px; color: var(--rn-mute); margin-top: 4px; }

@media (max-width: 768px) {
  .testimonials-wrap { padding-bottom: 40px; }
  .testimonial-card  { flex: 0 0 87vw; padding: 36px 24px 32px; }
}

@media (prefers-reduced-motion: reduce) {
  .testimonials-grid { transition: none !important; }
  /* JS reveals the stars up front here (no marquee runs) – show them with no animation. */
  .testimonial-star { transition: none !important; }
}

/* ─── Focus-visible: keyboard navigation indicators ──────────────────── */
/* Inputs use border-bottom change (existing :focus rule); suppress ring. */
.form-input:focus-visible,
.form-select:focus-visible,
.form-textarea:focus-visible { outline: none; }
/* (The generic :focus-visible ring lives once, in the a11y helpers at the top.) */

/* ─── Dish rows used as interactive buttons ──────────────────────────── */
.menu-item-row[role="button"],
.carte-item-row--exp { cursor: pointer; }

/* ─── Reduced-motion: disable JS-driven animations via CSS hint ──────── */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .fox-layer,
  .story-ghost-text { transition: none !important; animation: none !important; }
}


/* ═══════════════════════════════════════════════════════════════════════
   INNER PAGES  (page.php · single.php · woocommerce.php · 404.php)
   ═══════════════════════════════════════════════════════════════════════ */

.renert-page {
  background: var(--rn-paper);
  min-height: 60vh;
  /* 72px nav + 48px breathing room */
  padding: 120px 0 100px;
}

.renert-page__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 40px;
}

.renert-page__title {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(2rem, 5vw, 3.5rem);
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rn-ink);
  margin: 0 0 32px;
}

.renert-page__content {
  font-family: 'Barlow', sans-serif;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--rn-ink);
}

.renert-page__content p + p { margin-top: 1em; }

/* 404 */
.renert-404-code {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(6rem, 20vw, 14rem);
  color: var(--rn-rust);
  line-height: 1;
  margin: 0 0 8px;
}

.renert-404-msg {
  font-family: 'Barlow', sans-serif;
  font-size: 1rem;
  color: #555;
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0 0 8px;
}

.renert-back-home {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--rn-ink);
  text-decoration: none;
  margin-top: 32px;
  transition: color .2s;
}

.renert-back-home:hover { color: var(--rn-rust); }

/* WooCommerce shop – extra top band mirroring homepage sections */
.renert-page--shop { border-top: 4px solid var(--rn-ink); }

/* ─── Legal pages (page-legal.php: Legal Notice · Privacy · Terms ·
   Shipping & Returns · Reservation Policy) – EN | FR toggle ─────────── */
.renert-page--legal .renert-page__inner { max-width: 840px; }

.legal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  border-bottom: 4px solid var(--rn-ink);
  padding-bottom: 20px;
  margin-bottom: 48px;
}

.legal-kicker {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--rn-rust);
}

.legal-langswitch { display: flex; border: 1px solid var(--rn-ink); }
.legal-langswitch button {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: .12em;
  padding: 9px 16px;
  color: var(--rn-ink);
  transition: background .15s, color .15s;
}
.legal-langswitch button.is-active { background: var(--rn-ink); color: var(--rn-paper); }

/* Toggle behaviour: FR hidden while EN active and vice versa. The .legal-js
   class is added by the template's script – without JS both languages render
   stacked (divider below) and the switch stays hidden. */
.legal-content.legal-js .legal-lang[lang="fr"] { display: none; }
.legal-content.legal-js.is-fr .legal-lang[lang="fr"] { display: block; }
.legal-content.legal-js.is-fr .legal-lang[lang="en"] { display: none; }
.legal-content:not(.legal-js) .legal-lang[lang="fr"] {
  margin-top: 72px;
  border-top: 4px solid var(--rn-ink);
  padding-top: 48px;
}

/* Legal typography – content is plain h1/h2/p/ul/address inside .legal-lang */
.legal-lang h1 {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(2.4rem, 5vw, 3.6rem);
  line-height: 1.02;
  text-transform: uppercase;
  margin: 0 0 10px;
}
.legal-lang .legal-updated {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #777;
  margin: 0 0 20px;
}
.legal-lang .legal-prevail {
  font-size: .9rem;
  color: #555;
  border-left: 3px solid var(--rn-rust);
  padding: 2px 0 2px 16px;
  margin: 0 0 40px;
}
.legal-lang h2 {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: 1.45rem;
  line-height: 1.1;
  text-transform: uppercase;
  margin: 44px 0 14px;
  padding-top: 24px;
  border-top: 1px solid #e2e2e2;
}
.legal-lang h3 {
  font-family: 'Barlow', sans-serif;
  font-weight: 700;
  font-size: 1rem;
  margin: 26px 0 8px;
}
.legal-lang p { margin: 0 0 1em; }
.legal-lang ul { margin: 0 0 1.2em; padding-left: 20px; }
.legal-lang li { margin: 0 0 .4em; }
.legal-lang li::marker { color: var(--rn-rust); }
.legal-lang address {
  font-style: normal;
  line-height: 1.6;
  margin: 0 0 1.2em;
  padding: 14px 18px;
  border-left: 3px solid var(--rn-ink);
  background: var(--rn-panel);
}
.legal-lang a { color: var(--rn-rust); }
.legal-lang a:hover { color: var(--rn-rust-dark); }

@media (max-width: 640px) {
  .legal-head { flex-direction: column; align-items: flex-start; gap: 16px; }
}

/* Reservation form – policy acknowledgment under the submit button
   (rendered by Renert Reservations once a policy page URL is set).
   The reservation section is dark, so the note reads quiet grey. */
.res-policy-note {
  font-size: 12px;
  line-height: 1.6;
  color: rgba(255, 255, 255, .55);
  margin-top: 14px;
}
.res-policy-note a { color: rgba(255, 255, 255, .8); }
.res-policy-note a:hover { color: var(--rn-paper); }

@media (max-width: 768px) {
  .renert-page { padding: 100px 0 80px; }
  .renert-page__inner { padding: 0 20px; }
}


/* Skip-to-content link – visually hidden until focused (keyboard nav / screen readers) */
.renert-skip-link {
  position: absolute;
  top: -200%;
  left: 0;
  z-index: 99999;
  padding: 12px 24px;
  background: var(--rn-ink);
  color: var(--rn-paper);
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  text-decoration: none;
  transition: top .15s;
}
.renert-skip-link:focus {
  top: 0;
}

/* ─────────────────────────────────────────────────────────────────────────
   WooCommerce styling has moved to css/woocommerce.css – a dedicated,
   token-based design system enqueued only on shop / product / cart /
   checkout / account pages (see functions.php → renert_is_wc()).
   ───────────────────────────────────────────────────────────────────────── */

/* ─── Inline login modal ─────────────────────────────────────────────── */
#renert-account-overlay {
  position: fixed; inset: 0;
  background: rgba(12,12,12,0.6);
  backdrop-filter: blur(2px);
  opacity: 0; visibility: hidden;
  transition: opacity 0.25s, visibility 0.25s;
  z-index: 200;
}
#renert-account-overlay.open { opacity: 1; visibility: visible; }

#renert-account-modal {
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, -46%);
  width: min(92vw, 400px);
  background: var(--rn-paper);
  color: var(--rn-ink);
  z-index: 201;
  padding: 40px;
  opacity: 0; visibility: hidden;
  transition: opacity 0.25s, transform 0.25s, visibility 0.25s;
  box-shadow: 0 30px 80px rgba(0,0,0,0.3);
}
#renert-account-modal.open { opacity: 1; visibility: visible; transform: translate(-50%, -50%); }
.renert-account__close {
  position: absolute; top: 12px; right: 12px;
  width: 32px; height: 32px;
  font-size: 15px; color: var(--rn-ink);
  transition: color 0.2s;
}
.renert-account__close:hover { color: var(--rn-rust); }
.renert-account__kicker {
  font-family: 'DM Mono', monospace;
  font-size: 10px; letter-spacing: 0.25em; text-transform: uppercase;
  color: var(--rn-rust);
}
#renert-account-modal h2 {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900; font-size: 2rem; line-height: 1;
  text-transform: uppercase;
  margin: 6px 0 22px;
}
#renert-login-form label {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase;
  margin: 14px 0 6px;
}
#renert-login-form input[type="text"],
#renert-login-form input[type="password"] {
  width: 100%; padding: 12px 14px;
  border: 1px solid #ddd; background: var(--rn-paper);
  font-family: inherit; font-size: 15px;
}
#renert-login-form input[type="text"]:focus,
#renert-login-form input[type="password"]:focus { outline: none; border-color: var(--rn-rust); }
/* Scoped under #renert-login-form (1,1,1) so it out-specifies the form's
   `#renert-login-form label` rule (1,0,1) without !important. */
#renert-login-form label.renert-account__remember {
  display: flex; align-items: center; gap: 8px;
  margin: 14px 0 0;
  font-family: 'Barlow', sans-serif;
  font-size: 13px; letter-spacing: 0; text-transform: none;
}
.renert-account__remember input { width: auto; }
.renert-account__error { color: var(--rn-rust); font-size: 13px; margin: 12px 0 0; }
.renert-account__submit {
  width: 100%; margin-top: 20px; padding: 14px;
  background: var(--rn-rust); color: var(--rn-paper);
  font-family: 'DM Mono', monospace;
  font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
  transition: background 0.2s;
}
.renert-account__submit:hover { background: var(--rn-rust-dark); }
.renert-account__submit:disabled { opacity: 0.6; cursor: default; }
.renert-account__lost { display: inline-block; margin-top: 16px; font-size: 12px; color: #666; }
.renert-account__lost:hover { color: var(--rn-rust); }
.renert-account__alt {
  margin-top: 18px; padding-top: 18px;
  border-top: 1px solid #eee; font-size: 13px;
}
.renert-account__alt a { color: var(--rn-rust); }
body.account-open { overflow: hidden; }
@media (prefers-reduced-motion: reduce) {
  #renert-account-overlay, #renert-account-modal { transition: none; }
}




/* ─── Events section (markup from the Renert Events plugin) ──────────────
   The plugin used to inline these styles; only the configurable accent colour
   still travels inline, as the --revt-accent custom property. */
#events { --revt-accent: var(--rn-rust); }
.events-heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  font-size: clamp(3rem, 8vw, 5.5rem);
  color: var(--rn-paper);
  letter-spacing: -0.02em;
  line-height: 0.9;
  text-transform: uppercase;
  margin: 0;
}
.events-heading-accent { color: var(--revt-accent, var(--rn-rust)); }
.events-intro {
  margin-top: 20px;
  font-size: 0.9rem;
  color: rgba(255, 255, 255, 0.65);
  max-width: 36rem;
  line-height: 1.6;
}
.event-date-day {
  display: block;
  font-size: 2rem;
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 900;
  color: var(--rn-paper);
  line-height: 1;
}
.event-date-month {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.3em;
  color: var(--revt-accent, var(--rn-rust));
  text-transform: uppercase;
  margin-top: 2px;
}
.event-date-weekday {
  display: block;
  font-family: 'DM Mono', monospace;
  font-size: 9px;
  color: rgba(255, 255, 255, 0.65);
  letter-spacing: 0.2em;
  margin-top: 2px;
}


/* ── 404 quick links ─────────────────────────────────────────── */
.renert-404-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 28px;
}
.renert-404-links a {
  padding: 12px 20px;
  border: 1px solid var(--rn-ink);
  color: var(--rn-ink);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.renert-404-links a:hover,
.renert-404-links a:focus-visible {
  background: var(--rn-ink);
  color: var(--rn-paper);
}

/* Product search on the 404 page (dead product URLs land there). */
.renert-404-search { margin: 28px 0 8px; }
.renert-404-search .rnwc-filter__search {
  margin-left: 0;
  width: 100%;
  max-width: 340px;
}
@media (max-width: 768px) {
  /* ≥16px: no iOS focus zoom (same rule as the filter bars). */
  .renert-404-search .rnwc-filter__search { font-size: 16px; }
  .renert-404-search .rnwc-filter__search::placeholder { font-size: 11px; }
}

/* ─── UX round: filter search · reservation slot alternatives · confirmation
       calendar buttons · drawer/checkout payment reassurance ─────────────── */

/* Type-to-filter box in the product filter bar (shop, homepage strip, Also
   Nice). Sits at the right end of the pill row on desktop; on phones it is
   collapsed behind the magnifier toggle and expands to a full-width row. */
.rnwc-filter__search {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--rn-ink);
  background: var(--rn-paper);
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  padding: 10px 14px;
  margin-left: auto;
  min-width: 170px;
  appearance: none;
  -webkit-appearance: none;
}
.rnwc-filter__search:focus-visible { outline: 2px solid var(--rn-rust); outline-offset: 2px; }
.rnwc-filter__search::placeholder { color: rgba(12,12,12,0.4); letter-spacing: 0.12em; text-transform: uppercase; }
/* Magnifier toggle – phones only; initRnwcFilters() flips .is-search-open. */
.rnwc-filter__search-toggle { display: none; }
@media (max-width: 768px) {
  .rnwc-filter__search-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    align-self: stretch;
    width: 38px;
    color: var(--rn-ink);
    background: var(--rn-paper);
    border: 2px solid var(--rn-ink);
    border-radius: 0;
    padding: 0;
    cursor: pointer;
    transition: background .15s, color .15s;
  }
  .rnwc-filter__search-toggle:focus-visible { outline: 2px solid var(--rn-rust); outline-offset: 2px; }
  .rnwc-filter.is-search-open .rnwc-filter__search-toggle { background: var(--rn-ink); color: var(--rn-paper); }
  /* Scoped to bars: the same input class is reused standalone on the 404
     page, where it must stay visible. */
  .rnwc-filter .rnwc-filter__search { display: none; }
  .rnwc-filter.is-search-open .rnwc-filter__search {
    display: block;
    margin-left: 0;
    flex: 1 1 100%;
    min-width: 0;
    /* Typed text must stay ≥16px or iOS Safari auto-zooms the page on
       focus – so the box is slimmed via padding, and the placeholder gets
       its own small size below. */
    font-size: 16px;
    padding: 5px 10px;
  }
  .rnwc-filter.is-search-open .rnwc-filter__search::placeholder {
    font-size: 11px;
  }
}
.rnwc-filter__empty {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #666;
  padding: 28px 40px;
  margin: 0;
}
@media (max-width: 768px) { .rnwc-filter__empty { padding: 20px; } }

/* Reservation: nearest-free-time chips shown when the wanted slot is full. */
.res-slot-alts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
}
.res-slot-alts__label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rn-rust);
}
.res-slot-alt {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--rn-ink);
  background: var(--rn-paper);
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  padding: 7px 12px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.res-slot-alt:hover { background: var(--rn-ink); color: var(--rn-paper); }

/* Waitlist mini-form inside the slot-alternatives box (reservations ≥1.11.0,
   settings-gated): full slot → email field + notify button. Dark column. */
.res-waitlist { flex: 1 1 100%; margin-top: 14px; }
.res-waitlist__offer {
  font-family: 'DM Mono', monospace;
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.72);
  margin: 0 0 8px;
}
.res-waitlist__row { display: flex; gap: 8px; }
.res-waitlist__email {
  flex: 1 1 auto;
  min-width: 0;
  font-family: 'DM Mono', monospace;
  font-size: 16px; /* ≥16px: no iOS focus zoom */
  color: var(--rn-paper);
  background: transparent;
  border: 2px solid rgba(255,255,255,0.35);
  border-radius: 0;
  padding: 10px 12px;
}
.res-waitlist__email::placeholder { color: rgba(255,255,255,0.4); }
.res-waitlist__email:focus-visible { outline: 2px solid var(--rn-rust); outline-offset: 2px; }
.res-waitlist__btn {
  flex: 0 0 auto;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rn-paper);
  background: var(--rn-rust);
  border: 0;
  border-radius: 0;
  padding: 10px 16px;
  cursor: pointer;
  transition: background 0.2s;
}
.res-waitlist__btn:hover { background: var(--rn-rust-dark); }
.res-waitlist__btn:disabled { opacity: 0.6; cursor: default; }
.res-waitlist__msg {
  font-size: 13px;
  color: #9ecfa5;
  margin: 8px 0 0;
}
.res-waitlist__msg.is-error { color: #E8926F; }
.res-waitlist__msg[hidden] { display: none; }

/* Reservation confirmation: add-to-calendar buttons (auto-confirmed bookings). */
.res-confirm-cal { margin-top: 28px; }
.res-confirm-cal__label {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #666;
  margin: 0 0 12px;
}
.res-confirm-cal__btns { display: flex; flex-wrap: wrap; gap: 10px; }
.res-cal-btn {
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rn-ink);
  background: var(--rn-paper);
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  padding: 12px 16px;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.res-cal-btn:hover { background: var(--rn-ink); color: var(--rn-paper); }

/* Payment methods + delivery estimate under the checkout buttons
   (cart drawer footer + checkout page). */
.rnwc-paytrust { margin-top: 14px; text-align: center; }
.rnwc-paytrust__note {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #666;
  margin: 0 0 8px;
}
.rnwc-paytrust__methods {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  margin: 0;
}
.rnwc-paytrust__chip {
  font-family: 'DM Mono', monospace;
  font-size: 8.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rn-ink);
  border: 1px solid rgba(12,12,12,0.35);
  padding: 4px 7px;
  white-space: nowrap;
}

/* ─── Print: menu only ────────────────────────────────────────────────
   Cmd/Ctrl+P on the home page yields a clean menu sheet: weekly menu +
   carte, black on white, everything a tap would reveal opened. All other
   sections and the site chrome are dropped. */
@media print {
  #site-nav, #mobile-menu, #nav-hours-pop, #cart-drawer, #cart-overlay,
  #top, #about, #reservation, #testimonials, #story, #events, #shop,
  #footer, .footer-cta, .renert-skip-link, .rnwc-filter, .menu-tabs,
  .fox-layer { display: none !important; }
  body { background: var(--rn-paper) !important; color: #000 !important; }
  /* Open what normally needs a tap. */
  .menu-items-panel { display: block !important; }
  .item-allergens { display: block !important; max-height: none !important; opacity: 1 !important; margin-top: 6px !important; }
  /* Scroll-in animations must not print invisible. */
  .reveal { opacity: 1 !important; transform: none !important; }
  section { border: 0 !important; }
  a { text-decoration: none; }
}

/* ─── Weekly-menu newsletter signup (renert-menu ≥ 1.26.0, settings-gated) ── */
.weekly-newsletter {
  max-width: 560px;
  margin: 0 auto;
  padding: 8px 24px 56px;
  text-align: center;
}
.weekly-newsletter__heading {
  font-family: 'Barlow Condensed', sans-serif;
  font-weight: 700;
  font-size: clamp(20px, 3vw, 26px);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--rn-ink);
  margin: 0 0 6px;
}
.weekly-newsletter__text { font-size: 14px; color: #555; margin: 0 0 16px; }
.weekly-newsletter__form { display: flex; gap: 8px; }
.weekly-newsletter__email {
  flex: 1 1 auto;
  min-width: 0;
  font-family: 'DM Mono', monospace;
  font-size: 16px; /* ≥16px: no iOS focus zoom */
  color: var(--rn-ink);
  background: var(--rn-paper);
  border: 2px solid var(--rn-ink);
  border-radius: 0;
  padding: 11px 14px;
}
.weekly-newsletter__email::placeholder { color: rgba(12,12,12,0.4); letter-spacing: 0.08em; }
.weekly-newsletter__email:focus-visible { outline: 2px solid var(--rn-rust); outline-offset: 2px; }
.weekly-newsletter__hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.weekly-newsletter__btn {
  flex: 0 0 auto;
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--rn-paper);
  background: var(--rn-rust);
  border: 0;
  border-radius: 0;
  padding: 11px 20px;
  cursor: pointer;
  transition: background 0.2s;
}
.weekly-newsletter__btn:hover { background: var(--rn-rust-dark); }
.weekly-newsletter__btn:disabled { opacity: 0.6; cursor: default; }
.weekly-newsletter__consent {
  font-family: 'DM Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.08em;
  color: var(--rn-mute);
  margin: 10px 0 0;
}
.weekly-newsletter__msg { font-size: 14px; color: #2e7d32; margin: 12px 0 0; }
.weekly-newsletter__msg.is-error { color: var(--rn-rust); }
.weekly-newsletter__msg[hidden], .weekly-newsletter__form[hidden] { display: none; }
@media (max-width: 480px) {
  .weekly-newsletter__form { flex-direction: column; }
}

/* Print (menu sheet): the newsletter signup is chrome, not menu content. */
@media print {
  .weekly-newsletter { display: none !important; }
}

/* ═══════════════════════════════════════════════════════════════════════
   NAV BADGE – next opening in the badge itself
   The popover already knew "Opens again Tuesday 10:00"; while the bar is
   closed the short form now rides in the badge, where it is read without a
   tap. Dropped on narrow screens, where the nav has no room for it.
   ═══════════════════════════════════════════════════════════════════════ */
.nav-badge__next {
  display: none;
  margin-left: 7px;
  padding-left: 7px;
  border-left: 1px solid currentColor;
  opacity: 0.75;
  font-weight: 500;
}
@media (min-width: 1000px) {
  #nav-open-badge.is-closed .nav-badge__next,
  #nav-open-badge.is-soon .nav-badge__next { display: inline; }
}

/* ═══════════════════════════════════════════════════════════════════════
   RESERVATION – time & guest chips
   The two fields that decide the booking are chips, not dropdowns: the
   availability ("Fully booked", "2 left") is the point, and it was hidden
   behind a tap. Same ink/rust language as the product size pills.
   ═══════════════════════════════════════════════════════════════════════ */
.res-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 4px;
}

.res-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  min-width: 62px;
  padding: 9px 12px;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.25);
  color: var(--rn-paper);
  font-family: 'DM Mono', monospace;
  font-size: 13px;
  line-height: 1.1;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.res-chip:hover:not(:disabled) { border-color: var(--rn-paper); }
.res-chip.is-active {
  background: var(--rn-rust);
  border-color: var(--rn-rust);
  color: var(--rn-paper);
}
.res-chip:disabled,
.res-chip.is-full {
  opacity: 0.45;
  cursor: not-allowed;
  text-decoration: line-through;
}
.res-chip__meta {
  font-size: 9px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.75;
}
.res-chip.is-active .res-chip__meta { opacity: 0.9; }

/* The form column is white; only the info column is dark. */
.res-form-col .res-chip { border-color: #D9D9D9; color: var(--rn-ink); }
.res-form-col .res-chip:hover:not(:disabled) { border-color: var(--rn-ink); }
.res-form-col .res-chip.is-active { background: var(--rn-rust); border-color: var(--rn-rust); color: var(--rn-paper); }

@media (max-width: 480px) {
  .res-chip { min-width: 56px; padding: 8px 10px; font-size: 12px; }
}

/* "Changing your table for …" – the note above a form opened from a guest's
   own change link. */
.res-change-note {
  margin: 0 0 18px;
  padding: 12px 14px;
  border-left: 3px solid var(--rn-rust);
  background: #FBF6F3;
  font-size: 13px;
  line-height: 1.55;
  color: var(--rn-ink);
}

/* "Book another date" – replaces the confirmation's 12-second self-revert. */
.res-confirm-again {
  display: inline-block;
  margin-top: 22px;
  padding: 11px 22px;
  background: transparent;
  border: 1px solid var(--rn-ink);
  color: var(--rn-ink);
  font-family: 'DM Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.res-confirm-again:hover { background: var(--rn-ink); color: var(--rn-paper); }

/* ═══════════════════════════════════════════════════════════════════════
   SHOP ARCHIVE – server-side filter bar + toolbar
   On the shop and the category/collection archives the pills are LINKS
   carrying WooCommerce's own query vars, so filtering works on every page
   of a paginated archive (and with JavaScript off). They keep the exact
   look of the client-side pills used on the homepage strips.
   ═══════════════════════════════════════════════════════════════════════ */
a.rnwc-filter__pill {
  display: inline-block;
  text-decoration: none;
  line-height: 1;
}
a.rnwc-filter__pill:hover { color: var(--rn-paper); }
a.rnwc-filter__pill--tag:hover { color: var(--rn-paper); }

/* Collection-hop strip on a collection archive: links, not filters – the only
   place in the site that lists collections, since the nav lists categories. */
.rnwc-collnav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 16px 40px 0;
  background: var(--rn-paper);
}
@media (max-width: 768px) {
  .rnwc-collnav {
    padding: 12px 20px 0;
    gap: 6px;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-right: 44px;
    -webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 36px), transparent 100%);
    mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 36px), transparent 100%);
  }
  .rnwc-collnav::-webkit-scrollbar { display: none; }
}

/* Reviews panel of a product without reviews – an invitation, not a dead end.
   WooCommerce prints the notice itself (its text is swapped by the gettext
   filter in functions.php), so this styles WooCommerce's own element. */
.woocommerce-noreviews {
  margin: 0 0 18px;
  font-size: 0.95rem;
  color: #555;
}

/* ═══════════════════════════════════════════════════════════════════════
   SECTION / LAYOUT MODIFIERS
   Replaces the inline style="…" attributes the section templates used to
   carry, so a colour or spacing change is one edit here instead of a hunt
   through the templates.
   ═══════════════════════════════════════════════════════════════════════ */
.section--paper { background: var(--rn-paper); border-top: 4px solid var(--rn-ink); }
.section--rust-edge { border-top-color: var(--rn-rust); }

/* Bands sitting on a dark section: hairline rule instead of the ink block. */
.section-band--dark { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.section-band--plain { background: transparent; }
.section-band .sub--dark { color: rgba(255, 255, 255, 0.6); font-size: 9px; }

/* Hero */
.bilingual--centered { align-items: center; text-align: center; }
.hero-cta--rust  { color: var(--rn-rust); }
.hero-cta--muted { color: rgba(255, 255, 255, 0.65); }
.hero-cta .line--24 { width: 24px; }
.hero-cta .line--16 { width: 16px; }

/* Story */
.story-attribution { margin-top: 10px; }

/* Footer grid */
.footer-address { margin-top: 28px; }
.info-label--spaced { margin-bottom: 20px; }
.info-label--spaced-sm { margin-bottom: 12px; }

/* Shop empty state (no products found) */
.woocommerce-no-products-found { padding: 48px 40px 64px; }
@media (max-width: 768px) { .woocommerce-no-products-found { padding: 40px 20px 56px; } }
