/*
Theme Name:   Bella Nova NY
Theme URI:    https://bellanovany.com
Description:  Child theme of Hello Elementor for the Bella Nova NY build. All custom CSS and design tokens live here.
Author:       Blaze Commerce
Template:     hello-elementor
Version:      1.0.0
Text Domain:  bellanova
*/

/* Design tokens are enqueued separately from assets/css/tokens.css */

/* ==========================================================================
   Menu / Shop page (/menu, post ID 26)
   Scoped to body.page-id-26 so it cannot leak onto other pages.
   Source: specs/menu-page.md, design-system/tokens.css + typography.md
   ========================================================================== */

body.page-id-26 #menu-page-root {
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: 1280px;
	margin-left: auto;
	margin-right: auto;
	padding-top: 128px;
	padding-bottom: 96px;
	padding-left: 20px;
	padding-right: 20px;
	box-sizing: border-box;
}
@media (min-width: 640px) {
	body.page-id-26 #menu-page-root {
		padding-left: 32px;
		padding-right: 32px;
	}
}
@media (min-width: 768px) {
	body.page-id-26 #menu-page-root {
		padding-bottom: 128px;
	}
}

body.page-id-26 #menu-heading-block,
body.page-id-26 #menu-embed-block {
	display: flex;
	flex-direction: column;
}

body.page-id-26 #menu-embed-block {
	margin-top: 48px;
}

/* Reveal timing: heading block has no delay, embed block delays 0.15s to
   match the reference's Reveal delay=0.15 prop. Base .reveal/.is-visible
   rules already ship site-wide in assets/css/animations.css. */
body.page-id-26 #menu-embed-block.reveal {
	transition-delay: 0.15s;
}

/* ---- Eyebrow ---- */
body.page-id-26 .menu-eyebrow {
	margin: 0;
	font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
	font-size: 12px;
	line-height: 16px;
	font-weight: 400;
	text-transform: uppercase;
	letter-spacing: 0.25em;
	color: #5C6B5E;
}

/* ---- H1 ---- */
body.page-id-26 #menu-h1 {
	margin-top: 16px;
}
body.page-id-26 #menu-h1 .elementor-heading-title {
	margin: 0;
	font-family: "Cormorant Garamond", Georgia, serif;
	font-weight: 400;
	font-style: normal;
	line-height: 1.25;
	color: #2C3B2E;
	font-size: 48px;
}
@media (min-width: 640px) {
	body.page-id-26 #menu-h1 .elementor-heading-title {
		font-size: 60px;
	}
}
@media (min-width: 1024px) {
	body.page-id-26 #menu-h1 .elementor-heading-title {
		font-size: 72px;
	}
}
body.page-id-26 .menu-word-menu {
	font-style: italic;
	color: #8B9A84;
}

/* ---- Intro paragraph ---- */
body.page-id-26 #menu-intro {
	margin-top: 24px;
}
body.page-id-26 .menu-intro {
	margin: 0;
	max-width: 576px;
	font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
	font-weight: 400;
	line-height: 1.625;
	color: #5C6B5E;
}

/* ---- Meta row (address + hours) ---- */
body.page-id-26 #menu-meta {
	margin-top: 24px;
}
body.page-id-26 .menu-meta-row {
	display: flex;
	flex-wrap: wrap;
	column-gap: 32px;
	row-gap: 8px;
	font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
	font-size: 11px;
	font-weight: 400;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: #5C6B5E;
}
body.page-id-26 .menu-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
body.page-id-26 .menu-meta-item svg {
	flex-shrink: 0;
	width: 14px;
	height: 14px;
}

/* ---- Dutchie frame ---- */
body.page-id-26 #menu-dutchie-frame {
	display: flex;
	flex-direction: column;
	position: relative;
	border-radius: 24px;
	background-color: #FFFFFF;
	padding: 12px;
	box-shadow: 0 8px 32px rgba(44, 59, 46, 0.08);
	min-height: 300px;
	box-sizing: border-box;
}
@media (min-width: 768px) {
	body.page-id-26 #menu-dutchie-frame {
		padding: 24px;
	}
}
body.page-id-26 #menu-dutchie-frame .elementor-widget-container,
body.page-id-26 .menu-dutchie-embed {
	position: relative;
	flex: 1;
	min-height: 276px;
}
@media (min-width: 768px) {
	body.page-id-26 .menu-dutchie-embed {
		min-height: 252px;
	}
}
body.page-id-26 .menu-dutchie-skeleton {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 24px;
	background-image: linear-gradient(to right, rgba(232, 235, 228, 0.4), rgba(232, 235, 228, 0.7), rgba(232, 235, 228, 0.4));
	animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
	pointer-events: none;
}
body.page-id-26 .menu-dutchie-skeleton span {
	font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
	font-size: 11px;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: #5C6B5E;
}

