/* ==========================================================================
   Nirvana - brand component styles
   Design tokens (colors, fonts, spacing, type scale) come from theme.json.
   This sheet adds the component-level polish the original React site had:
   cards, badges, hero motion, navbar, showcase, menu tabs, reviews marquee,
   gallery, reserve panel, page hero, footer.
   Class hooks (nv-*) are applied to core blocks inside the patterns, so the
   blocks stay fully editable in Gutenberg while keeping the brand look.
   ========================================================================== */

:root {
  --nv-base: #0b182e;
  --nv-navy: #091428;
  --nv-surface: #122440;
  --nv-surface2: #182d4e;
  --nv-paper: #f4f7fc;
  --nv-mist: #9fb1cc;
  --nv-stone: #5b6678;
  --nv-ink: #0a1424;
  --nv-gold: #cda24c;
  --nv-goldhi: #e6c878;
  --nv-border: rgba(255, 255, 255, 0.09);
  --nv-maxw: 1320px;
  --nv-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Scrollbar - brand tinted */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: var(--nv-base); }
::-webkit-scrollbar-thumb { background: #2a3f63; border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: #38507a; }

:focus-visible {
  outline: 2px solid var(--nv-gold);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Keep fixed navbar from being hidden behind scroll anchors */
:where(.wp-site-blocks) { overflow-x: clip; }

/* --------------------------------------------------------------------------
   Typography helpers
   -------------------------------------------------------------------------- */
.nv-eyebrow {
  font-size: 0.875rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--nv-gold) !important;
  margin: 0 0 1rem;
}
.nv-lead { color: var(--nv-mist) !important; font-size: 1.125rem; line-height: 1.625; }
.nv-muted { color: var(--nv-mist) !important; }
.has-gold-accent, .nv-gold { color: var(--nv-gold) !important; }

/* Constrain inner content like the original 1320px container */
.nv-inner > .wp-block-group__inner-container,
.nv-inner { max-width: var(--nv-maxw); margin-inline: auto; }

/* Section vertical rhythm (TSX py-28 -> lg:py-36 = 7rem -> 9rem) */
.nv-section { padding-block: clamp(7rem, 9vw, 9rem); }

/* --------------------------------------------------------------------------
   Buttons (pills) - gold solid + outline
   -------------------------------------------------------------------------- */
.wp-block-button__link {
  border-radius: 9999px;
  font-weight: 600;
  letter-spacing: 0;
  transition: all 0.25s var(--nv-ease);
  box-shadow: 0 12px 30px -12px rgba(205, 162, 76, 0.4);
}
.wp-block-button__link:hover { transform: translateY(-1px); }

.is-style-nv-outline .wp-block-button__link,
.wp-block-button.is-style-nv-outline .wp-block-button__link {
  background: rgba(255, 255, 255, 0.05) !important;
  color: var(--nv-paper) !important;
  border: 1px solid rgba(255, 255, 255, 0.15);
  box-shadow: none;
}
.is-style-nv-outline .wp-block-button__link:hover {
  border-color: rgba(205, 162, 76, 0.4);
  background: rgba(255, 255, 255, 0.1) !important;
}

/* --------------------------------------------------------------------------
   Card group styles
   -------------------------------------------------------------------------- */
.is-style-nv-card {
  background: var(--nv-surface);
  border: 1px solid var(--nv-border);
  border-radius: 1rem;
  box-shadow: 0 20px 50px -30px rgba(0, 0, 0, 0.6);
  overflow: hidden;
  transition: transform 0.3s var(--nv-ease), border-color 0.3s var(--nv-ease), box-shadow 0.3s var(--nv-ease);
}
.is-style-nv-card:hover {
  border-color: rgba(205, 162, 76, 0.3);
  box-shadow: 0 26px 60px -30px rgba(0, 0, 0, 0.7);
}
/* Flex-column cards (inside columns) fill their column height. Grid cards
   (.nv-grid-3 / .nv-features) must NOT use height:100% - a percentage height on
   a grid item mis-sizes the row track and the card overflows into the row below;
   they're equalized by the grid's align-items:stretch instead. */
.wp-block-columns > .wp-block-column > .nv-flatcard { height: 100%; }
.is-style-nv-glass {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 1rem;
  backdrop-filter: blur(12px);
}

/* Flat card: a Group(is-style-nv-card nv-flatcard) whose direct children are
   individually-editable core blocks (Image flush to the edges, text padded).
   Lets every row/element stay its own block - no inner wrapper group needed. */
.nv-flatcard { padding: 0; overflow: hidden; display: flex; flex-direction: column; height: 100%; position: relative; }
/* Tag pill overlaid on the image top-left (like the original), still its own editable block */
.nv-flatcard > .nv-tag {
  position: absolute; top: 1rem; left: 1rem; z-index: 2;
  margin: 0 !important; padding: 0.3rem 0.85rem !important;
}
/* The CTA link at the bottom of a card reads as a clear gold action */
.nv-flatcard .nv-cta { font-weight: 600; }
.nv-flatcard .nv-cta a { color: var(--nv-gold) !important; text-decoration: none; }
.nv-flatcard > .wp-block-image,
.nv-flatcard > figure.wp-block-image { margin: 0; width: 100%; }
.nv-flatcard > .wp-block-image img,
.nv-flatcard figure.wp-block-image img {
  border-radius: 0; display: block; width: 100%; height: auto;
  aspect-ratio: 16 / 11; object-fit: cover;
  transition: transform 0.5s var(--nv-ease);
}
.nv-flatcard > :not(figure) { padding-left: 1.5rem; padding-right: 1.5rem; margin-block: 0.35rem; }
.nv-flatcard > :not(figure):first-child { padding-top: 1.5rem; }
.nv-flatcard > :not(figure):last-child { padding-bottom: 1.5rem; margin-top: auto; }
.nv-flatcard:hover .wp-block-image img { transform: scale(1.05); }
/* Card headings stay small & clean (not the big section size) */
.nv-flatcard > .wp-block-heading,
.nv-flatcard > h3 { font-size: 1.15rem !important; line-height: 1.3; margin-block: 0.35rem; font-weight: 500; }
.nv-flatcard > .wp-block-heading:first-of-type { padding-top: 1.4rem; }
.nv-flatcard .nv-muted { font-size: 0.85rem; line-height: 1.6; }
/* Catering feature titles match TSX text-lg (1.125rem) */
.nv-features .wp-block-heading { font-size: 1.125rem !important; font-weight: 500; }
.nv-features .nv-muted { font-size: 0.875rem; line-height: 1.625; }
.nv-flatcard > .wp-block-buttons { padding-bottom: 1.5rem; margin-top: auto; padding-top: 0.5rem; }
/* Gold text-link CTA at the bottom of a card (matches the original design) */
.nv-cta { margin-top: auto; padding-top: 0.6rem; }
.nv-cta, .nv-cta a { color: var(--nv-gold) !important; text-decoration: none; font-weight: 600; }
.nv-cta a:hover { color: var(--nv-goldhi) !important; }

/* Safety: any image in our sections is always visible */
.nv-inner .wp-block-image img,
.nv-section .wp-block-image img { max-width: 100%; height: auto; }

/* Review card as flat editable blocks */
.nv-reviewcard { padding: 2rem; }
.nv-reviewcard > * { margin-block: 0.5rem; }

/* Signature row (two-column) brand spacing & alignment */
.nv-sig { align-items: center; gap: 2.5rem; margin-block: 2.5rem; }
.nv-sig .wp-block-image { margin: 0; }
.nv-sig .wp-block-image img { width: 100%; border-radius: 1rem; display: block; aspect-ratio: 4 / 3; object-fit: cover; }
.nv-sig .wp-block-column:last-child { padding: 0; }

.is-style-nv-rounded img { border-radius: 1rem; }

/* Image hover zoom inside cards */
.nv-zoom { overflow: hidden; }
.nv-zoom img { transition: transform 0.5s var(--nv-ease); display: block; }
.nv-card-link:hover .nv-zoom img,
.is-style-nv-card:hover .nv-zoom img { transform: scale(1.05); }

/* --------------------------------------------------------------------------
   Badges & tags
   -------------------------------------------------------------------------- */
.nv-tag {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 500;
  background: rgba(9, 20, 40, 0.9);
  color: var(--nv-gold);
  backdrop-filter: blur(6px);
}
.nv-tag--gold { background: var(--nv-gold); color: var(--nv-ink); }
.nv-tag--soft { background: rgba(205, 162, 76, 0.15); color: var(--nv-gold); }
.nv-tag--navy { background: var(--nv-navy); color: var(--nv-paper); }

.nv-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1rem;
  border-radius: 9999px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.05);
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--nv-mist);
  backdrop-filter: blur(6px);
}
.nv-badge-halal {
  display: inline-block;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  border: 1px solid rgba(205, 162, 76, 0.3);
  background: rgba(205, 162, 76, 0.1);
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--nv-gold);
}

