/*
Theme Name: Edge General Store
Theme URI: https://edgegeneralstoreinc.com
Author: AI Business Suites
Description: Standalone classic theme for Edge General Store, a home-style restaurant, gift shop and seasonal events spot in Edge, Texas. One data file, build mode, page families, no page builder and no jQuery.
Version: 1.4.11
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.1
License: Proprietary
Text Domain: edge-general-store
*/

/* ==========================================================================
   Tokens
   ========================================================================== */
:root {
	--cream: #EDE3CF;
	--paper: #FBF6EC;
	--linen: #F3EAD8;
	--walnut: #33261B;
	--walnut-2: #4A3A2D;
	--bark: #6B5442;
	--barn: #8E3A2C;
	--barn-dark: #6E2A1F;
	--navy: #2F4A5E;
	--denim: #4A6074;
	--rose: #B4566E;
	--gold: #D9A441;
	--cactus: #6F7D4C;
	--cactus-deep: #5F6C3D; /* cactus green deepened so 14px cream text passes AA (5.3:1) */
	--plate: #D8CBB2;
	--plate-ink: #5C4837;
	--amber-bg: #FBE7B5;
	--amber-ink: #5A3B00;
	--amber-line: #B07A12;

	--display: 'Ultra', Georgia, 'Times New Roman', serif;
	--body: 'Work Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;

	--lift: 0 1px 1px rgba(59, 42, 30, .10), 0 4px 8px rgba(59, 42, 30, .10), 0 12px 24px rgba(59, 42, 30, .13), 0 28px 56px rgba(59, 42, 30, .17);
	--lift-sm: 0 1px 1px rgba(59, 42, 30, .12), 0 2px 4px rgba(59, 42, 30, .12), 0 6px 12px rgba(59, 42, 30, .12);
	--ease-spring: cubic-bezier(.16, 1, .3, 1);
	--gutter: 32px;
	--radius: 16px;
}

/* ==========================================================================
   Base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
	position: relative; /* the lattice covers the whole page and scrolls with it */
	margin: 0;
	/* Paper grain: one small tile, painted once (was a full-screen SVG filter). */
	background: var(--cream) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.07'/%3E%3C/svg%3E");
	color: var(--walnut);
	font-family: var(--body);
	font-size: 17px;
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
}
.site { position: relative; overflow-x: clip; min-height: 100vh; display: flex; flex-direction: column; }
.egs-main { flex: 1 0 auto; outline: none; }
img, svg, video { max-width: 100%; height: auto; }
img { display: block; }
h1, h2, h3, h4 { color: var(--walnut); margin: 0 0 .5em; line-height: 1.15; text-wrap: balance; }
h1, h2 { font-family: var(--display); font-weight: 400; letter-spacing: .005em; }
h3, h4 { font-family: var(--body); font-weight: 700; }
p { margin: 0 0 1em; }
a { color: var(--barn); text-underline-offset: .18em; text-decoration-thickness: 2px; }
a:hover { color: var(--barn-dark); }
:focus-visible { outline: 3px solid var(--navy); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--gold); color: var(--walnut); }

/* The lattice is painted onto the page and scrolls with it as one sheet.
   It never stays put while text slides over it (v1.1: no scroll parallax). */
.egs-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px;
	overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal;
}
.skip-link {
	position: absolute; left: 16px; top: -100px; z-index: 100;
	background: var(--barn); color: var(--paper); padding: 12px 18px; border-radius: 10px; font-weight: 600;
	min-height: 44px; display: inline-flex; align-items: center;
}
.skip-link:focus { top: 12px; color: var(--paper); }

.egs-wrap { max-width: 1240px; margin: 0 auto; padding: 0 var(--gutter); position: relative; }
.egs-narrow { max-width: 820px; }
.egs-section { padding-top: 36px; padding-bottom: 36px; }
.egs-section__title { font-size: clamp(26px, 3.4vw, 32px); margin-bottom: 20px; }
.egs-small { font-size: 16px; color: var(--bark); }
.egs-lead { font-size: 19px; color: var(--walnut-2); }
.egs-eyebrow { margin: 0; font-size: 15px; font-weight: 600; letter-spacing: .02em; color: var(--walnut-2); }
.lift { box-shadow: var(--lift); }

/* ==========================================================================
   Paper: every block of reading text sits on paper, never on the lattice
   ========================================================================== */
.egs-panel { background: var(--paper); border-radius: var(--radius); padding: 28px 32px; box-shadow: var(--lift-sm); }
.egs-panel > :last-child { margin-bottom: 0; }
.egs-note {
	width: fit-content; max-width: 100%; margin: 16px 0 0; padding: 12px 18px;
	background: var(--paper); border-radius: 12px; box-shadow: var(--lift-sm);
	color: var(--walnut-2); font-size: 16px;
}
.egs-section__lead {
	width: fit-content; max-width: 100%; margin: -8px 0 20px; padding: 8px 16px;
	background: var(--paper); border-radius: 10px; color: var(--walnut-2); font-size: 17px;
}
.egs-stack { display: grid; gap: 24px; align-content: start; }
/* Text-column mask: a feathered sheet of solid cream behind hero and page
   header text. The lattice stays visible around it and at the edges. */
.egs-hero__text, .egs-pagehead__text { position: relative; isolation: isolate; }
.egs-hero__text::before, .egs-pagehead__text::before {
	content: ""; position: absolute; z-index: -1; inset: -24px -32px; pointer-events: none;
	background: var(--cream); border-radius: 48px; box-shadow: 0 0 36px 28px var(--cream);
}

/* ==========================================================================
   Buttons and links
   ========================================================================== */
.btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 48px; padding: 0 24px; border-radius: 12px; border: 0;
	font-family: var(--body); font-weight: 600; font-size: 17px; line-height: 1.2; text-align: center;
	text-decoration: none; cursor: pointer; -webkit-tap-highlight-color: transparent;
	transition: transform 150ms cubic-bezier(.2, 0, 0, 1), background-color 150ms ease;
}
.btn-main { background: var(--barn); color: var(--paper); box-shadow: var(--lift-sm); }
.btn-main:hover, .btn-main:focus-visible { color: var(--paper); background: var(--barn-dark); }
.btn-main:active { transform: scale(.97); }
.btn-ghost { background: transparent; color: var(--barn); box-shadow: inset 0 0 0 2px var(--barn); }
.btn-ghost:hover, .btn-ghost:focus-visible { color: var(--paper); background: var(--barn); }
.egs-form--card .egs-form__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.egs-form__phone { font-family: var(--display); font-size: 24px; margin: 4px 0 16px; }
.egs-form__phone a { color: var(--walnut); text-decoration: none; }
@media (hover: hover) and (pointer: fine) {
	.btn-main:hover { transform: translateY(-1px); }
}
/* Paragraphs left empty when a build-note shortcode prints nothing in live mode. */
.egs-prose p:empty { display: none; }
.egs-products__line { margin: 4px 0 0; }
.egs-textlink {
	display: inline-flex; align-items: center; min-height: 44px;
	font-weight: 600; font-size: 17px; color: var(--barn);
}
.egs-actions { display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: center; }

/* ==========================================================================
   Build mode notes
   ========================================================================== */
.egs-todo {
	display: inline; margin: 0; padding: 2px 8px; -webkit-box-decoration-break: clone; box-decoration-break: clone;
	background: var(--amber-bg); color: var(--amber-ink);
	border: 1px dashed var(--amber-line); border-radius: 6px;
	font: 600 13px/1.4 var(--body); letter-spacing: .01em; vertical-align: middle;
}
/* In a sentence the note runs inline (so a trailing period stays put);
   on its own in a card, list item or form it sits on its own line. */