/* ---- Caption ---- */
body.page-id-26 #menu-caption {
	margin-top: 12px;
}
body.page-id-26 .menu-caption {
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 6px;
	text-align: center;
	font-family: Manrope, ui-sans-serif, system-ui, sans-serif;
	font-size: 11px;
	letter-spacing: 0.15em;
	text-transform: uppercase;
	color: rgba(92, 107, 94, 0.7);
}
body.page-id-26 .menu-caption-link {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: #2C3B2E;
	text-decoration: none;
	transition: color 300ms;
}
body.page-id-26 .menu-caption-link:hover,
body.page-id-26 .menu-caption-link:focus-visible {
	color: #8B9A84;
}
body.page-id-26 .menu-caption-link svg {
	width: 12px;
	height: 12px;
	flex-shrink: 0;
}


/* ============================================================
   AGE GATE POPUP (Elementor Pro Popup)
   Source: projects/bellanova/specs/age-gate.md
   Scope: age-gate popup only. Owned by this block, do not
   let other section CSS reuse the bn-agegate- prefix.
   ============================================================ */

/* Full-viewport wrapper (Elementor's popup className target = {{WRAPPER}}).
   This is the "overlay" layer from the reference: cream/95 plus 40px blur,
   present at full opacity immediately (no entrance fade). Only the exit
   (Yes click) animates opacity and translateY, over 0.6s. */
.bn-agegate-popup {
	backdrop-filter: var(--backdrop-blur-2xl);
	-webkit-backdrop-filter: var(--backdrop-blur-2xl);
	opacity: 1;
	transition: opacity 0.6s var(--ease-scroll-reveal), transform 0.6s var(--ease-scroll-reveal);
}
.bn-agegate-popup.is-exiting {
	opacity: 0;
	transform: translateY(-40px);
}

/* Neutralize Elementor's default "Popup" card chrome (white bg, shadow,
   radius). The reference has no visible card box, only the full-viewport
   overlay tint above and centered text below. */
.bn-agegate-popup .dialog-widget-content {
	background: transparent !important;
	box-shadow: none !important;
	border: none !important;
	border-radius: 0 !important;
}

/* Card width: 448px cap, 24px edge padding on any narrower viewport.
   Reproduces px-6 overlay padding plus max-w-md card without separate
   breakpoint rules (matches the reference: only one practical step). */
.bn-agegate-popup .dialog-message {
	width: min(448px, calc(100vw - 48px)) !important;
	max-width: 100%;
}

/* Spec requires no close (X) affordance: only Yes/No decide the state, no
   background click, no Escape. Elementor Pro renders this button chrome
   regardless of the close_button page setting, so hide it explicitly. */
.bn-agegate-popup .dialog-close-button {
	display: none !important;
}