/* --------------------------------------------------------------------------
   Reveal-on-scroll
   -------------------------------------------------------------------------- */
.nv-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.8s var(--nv-ease), transform 0.8s var(--nv-ease);
  will-change: opacity, transform;
}
.nv-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .nv-reveal { opacity: 1; transform: none; transition: none; }
}

/* Gutenberg editor canvas must stay directly editable. Front-end motion and
   decorative overlays should never hide or intercept blocks while editing. */
.editor-styles-wrapper .nv-reveal,
.block-editor-writing-flow .nv-reveal {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  will-change: auto !important;
}

.editor-styles-wrapper .nv-hero .wp-block-cover__background,
.editor-styles-wrapper .nv-hero .wp-block-cover__gradient-background,
.editor-styles-wrapper .nv-hero .wp-block-cover__video-background,
.editor-styles-wrapper .nv-hero .wp-block-cover__image-background,
.block-editor-writing-flow .nv-hero .wp-block-cover__background,
.block-editor-writing-flow .nv-hero .wp-block-cover__gradient-background,
.block-editor-writing-flow .nv-hero .wp-block-cover__video-background,
.block-editor-writing-flow .nv-hero .wp-block-cover__image-background {
  pointer-events: none;
}

.editor-styles-wrapper .nv-header,
.block-editor-writing-flow .nv-header {
  position: relative !important;
  inset: auto !important;
  z-index: 1 !important;
}

/* --------------------------------------------------------------------------
   Navbar (header template part)
   -------------------------------------------------------------------------- */
.nv-header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 300;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  background: rgba(9, 20, 40, 0.95);
  backdrop-filter: blur(18px);
  box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.4);
}
.nv-header .wp-block-group {
  --wp--style--root--padding-left: 0;
  --wp--style--root--padding-right: 0;
}
.nv-header__bar {
  max-width: var(--nv-maxw);
  margin-inline: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 0.9rem clamp(1.5rem, 5vw, 5rem);
}
.nv-header__logo img { height: 44px; width: auto; }
.nv-header .wp-block-navigation {
  gap: 1.75rem;
  font-size: 0.875rem;
  font-weight: 500;
}
/* Normal links = soft paper; hover + current page = brand gold. !important wins
   over WordPress's generated navigation color styles. */
.nv-header .nv-desktop-nav a { color: rgba(244, 247, 252, 0.72) !important; transition: color 0.2s; }
.nv-header .nv-desktop-nav a:hover,
.nv-header .nv-desktop-nav a.nv-current { color: var(--nv-gold) !important; }

/* Push page content below the fixed header on inner pages */
.nv-has-fixed-header { padding-top: 0; }

/* Desktop: logo left, nav centered, Order Now right. Mobile keeps only the visual burger. */
@media (min-width: 1024px) {
  .nv-header .nv-header__bar { display: grid !important; grid-template-columns: 1fr auto 1fr; align-items: center; }
  .nv-header__logo { justify-self: start; }
  .nv-header .nv-desktop-nav { justify-self: center; }
  .nv-header .nv-desktop-cta { justify-self: end; }
  .nv-header .nv-mobile-nav { display: none !important; }
}
.nv-desktop-cta {
  margin: 0;
  white-space: nowrap;
}
.nv-desktop-cta .wp-block-button__link {
  background: var(--nv-gold) !important;
  color: var(--nv-ink) !important;
  border-radius: 9999px;
  box-shadow: none;
  font-size: 0.875rem;
  font-weight: 600;
  padding: 0.55rem 1.4rem;
}
.nv-desktop-cta .wp-block-button__link:hover {
  background: var(--nv-goldhi) !important;
  transform: none;
}
@media (max-width: 1023px) {
  .nv-desktop-cta { display: none !important; }
}