:is(div, section, aside, li, form, header, footer, article) > .egs-todo { display: table; margin: 6px 0; }
.egs-price { font-weight: 700; white-space: nowrap; }
.egs-price--blank { color: var(--amber-ink); background: var(--amber-bg); border-radius: 4px; padding: 0 6px; }
.egs-buildbar { position: relative; z-index: 2; background: var(--amber-bg); color: var(--amber-ink); border-block: 1px dashed var(--amber-line); font-size: 14px; font-weight: 600; padding: 8px 0; }

/* ==========================================================================
   Header and mega menu
   ========================================================================== */
.egs-header { position: relative; z-index: 40; background: var(--cream); }
.egs-nowrap { white-space: nowrap; }
a[href^="tel:"] { white-space: nowrap; }
.egs-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; padding-top: 20px; padding-bottom: 20px; }
.egs-brand {
	font-family: var(--display); font-size: 24px; letter-spacing: .01em; line-height: 1.1;
	color: var(--walnut); text-decoration: none; min-height: 44px; display: inline-flex; align-items: center;
}
.egs-brand:hover { color: var(--walnut); }
.egs-header__call { white-space: nowrap; }
.egs-header__call-short { display: none; }

.egs-nav .menu, .egs-nav .sub-menu { list-style: none; margin: 0; padding: 0; }
.egs-nav a { color: var(--walnut); text-decoration: none; font-weight: 600; }
.egs-nav a:hover { color: var(--barn); }
.egs-nav .current-menu-item > a, .egs-nav .current-menu-ancestor > a, .egs-nav .current_page_ancestor > a { color: var(--barn); text-decoration: underline; }

.egs-nav-toggle {
	display: none; align-items: center; gap: 10px; min-height: 44px; padding: 0 14px;
	background: var(--paper); color: var(--walnut); border: 2px solid var(--bark); border-radius: 12px;
	font: 600 16px var(--body); cursor: pointer;
}
.egs-nav-toggle__bars, .egs-nav-toggle__bars::before, .egs-nav-toggle__bars::after {
	display: block; width: 18px; height: 2px; background: currentColor; border-radius: 2px; position: relative;
}
.egs-nav-toggle__bars::before, .egs-nav-toggle__bars::after { content: ""; position: absolute; left: 0; }
.egs-nav-toggle__bars::before { top: -6px; }
.egs-nav-toggle__bars::after { top: 6px; }