/* Inner card */
.bn-agegate-card {
	max-width: 100%;
	width: 100%;
	text-align: center;
	animation: bn-agegate-card-in 0.8s var(--ease-scroll-reveal) both;
}
@keyframes bn-agegate-card-in {
	from { opacity: 0; transform: translateY(30px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Wordmark */
.bn-agegate-wordmark {
	display: flex;
	flex-direction: column;
	align-items: center;
	line-height: var(--leading-none);
	margin-bottom: var(--space-10);
}
.bn-agegate-wordmark .bn-agegate-wordmark__line1 .elementor-heading-title {
	font-family: var(--font-serif);
	font-size: var(--text-3xl);
	font-weight: 400;
	letter-spacing: var(--tracking-30);
	color: var(--color-forest);
	line-height: var(--leading-none);
}
.bn-agegate-wordmark .bn-agegate-wordmark__line2 .elementor-heading-title {
	font-family: var(--font-sans);
	font-size: var(--text-10px);
	font-weight: 400;
	letter-spacing: var(--tracking-55);
	color: var(--color-moss);
	margin-top: var(--space-2);
	padding-left: var(--space-1);
	line-height: var(--leading-none);
}

/* Divider */
.bn-agegate-divider.elementor-widget-divider .elementor-divider-separator {
	border-top: none !important;
	background-color: var(--color-brass);
	height: 1px;
	width: var(--space-12);
	margin: 0 auto var(--space-10);
	max-width: var(--space-12);
}

/* State containers */
.bn-agegate-denied {
	display: none;
}
.bn-agegate-card.is-denied .bn-agegate-ask {
	display: none;
}
.bn-agegate-card.is-denied .bn-agegate-denied {
	display: block;
}

/* Headings (raw HTML widget, matches the homepage H1 pattern used for
   inline <span class="italic">) */
.bn-agegate-heading {
	font-family: var(--font-serif);
	font-weight: 400;
	color: var(--color-forest);
	line-height: var(--leading-tight);
	margin: 0 0 var(--space-4);
}
.bn-agegate-heading--ask {
	font-size: var(--text-4xl);
}
.bn-agegate-heading--denied {
	font-size: var(--text-4xl);
}
.bn-agegate-heading .italic {
	font-style: italic;
}
@media (min-width: 640px) {
	.bn-agegate-heading--ask {
		font-size: var(--text-5xl);
	}
}

/* Body copy */
.bn-agegate-body.elementor-widget-text-editor .elementor-widget-container,
.bn-agegate-body .elementor-widget-container p {
	margin: 0;
}
.bn-agegate-body p {
	font-family: var(--font-sans);
	font-size: var(--text-sm);
	color: var(--color-moss);
	line-height: var(--leading-html-default);
}
.bn-agegate-ask .bn-agegate-body p {
	margin-bottom: var(--space-10);
}
.bn-agegate-ask .bn-agegate-body {
	margin-bottom: var(--space-10);
}

/* Button row */
.bn-agegate-buttons {
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
	justify-content: center;
	align-items: center;
}
@media (min-width: 640px) {
	.bn-agegate-buttons {
		flex-direction: row;
	}
}

/* Buttons (real Elementor Button widgets) */
.bn-agegate-buttons .elementor-button {
	font-family: var(--font-sans);
	font-size: var(--text-sm);
	letter-spacing: var(--tracking-15);
	text-transform: uppercase;
	font-weight: 400;
	padding: 16px 40px;
	border-radius: var(--radius-full);
	transition: background-color 0.3s, border-color 0.3s, color 0.3s;
	box-shadow: none;
}
.bn-agegate-btn-yes .elementor-button {
	background-color: var(--color-forest);
	color: var(--color-cream);
	border: none;
}
.bn-agegate-btn-yes .elementor-button:hover,
.bn-agegate-btn-yes .elementor-button:focus-visible {
	background-color: var(--color-sage);
	color: var(--color-cream);
}
.bn-agegate-btn-no .elementor-button {
	background-color: transparent;
	color: var(--color-forest);
	border: 1px solid rgba(44, 59, 46, 0.25);
}
.bn-agegate-btn-no .elementor-button:hover,
.bn-agegate-btn-no .elementor-button:focus-visible {
	border-color: var(--color-forest);
	background-color: transparent;
	color: var(--color-forest);
}
.bn-agegate-buttons .elementor-button:focus-visible {
	outline: 2px solid var(--color-sage);
	outline-offset: 2px;
}

/* Footer license line */
.bn-agegate-footer.elementor-widget-text-editor p {
	margin: 0;
	font-family: var(--font-sans);
	font-size: var(--text-11px);
	letter-spacing: var(--tracking-20);
	text-transform: uppercase;
	color: rgba(92, 107, 94, 0.7);
}
.bn-agegate-footer {
	margin-top: var(--space-12);
}

/* Reduced motion: still show the gate, just skip the choreography */
@media (prefers-reduced-motion: reduce) {
	.bn-agegate-card { animation: none; opacity: 1; transform: none; }
	.bn-agegate-popup { transition: none; }
}