/* Mobile navigation uses WordPress's visual Navigation block, styled like the
   requested full-screen panel: logo, round close button, large separated links. */
.nv-header .wp-block-navigation.nv-mobile-nav,
.nv-header .nv-mobile-nav {
  display: none !important;
  justify-self: end;
  margin: 0;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container-open {
  align-items: center;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 9999px;
  color: var(--nv-paper);
  display: flex;
  height: 2.5rem;
  justify-content: center;
  padding: 0;
  width: 2.5rem;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container-open svg {
  height: 1.35rem;
  width: 1.35rem;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container {
  background: var(--nv-navy) !important;
  color: var(--nv-paper);
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
  display: none !important;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container.is-menu-open {
  animation: nv-fade-up 0.25s var(--nv-ease);
  background: var(--nv-navy) !important;
  bottom: 0;
  display: flex !important;
  left: 0;
  max-height: none;
  overflow-y: auto;
  padding: 8.75rem clamp(1.5rem, 6vw, 3rem) 2rem;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 10000;
}
/* The fixed header sets backdrop-filter, which makes it the containing block for
   its position:fixed descendants — that would trap this full-screen overlay
   inside the ~73px header (top/bottom:0 resolve to the header, not the viewport).
   While the menu is open (WordPress adds .has-modal-open to <html>), drop the
   filter so the overlay sizes to the viewport. The opaque navy overlay already
   covers the header, so the header loses nothing visually. */
html.has-modal-open .nv-header {
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container.is-menu-open::before {
  background-image: url("../images/nirvana-logo.png");
  background-position: left center;
  background-repeat: no-repeat;
  background-size: contain;
  content: "";
  height: 72px;
  left: clamp(1.5rem, 6vw, 3rem);
  position: fixed;
  top: 2rem;
  width: 190px;
  z-index: 10001;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container.is-menu-open::after {
  background: rgba(255,255,255,0.08);
  content: "";
  height: 1px;
  left: 0;
  position: fixed;
  right: 0;
  top: 8.75rem;
  z-index: 10000;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container-close {
  align-items: center;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 9999px;
  color: var(--nv-paper);
  display: flex;
  height: 2.5rem;
  justify-content: center;
  padding: 0;
  position: fixed;
  right: clamp(1.5rem, 6vw, 3rem);
  top: 2rem;
  width: 2.5rem;
  z-index: 10002;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container-close svg {
  height: 1.6rem;
  width: 1.6rem;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container-content {
  align-items: stretch;
  display: flex;
  flex-direction: column;
  gap: 0 !important;
  padding-top: 0 !important;
}
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
  align-items: stretch;
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
}
.nv-header .nv-mobile-nav .wp-block-navigation-item {
  width: 100%;
}
/* Selectors include .is-menu-open so they out-specify WordPress core's
   `...is-menu-open ... .wp-block-navigation-item__content { padding: 0 }`
   (0,4,0), which would otherwise collapse the link padding to zero. */
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container.is-menu-open a {
  align-items: center;
  color: rgba(244,247,252,0.78) !important;
  display: flex;
  font-size: 1.125rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  line-height: 1.2;
  padding: 1.2rem 0;
  text-decoration: none;
  transition: color 0.2s var(--nv-ease);
  width: 100%;
}
.nv-header .nv-mobile-nav .is-menu-open a:hover,
.nv-header .nv-mobile-nav .is-menu-open a:focus-visible,
.nv-header .nv-mobile-nav .is-menu-open a.nv-current {
  color: var(--nv-gold) !important;
}
/* Order Now: full-width gold pill, tall tap target, inset from the screen edges
   by its own margin (independent of the overlay's content padding). */
.nv-header .nv-mobile-nav .wp-block-navigation__responsive-container.is-menu-open .nv-nav-order a {
  background: var(--nv-gold);
  border: 0;
  border-radius: 9999px;
  box-sizing: border-box;
  color: var(--nv-ink) !important;
  font-size: 1rem;
  font-weight: 600;
  justify-content: center;
  letter-spacing: 0.02em;
  margin: 2.5rem 0 0;
  padding: 1.5rem;
  text-align: center;
  width: 100%;
}
.nv-header .nv-mobile-nav .is-menu-open .nv-nav-order a:hover {
  background: var(--nv-goldhi);
  color: var(--nv-ink) !important;
}
/* Below 1024px: hide the desktop nav, show the visual Navigation hamburger. */
@media (max-width: 1023px) {
  .nv-header .nv-desktop-nav { display: none !important; }
  .nv-header .wp-block-navigation.nv-mobile-nav,
  .nv-header .nv-mobile-nav { display: flex !important; }
}

/* --------------------------------------------------------------------------
   Hero (scroll-driven video)
   -------------------------------------------------------------------------- */
.nv-hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: center;
  overflow: hidden;
  padding: 9rem clamp(1.5rem, 5vw, 5rem) 5rem;
  background: var(--nv-base);
}
.nv-hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  will-change: transform, opacity;
}
.nv-hero__media video,
.nv-hero__media img {
  height: 100%;
  width: 100%;
  object-fit: cover;
}
.nv-hero__scrim { position: absolute; inset: 0; }
.nv-hero__scrim--1 { background: rgba(9, 20, 40, 0.2); }
.nv-hero__scrim--2 { background: linear-gradient(90deg, rgba(11,24,46,0.85), rgba(11,24,46,0.4) 45%, transparent); }
.nv-hero__scrim--3 { background: linear-gradient(0deg, rgba(11,24,46,0.7), transparent 50%); }
.nv-hero__content {
  position: relative;
  z-index: 10;
  width: 100%;
  max-width: var(--nv-maxw);
  margin-inline: auto;
  will-change: transform, opacity;
}
.nv-hero__content .nv-hero__inner { max-width: 42rem; }
.nv-hero h1 { font-size: clamp(3rem, 7vw, 6.4rem); line-height: 0.98; letter-spacing: -0.03em; }

/* Hero scrim — reproduce the original 3-layer overlay exactly:
   (1) flat navy tint, (2) left->right base fade, (3) bottom->top base fade.
   Overrides the Cover block's single overlay so it shows regardless of dimRatio. */
.nv-hero .wp-block-cover__background,
.nv-hero .wp-block-cover__gradient-background {
  opacity: 1 !important;
  background:
    linear-gradient(to top, rgba(11, 24, 46, 0.7) 0%, rgba(11, 24, 46, 0) 50%),
    linear-gradient(to right, rgba(11, 24, 46, 0.85) 0%, rgba(11, 24, 46, 0.4) 50%, rgba(11, 24, 46, 0) 100%),
    rgba(9, 20, 40, 0.2) !important;
}

/* Live pulse dot */
.nv-pulse { position: relative; display: inline-flex; height: 0.5rem; width: 0.5rem; }
.nv-pulse::before {
  content: ""; position: absolute; inset: 0; border-radius: 9999px;
  background: var(--nv-gold); opacity: 0.6; animation: nv-ping 1.4s cubic-bezier(0,0,0.2,1) infinite;
}
.nv-pulse::after { content: ""; position: relative; height: 0.5rem; width: 0.5rem; border-radius: 9999px; background: var(--nv-gold); }
@keyframes nv-ping { 75%, 100% { transform: scale(2.2); opacity: 0; } }

/* --------------------------------------------------------------------------
   Page hero (inner pages)
   -------------------------------------------------------------------------- */
.nv-pagehero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #16356e 0%, #091428 100%);
  padding: 9rem clamp(1.5rem, 5vw, 5rem) 5rem;
}
.nv-pagehero::before,
.nv-pagehero::after {
  content: "";
  position: absolute;
  border-radius: 9999px;
  filter: blur(80px);
  background: rgba(205, 162, 76, 0.18);
  z-index: 0;
}
.nv-pagehero::before { width: 380px; height: 380px; top: -120px; right: -80px; }
.nv-pagehero::after { width: 320px; height: 320px; bottom: -140px; left: -100px; }
.nv-pagehero > * { position: relative; z-index: 1; }
.nv-pagehero h1 { color: #fff; }
.nv-pagehero .nv-lead { color: rgba(255,255,255,0.6) !important; }

/* --------------------------------------------------------------------------
   Showcase (auto-rotating signatures)
   -------------------------------------------------------------------------- */
.nv-showcase__stage { position: relative; }
.nv-showcase__slide { display: none; }
/* Image on the RIGHT, text on the left, both vertically centered to the image */
.nv-showcase__slide.is-active { display: grid; grid-template-columns: repeat(2, 1fr); align-items: center; }
.nv-showcase__slide.is-active { gap: 4rem !important; }
.nv-showcase__slide.is-active > div:first-child { order: 0; border-radius: 1.75rem !important; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.1); }
/* Native (editable) slide: image frame + cover image */
.nv-showcase__media { position: relative; aspect-ratio: 5 / 4; overflow: hidden; margin: 0 !important; }
.nv-showcase__media .wp-block-image,
.nv-showcase__media figure { margin: 0 !important; height: 100%; }
.nv-showcase__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nv-showcase__text { margin: 0 !important; }
.nv-showcase__chips { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 1.5rem; }
.nv-showcase__slide.is-active h3 { font-size: clamp(1.9rem, 3vw, 2.6rem) !important; line-height: 1.1; }
@media (max-width: 860px) {
  .nv-showcase__slide.is-active { grid-template-columns: 1fr !important; }
  .nv-showcase__slide.is-active > div:first-child { order: 0; }
}

/* Blog listing grid */
.nv-blog-grid { gap: 1.5rem !important; }
.nv-blog-grid .wp-block-post-featured-image { margin: 0; }
.nv-blog-grid .wp-block-post-featured-image img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; }
.nv-blog-grid .wp-block-post-title { font-size: 1.25rem; margin: 0; }
.nv-blog-grid .wp-block-post-title a { color: var(--nv-paper); text-decoration: none; }
.nv-blog-grid .wp-block-post-title a:hover { color: var(--nv-gold); }
.nv-showcase__counter {
  position: absolute; left: 1rem; top: 1rem; z-index: 2;
  padding: 0.4rem 0.9rem; border-radius: 9999px;
  background: rgba(255,255,255,0.92); color: var(--nv-ink);
  font-size: 0.8rem; font-weight: 700; backdrop-filter: blur(6px);
}
/* Dots sit at the bottom of the content side, inside the image height */
.nv-showcase { position: relative; }
/* Dots sit under the text column (right half), aligned to its left edge - the
   right column starts at 50% + half the 4rem grid gap. */
.nv-showcase__dots { display: flex; gap: 0.6rem; position: absolute; left: calc(50% + 2rem); right: auto; bottom: 0; margin: 0; z-index: 4; justify-content: flex-start; }
/* Top-align the content so title/desc/tags start at the image top and the dots fit below within the image height */
.nv-showcase__slide.is-active { align-items: center !important; }
.nv-showcase__slide.is-active > div:not(:first-child) { padding-bottom: 3.5rem; }
@media (max-width: 860px) {
  .nv-showcase__dots { position: static; margin-top: 1.5rem; }
  .nv-showcase__slide.is-active > div { padding-bottom: 0; }
}
.nv-showcase__dot {
  height: 0.4rem; width: 2.4rem; border-radius: 9999px;
  background: rgba(255,255,255,0.15); border: 0; cursor: pointer; padding: 0;
  overflow: hidden; position: relative;
}
.nv-showcase__dot.is-active { background: rgba(205,162,76,0.3); }
.nv-showcase__dot.is-active::after {
  content: ""; position: absolute; inset: 0; background: var(--nv-gold);
  transform-origin: left; animation: nv-progress 3s linear forwards;
}
@keyframes nv-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* --------------------------------------------------------------------------
   Menu tabs
   -------------------------------------------------------------------------- */
/* Horizontally scrollable category tabs (no wrap) */
.nv-menu-tabs {
  display: flex; flex-wrap: nowrap; gap: 0.6rem; margin-bottom: 2.5rem;
  overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; padding-bottom: 0.6rem;
}
.nv-menu-tabs::-webkit-scrollbar { height: 5px; }
.nv-menu-tabs::-webkit-scrollbar-thumb { background: #2a3f63; border-radius: 8px; }
.nv-menu-tab { flex: 0 0 auto; scroll-snap-align: start; white-space: nowrap; }
.nv-menu-tab {
  border-radius: 9999px; padding: 0.6rem 1.25rem; font-size: 0.875rem; font-weight: 500;
  border: 1px solid rgba(255,255,255,0.15); background: transparent; color: var(--nv-mist);
  cursor: pointer; transition: all 0.2s var(--nv-ease);
}
.nv-menu-tab:hover { color: var(--nv-paper); }
.nv-menu-tab.is-active { background: var(--nv-gold); color: var(--nv-ink); border-color: var(--nv-gold); }
.nv-menu-panel { display: none; }
.nv-menu-panel.is-active { display: block; animation: nv-fade-up 0.3s var(--nv-ease); }
/* In the block editor the tab JS doesn't run - show every panel so all dishes
   stay visible and editable. */
.editor-styles-wrapper .nv-menu-panel,
.block-editor-writing-flow .nv-menu-panel { display: block !important; }
@keyframes nv-fade-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

.nv-dish-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; align-items: stretch; }
/* margin:0 removes the WP block-gap margin (which staggered the cards and broke
   the equal-height stretch); grid-auto-rows:1fr makes every card the same height. */
.nv-dish-grid > * { align-self: stretch; margin: 0; min-height: 0; }
@media (min-width: 768px) { .nv-dish-grid { grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; } }
@media (min-width: 1280px) { .nv-dish-grid { grid-template-columns: 1fr 1fr 1fr; } }

.nv-dish {
  display: flex; gap: 0.9rem; align-items: flex-start;
  border-radius: 1rem; border: 1px solid var(--nv-border); background: var(--nv-surface);
  padding: 0.9rem; transition: all 0.25s var(--nv-ease);
}
.nv-dish:hover {
  border-color: rgba(205,162,76,0.4); background: var(--nv-surface2);
  box-shadow: 0 18px 40px -24px rgba(0,0,0,0.6);
}
.nv-dish__thumb {
  position: relative; height: 5rem; width: 5rem; flex-shrink: 0;
  border-radius: 0.75rem; overflow: hidden; background: var(--nv-surface2);
}
.nv-dish__thumb img { height: 100%; width: 100%; object-fit: cover; transition: transform 0.4s var(--nv-ease); }
.nv-dish:hover .nv-dish__thumb img { transform: scale(1.1); }
.nv-dish__badge {
  position: absolute; left: 0.25rem; top: 0.25rem;
  background: var(--nv-gold); color: var(--nv-ink);
  font-size: 0.55rem; font-weight: 600; text-transform: uppercase;
  padding: 0.1rem 0.35rem; border-radius: 0.35rem;
}
.nv-dish__name { font-family: 'Space Grotesk', sans-serif; font-size: 1rem; font-weight: 500; color: var(--nv-paper); margin: 0; }
.nv-dish__desc { font-size: 0.875rem; line-height: 1.4; color: var(--nv-mist); margin: 0.25rem 0 0; }
/* Dish built from core blocks (figure thumb + body group) */
.nv-dish { align-items: flex-start; }
figure.nv-dish__thumb { margin: 0 !important; height: 5rem; width: 5rem; flex-shrink: 0; border-radius: 0.75rem; overflow: hidden; }
figure.nv-dish__thumb img { height: 100%; width: 100%; object-fit: cover; aspect-ratio: 1; border-radius: 0.75rem; }
.nv-dish__body { flex: 1; min-width: 0; }
.nv-menu-cat { font-family: 'Space Grotesk', sans-serif; color: var(--nv-gold) !important; }

/* --------------------------------------------------------------------------
   Reviews marquee
   -------------------------------------------------------------------------- */
.nv-reviews { display: grid; grid-template-columns: 1fr; gap: 1.5rem; max-height: 740px; overflow: hidden;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 20%, #000 80%, transparent);
  mask-image: linear-gradient(to bottom, transparent, #000 20%, #000 80%, transparent); }
@media (min-width: 768px) { .nv-reviews { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .nv-reviews { grid-template-columns: 1fr 1fr 1fr; } }
.nv-reviews__col.col-2 { display: none; }
.nv-reviews__col.col-3 { display: none; }
@media (min-width: 768px) { .nv-reviews__col.col-2 { display: block; } }
@media (min-width: 1024px) { .nv-reviews__col.col-3 { display: block; } }
.nv-reviews__track { display: flex; flex-direction: column; gap: 1.5rem; animation: nv-marquee linear infinite; }
.nv-reviews__col.col-1 .nv-reviews__track { animation-duration: 20s; }
.nv-reviews__col.col-2 .nv-reviews__track { animation-duration: 26s; }
.nv-reviews__col.col-3 .nv-reviews__track { animation-duration: 23s; }
/* Marquee keeps scrolling even on hover (no pause). */
@keyframes nv-marquee { from { transform: translateY(0); } to { transform: translateY(-50%); } }
.nv-review {
  border-radius: 1.5rem; border: 1px solid var(--nv-border); background: var(--nv-surface);
  padding: 1.75rem; box-shadow: 0 18px 40px -24px rgba(0,0,0,0.6);
}
.nv-review__text { font-size: 0.92rem; line-height: 1.65; color: var(--nv-mist); margin: 0 0 1.25rem; }
.nv-review__who { display: flex; align-items: center; gap: 0.75rem; }
/* Small circular avatar - works for core/image (figure>img) or a bare img */
.nv-review__avatar { margin: 0 !important; flex: 0 0 auto; line-height: 0; width: 2.2rem; }
.nv-review__avatar img,
img.nv-review__avatar {
  height: 2.2rem !important; width: 2.2rem !important; min-width: 2.2rem;
  border-radius: 9999px !important; object-fit: cover; display: block;
  border: 2px solid rgba(255, 255, 255, 0.14);
}
.nv-review__name { color: var(--nv-paper); font-weight: 600; font-size: 0.95rem; margin: 0; line-height: 1.3; }
/* Reviews as an editable grid (replaces the marquee) */
.nv-reviews-grid { gap: 1.5rem !important; }
@media (max-width: 1023px) { .nv-reviews-grid { grid-template-columns: 1fr 1fr !important; } }
@media (max-width: 640px) { .nv-reviews-grid { grid-template-columns: 1fr !important; } }
.nv-reviewcard > .nv-review__text { margin-bottom: 1.25rem; }
.nv-review__role { color: var(--nv-mist); font-size: 0.8rem; margin: 0; line-height: 1.3; }
.nv-stars { color: var(--nv-gold); letter-spacing: 2px; }

/* Reviews header - centered */
.nv-reviews-head { max-width: 560px; margin-inline: auto; text-align: center; }
.nv-reviews-head .nv-chip { margin-inline: auto; color: var(--nv-paper); }

/* --------------------------------------------------------------------------
   Gallery (filterable page grid)
   -------------------------------------------------------------------------- */
.nv-gallery-grid { columns: 2; column-gap: 1rem; }
@media (min-width: 768px) { .nv-gallery-grid { columns: 3; } }
@media (min-width: 1024px) { .nv-gallery-grid { columns: 4; } }
.nv-gallery-grid .wp-block-image,
.nv-gallery-grid figure { break-inside: avoid; margin: 0 0 1rem; }
.nv-gallery-grid img { width: 100%; border-radius: 0.9rem; display: block; transition: transform 0.4s var(--nv-ease); }
.nv-gallery-grid img:hover { transform: scale(1.03); }

.nv-filter { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-bottom: 2.5rem; }
.nv-filter button {
  border-radius: 9999px; padding: 0.5rem 1.1rem; font-size: 0.85rem; font-weight: 500;
  border: 1px solid rgba(255,255,255,0.15); background: transparent; color: var(--nv-mist); cursor: pointer;
  transition: all 0.2s var(--nv-ease);
}
.nv-filter button.is-active { background: var(--nv-gold); color: var(--nv-ink); border-color: var(--nv-gold); }
.nv-gallery-grid .is-hidden { display: none; }

/* --------------------------------------------------------------------------
   Reserve panel
   -------------------------------------------------------------------------- */
.nv-reserve {
  border-radius: 2rem; border: 1px solid var(--nv-border); overflow: hidden;
  background: linear-gradient(135deg, var(--nv-surface) 0%, var(--nv-base) 100%);
  padding: clamp(2rem, 5vw, 4rem) clamp(2rem, 6vw, 6rem);
  text-align: center;
}
.nv-reserve__grid {
  display: grid; gap: 1.5rem; grid-template-columns: 1fr 1fr; margin-top: 3rem;
  border-top: 1px solid var(--nv-border); padding-top: 2.5rem; text-align: left;
}
@media (min-width: 900px) { .nv-reserve__grid { grid-template-columns: repeat(4, 1fr); } }
.nv-reserve__label { color: var(--nv-mist); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.15em; margin: 0 0 0.35rem; }
.nv-reserve__val { color: var(--nv-paper); font-size: 0.9rem; margin: 0; }

/* --------------------------------------------------------------------------
   Stats row (About / Catering)
   -------------------------------------------------------------------------- */
.nv-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .nv-stats { grid-template-columns: repeat(4, 1fr); } }
.nv-stat__num { font-family: 'Space Grotesk', sans-serif; font-size: clamp(2.25rem, 4vw, 3rem); font-weight: 500; color: var(--nv-gold); line-height: 1; margin: 0; text-align: center; }
.nv-stat__label { color: var(--nv-mist); font-size: 0.875rem; margin: 0.5rem 0 0; text-align: center; }
/* Stats in a Columns block: center each column, keep 2-up on mobile */
.wp-block-columns:has(.nv-stat__num) { gap: 1.5rem; }
.wp-block-column:has(.nv-stat__num) { text-align: center; flex-basis: auto; }
@media (max-width: 781px) {
  .wp-block-columns:has(.nv-stat__num) { flex-wrap: wrap !important; flex-direction: row !important; }
  .wp-block-columns:has(.nv-stat__num) > .wp-block-column { flex-basis: calc(50% - 0.75rem) !important; }
}
/* Single blog post title - TSX size (not the page-hero huge) */
.wp-block-post-title { font-size: clamp(2rem, 4.5vw, 3.4rem); }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.nv-footer { background: var(--nv-navy); padding: 5rem clamp(1.5rem, 5vw, 5rem) 2.5rem; }
.nv-footer__grid {
  max-width: var(--nv-maxw); margin-inline: auto;
  display: grid; gap: 3rem; grid-template-columns: 1fr;
  border-bottom: 1px solid rgba(255,255,255,0.1); padding-bottom: 3.5rem;
}
@media (min-width: 768px) { .nv-footer__grid { grid-template-columns: 1.6fr 1fr 1.1fr 1.1fr; } }
.nv-footer h4 { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.2em; color: var(--nv-gold); margin: 0 0 1rem; }
.nv-footer a { color: rgba(244,247,252,0.65); text-decoration: none; }
.nv-footer a:hover { color: var(--nv-gold); text-decoration: none; }
/* No underlines on nav / button-style links either */
.nv-header a, .wp-block-button__link, .nv-card-link { text-decoration: none; }
.nv-footer ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.nv-footer__bar {
  max-width: var(--nv-maxw); margin-inline: auto;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 0.75rem; padding-top: 1.5rem;
}
.nv-footer__bar p { color: rgba(244,247,252,0.4); font-size: 0.75rem; margin: 0; }

/* List with gold checks */
.is-style-nv-check { list-style: none; padding: 0; }
.is-style-nv-check li { position: relative; padding-left: 1.5rem; color: var(--nv-mist); margin-bottom: 0.5rem; font-size: 0.9rem; }
.is-style-nv-check li::before { content: "✓"; position: absolute; left: 0; color: var(--nv-gold); font-weight: 700; }

/* --------------------------------------------------------------------------
   Utility
   -------------------------------------------------------------------------- */
.nv-grid-3 { display: grid; grid-template-columns: 1fr; gap: 1.5rem; align-items: stretch; }
@media (min-width: 640px) { .nv-grid-3 { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 1fr; } }
@media (min-width: 1024px) { .nv-grid-3 { grid-template-columns: repeat(3, 1fr); } }
.nv-grid-2 { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .nv-grid-2 { grid-template-columns: 1fr 1fr; } }
.nv-bg-base { background: var(--nv-base); }
.nv-bg-navy { background: var(--nv-navy); }
.nv-bg-surface { background: var(--nv-surface); }

/* --------------------------------------------------------------------------
   Team grid (CPT-driven)
   -------------------------------------------------------------------------- */
/* Team photos are square (1:1) like the original, not the 16/11 card crop */
.nv-team-cards .nv-flatcard .wp-block-image img { aspect-ratio: 1 / 1 !important; }
.nv-team-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }
@media (min-width: 1024px) { .nv-team-grid { grid-template-columns: repeat(4, 1fr); } }

/* Catering features - match original 1 / 2 / 4 column grid; all cards equal size */
.nv-features { display: grid; grid-template-columns: 1fr; gap: 1.25rem; align-items: stretch; }
@media (min-width: 640px) { .nv-features { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 1fr; } }
@media (min-width: 1024px) { .nv-features { grid-template-columns: repeat(4, 1fr); } }
.nv-features > .wp-block-group { margin: 0; display: flex; flex-direction: column; }
.nv-features > .wp-block-group:hover { transform: none; } /* no lift - keep all cards identical */
.nv-feature__icon {
  display: inline-flex; width: 2.75rem; height: 2.75rem; align-items: center; justify-content: center;
  border-radius: 9999px; background: rgba(205, 162, 76, 0.1); font-size: 1.25rem; margin: 0;
}
.nv-feature__icon img { width: 22px; height: 22px; max-width: none; }
/* All feature/offer grid cards are identical size (no "first item bigger") */
/* All cards in a grid are the same height across every row (grid-auto-rows:1fr
   on the multi-column breakpoints), and stretch to fill it. margin:0 + min-height:0
   are required so the items actually stretch and the row track sizes correctly. */
.nv-features, .nv-grid-3 { align-items: stretch; }
.nv-features > *, .nv-grid-3 > * { align-self: stretch; margin: 0; min-height: 0; transform: none !important; }
.nv-counter { font-variant-numeric: tabular-nums; }

/* Gallery block layouts (nirvana/gallery) */
.nv-gallery figure { margin: 0; }
.nv-gallery--grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.9rem; }
@media (min-width: 768px) { .nv-gallery--grid { grid-template-columns: repeat(3, 1fr); } }
.nv-gallery--grid figure { aspect-ratio: 4 / 3; overflow: hidden; border-radius: 0.9rem; }
.nv-gallery--grid img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s var(--nv-ease); }
.nv-gallery--grid figure:hover img { transform: scale(1.05); }

.nv-gallery--carousel {
  display: flex; gap: 1rem; overflow-x: auto; scroll-snap-type: x mandatory;
  padding-bottom: 1rem; -webkit-overflow-scrolling: touch;
}
.nv-gallery--carousel figure { flex: 0 0 auto; width: min(80vw, 420px); scroll-snap-align: start; }
.nv-gallery--carousel img { width: 100%; border-radius: 0.9rem; display: block; aspect-ratio: 3 / 2; object-fit: cover; }

/* Home gallery teaser - scattered/fanned photo cluster (the original "old way") */
.nv-cluster { position: relative; height: 420px; display: flex; align-items: center; justify-content: center; }
.nv-cluster figure,
.nv-cluster .wp-block-image {
  position: absolute; margin: 0; width: 250px; aspect-ratio: 4 / 5; border-radius: 1rem; overflow: hidden;
  border: 4px solid rgba(255, 255, 255, 0.92); box-shadow: 0 30px 60px -22px rgba(0, 0, 0, 0.65);
  transform: translateX(var(--x)) rotate(var(--r)); transition: transform 0.45s var(--nv-ease); cursor: grab;
}
/* Fan offsets per photo (native editable wp:image blocks) */
.nv-cluster > .wp-block-image:nth-child(1) { --x: -360px; --r: -10deg; z-index: 1; }
.nv-cluster > .wp-block-image:nth-child(2) { --x: -185px; --r: -5deg; z-index: 2; }
.nv-cluster > .wp-block-image:nth-child(3) { --x: 0px; --r: 2deg; z-index: 3; }
.nv-cluster > .wp-block-image:nth-child(4) { --x: 185px; --r: 7deg; z-index: 2; }
.nv-cluster > .wp-block-image:nth-child(5) { --x: 360px; --r: -3deg; z-index: 1; }
.nv-cluster figure:hover,
.nv-cluster .wp-block-image:hover { transform: translateX(var(--x)) rotate(0deg) scale(1.07); z-index: 10 !important; }
.nv-cluster img { width: 100%; height: 100%; object-fit: cover; display: block; }

.editor-styles-wrapper .nv-cluster,
.block-editor-writing-flow .nv-cluster {
  height: auto !important;
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1rem;
  align-items: stretch;
  justify-content: stretch;
}
.editor-styles-wrapper .nv-cluster figure,
.editor-styles-wrapper .nv-cluster .wp-block-image,
.block-editor-writing-flow .nv-cluster figure,
.block-editor-writing-flow .nv-cluster .wp-block-image {
  position: relative !important;
  width: 100% !important;
  transform: none !important;
  cursor: default;
}

/* Lightbox - click any gallery photo to view full screen */
.nv-lightbox { position: fixed; inset: 0; z-index: 9999; display: none; align-items: center; justify-content: center; background: rgba(5, 9, 20, 0.93); backdrop-filter: blur(8px); padding: 2rem; }
.nv-lightbox.is-open { display: flex; }
.nv-lightbox img { max-width: 92vw; max-height: 88vh; border-radius: 0.75rem; box-shadow: 0 30px 80px -20px rgba(0, 0, 0, 0.8); }
.nv-lightbox__close { position: absolute; top: 1rem; right: 1.5rem; background: none; border: 0; color: #fff; font-size: 2.75rem; line-height: 1; cursor: pointer; opacity: 0.8; }
.nv-lightbox__close:hover { opacity: 1; }
@media (max-width: 900px) {
  .nv-cluster { height: 340px; }
  .nv-cluster figure { width: 180px; }
  .nv-cluster figure { transform: translateX(calc(var(--x) * 0.55)) rotate(var(--r)); }
  .nv-cluster figure:hover { transform: translateX(calc(var(--x) * 0.55)) rotate(0deg) scale(1.07); }
}

/* --------------------------------------------------------------------------
   Front-end forms (catering inquiry / reservation)
   -------------------------------------------------------------------------- */
.nv-form {
  display: grid; grid-template-columns: 1fr; gap: 1.25rem 1.4rem;
  background: linear-gradient(180deg, var(--nv-surface), var(--nv-base));
  border: 1px solid var(--nv-border);
  border-radius: 1.25rem; padding: clamp(1.5rem, 4vw, 2.75rem);
  box-shadow: 0 30px 70px -40px rgba(0, 0, 0, 0.7);
}
@media (min-width: 768px) { .nv-form { grid-template-columns: 1fr 1fr; } }
.nv-form > div { display: flex; flex-direction: column; }
.nv-form label {
  display: block; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.01em;
  color: var(--nv-paper); margin-bottom: 0.5rem;
}
.nv-form input,
.nv-form select,
.nv-form textarea {
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  width: 100%; box-sizing: border-box;
  border-radius: 0.8rem; border: 1px solid rgba(255, 255, 255, 0.16) !important;
  background: rgba(255, 255, 255, 0.04) !important; color: var(--nv-paper) !important;
  padding: 0.85rem 1rem; font-size: 0.95rem; line-height: 1.3;
  font-family: inherit; outline: none;
  transition: border-color 0.2s var(--nv-ease), box-shadow 0.2s var(--nv-ease), background 0.2s var(--nv-ease);
}
.nv-form textarea { min-height: 7rem; resize: vertical; }
.nv-form input::placeholder,
.nv-form textarea::placeholder { color: var(--nv-stone); opacity: 1; }
.nv-form input:hover,
.nv-form select:hover,
.nv-form textarea:hover { border-color: rgba(255, 255, 255, 0.28) !important; }
.nv-form input:focus,
.nv-form select:focus,
.nv-form textarea:focus {
  border-color: var(--nv-gold) !important;
  background: rgba(255, 255, 255, 0.06) !important;
  box-shadow: 0 0 0 3px rgba(205, 162, 76, 0.18);
}
/* White dropdown chevron on the select */
.nv-form select {
  padding-right: 2.75rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23cda24c' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important; background-position: right 1rem center !important; background-size: 16px !important;
  text-overflow: ellipsis;
}
.nv-form select option { background: #0b182e; color: #f4f7fc; }
.nv-form select::-ms-expand { display: none; }
/* White date / time picker icon (was black on the dark field) */
.nv-form input[type="date"]::-webkit-calendar-picker-indicator,
.nv-form input[type="time"]::-webkit-calendar-picker-indicator {
  filter: invert(1) brightness(2.2); opacity: 0.75; cursor: pointer;
}
.nv-form input[type="date"]::-webkit-calendar-picker-indicator:hover,
.nv-form input[type="time"]::-webkit-calendar-picker-indicator:hover { opacity: 1; }
.nv-form input[type="number"]::-webkit-inner-spin-button { filter: invert(1) brightness(2); }
.nv-form__submit {
  width: 100%; border: 0; cursor: pointer; border-radius: 9999px;
  background: var(--nv-gold) !important; color: var(--nv-ink) !important;
  padding: 1.05rem; font-size: 0.95rem; font-weight: 700; letter-spacing: 0.01em;
  box-shadow: 0 16px 34px -14px rgba(205, 162, 76, 0.55);
  transition: background 0.2s var(--nv-ease), transform 0.15s var(--nv-ease), box-shadow 0.2s var(--nv-ease);
}
.nv-form__submit:hover { background: var(--nv-goldhi) !important; transform: translateY(-2px); box-shadow: 0 22px 40px -14px rgba(205, 162, 76, 0.6); }
.nv-form__submit:active { transform: translateY(0); }
.nv-form--success {
  display: block; text-align: center; border-color: rgba(205, 162, 76, 0.35);
  padding: clamp(2.5rem, 6vw, 4rem);
}

/* After a form submit we redirect to #<anchor>; offset the landing so the
   fixed header doesn't cover the form / thank-you message. */
.nv-anchor { scroll-margin-top: 110px; }

/* Newsletter signup - compact single-row form: name · email · phone · button */
.nv-newsletter {
  grid-template-columns: 1fr;
  gap: 1rem 1.2rem;
  align-items: end;
  padding: clamp(1.4rem, 3.5vw, 2rem);
  text-align: left;
  max-width: 980px;
  margin-inline: auto;
}
@media (min-width: 768px) {
  .nv-newsletter { grid-template-columns: 1.1fr 1.6fr auto; }
}
.nv-newsletter .nv-form__submit {
  width: 100%;
  padding-inline: 2rem;
  white-space: nowrap;
}
@media (min-width: 768px) {
  .nv-newsletter .nv-form__submit { width: auto; }
}

/* --------------------------------------------------------------------------
   Social embeds (TikTok + Instagram feeds)
   -------------------------------------------------------------------------- */
.nv-social {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.5rem, 4vw, 2.5rem);
  align-items: start;
}
@media (min-width: 880px) { .nv-social { grid-template-columns: 1fr 1fr; } }
.nv-social__col {
  background: var(--nv-surface);
  border: 1px solid var(--nv-border);
  border-radius: 1.25rem;
  padding: clamp(1rem, 3vw, 1.5rem);
  box-shadow: 0 30px 70px -40px rgba(0, 0, 0, 0.7);
  min-width: 0;
}
.nv-social__head {
  display: flex; align-items: center; gap: 0.6rem;
  font-family: 'Space Grotesk', sans-serif; font-weight: 600;
  color: var(--nv-paper); text-decoration: none;
  margin-bottom: 1rem;
}
.nv-social__head em { color: var(--nv-mist); font-style: normal; font-weight: 400; }
.nv-social__head:hover { color: var(--nv-gold); }
.nv-social__icon {
  display: inline-flex; align-items: center; justify-content: center;
  height: 2rem; width: 2rem; border-radius: 0.65rem; flex: 0 0 auto;
  background: rgba(205, 162, 76, 0.14); color: var(--nv-gold);
}
/* Center the platform-rendered iframes/cards within the column */
.nv-social__col .tiktok-embed,
.nv-social__col .instagram-media { margin: 0 auto !important; }
.nv-social__col iframe { max-width: 100% !important; }

/* Instagram posts grid (individual post/reel embeds) */
.nv-ig-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.25rem, 3vw, 2rem);
  align-items: start;
}
@media (min-width: 600px) { .nv-ig-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 980px) { .nv-ig-grid { grid-template-columns: repeat(3, 1fr); } }
.nv-ig-grid__item { min-width: 0; }
.nv-ig-grid__item .instagram-media { margin: 0 auto !important; max-width: 100% !important; }
.nv-ig-grid__item iframe { max-width: 100% !important; }