@media (min-width: 1000px) {
	.egs-nav { flex: 1; display: flex; justify-content: center; position: relative; --col: 228px; --cols: 4; --mega-h: 236px; }
	.egs-nav .menu { display: flex; gap: 6px; }
	.egs-nav .menu > li { position: static; }
	.egs-nav .menu > li:nth-child(1) { --c: 0; }
	.egs-nav .menu > li:nth-child(2) { --c: 1; }
	.egs-nav .menu > li:nth-child(3) { --c: 2; }
	.egs-nav .menu > li:nth-child(4) { --c: 3; }
	.egs-nav .menu > li:nth-child(5) { --c: 4; }
	.egs-nav .menu > li > a { display: flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 10px; font-size: 16px; }
	.egs-nav .menu-item-has-children > a::after {
		content: ""; width: 7px; height: 7px; margin-left: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
		transform: translateY(-2px) rotate(45deg);
	}
	/* The mega panel: one paper sheet, one column per family. */
	.egs-nav::after {
		content: ""; position: absolute; z-index: 29; top: calc(100% + 10px);
		left: 50%; width: calc(var(--col) * var(--cols) + 40px); margin-left: calc((var(--col) * var(--cols) + 40px) / -2);
		height: var(--mega-h); background: var(--paper); border-radius: 18px; box-shadow: var(--lift);
	}
	.egs-nav::before { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 12px; }
	.egs-mega-head, .egs-nav .sub-menu {
		position: absolute; z-index: 30; width: calc(var(--col) - 16px);
		left: calc(50% - (var(--col) * var(--cols) + 40px) / 2 + 20px + var(--c) * var(--col));
	}
	.egs-mega-head {
		top: calc(100% + 30px); font-family: var(--display); font-size: 18px; color: var(--walnut);
		padding: 0 12px; pointer-events: none;
	}
	.egs-nav .sub-menu { top: calc(100% + 64px); padding: 0; border-top: 2px dashed var(--plate); padding-top: 6px; }
	.egs-nav::after, .egs-mega-head, .egs-nav .sub-menu {
		opacity: 0; visibility: hidden; transform: translateY(-4px);
		transition: opacity 180ms ease, transform 180ms ease, visibility 0s linear 180ms;
	}
	.egs-nav .sub-menu a { display: flex; align-items: center; min-height: 44px; padding: 0 12px; border-radius: 8px; font-weight: 500; }
	.egs-nav .sub-menu a:hover { background: var(--linen); }
	.egs-nav:hover::after, .egs-nav:hover .egs-mega-head, .egs-nav:hover .sub-menu,
	.egs-nav:focus-within::after, .egs-nav:focus-within .egs-mega-head, .egs-nav:focus-within .sub-menu,
	.egs-nav.is-open::after, .egs-nav.is-open .egs-mega-head, .egs-nav.is-open .sub-menu { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
	.egs-nav.is-closed::after, .egs-nav.is-closed .egs-mega-head, .egs-nav.is-closed .sub-menu { opacity: 0; visibility: hidden; }
}
@media (min-width: 1000px) and (prefers-reduced-motion: reduce) {
	.egs-nav::after, .egs-mega-head, .egs-nav .sub-menu { transition: none; transform: none; }
}
.egs-mega-head { display: none; }
@media (min-width: 1000px) { .egs-mega-head { display: block; } }

@media (max-width: 999.98px) {
	.js .egs-nav-toggle { display: inline-flex; }
	.egs-header__inner { flex-wrap: wrap; }
	.egs-brand { flex: 1 1 0; min-width: 0; font-size: 21px; }
	.egs-header__inner { flex-wrap: wrap; }
	.egs-header__call { order: 2; }
	.egs-nav-toggle { order: 3; }
	.js .egs-nav { display: none; }
	.egs-nav { flex-basis: 100%; order: 5; }
	.egs-header.is-open .egs-nav { display: block; }
	.egs-nav .menu {
		display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 20px;
		background: var(--paper); border-radius: var(--radius); box-shadow: var(--lift); padding: 16px;
	}
	.egs-nav .menu > li > a { display: flex; align-items: center; min-height: 44px; font-family: var(--display); font-weight: 400; font-size: 20px; }
	.egs-nav .sub-menu a { display: flex; align-items: center; min-height: 44px; padding-left: 12px; border-left: 2px dashed var(--plate); font-weight: 500; }
	.egs-header__call-long { display: none; }
	.egs-header__call-short { display: inline; }
	.egs-header__call { padding: 0 18px; }
}

/* ==========================================================================
   Hero and the patch stage (port of the concept)
   ========================================================================== */
.egs-hero { position: relative; }
.egs-hero__grid {
	display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 48px; align-items: center;
	padding-top: 32px; padding-bottom: 52px;
}
.egs-hero__text { display: flex; flex-direction: column; gap: 22px; }
.egs-hero__title { margin: 0; font-size: clamp(36px, 5.2vw, 58px); line-height: 1.08; }
.egs-hero__lede { margin: 0; font-size: 19px; line-height: 1.55; color: var(--walnut-2); max-width: 34em; }
.egs-hero__actions { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.egs-hero__hours { margin: 0; font-size: 16px; color: var(--walnut-2); }
.egs-hero__drive { margin: 0; font-size: 16px; font-weight: 600; color: var(--walnut); }

/* Live open-now line (filled by site.js in store time) */
.egs-open { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; margin: 0; font-weight: 700; font-size: 17px; color: var(--walnut); }
.egs-open[hidden] { display: inline-flex; visibility: hidden; min-height: 26px; } /* space held so the line does not shift the page */
.egs-open__dot { width: 11px; height: 11px; border-radius: 50%; background: var(--bark); box-shadow: 0 0 0 3px rgba(107, 84, 66, .18); flex: none; }
.egs-open.is-open .egs-open__dot { background: #2E7D32; box-shadow: 0 0 0 3px rgba(46, 125, 50, .2); }
.egs-open__extra { font-weight: 500; }
.egs-cta__open { margin: 0 0 12px; }

/* Other map apps, under a directions button */
.egs-diralt { margin: 0; font-size: 14px; color: var(--walnut-2); }
.egs-diralt a { color: var(--barn); text-decoration: underline; text-underline-offset: 3px; display: inline-block; padding: 11px 0; }
.egs-cta__actions .egs-diralt { flex-basis: 100%; }

/* Season ribbon */
.egs-ribbon { position: relative; z-index: 2; background: var(--cactus-deep); color: var(--paper); font-weight: 600; font-size: 15px; padding: 10px 0; text-align: center; }
.egs-ribbon a { color: var(--paper); text-decoration: underline; text-underline-offset: 3px; margin: -6px 0 -6px 8px; display: inline-block; padding: 12px 4px; }
.egs-ribbon :focus-visible { outline-color: var(--paper); }

.egs-stage { position: relative; height: 600px; }

.patch { position: absolute; transform: rotate(var(--r, 0deg)); }
/* Only the home hero badges respond to the mouse: a small offset, 400 ms. */
.egs-hero .patch { will-change: transform; transition: transform 400ms cubic-bezier(.2, .8, .2, 1); }
.patch--photo { left: 10%; top: 4%; width: 56%; z-index: 1; }
.patch--seal-pos { right: 4%; top: 0; width: 176px; z-index: 2; }
.patch--burger-pos { right: 0; top: 44%; width: 236px; z-index: 3; }
.patch--duck-pos { left: 0; top: 66%; width: 236px; z-index: 3; }
.patch--cat-pos { left: 52%; top: 84%; width: 150px; z-index: 4; }

/* The one ambient motion on the site: the home hero badges bob a few
   pixels, slowly. Never behind reading text, never on inner pages. */
.egs-hero .drift-a { animation: egsDrift 11s ease-in-out infinite; }
.egs-hero .drift-b { animation: egsDrift 13s ease-in-out -4s infinite; }
.egs-hero .drift-c { animation: egsDrift 12s ease-in-out -7s infinite; }
.egs-hero .drift-d { animation: egsDrift 14s ease-in-out -2s infinite; }
@keyframes egsDrift {
	0%, 100% { transform: translate3d(0, 0, 0); }
	50% { transform: translate3d(0, -4px, 0); }
}
/* The cloth shapes hold still (v1.1 dropped the breathing outlines). */
.patch__cloth--seal, .patch__cloth--seal .patch__stitch { border-radius: 50% 50% 48% 52% / 52% 48% 52% 48%; }
.patch__cloth--cat, .patch__cloth--cat .patch__stitch { border-radius: 50% 50% 48% 52% / 52% 48% 52% 48%; }
.patch__cloth--burger, .patch__cloth--duck, .patch__cloth--flower { border-radius: 28px 30px 26px 32px; }
.patch__cloth--burger .patch__stitch, .patch__cloth--duck .patch__stitch, .patch__cloth--flower .patch__stitch { border-radius: 22px 24px 20px 26px; }

.egs-polaroid { margin: 0; background: var(--paper); padding: 12px 12px 44px; border-radius: 6px; }
.egs-polaroid figcaption { margin: 12px 4px 0; font-size: 14px; color: var(--bark); }
.egs-polaroid .egs-plate, .egs-polaroid .egs-photo img { height: 310px; width: 100%; object-fit: cover; }
.egs-polaroid .egs-photo { margin: 0; }

.patch__cloth { box-sizing: border-box; }
.patch__stitch { display: flex; align-items: center; box-sizing: border-box; }
.patch__cloth--seal { width: 176px; height: 176px; background: var(--navy); padding: 9px; display: flex; }
.patch__cloth--seal .patch__stitch {
	width: 100%; height: 100%; border: 2px dashed rgba(251, 246, 236, .7);
	flex-direction: column; justify-content: center; gap: 4px; color: var(--paper);
}
.patch__year { font-family: var(--display); font-size: 27px; line-height: 1; }
.patch__place { font-size: 12px; font-weight: 600; letter-spacing: .08em; }
.patch__cloth--burger { background: var(--barn); padding: 7px; }
.patch__cloth--duck { background: var(--cactus-deep); padding: 7px; }
.patch__cloth--flower { background: var(--navy); padding: 7px; }
.patch__cloth--burger .patch__stitch, .patch__cloth--duck .patch__stitch, .patch__cloth--flower .patch__stitch {
	border: 2px dashed rgba(251, 246, 236, .65); padding: 14px 16px; color: var(--paper); gap: 14px;
}
.patch__words { display: flex; flex-direction: column; gap: 2px; }
.patch__title { font-family: var(--display); font-size: 19px; line-height: 1.1; }
.patch__text { font-size: 14px; }
.patch__cloth--cat { width: 150px; height: 86px; background: var(--linen); padding: 6px; display: flex; }
.patch__cloth--cat .patch__stitch {
	width: 100%; height: 100%; border: 2px dashed rgba(107, 84, 66, .45);
	justify-content: center; gap: 8px; color: var(--walnut);
}
.patch__badge { font-size: 14px; font-weight: 600; line-height: 1.2; }
.patch__stitch .egs-mark { flex: none; }

/* Inner page header */
.egs-pagehead { position: relative; }
.egs-pagehead__inner {
	display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 32px; align-items: center;
	padding-top: 16px; padding-bottom: 24px;
}
.egs-pagehead__title { font-size: clamp(32px, 4.6vw, 52px); line-height: 1.1; margin: 4px 0 12px; }
.egs-pagehead__intro { font-size: 19px; color: var(--walnut-2); max-width: 36em; margin: 0; }
.egs-pagehead__patch { position: relative; height: 190px; }
.egs-pagehead__patch .patch { top: 10px; right: 10px; }
.patch--header.patch--burger, .patch--header.patch--duck { width: 236px; }

/* Breadcrumbs */
.egs-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; font-size: 15px; }
.egs-crumbs li { display: inline-flex; align-items: center; color: var(--bark); }
.egs-crumbs li + li::before { content: "/"; margin: 0 8px; color: var(--bark); }
.egs-crumbs a { display: inline-flex; align-items: center; min-height: 44px; color: var(--barn); font-weight: 600; }
.egs-crumbs [aria-current] { color: var(--bark); }

/* ==========================================================================
   Cards, strips and lists
   ========================================================================== */
.egs-card { background: var(--paper); border-radius: var(--radius); padding: 28px; }
.egs-card > :last-child { margin-bottom: 0; }
.egs-card h2 { font-size: 26px; }
.egs-card h3 { font-size: 22px; }

.egs-week__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 0; padding: 0; }
.egs-week__feature { display: flex; flex-direction: column; gap: 12px; padding: 28px 32px; }
.egs-week__feature h3 { margin: 0; font-family: var(--display); font-weight: 400; font-size: 24px; }
.egs-week__feature p { margin: 0; color: var(--walnut-2); font-size: 18px; max-width: 36em; }
.egs-week__side { padding: 28px 32px; display: flex; flex-direction: column; gap: 18px; border-left: 2px dashed var(--plate); }
.egs-week__item h3 { font-size: 18px; margin: 0 0 4px; }
.egs-week__item h3 a { color: var(--walnut); }
.egs-week__item p { margin: 0; font-size: 16px; color: var(--walnut-2); }

.egs-hubs { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 20px; }
.egs-hub__link {
	display: flex; flex-direction: column; gap: 8px; height: 100%; padding: 24px; border-radius: var(--radius);
	background: var(--paper); color: var(--walnut); text-decoration: none; transition: transform 300ms var(--ease-spring);
}
.egs-hub__title { font-family: var(--display); font-size: 22px; color: var(--barn); }
.egs-hub__text { font-size: 16px; color: var(--walnut-2); }
@media (hover: hover) and (pointer: fine) {
	.egs-hub__link:hover { transform: translateY(-3px) rotate(-.6deg); color: var(--walnut); }
}

.egs-reviews__card {
	display: flex; gap: 32px; align-items: center; background: var(--walnut); color: var(--linen);
	border-radius: var(--radius); padding: 32px 40px; box-shadow: var(--lift);
	outline: 2px dashed rgba(243, 234, 216, .32); outline-offset: -10px;
}
.egs-reviews__score { display: flex; flex-direction: column; align-items: center; min-width: 120px; }
.egs-reviews__num { font-family: var(--display); font-size: 160px; line-height: .8; color: #D9A441; display: block; height: 90px; }
.egs-reviews__stars { display: flex; gap: 2px; margin-top: 6px; }
.egs-reviews__text h2 { font-size: 28px; color: var(--paper); margin-bottom: 6px; }
.egs-reviews__text p { color: var(--linen); margin-bottom: 4px; font-size: 18px; max-width: 36em; }
.egs-reviews .egs-textlink { color: var(--paper); }
.egs-special a { color: var(--paper); text-decoration: underline; text-underline-offset: 3px; }
.egs-reviews__links { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 0; }
.egs-reviews__quotes { list-style: none; margin: 14px 0 16px; padding: 0; display: grid; gap: 12px; }
.egs-reviews__quotes blockquote { margin: 0; }
.egs-reviews__quotes blockquote p { font-family: var(--display); font-size: 20px; color: var(--paper); margin: 0; }
.egs-reviews__text p.egs-reviews__who { font-size: 15px; margin: 2px 0 0; opacity: .85; }
.egs-reviews .egs-textlink:hover { color: #fff; }
.egs-reviews :focus-visible { outline-color: var(--linen); }

/* Social feeds (home): two paper columns, stacked on phones */
.egs-feeds__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.egs-feeds { content-visibility: auto; contain-intrinsic-size: auto 1200px; }
.egs-feeds__grid--single { grid-template-columns: minmax(0, 1fr); max-width: 760px; margin: 0 auto; }
.egs-feed { min-width: 0; overflow: hidden; }
.egs-feed__title { font-family: var(--display); font-weight: 400; font-size: 24px; margin-bottom: 12px; }
.egs-feed__body { max-width: 100%; overflow-x: hidden; margin-bottom: 12px; }
.egs-feed__body img, .egs-feed__body video { max-width: 100% !important; height: auto; }
.egs-feed__body iframe { max-width: 100% !important; }
/* Keep the Facebook column a sensible height: cap it and fade the bottom. */
.egs-feed--facebook .egs-feed__body { max-height: 1090px; overflow: hidden; position: relative; }
.egs-feed--facebook .egs-feed__body::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 140px; background: linear-gradient(rgba(251, 246, 236, 0), var(--paper)); pointer-events: none; }
@media (max-width: 860px) { .egs-feed--facebook .egs-feed__body { max-height: 900px; } }
.egs-feed__body > * { max-width: 100% !important; box-sizing: border-box; }

.egs-gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.egs-gallery__item { aspect-ratio: 4 / 3; margin: 0; border-radius: 12px; overflow: hidden; }
.egs-gallery .egs-gallery__item { min-height: 0; min-width: 0; } /* a min-height with aspect-ratio forced tiles wider than their column on phones */
.egs-gallery__item img { width: 100%; height: 100%; object-fit: cover; }
.egs-gallery > :nth-child(odd) { transform: rotate(-.6deg); }
.egs-gallery > :nth-child(even) { transform: rotate(.5deg); }

/* Photo plates */
.egs-plate {
	display: flex; align-items: center; justify-content: center; text-align: center;
	min-height: 200px; padding: 24px; background: var(--plate); color: var(--plate-ink);
	font-size: 14px; font-weight: 600; border-radius: 6px; border: 2px dashed rgba(92, 72, 55, .35);
}
.egs-plate--quiet { border-style: solid; border-color: transparent; }
.egs-plate--quiet .egs-mark { width: 54px; height: 54px; opacity: .55; }
.egs-photo { margin: 0; }
.egs-photo img { border-radius: 10px; width: 100%; }
.egs-photo--content, .egs-plate.egs-photo--content { margin: 24px 0; max-width: 760px; box-shadow: var(--lift); border-radius: 10px; }
.egs-photo--content img { aspect-ratio: 4 / 3; height: auto; object-fit: cover; }
.egs-photo--content .egs-plate { min-height: 260px; }
.egs-plate.egs-photo--content { min-height: 260px; }

/* Prose: page body copy always sits on a paper panel. 720px holds 18px
   Work Sans to about 70 characters a line. */
.egs-prose {
	max-width: 720px; background: var(--paper); border-radius: var(--radius);
	padding: 32px 36px; box-shadow: var(--lift-sm);
}
.egs-prose > :last-child { margin-bottom: 0; }
.egs-prose:empty { display: none; }
.egs-prose--bare { max-width: none; background: none; padding: 0; box-shadow: none; border-radius: 0; }
.egs-prose h2 { font-size: clamp(24px, 3vw, 30px); margin-top: 1.4em; }
.egs-prose h2:first-child { margin-top: 0; }
.egs-prose h3 { font-size: 21px; margin-top: 1.2em; }
.egs-prose p, .egs-prose li { color: var(--walnut-2); font-size: 18px; line-height: 1.6; }
/* Cards inside the paper panel go flat so they do not stack shadows. */
.egs-prose .egs-menu-section, .egs-prose .egs-form, .egs-prose .egs-callout { background: var(--linen); box-shadow: none; }
.egs-prose .egs-photo--content { box-shadow: var(--lift-sm); }
.egs-prose .egs-items, .egs-prose .egs-ticks { padding-left: 0; }
.egs-prose .egs-item { font-size: 17px; }
.egs-home-body .egs-prose { margin-inline: auto; }
.egs-prose ul, .egs-prose ol { padding-left: 1.2em; }
.egs-callout {
	background: var(--paper); border-left: 6px solid var(--barn); border-radius: 10px; padding: 16px 20px;
	font-weight: 600; color: var(--walnut); box-shadow: var(--lift-sm); max-width: 70ch;
}
.egs-ticks { list-style: none; padding: 0; margin: 0 0 1em; }
.egs-ticks li { position: relative; padding-left: 28px; margin-bottom: 8px; }
.egs-ticks li::before {
	content: ""; position: absolute; left: 4px; top: .55em; width: 10px; height: 10px; border-radius: 50%;
	background: var(--rose); box-shadow: 0 0 0 3px var(--paper), 0 0 0 4px var(--gold);
}
.egs-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px; align-items: start; }
.egs-split > .egs-prose { max-width: none; }
.egs-split--photo { align-items: center; }
.egs-split--photo .egs-photo--content { margin: 0; }

/* A short dark band (live music on /events/), to break up the paper */
.egs-band { background: var(--navy); color: var(--paper); border-radius: var(--radius); padding: 24px 28px; max-width: 760px; box-shadow: var(--lift-sm); }
.egs-band h2 { color: var(--paper); font-size: 26px; margin-bottom: 8px; }
.egs-band p { color: var(--paper); margin: 0; font-size: 18px; }

/* Tiles (When you get here on /visit/) */
.egs-tiles { margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.egs-tiles > div { background: var(--paper); border-radius: 14px; padding: 18px 22px; box-shadow: var(--lift-sm); }
.egs-tiles dt { font-weight: 700; color: var(--walnut); margin-bottom: 4px; }
.egs-tiles dd { margin: 0; color: var(--walnut-2); }
.egs-label { display: inline-block; font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: var(--bark); margin-right: 6px; }

/* Menu */
.egs-special { background: var(--navy); color: var(--paper); border-radius: var(--radius); padding: 24px 28px; max-width: 760px; }
.egs-special__title { color: var(--paper); font-size: 26px; margin-bottom: 8px; }
.egs-special p { color: var(--paper); margin-bottom: 6px; }
.egs-special__name { font-family: var(--display); font-size: 22px; }
.egs-jump ul { list-style: none; margin: 0 0 24px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.egs-jump a {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 999px;
	background: var(--paper); box-shadow: var(--lift-sm); font-weight: 600; text-decoration: none;
}
.egs-menu { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 24px; align-items: start; }
.egs-menu-section { background: var(--paper); border-radius: var(--radius); padding: 24px 28px; box-shadow: var(--lift); scroll-margin-top: 24px; }
.egs-menu-section__title { font-size: 26px; margin-bottom: 6px; }
.egs-menu-section__note { color: var(--bark); font-size: 16px; }
.egs-items { list-style: none; margin: 0; padding: 0; }
.egs-item { padding: 10px 0; border-bottom: 1px dashed rgba(107, 84, 66, .35); }
.egs-item:last-child { border-bottom: 0; }
.egs-item__row { display: flex; align-items: baseline; gap: 10px; }
.egs-item__name { font-weight: 700; }
.egs-item__dots { flex: 1; border-bottom: 2px dotted rgba(107, 84, 66, .4); transform: translateY(-4px); min-width: 20px; }
.egs-item__desc { display: block; color: var(--walnut-2); font-size: 16px; }
.egs-badge {
	display: inline-block; margin: 6px 8px 0 0; padding: 2px 10px; border-radius: 999px;
	font-size: 15px; font-weight: 700; background: var(--linen); color: var(--walnut); border: 1px solid rgba(107, 84, 66, .35);
}
.egs-badge--ships { background: var(--navy); color: var(--paper); border-color: var(--navy); }
.egs-badge--pickup { background: var(--linen); }

/* Shop */
.egs-shop { list-style: none; margin: 0 0 24px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.egs-shop__title { font-size: 26px; }
.egs-shop__title a { color: var(--barn); }
.egs-shop__mark, .egs-event-card__mark { margin-bottom: 10px; }

/* Events */
.egs-events { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; }
.egs-event-card h3 { font-family: var(--display); font-weight: 400; font-size: 24px; }
.egs-event-card h3 a { color: var(--barn); }
.egs-event-card__when { font-weight: 600; }

/* Facts lists (event box, visit) */
.egs-facts { margin: 0 0 24px; padding: 24px 28px; background: var(--paper); border-radius: var(--radius); display: grid; gap: 14px; max-width: 760px; }
.egs-facts--wide { max-width: none; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 18px 32px; }
.egs-facts > div { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 12px; }
.egs-facts--wide > div { grid-template-columns: 1fr; gap: 2px; }
.egs-facts dt { font-weight: 700; color: var(--bark); }
.egs-facts dd { margin: 0; }

/* Visit */
.egs-visit__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; margin-bottom: 24px; }
.egs-hours { border-collapse: collapse; width: 100%; max-width: 420px; margin-bottom: 8px; }
.egs-hours th, .egs-hours td { text-align: left; padding: 7px 0; border-bottom: 1px dashed rgba(107, 84, 66, .35); font-size: 16px; }
.egs-hours th { font-weight: 600; padding-right: 16px; }
.egs-address { font-style: normal; margin-bottom: 10px; }
.egs-address a { display: inline-flex; min-height: 44px; align-items: center; }
.egs-map { position: relative; border-radius: var(--radius); overflow: hidden; background: var(--plate); box-shadow: var(--lift); min-height: 320px; }
.egs-map iframe { display: block; width: 100%; height: 420px; border: 0; }
.egs-map__cover { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 320px; padding: 24px; text-align: center; color: var(--plate-ink); font-weight: 600; }
.egs-map.is-loaded .egs-map__cover { display: none; }
.egs-story__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 36px; align-items: center; }
.egs-story__text { max-width: 36em; }
.egs-story__text p, .egs-story__text li { font-size: 18px; line-height: 1.6; color: var(--walnut-2); }
.egs-story__text > :last-child { margin-bottom: 0; }
.egs-story__title { font-size: clamp(26px, 3.4vw, 32px); }
.egs-story__sub { font-size: 18px; margin-top: 1.2em; }
.egs-story__photo { box-shadow: var(--lift-sm); transform: rotate(-1deg); }
.egs-story__photo.egs-plate { min-height: 280px; }
.egs-story__text .egs-story__src { font-size: 14px; color: var(--bark); margin-top: 12px; }
.egs-story__src a { color: var(--barn); }

/* FAQs */
.egs-faqs { max-width: 860px; margin-bottom: 8px; }
.egs-faqs__title { font-size: clamp(24px, 3vw, 30px); }
.egs-faq { background: var(--paper); border-radius: 12px; margin-bottom: 10px; box-shadow: var(--lift-sm); }
.egs-faq summary {
	list-style: none; cursor: pointer; min-height: 52px; padding: 14px 52px 14px 20px; position: relative;
	font-weight: 600; font-size: 17px; border-radius: 12px;
}
.egs-faq summary::-webkit-details-marker { display: none; }
.egs-faq summary::after {
	content: ""; position: absolute; right: 22px; top: 50%; width: 9px; height: 9px; margin-top: -7px;
	border-right: 2px solid var(--barn); border-bottom: 2px solid var(--barn); transform: rotate(45deg); transition: transform 200ms ease;
}
.egs-faq[open] summary::after { transform: rotate(-135deg); margin-top: -2px; }
.egs-faq__a { padding: 0 20px 16px; color: var(--walnut-2); }
.egs-faq__a p { margin-bottom: 6px; }
.egs-faq-page__more { margin: 0 0 28px; }
.egs-faq-page__more .egs-textlink { padding: 0 18px; border-radius: 999px; background: var(--paper); box-shadow: var(--lift-sm); }

/* Family block */
.egs-family { padding: 24px 28px; border: 2px dashed rgba(107, 84, 66, .4); border-radius: var(--radius); background: var(--paper); }
.egs-family__title { font-size: 24px; margin-bottom: 12px; }
.egs-related { padding: 24px 28px; border-radius: var(--radius); background: var(--paper); box-shadow: var(--lift-sm); }
.egs-related__title { font-size: 24px; margin-bottom: 12px; }
.egs-related__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.egs-related__link { font-weight: 700; }
.egs-family__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.egs-family__link {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border-radius: 999px;
	background: var(--paper); box-shadow: var(--lift-sm); font-weight: 600; text-decoration: none;
}
.egs-family__link::after { content: "\2192"; margin-left: 8px; }

/* Forms */
.egs-form { background: var(--paper); border-radius: var(--radius); padding: 28px; position: relative; }
.egs-form__title { font-size: 26px; }

/* Email list signup */
.egs-signup { background: var(--paper); border-radius: var(--radius); padding: 28px; max-width: 860px; margin: 0 auto; position: relative; }
.egs-signup__title { font-family: var(--display); font-weight: 400; font-size: 28px; margin: 0 0 6px; }
.egs-signup__lead { margin: 0 0 16px; color: var(--walnut-2); }
.egs-signup__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) auto; gap: 12px 16px; align-items: end; }
.egs-signup__row .egs-field { margin: 0; }
.egs-signup__row .btn { min-height: 48px; }
.egs-signup__fine { font-size: 14px; color: var(--bark); margin: 12px 0 0; }
.egs-signup__fine a { color: var(--barn); }
.egs-signup__status { font-weight: 700; margin: 10px 0 0; color: var(--walnut); }
.egs-signup__status:empty { display: none; }
.egs-signup.is-done .egs-signup__row { display: none; }
@media (max-width: 700px) { .egs-signup__row { grid-template-columns: minmax(0, 1fr); } .egs-signup { padding: 22px 20px; } }
.egs-field { margin: 0 0 16px; display: flex; flex-direction: column; gap: 6px; }
.egs-field label { font-weight: 600; }
.egs-optional { font-weight: 400; color: var(--bark); }
.egs-field input, .egs-field textarea {
	font: 400 17px/1.4 var(--body); color: var(--walnut); background: #FFFDF8;
	border: 2px solid var(--bark); border-radius: 10px; padding: 10px 12px; min-height: 48px; width: 100%;
}
.egs-field input:focus-visible, .egs-field textarea:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; }
.egs-hint { font-size: 14px; color: var(--bark); }
.egs-hp { position: absolute !important; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.egs-form__actions { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: center; margin-top: 8px; }
.egs-form__alt a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; }
.egs-form__note { font-size: 14px; color: var(--bark); margin: 10px 0 0; }
.egs-form__status:empty { display: none; }
.egs-form__status { margin: 12px 0 0; padding: 12px 14px; border-radius: 10px; background: var(--linen); font-weight: 600; }
.egs-turnstile { margin: 8px 0 12px; }

/* Barn teaser */
.egs-barn-teaser { border: 2px dashed rgba(107, 84, 66, .4); box-shadow: none; }

/* Posts */
.egs-posts { list-style: none; margin: 0; padding: 0; display: grid; gap: 20px; }
.egs-post__title { font-size: 26px; }
.egs-post__title a { color: var(--walnut); text-decoration: none; }

/* ==========================================================================
   CTA band, visit bar, footer, phone bar
   ========================================================================== */
.egs-cta { padding: 40px 0 48px; }
.egs-cta__card { background: var(--paper); border-radius: 20px; padding: 10px; }
.egs-cta__stitch {
	border: 2px dashed rgba(142, 58, 44, .45); border-radius: 14px; padding: 28px;
	display: flex; flex-wrap: wrap; gap: 20px 32px; align-items: center; justify-content: space-between;
}
.egs-cta__title { font-size: clamp(26px, 3.4vw, 34px); margin-bottom: 6px; }
.egs-cta__text p { margin: 0; color: var(--walnut-2); }
.egs-cta__where { font-size: 18px; margin-bottom: 14px !important; }
.egs-cta__facts { margin: 0; display: grid; gap: 6px; }
.egs-cta__facts > div { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 12px; align-items: baseline; }
.egs-cta__facts dt { font-weight: 700; color: var(--walnut); }
.egs-cta__facts dd { margin: 0; color: var(--walnut-2); }
.egs-cta__actions { display: flex; gap: 12px 20px; flex-wrap: wrap; align-items: center; }


.egs-footer { background: var(--walnut); color: var(--linen); padding: 40px 0 24px; font-size: 16px; }
.egs-footer a { color: var(--linen); }
.egs-footer a:hover { color: #fff; }
.egs-footer :focus-visible, .egs-phonebar :focus-visible { outline-color: var(--linen); }
.egs-footer__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 32px; }
.egs-footer__brand { font-family: var(--display); font-size: 24px; margin-bottom: 8px; }
.egs-footer__title { font-family: var(--body); font-weight: 700; font-size: 16px; text-transform: uppercase; letter-spacing: .08em; color: var(--linen); margin: 0 0 10px; }
.egs-footer__title + * { margin-top: 0; }
.egs-footer .egs-hours th, .egs-footer .egs-hours td { border-bottom-color: rgba(243, 234, 216, .2); font-size: 15px; }
.egs-footer__menu, .egs-footer__social { list-style: none; margin: 0 0 20px; padding: 0; }
.egs-footer__menu a, .egs-footer__social a { display: inline-flex; align-items: center; min-height: 44px; }
.egs-footer__social { display: flex; gap: 20px; }
.egs-footer__base { border-top: 1px solid rgba(243, 234, 216, .2); margin-top: 24px; padding-top: 16px; font-size: 14px; }
.egs-footer__base p { margin: 0; }
.egs-footer .egs-todo { color: var(--amber-ink); }
.egs-footer .egs-small, .egs-footer .egs-small p, .egs-footer address + p, .egs-footer__col p { color: rgba(243, 234, 216, .85); }

.egs-phonebar { display: none; }
@media (max-width: 759.98px) {
	.egs-phonebar {
		display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
		background: var(--walnut); box-shadow: 0 -6px 18px rgba(59, 42, 30, .25); padding-bottom: env(safe-area-inset-bottom, 0);
	}
	.egs-phonebar a {
		display: flex; align-items: center; justify-content: center; min-height: 56px;
		color: var(--linen); font-weight: 700; text-decoration: none; border-right: 1px solid rgba(243, 234, 216, .18);
	}
	.egs-phonebar a:first-child { background: var(--barn); color: var(--paper); } /* Directions leads */
	.egs-phonebar a:last-child { border-right: 0; }
	body { padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px)); }
	html { scroll-padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px)); }
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 860px) {
	.egs-hero__grid { grid-template-columns: minmax(0, 1fr); gap: 24px; padding-bottom: 40px; }
	.egs-stage { height: 480px; }
	.egs-polaroid .egs-plate, .egs-polaroid .egs-photo img { height: 240px; }
	.egs-week__grid, .egs-split, .egs-story__grid, .egs-feeds__grid { grid-template-columns: minmax(0, 1fr); }
	.egs-week__side { border-left: 0; border-top: 2px dashed var(--plate); }
	.egs-story__photo { transform: none; order: 2; } /* heading and text first on phones */
	.egs-pagehead__inner { grid-template-columns: minmax(0, 1fr); }
	.egs-pagehead__patch { display: none; }
	.egs-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.egs-reviews__card { flex-direction: column; align-items: flex-start; gap: 12px; }
	.egs-reviews__num { display: none; } /* decorative quote mark, hidden on small screens */
	.egs-reviews__score { min-width: 0; }
}
@media (max-width: 600px) {
	:root { --gutter: 16px; }
	.egs-brand { font-size: 18px; }
	/* The sticky phone bar carries Call on phones. */
	.egs-header__call { display: none; }
	body { font-size: 17px; }
	/* Phone stage: the photo first, the badges below it, little overlap. */
	.egs-stage { height: 540px; }
	.patch--photo { left: 0; top: 0; width: 74%; }
	.patch--seal-pos { width: 116px; right: 0; top: 12px; }
	.patch__cloth--seal { width: 116px; height: 116px; }
	.patch__year { font-size: 21px; }
	.patch__place { font-size: 11px; }
	.patch--burger-pos, .patch--duck-pos { width: 206px; }
	.patch--burger-pos { top: 300px; right: 0; }
	.patch--duck-pos { top: 392px; left: 0; }
	.patch--cat-pos { left: auto; right: 0; top: 452px; }
	.egs-polaroid .egs-plate, .egs-polaroid .egs-photo img { height: 200px; }
	.egs-gallery > :nth-child(odd), .egs-gallery > :nth-child(even) { transform: none; }
	.egs-gallery { gap: 12px; }
	.egs-gallery__item.egs-plate { padding: 12px; font-size: 13px; }
	.patch__stitch .egs-mark { width: 32px; }
	.egs-card, .egs-form, .egs-menu-section, .egs-panel, .egs-prose, .egs-story.egs-panel { padding: 22px 20px; }
	.egs-prose--bare { padding: 0; }
	.egs-reviews__card { padding: 26px 24px; }
	.egs-week__grid.egs-panel { padding: 0; }
	.egs-week__feature, .egs-week__side { padding: 22px 20px; }
	.egs-hero__text::before, .egs-pagehead__text::before { inset: -16px -20px; }
	.egs-cta__facts > div { grid-template-columns: 1fr; gap: 0; }
	.egs-menu { grid-template-columns: minmax(0, 1fr); }
	.egs-facts > div { grid-template-columns: 1fr; gap: 2px; }
	.egs-cta__stitch { padding: 20px; }
	.egs-prose p, .egs-prose li, .egs-story__text p, .egs-story__text li, .egs-week__feature p, .egs-reviews__text p { font-size: 17px; }
}

/* ==========================================================================
   Motion preferences and pause
   The hero drift pauses when the tab is hidden or the hero is scrolled
   out of view, and stops entirely under reduced motion.
   ========================================================================== */
.egs-paused .egs-hero [class^="drift-"], .egs-hero.is-offscreen [class^="drift-"] { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
	.egs-hero [class^="drift-"] { animation: none; }
	.patch, .egs-hero .patch, .btn, .egs-hub__link, .egs-nav .sub-menu, .egs-faq summary::after { transition: none; }
	.btn-main:active, .egs-hub__link:hover { transform: none; }
	html { scroll-behavior: auto; }
}
.egs-still .egs-hero [class^="drift-"] { animation: none; }
.egs-still .patch { transition: none; }

@media print {
	.egs-bg, .egs-phonebar, .egs-nav, .egs-nav-toggle, .egs-stage, .egs-pagehead__patch, .egs-cta, .egs-buildbar { display: none !important; }
	body { background: #fff; }
}

/* ------------------------------------------------------------
 * v1.4.8 deep-check fixes (2026-10-24): visual review V2, V4 to V11.
 * ---------------------------------------------------------- */
/* V2. Menu: grid rows left big holes under short cards (style.css:520). Flow the
   cards into columns instead, so each card sits right under the one above it. */
@media (min-width: 601px) {
	.egs-menu { display: block; columns: 320px 3; column-gap: 24px; }
	.egs-menu > .egs-menu-section { break-inside: avoid; display: inline-block; width: 100%; margin: 0 0 24px; }
}

/* V4. Visit tiles: 4 short tiles per row on desktop, 2 on tablet, so no tile is
   left alone and short tiles are not stretched by the long Accessibility tile.
   Pair with the markup change in REPORT.md (Accessibility tile last, class egs-tiles__wide). */
.egs-tiles { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.egs-tiles > .egs-tiles__wide { grid-column: 1 / -1; }

/* V5. Home hero 861 to 1120 px: badges covered most of the photo and cut off the caption. */
@media (min-width: 861px) and (max-width: 1120px) {
	.patch--photo { left: 0; width: 66%; }
	.patch--seal-pos { width: 132px; right: 0; }
	.patch__cloth--seal { width: 132px; height: 132px; }
	.patch__year { font-size: 22px; }
	.patch__place { font-size: 10px; letter-spacing: .05em; }
	.patch--burger-pos, .patch--duck-pos { width: 220px; }
	.patch--burger-pos { top: 60%; }
	.patch--duck-pos { top: 76%; }
	.patch--cat-pos { left: auto; right: 0; top: 88%; }
}

/* V6. Phone seal: "EDGE, TEXAS" ran across the stitched ring at 116 px (83 px text, 70 px room). */
@media (max-width: 600px) {
	.patch__place { font-size: 10px; letter-spacing: .04em; }
	.patch__cloth--seal .patch__stitch { gap: 2px; }
}

/* V7. Narrow blocks (privacy policy, shop order card) sat centered while the H1
   and everything else is left aligned. Keep them on the left edge. */
.egs-wrap.egs-narrow { max-width: 1240px; }
.egs-wrap.egs-narrow > * { max-width: 756px; }

/* V8. Contact page (card mode): one column, call panel then hours, no empty
   left column. Pair with contact-card-mode.patch (markup). */
.egs-contact-stack { max-width: 760px; }
.egs-contact-call h2 { font-size: 26px; margin-bottom: 4px; }
.egs-panel > .egs-actions { margin-top: 16px; }

/* V9. Short wrapped text in patches and hub titles: no one-word last lines. */
.patch__title, .patch__text, .egs-hub__title, .patch__badge { text-wrap: balance; }
.egs-hub__title { line-height: 1.15; }

/* V10. Buttons keep a visible edge in Windows High Contrast (forced colors). */
@media (forced-colors: active) {
	.btn, .egs-jump a, .egs-family__link, .egs-phonebar a { border: 2px solid ButtonText; }
	.egs-open__dot { forced-color-adjust: none; }
}

/* V11. Print: menu page printed 6 Letter pages of site chrome with washed-out
   cream-on-white text. Print just the food, in two columns, about 2 pages. */
@media print {
	.egs-header, .egs-ribbon, .egs-jump, .egs-faqs, .egs-family, .egs-related, .egs-footer,
	.egs-photo--content, .egs-plate, .egs-signup, .egs-crumbs,
	.page-template-tpl-menu .egs-prose { display: none !important; }
	.egs-hero__text::before, .egs-pagehead__text::before { display: none; }
	.egs-section { padding-top: 8px; padding-bottom: 8px; }
	.egs-special, .egs-band, .egs-reviews__card { background: none !important; color: #000 !important; border: 1px solid #999; box-shadow: none !important; }
	.egs-special *, .egs-band *, .egs-reviews__card * { color: #000 !important; }
	.egs-menu-section, .egs-card, .egs-prose, .egs-panel, .egs-note, .egs-cta__card { box-shadow: none !important; }
	.egs-menu { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
	.egs-menu > .egs-menu-section { padding: 10px 14px; border: 1px solid #ccc; break-inside: avoid; }
	.egs-item { padding: 4px 0; }
	a { color: #000; }
}

/* v1.4.9 Home hero: the store cat photo as a second, smaller polaroid on the
   right under the seal; the two cloth badges sit along the bottom. Applies only
   when the porch_cats photo is set (.egs-stage--cat); otherwise the old layout. */
.egs-polaroid--small { padding: 8px 8px 30px; }
.egs-polaroid--small figcaption { margin: 8px 2px 0; font-size: 13px; line-height: 1.3; }
.egs-polaroid.egs-polaroid--small .egs-photo img, .egs-polaroid.egs-polaroid--small .egs-plate { height: 150px; }
.egs-stage--cat { height: 620px; }
.egs-stage--cat .patch--photo { left: 0; top: 4%; width: 56%; }
.egs-stage--cat .patch--catphoto { right: 3%; top: 33%; width: 37%; z-index: 2; }
.egs-stage--cat .patch--duck-pos { left: 2%; top: 74%; width: 236px; }
.egs-stage--cat .patch--burger-pos { right: 0; top: 79%; width: 236px; }
@media (min-width: 861px) and (max-width: 1120px) {
	.egs-stage--cat .patch--photo { left: 0; width: 60%; }
	.egs-stage--cat .patch--catphoto { right: 0; top: 30%; width: 38%; }
	.egs-polaroid.egs-polaroid--small .egs-photo img { height: 124px; }
	.egs-stage--cat .patch--duck-pos { left: 0; top: 76%; width: 210px; }
	.egs-stage--cat .patch--burger-pos { right: 0; top: 82%; width: 210px; }
}
@media (max-width: 860px) and (min-width: 601px) {
	.egs-stage--cat { height: 560px; }
	.egs-stage--cat .patch--photo { left: 4%; width: 50%; }
	.egs-stage--cat .patch--catphoto { right: 6%; top: 30%; width: 32%; }
	.egs-stage--cat .patch--duck-pos { left: 2%; top: 76%; }
	.egs-stage--cat .patch--burger-pos { right: 6%; top: 80%; }
}
@media (max-width: 600px) {
	.egs-stage--cat { height: 560px; }
	.egs-stage--cat .patch--photo { left: 0; top: 0; width: 64%; }
	.egs-stage--cat .patch--catphoto { right: 0; top: 150px; width: 46%; }
	.egs-polaroid.egs-polaroid--small .egs-photo img { height: 118px; }
	.egs-stage--cat .patch--duck-pos { left: 0; top: 352px; width: 200px; }
	.egs-stage--cat .patch--burger-pos { right: 0; top: 446px; width: 206px; }
}

/* v1.4.9 Desktop nav: each top item opens only its own dropdown (was one mega
   panel with every column). Phones keep the full list behind More. */
@media (min-width: 1000px) {
	.egs-nav::after, .egs-nav::before, .egs-mega-head { display: none; }
	.egs-nav .menu > li { position: relative; }
	.egs-nav .menu > li > .sub-menu {
		left: 50%; margin-left: -130px; width: 260px; top: calc(100% + 10px);
		background: var(--paper); border: 0; border-radius: 14px; box-shadow: var(--lift); padding: 8px;
	}
	/* An invisible bridge so the dropdown stays open while the mouse moves down to it. */
	.egs-nav .menu > li > .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -12px; height: 12px; }
	.egs-nav:hover .sub-menu, .egs-nav:focus-within .sub-menu, .egs-nav.is-open .sub-menu { opacity: 0; visibility: hidden; transform: translateY(-4px); }
	.egs-nav .menu > li:hover > .sub-menu, .egs-nav .menu > li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
	.egs-nav.is-closed .menu > li > .sub-menu { opacity: 0; visibility: hidden; }
}

/* v1.4.10 Site forms: the store news checkbox and the "Rather call?" line. */
.egs-check { display: flex; gap: 10px; align-items: flex-start; margin: 4px 0 16px; }
.egs-check input { width: 22px; height: 22px; margin: 2px 0 0; flex: 0 0 auto; accent-color: var(--barn); }
.egs-check label { font-weight: 500; line-height: 1.45; }
.egs-form__alt { color: var(--bark); }
.egs-form__alt a { color: var(--barn); text-decoration: underline; text-underline-offset: 3px; }
.egs-form.is-done .egs-form__status { background: var(--cactus-deep); color: var(--paper); }
/* QA 2026-10-24: after a send, show only the thank-you, not an empty form that looks unsent. */
.egs-form.is-done .egs-field, .egs-form.is-done .egs-check, .egs-form.is-done .egs-form__actions { display: none; }
.egs-form [aria-invalid="true"] { border-color: var(--barn); box-shadow: 0 0 0 3px rgba(150, 50, 30, .18); }
.egs-form__status { scroll-margin-top: 90px; }

/* Photo walk on the home page (2026-10-25): a visit told in the store's own photos. */
.egs-walk__lede { margin: -8px 0 24px; color: var(--walnut-2); font-size: 18px; }
.egs-walk__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 26px; }
.egs-walk__stop { min-width: 0; }
.egs-walk__link { display: block; color: inherit; text-decoration: none; }
.egs-polaroid.egs-walk__card { padding: 10px 10px 16px; box-shadow: var(--lift-sm); transition: transform .2s ease, box-shadow .2s ease; }
.egs-walk__stop:nth-child(3n+1) .egs-walk__card { transform: rotate(-1.2deg); }
.egs-walk__stop:nth-child(3n+2) .egs-walk__card { transform: rotate(.8deg); }
.egs-walk__stop:nth-child(3n) .egs-walk__card { transform: rotate(-.4deg); }
.egs-walk__card img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 4px; }
.egs-polaroid.egs-walk__card figcaption { display: flex; gap: 10px; align-items: flex-start; margin: 14px 4px 0; font-size: 17px; line-height: 1.4; color: var(--walnut); }
.egs-walk__num { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var(--barn); color: var(--paper); font-size: 14px; font-weight: 700; margin-top: -1px; }
.egs-walk__link:hover .egs-walk__card, .egs-walk__link:focus-visible .egs-walk__card { transform: rotate(0) translateY(-4px); box-shadow: var(--lift); }
.egs-walk__link:hover .egs-walk__text, .egs-walk__link:focus-visible .egs-walk__text { text-decoration: underline; text-underline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .egs-polaroid.egs-walk__card { transition: none; } }
@media (max-width: 860px) {
	.egs-walk__list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 18px; }
	.egs-walk__stop:first-child { grid-column: 1 / -1; }
	.egs-walk__stop:first-child .egs-walk__card img { aspect-ratio: 4 / 3; }
}
@media (max-width: 600px) {
	.egs-walk__list { gap: 18px 12px; }
	.egs-walk__stop .egs-walk__card { transform: none !important; }
	.egs-polaroid.egs-walk__card { padding: 7px 7px 12px; }
	.egs-polaroid.egs-walk__card figcaption { font-size: 15px; gap: 8px; margin-top: 10px; }
	.egs-walk__num { width: 24px; height: 24px; font-size: 13px; }
}

/* A row of the store's own photos inside page copy ([egs_strip]). */
.egs-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 24px 0; max-width: 760px; }
.egs-strip--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.egs-strip__item { margin: 0; min-width: 0; }
.egs-strip__item img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 8px; box-shadow: var(--lift-sm); }
@media (max-width: 600px) {
	.egs-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	.egs-strip--3 .egs-strip__item:first-child { grid-column: 1 / -1; }
	.egs-strip--3 .egs-strip__item:first-child img { aspect-ratio: 4 / 3; }
}
/* Event cards with the store's own photo (2026-10-25). */
.egs-event-card__photo { display: block; margin: -4px -4px 14px; }
.egs-event-card__photo img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 8px; }

/* Stage photo in the live music band (2026-10-31). */
.egs-band__photo { margin: 16px 0 0; }
.egs-band__photo img { display: block; width: 100%; height: auto; max-height: 360px; object-fit: cover; border-radius: 8px; }
