/* Foundation is imported into a cascade layer, so every rule in this file beats it regardless of specificity
   (this stops Foundation's a:hover from recolouring link text). */
@import url("../vendor/foundation.min.css") layer(foundation);

/* ==========================================================================
   Ranch & Roost — app.css
   Foundation supplies reset/grid utilities; everything visual is defined here.
   Breakpoints follow Foundation: small <640, medium 640–1023, large 1024+.
   ========================================================================== */

@font-face {
	font-family: 'Depressionist 3 Revisited';
	src: url('../fonts/Depressionist3Revisited.ttf') format('truetype');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

:root {
	--rr-orange: #E8642C;
	--rr-orange-deep: #D95A18;
	--rr-navy: #343B65;
	--rr-navy-deep: #191E40;
	--rr-cream: #FDF5E6;
	--rr-ink: #2D2926;
	--rr-line: #E2D9C8;

	--rr-display: 'Depressionist 3 Revisited', Impact, 'Arial Narrow Bold', sans-serif;
	--rr-body: 'Gabarito', system-ui, -apple-system, 'Segoe UI', sans-serif;
	/* Proxima Nova is a commercial Adobe Fonts licence; Manrope is the free stand-in until that is settled. */
	--rr-ui: 'Manrope', 'Proxima Nova', system-ui, sans-serif;

	--rr-nav-h: 111px;
	--rr-nav-gap: 36px;
	--rr-topbar-h: 0px; /* Mobile-only hours strip above the nav; 0 everywhere else. */
	--rr-gutter: 80px;
	--rr-max: 1440px;
	--rr-parallax: 11%; /* Location CTA background travel; tune live. */
}

@media (max-width: 1199.98px) { :root { --rr-nav-gap: 12px; } }
@media (max-width: 1023.98px) { :root { --rr-gutter: 40px; } }
@media (max-width: 639.98px)  { :root { --rr-gutter: 20px; --rr-nav-h: 84px; --rr-nav-gap: 8px; } }
/* :has() lets the root-level var react to the body class; app.js then measures the real rendered height. */
@media (max-width: 639.98px)  { :root:has(body.has-topbar) { --rr-topbar-h: 22px; } }

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

body {
	margin: 0;
	background: #fff;
	color: var(--rr-ink);
	font-family: var(--rr-body);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}
body.rr-door-page { background: var(--rr-navy-deep); }

img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-family: var(--rr-body); font-weight: 700; line-height: 1.25; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
a { color: inherit; }
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.rr-skip { position: absolute; left: -9999px; top: 0; z-index: 1000; background: #fff; padding: 12px 16px; }
.rr-skip:focus { left: 8px; top: 8px; }
:focus-visible { outline: 3px solid var(--rr-orange); outline-offset: 3px; }

.rr-icon { display: inline-block; flex: none; }

/* Display headings are typed in any case; the face is a caps face. */
.rr-module-title {
	font-family: var(--rr-display);
	font-weight: 400;
	font-size: clamp(30px, 4vw, 45px);
	line-height: 1.1;
	color: var(--rr-navy);
	text-transform: uppercase;
}
.rr-module-title--plain {
	font-family: var(--rr-body);
	font-weight: 800;
	font-size: clamp(32px, 4vw, 48px);
	line-height: 1.1;
	letter-spacing: -.01em;
	text-transform: none;
	color: var(--rr-navy);
}

/* ---------- WYSIWYG defaults (h3/h4/h5 only; plain sans, never the display face) ---------- */
.rr-wysiwyg { font-size: 16px; line-height: 1.6; color: var(--rr-ink); }
.rr-wysiwyg > * + * { margin-top: 1em; }
.rr-wysiwyg h3, .rr-wysiwyg h4, .rr-wysiwyg h5 { font-family: var(--rr-body); margin: 1.5em 0 .5em; }
.rr-wysiwyg h3 { font-size: 28px; font-weight: 700; color: var(--rr-navy); line-height: 1.25; }
.rr-wysiwyg h4 { font-size: 21px; font-weight: 700; color: var(--rr-navy); line-height: 1.3; }
.rr-wysiwyg h5 { font-size: 16px; font-weight: 700; color: var(--rr-ink); line-height: 1.4; text-transform: uppercase; letter-spacing: 1px; }
.rr-wysiwyg > :first-child { margin-top: 0; }
.rr-wysiwyg ul, .rr-wysiwyg ol { padding-left: 1.4em; }
.rr-wysiwyg ul { list-style: disc; }
.rr-wysiwyg ol { list-style: decimal; }
.rr-wysiwyg a { color: var(--rr-orange-deep); text-decoration: underline; }
.rr-wysiwyg--light, .rr-wysiwyg--light h3, .rr-wysiwyg--light h4, .rr-wysiwyg--light h5, .rr-wysiwyg--light a { color: #fff; }

/* ==========================================================================
   Navigation — 111px in both states; content swaps rather than the bar shrinking
   ========================================================================== */
/* Mobile-only strip above the nav, showing just the open/closed status in small, minimal-padding text. */
.rr-topbar { display: none; }
@media (max-width: 639.98px) {
	.rr-topbar {
		display: block; position: fixed; top: 0; left: 0; right: 0; z-index: 101;
		background: var(--rr-navy-deep); color: rgba(255, 255, 255, .85);
		padding: 4px 12px; text-align: center;
		font-family: var(--rr-ui); font-style: italic; font-weight: 600; font-size: 10.5px; line-height: 1.3;
	}
	.admin-bar .rr-topbar { top: 46px; }
}

.rr-nav {
	position: fixed; top: var(--rr-topbar-h); left: 0; right: 0; z-index: 100;
	height: var(--rr-nav-h);
	display: flex; align-items: center; justify-content: space-between;
	padding-right: 20px;
	background: rgba(25, 30, 64, .1);
	transition: background .3s ease, box-shadow .3s ease;
}
.rr-nav.is-solid { background: var(--rr-navy-deep); }
.rr-nav.is-scrolled {
	background: linear-gradient(to right, rgba(25, 30, 64, .4), rgba(25, 30, 64, .9));
	box-shadow: 4px 4px 20px rgba(0, 0, 0, .34);
	-webkit-backdrop-filter: blur(2px);
	backdrop-filter: blur(2px);
}
.admin-bar .rr-nav { top: calc(32px + var(--rr-topbar-h)); }
@media (max-width: 782px) { .admin-bar .rr-nav { top: calc(46px + var(--rr-topbar-h)); } }

.rr-nav__logo {
	flex: none; align-self: stretch; width: 198px;
	background: var(--rr-orange-deep);
	display: flex; align-items: center; justify-content: center;
}
.rr-nav__logo img { width: 95px; height: auto; }

/* Right cluster: location pills + Order Online button share one uniform gap (--rr-nav-gap). */
.rr-nav__right { display: flex; align-items: center; justify-content: flex-end; gap: var(--rr-nav-gap); flex: 1; min-width: 0; margin-left: 24px; }
.rr-nav__tabs { display: flex; align-items: center; gap: var(--rr-nav-gap); }

/* Order Online button (burger glyph + label). */
.rr-nav__order {
	flex: none; height: 64px; display: flex; align-items: center; gap: 10px; padding: 0 22px 0 14px;
	background: var(--rr-orange); border-radius: 10px; color: #fff; text-decoration: none; white-space: nowrap;
	transition: background .2s;
}
.rr-nav__order:hover { background: var(--rr-orange-deep); }
.rr-nav__order img { width: 40px; height: auto; }
.rr-nav__order-label { font-family: var(--rr-display); font-size: 25px; line-height: 1; text-transform: uppercase; padding-top: 3px; }
.rr-nav__order:focus-visible { outline-color: #fff; }

.rr-pill {
	flex: none; display: inline-flex; align-items: center; height: 40px; padding: 0 12px;
	border-radius: 999px; white-space: nowrap;
	font-family: var(--rr-ui); font-size: 19px; font-weight: 400; color: var(--rr-cream); text-decoration: none;
	background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .2);
	transition: background .2s;
}
a.rr-pill:hover { background: rgba(255, 255, 255, .18); }
.rr-nav:not(.is-scrolled) a.rr-pill { font-weight: 600; }

.rr-pill--active {
	position: relative; background: var(--rr-orange); border-color: var(--rr-orange); color: #fff;
	font-size: 21px; padding: 0 16px 0 20px; gap: 14px; justify-content: center;
}
.rr-nav__tabs .rr-pill--active { order: 2; } /* Active location sits nearest the Order Online button, as drawn. */
.rr-pill__name { font-weight: 500; }
.rr-pill__sep { width: 1px; height: 18px; background: rgba(255, 255, 255, .85); }
/* Always the hours/open-status, never swapped for an "Order Online" CTA on scroll — the nav already
   has the standalone Order Online button for that. */
.rr-pill__status { display: inline-flex; align-items: center; gap: 8px; font-size: 19px; font-weight: 700; }

/* Tablet and below: the pill status drops away (the Order Online button carries it). */
@media (max-width: 1199.98px) {
	.rr-nav__logo { width: 150px; }
	.rr-nav__logo img { width: 78px; }
	.rr-nav__right { margin-left: 12px; }
	.rr-pill__sep, .rr-pill__status { display: none; }
	.rr-nav__order { height: 52px; padding: 0 16px 0 10px; gap: 8px; }
	.rr-nav__order img { width: 32px; }
	.rr-nav__order-label { font-size: 20px; }
	.rr-pill { font-size: 16px; }
	.rr-pill--active { font-size: 17px; }
}
/* Mobile: a single row — logo, one location pill (name + chevron) that opens a dropdown to switch, and the
   Order Online button beside it. The open/closed status runs in the .rr-topbar strip above the whole nav
   instead of inside the pill — there wasn't room for it alongside the name without truncating the name. */
.rr-loc-drop { display: none; }
@media (max-width: 639.98px) {
	.rr-nav { padding-right: 10px; }
	.rr-nav__logo { width: 72px; }
	.rr-nav__logo img { width: 46px; }
	.rr-nav__right { margin-left: 8px; gap: 8px; }
	.rr-nav__tabs { display: none; } /* replaced by the dropdown below */

	/* No min-width: 0 here — the pill is allowed to grow to fit the location name in full, never truncate it. */
	.rr-loc-drop { display: flex; position: relative; flex: 1 1 auto; }
	.rr-loc-drop__toggle {
		display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 48px;
		padding: 0 16px; border-radius: 999px; background: var(--rr-navy-deep); border: 1px solid rgba(255, 255, 255, .15);
		color: #fff;
	}
	.rr-loc-drop__name {
		font-family: var(--rr-ui); font-weight: 700; font-size: 15px; line-height: 1.2; text-transform: uppercase;
		white-space: nowrap;
	}
	.rr-loc-drop__caret {
		flex: none; width: 8px; height: 8px;
		border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
		transform: rotate(45deg); transition: transform .2s;
	}
	.rr-loc-drop.is-open .rr-loc-drop__caret { transform: rotate(-135deg); }
	.rr-loc-drop__menu {
		position: absolute; left: 0; right: 0; top: calc(100% + 8px); z-index: 20; margin: 0; padding: 6px 0;
		background: var(--rr-navy-deep); border: 1px solid rgba(255, 255, 255, .15); border-radius: 10px;
		box-shadow: 0 12px 24px rgba(0, 0, 0, .35); overflow: hidden;
	}
	.rr-loc-drop__menu[hidden] { display: none; }
	.rr-loc-drop__menu a {
		display: block; padding: 12px 16px; font-family: var(--rr-ui); font-size: 15px; font-weight: 500;
		color: var(--rr-cream); text-decoration: none;
	}
	.rr-loc-drop__menu a:hover, .rr-loc-drop__menu a:focus-visible { background: rgba(255, 255, 255, .08); }
	.rr-loc-drop__menu a.is-current { color: var(--rr-orange); font-weight: 700; }

	/* Order Online, trimmed down a bit to leave the pill more room, and pill-shaped to match the
	   location dropdown rather than clashing as a third, differently-rounded button shape. */
	.rr-nav__order { flex: none; height: 48px; padding: 0 14px; gap: 6px; border-radius: 999px; }
	.rr-nav__order img { width: 18px; }
	.rr-nav__order-label { position: static; width: auto; height: auto; overflow: visible; clip: auto; font-size: 13px; padding-top: 2px; white-space: nowrap; }
}
@media (max-width: 359.98px) {
	.rr-nav__logo { width: 60px; }
	.rr-nav__right { margin-left: 6px; gap: 6px; }
	.rr-loc-drop__toggle { padding: 0 12px; }
	.rr-loc-drop__name { font-size: 13.5px; }
	.rr-nav__order { padding: 0 8px; }
	.rr-nav__order-label { font-size: 11.5px; }
}

body.no-hero main { padding-top: calc(var(--rr-nav-h) + var(--rr-topbar-h)); }

/* ==========================================================================
   Location Hero + info bar
   ========================================================================== */
.rr-hero {
	position: relative; min-height: 670px; overflow: hidden;
	display: flex; align-items: center; justify-content: center;
	padding: calc(var(--rr-nav-h) + var(--rr-topbar-h)) var(--rr-gutter) 40px; color: #fff;
}
.rr-hero__media { position: absolute; inset: 0; }
.rr-hero__media img, .rr-hero__video { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.rr-hero__video { display: none; }
@media (min-width: 640px) { .rr-hero__video.is-ready { display: block; } }
.rr-hero__overlay { position: absolute; inset: 0; background: rgba(52, 59, 101, .55); }
.rr-hero__content { position: relative; max-width: 1270px; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 24px; text-align: center; }
.rr-hero__title {
	font-family: var(--rr-display); font-weight: 400; color: var(--rr-cream);
	font-size: clamp(44px, 7vw, 88px); line-height: 1.1; text-transform: uppercase;
	display: flex; flex-wrap: wrap; justify-content: center; gap: 0 16px;
	text-shadow: 0 2px 12px rgba(0, 0, 0, .25);
}
.rr-hero__word { display: inline-block; animation: rr-rise .7s cubic-bezier(.16, 1, .3, 1) both; animation-delay: calc(var(--i) * 120ms); }
.rr-hero__subtitle { font-family: var(--rr-ui); font-size: clamp(18px, 2vw, 25px); line-height: 1.6; max-width: 720px; }
@keyframes rr-rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .rr-hero__word { animation: none; } }

.rr-infobar { background: var(--rr-navy-deep); border-bottom: 1px solid var(--rr-line); color: #fff; }
.rr-infobar__inner {
	max-width: var(--rr-max); margin: 0 auto; padding: 24px var(--rr-gutter);
	display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px 96px;
}
.rr-infobar__item { display: flex; align-items: center; gap: 12px; font-size: 19px; font-weight: 600; }
.rr-infobar__item a { text-decoration: none; }
.rr-infobar__item--link a { color: var(--rr-orange); text-decoration: underline; display: inline-flex; align-items: center; gap: 6px; }
@media (max-width: 1023.98px) { .rr-infobar__inner { gap: 12px 40px; } .rr-infobar__item { font-size: 16px; } }

/* ==========================================================================
   Intro Content
   ========================================================================== */
.rr-intro { background: #fff; }
.rr-intro__inner {
	max-width: var(--rr-max); margin: 0 auto; padding: 96px var(--rr-gutter) 81px;
	display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center;
}
.rr-intro__text { display: flex; flex-direction: column; gap: 24px; }
.rr-intro__panel { display: flex; flex-direction: column; gap: 24px; }
.rr-kicker { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 800; letter-spacing: 4px; text-transform: uppercase; color: var(--rr-orange); }
.rr-kicker__bar { width: 16px; height: 3px; background: var(--rr-orange); flex: none; }
.rr-badges { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rr-badge { display: flex; align-items: center; gap: 12px; background: var(--rr-cream); border-radius: 6px; padding: 12px 16px; }
.rr-badge__icon { width: 32px; height: 32px; border-radius: 16px; background: var(--rr-orange); display: flex; align-items: center; justify-content: center; flex: none; }
.rr-badge__label { font-size: 14px; font-weight: 600; color: var(--rr-navy); line-height: 1.3; }
.rr-bullets { columns: 2; column-gap: 24px; font-size: 14px; font-weight: 700; line-height: 1.6; }
.rr-bullets li { break-inside: avoid; position: relative; padding-left: 16px; }
.rr-bullets li::before { content: '•'; position: absolute; left: 0; }
@media (max-width: 1023.98px) {
	.rr-intro__inner { grid-template-columns: 1fr; gap: 40px; padding-top: 64px; padding-bottom: 56px; }
}
@media (max-width: 639.98px) { .rr-badges { grid-template-columns: 1fr; } .rr-bullets { columns: 1; } }

/* ==========================================================================
   Single Feature — full-bleed photo callout for one dish (Figma: "Single Feature")
   ========================================================================== */
.rr-feature {
	--rr-feature-w: 560px; /* the text column's own max-width — the overlay below tracks this, not an arbitrary section fraction */
	position: relative; overflow: hidden; min-height: 560px; background: var(--rr-navy-deep);
}
.rr-feature__media { position: absolute; inset: 0; }
.rr-feature__media img { width: 100%; height: 100%; object-fit: cover; }
/* On ultra-wide screens the centered content column stops short of the section's true edges — this
   keeps that outer strip solid instead of showing bare, undarkened photo past the text column. */
.rr-feature__side { position: absolute; inset: 0; right: auto; width: max(0px, calc((100% - var(--rr-max)) / 2)); background: var(--rr-navy-deep); }
/* Centered to the same max-width column every other module content lines up to, so the headline
   here sits at the same left edge as "Featured Flavors", the intro copy, etc. */
.rr-feature__inner { position: absolute; inset: 0; max-width: var(--rr-max); margin: 0 auto; display: flex; align-items: center; }
/* Opaque (matching .rr-feature__side exactly) for a short stretch — just enough that the photo's own
   left edge never shows as a hard seam against that solid panel — then a long, gentle fade across
   nearly the whole rest of the image. The fade deliberately runs UNDER the text column too, so the
   photo shows through faintly behind the copy rather than sitting on a flat solid block. */
.rr-feature__overlay {
	position: absolute; inset: 0;
	background: linear-gradient(to right, var(--rr-navy-deep) 0%, var(--rr-navy-deep) 6%, transparent 92%);
}
.rr-feature__content {
	position: relative; max-width: var(--rr-feature-w); padding: 48px var(--rr-gutter);
	display: flex; flex-direction: column; align-items: flex-start; gap: 28px; color: #fff;
}
.rr-feature__badge {
	display: inline-flex; align-items: center; padding: 10px 34px 10px 18px; margin-left: -4px;
	background: var(--rr-orange); border: 3px solid #fff; color: #fff; font-family: var(--rr-display); font-weight: 400;
	font-size: 22px; letter-spacing: .02em; text-transform: uppercase;
	/* Concave — a notch cut INTO the right edge (classic ribbon-tail), not a point sticking out past it. */
	clip-path: polygon(0 0, 100% 0, 88% 50%, 100% 100%, 0 100%);
}
/* Extra-specific selector: .rr-btn is defined later in the file and would otherwise win this on
   source order alone, since a bare .rr-feature__cta has the same specificity as a bare .rr-btn. */
.rr-feature__content .rr-feature__cta { font-family: var(--rr-display); font-weight: 400; font-size: 20px; padding: 16px 32px; }
/* A clean, non-distressed weight — deliberately distinct from the site's usual display headings, to
   read as a promo sticker rather than another section title. */
.rr-feature__title { font-family: var(--rr-body); font-weight: 800; font-size: clamp(28px, 3vw, 40px); line-height: 1.15; }
.rr-feature__text { font-size: 17px; line-height: 1.5; }
@media (max-width: 639.98px) {
	.rr-feature { min-height: 640px; }
	.rr-feature__inner { align-items: flex-start; }
	/* Full-bleed again on mobile (the side/inner max-width split is a no-op below --rr-max anyway,
	   but the overlay still needs resetting: full width, and darkening the TOP — where the text
	   sits — instead of the left, since content stacks rather than sitting beside the photo. */
	.rr-feature__overlay {
		right: 0; width: auto;
		background: linear-gradient(to bottom, rgba(20, 22, 41, .8), rgba(20, 22, 41, .35) 45%, transparent 70%);
	}
	.rr-feature__content { max-width: none; padding: 40px var(--rr-gutter); align-items: center; text-align: center; }
	.rr-feature__badge { align-self: flex-start; }
}

/* ==========================================================================
   Featured Menu Items
   ========================================================================== */
.rr-featured { background: var(--rr-cream); }
.rr-featured__inner { max-width: var(--rr-max); margin: 0 auto; padding: 58px var(--rr-gutter); display: flex; flex-direction: column; gap: 39px; }
.rr-featured__title { font-size: clamp(36px, 4vw, 57px); color: var(--rr-orange); text-align: center; }
.rr-featured__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
.rr-featured__grid--1 { grid-template-columns: minmax(0, 420px); justify-content: center; }
.rr-featured__grid--2 { grid-template-columns: repeat(2, minmax(0, 420px)); justify-content: center; }
.rr-featured__grid--3 { grid-template-columns: repeat(3, 1fr); }
.rr-card { background: #fff; border: 3px solid var(--rr-ink); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; }
.rr-card__img { height: 240px; }
.rr-card__img img { width: 100%; height: 100%; object-fit: cover; }
.rr-card__body { padding: 24px; display: flex; flex-direction: column; gap: 12px; }
.rr-card__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.rr-card__name { font-family: var(--rr-display); font-weight: 400; font-size: 21px; line-height: 1.15; color: var(--rr-navy); text-transform: uppercase; }
.rr-card__price { font-family: var(--rr-display); font-size: 24px; color: var(--rr-orange); white-space: nowrap; }
.rr-card__desc { font-size: 14px; line-height: 1.5; color: var(--rr-ink); }
.rr-featured__cta {
	display: flex; align-items: center; justify-content: center; gap: 12px;
	padding: 16px 24px; border-radius: 999px; background: rgba(229, 100, 38, .3);
	font-family: var(--rr-ui); font-weight: 600; font-size: clamp(18px, 2vw, 29px); text-transform: uppercase;
	color: var(--rr-navy); text-decoration: none; transition: background .2s;
}
.rr-featured__cta:hover { background: rgba(229, 100, 38, .45); }
@media (max-width: 1023.98px) {
	.rr-featured__grid, .rr-featured__grid--3 { grid-template-columns: repeat(2, 1fr); }
	.rr-featured__grid--1 { grid-template-columns: minmax(0, 420px); }
}
@media (max-width: 639.98px) {
	.rr-featured__grid, .rr-featured__grid--2, .rr-featured__grid--3 { grid-template-columns: 1fr; }
}

/* ==========================================================================
   About
   ========================================================================== */
.rr-about { background: var(--rr-orange); color: #fff; overflow: hidden; }
.rr-about__inner {
	max-width: var(--rr-max); margin: 0 auto; padding: 78px calc(var(--rr-gutter) - 8px) 40px var(--rr-gutter);
	display: grid; grid-template-columns: 420px 1fr; gap: 84px; align-items: stretch;
}
.rr-about--right .rr-about__inner { grid-template-columns: 1fr 420px; }
.rr-about--right .rr-about__image { order: 2; }
.rr-about__image { border-radius: 12px; overflow: hidden; min-height: 420px; }
.rr-about__image img { width: 100%; height: 100%; object-fit: cover; }
.rr-about__text { display: flex; flex-direction: column; gap: 16px; padding-top: 8px; min-width: 0; }
.rr-about__pre { font-size: 13px; font-weight: 800; letter-spacing: 3px; text-transform: uppercase; }
.rr-about__title { font-size: clamp(30px, 3vw, 36px); color: #fff; }
/* Caption sits in normal flow above the video; navy-deep for contrast on orange (navy #343B65 is only ~2.7:1). */
.rr-about__caption { font-family: var(--rr-display); font-size: 20px; letter-spacing: 1px; text-transform: uppercase; color: var(--rr-navy-deep); margin-top: 8px; }
.rr-video { position: relative; aspect-ratio: 16 / 9; width: 100%; background: #000; overflow: hidden; }
.rr-video__play { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: pointer; }
.rr-video__play img:first-child { width: 100%; height: 100%; object-fit: cover; }
.rr-video__btn { position: absolute; left: 50%; top: 50%; width: 72px; height: 72px; transform: translate(-50%, -50%); transition: transform .2s; }
.rr-video__play:hover .rr-video__btn { transform: translate(-50%, -50%) scale(1.08); }
.rr-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.rr-about__more { display: flex; flex-direction: column; gap: 16px; }
.rr-about__links { display: none; }
.rr-about__link {
	appearance: none; background: none; border: 0; padding: 4px 0; cursor: pointer; color: #fff;
	font-family: var(--rr-body); font-weight: 700; font-size: 19px; letter-spacing: 1px; text-transform: uppercase;
}
.rr-about__link:hover { text-decoration: underline; text-underline-offset: 4px; }
.rr-about__t-close { display: none; }
.rr-about.is-open .rr-about__t-open { display: none; }
.rr-about.is-open .rr-about__t-close { display: inline; }

/* Collapsed state (progressive enhancement: without JS the module stays expanded). */
.js .rr-about__links { display: flex; justify-content: space-between; align-items: center; gap: 24px; }
.js .rr-about.is-open .rr-about__links { justify-content: flex-end; }
.js .rr-about.is-open .rr-about__watch { display: none; }
.js .rr-about:not(.is-open) .rr-about__more { display: none; }
.js .rr-about:not(.is-open) .rr-about__inner { grid-template-columns: 420px minmax(0, 625px); gap: 92px; padding: 72px var(--rr-gutter) 68px; align-items: center; justify-content: center; }
.js .rr-about--right:not(.is-open) .rr-about__inner { grid-template-columns: minmax(0, 625px) 420px; }
.js .rr-about:not(.is-open) .rr-about__image { height: 320px; min-height: 0; }
.js .rr-about:not(.is-open) .rr-about__text { padding-top: 0; }
.js .rr-about:not(.is-open) .rr-about__pre { font-size: 14px; }
.js .rr-about:not(.is-open) .rr-about__title { font-size: clamp(30px, 3.4vw, 39px); }
.js .rr-about:not(.is-open) .rr-about__excerpt { font-size: 17px; }
@media (prefers-reduced-motion: no-preference) {
	.rr-about.is-animating .rr-about__more { animation: rr-rise .45s cubic-bezier(.16, 1, .3, 1) both; }
}

@media (max-width: 1023.98px) {
	.js .rr-about:not(.is-open) .rr-about__inner, .js .rr-about--right:not(.is-open) .rr-about__inner { grid-template-columns: 1fr; gap: 24px; padding: 48px var(--rr-gutter); align-items: stretch; }
	.js .rr-about:not(.is-open) .rr-about__image { height: auto; }
	.rr-about__link { font-size: 16px; }
}
@media (max-width: 1023.98px) {
	.rr-about__inner, .rr-about--right .rr-about__inner { grid-template-columns: 1fr; gap: 32px; padding: 56px var(--rr-gutter) 48px; }
	.rr-about--right .rr-about__image { order: 0; }
	.rr-about__image { min-height: 0; aspect-ratio: 4 / 3; }
}

/* ==========================================================================
   Value Props
   ========================================================================== */
.rr-props { background: var(--rr-navy); }
.rr-props__inner { max-width: var(--rr-max); margin: 0 auto; padding: 63px var(--rr-gutter) 62px; display: flex; flex-direction: column; gap: 53px; }
.rr-props__title { font-size: clamp(34px, 5vw, 69px); color: var(--rr-cream); text-align: center; }
.rr-props__row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; }
.rr-props__row--1 { grid-template-columns: minmax(0, 480px); justify-content: center; }
.rr-props__row--2 { grid-template-columns: repeat(2, minmax(0, 480px)); justify-content: center; }
.rr-props__row--4 { grid-template-columns: repeat(2, 1fr); }
.rr-prop { border: 1px solid rgba(255, 255, 255, .13); border-radius: 8px; padding: 40px; display: flex; flex-direction: column; gap: 24px; }
.rr-prop__num { font-family: var(--rr-display); font-size: 48px; line-height: 1; color: var(--rr-orange); }
.rr-prop__title { font-family: var(--rr-display); font-weight: 400; font-size: clamp(24px, 2.4vw, 32px); line-height: 1.1; color: var(--rr-cream); text-transform: uppercase; }
.rr-prop__text { font-size: 16px; color: var(--rr-cream); opacity: .8; }
@media (max-width: 1023.98px) { .rr-props__row, .rr-props__row--2, .rr-props__row--4 { grid-template-columns: 1fr; } .rr-prop { padding: 28px; } }

/* ==========================================================================
   Location Menu — whole menu renders; the tab bar sticks below the nav while any part of the
   module is on screen, and scrolls away with it once the module ends (plain CSS position:sticky,
   scoped by .rr-menu__tabbar being a direct child of .rr-menu, the module's full-height wrapper).
   ========================================================================== */
.rr-menu { scroll-margin-top: calc(var(--rr-nav-h) + var(--rr-topbar-h)); } /* jumping to #menu lands above the tabbar, before it has stuck */
.rr-menu__header {
	background: var(--rr-navy-deep); padding: 48px var(--rr-gutter) 40px;
	display: flex; justify-content: center;
}
.rr-menu__title { font-size: clamp(32px, 4vw, 50px); color: var(--rr-cream); text-align: center; }

/* Thin, always-horizontally-scrolling strip — deliberately narrow, with a partial tab and an edge
   fade so it reads as swipeable rather than as a wrapped, fully-visible row. */
.rr-menu__tabbar {
	position: sticky; top: calc(var(--rr-nav-h) + var(--rr-topbar-h)); z-index: 90;
	background: var(--rr-navy-deep); border-bottom: 1px solid rgba(255, 255, 255, .12);
	box-shadow: 0 4px 12px rgba(0, 0, 0, .15);
}
.admin-bar .rr-menu__tabbar { top: calc(32px + var(--rr-nav-h) + var(--rr-topbar-h)); }
@media (max-width: 782px) { .admin-bar .rr-menu__tabbar { top: calc(46px + var(--rr-nav-h) + var(--rr-topbar-h)); } }

.rr-menu__tabs-scroll { position: relative; overflow: hidden; }
.rr-menu__tabs-scroll::before, .rr-menu__tabs-scroll::after {
	content: ''; position: absolute; top: 0; bottom: 0; width: 28px; z-index: 2; pointer-events: none;
	transition: opacity .15s;
}
.rr-menu__tabs-scroll::before { left: 0; background: linear-gradient(to right, var(--rr-navy-deep), transparent); opacity: 0; }
.rr-menu__tabs-scroll::after { right: 0; background: linear-gradient(to left, var(--rr-navy-deep), transparent); }
.rr-menu__tabs-scroll.is-at-start::before { opacity: 0; }
.rr-menu__tabs-scroll.is-at-end::after { opacity: 0; }

.rr-menu__tabs {
	display: flex; flex-wrap: nowrap; align-items: center; gap: 8px;
	/* `safe center`: centers when all tabs fit (desktop), but falls back to flex-start the moment they
	   overflow (mobile/tablet) — plain `center` would let the flex box center the overflow symmetrically,
	   making the first tab(s) unreachable by scrolling since there'd be nothing to scroll TO on the left. */
	justify-content: safe center;
	overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none;
	padding: 10px var(--rr-gutter);
	-webkit-overflow-scrolling: touch;
}
.rr-menu__tabs::-webkit-scrollbar { display: none; }
.rr-menu__tabs li { flex: none; scroll-snap-align: start; }
.rr-menu__tabs a {
	display: block; padding: 9px 18px; border-radius: 999px; text-decoration: none; white-space: nowrap;
	font-size: 14px; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; color: rgba(255, 255, 255, .8);
	background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .15); transition: background .2s, color .2s;
}
.rr-menu__tabs a:hover { background: rgba(255, 255, 255, .16); color: #fff; }
.rr-menu__tabs a.is-active { background: var(--rr-orange); border-color: var(--rr-orange); color: #fff; }
@media (max-width: 639.98px) {
	.rr-menu__header { padding: 40px var(--rr-gutter) 32px; }
	.rr-menu__tabs a { font-size: 13px; padding: 8px 14px; }
}

/* Category anchors land below the sticky tabbar too, since by the time you jump to one, it's stuck. */
.rr-cat { background: var(--rr-cream); padding: 64px var(--rr-gutter) 48px; scroll-margin-top: calc(var(--rr-nav-h) + var(--rr-topbar-h) + var(--rr-tabbar-h, 56px)); }
.rr-cat + .rr-cat { padding-top: 32px; }
.rr-cat__head { max-width: 1280px; margin: 0 auto 32px; display: flex; flex-direction: column; gap: 8px; text-align: center; }
.rr-cat__title { font-family: var(--rr-display); font-weight: 400; font-size: clamp(30px, 3.4vw, 40px); color: var(--rr-navy); text-transform: uppercase; line-height: 1.1; }
.rr-cat__desc { font-size: clamp(17px, 2vw, 26px); color: var(--rr-ink); line-height: 1.4; }
.rr-cat__rule { border: 0; height: 2px; background: var(--rr-orange); margin: 8px 0 0; width: 100%; }
.rr-items { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.rr-items--full { grid-template-columns: 1fr; }
.rr-item { background: #fff; border: 1px solid var(--rr-line); border-radius: 6px; padding: 16px 20px; display: flex; gap: 16px; align-items: flex-start; }
.rr-item__info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.rr-item__name { font-family: var(--rr-display); font-weight: 400; font-size: 18px; line-height: 1.2; color: var(--rr-navy); text-transform: uppercase; }
.rr-item__desc { font-size: 13px; line-height: 1.5; }
.rr-item__price { font-size: 15px; font-weight: 600; color: var(--rr-orange); white-space: nowrap; }
.rr-item--extras { padding: 20px; gap: 16px; align-items: baseline; }
.rr-item__extras-title { font-size: 14px; font-weight: 600; text-transform: uppercase; color: var(--rr-orange); flex: none; width: 160px; }
.rr-item__extras { font-size: 13px; line-height: 1.5; flex: 1; }
@media (max-width: 767.98px) { .rr-items { grid-template-columns: 1fr; } .rr-item--extras { flex-direction: column; gap: 6px; } .rr-item__extras-title { width: auto; } }

/* Build It — desktop and mobile are genuinely different treatments per the reference (desktop: plain
   two-column list on the normal cream category background; mobile: dark navy step-cards with pill
   chips), sharing one markup that's reshaped per breakpoint below rather than duplicated. */
.rr-cat--build-it .rr-cat__title { color: var(--rr-orange); }

.rr-build { max-width: 1280px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
.rr-build__col { display: flex; flex-direction: column; gap: 40px; }
.rr-build__step { display: flex; flex-direction: column; gap: 16px; }
.rr-build__step-head { display: flex; align-items: center; gap: 12px; }
.rr-build__badge {
	flex: none; display: flex; align-items: center; justify-content: center; width: 32px; height: 32px;
	border-radius: 999px; background: var(--rr-orange); color: #fff; font-weight: 700; font-size: 14px;
}
.rr-build__step-title { font-family: var(--rr-display); font-weight: 400; font-size: 20px; color: var(--rr-navy-deep); text-transform: uppercase; line-height: 1.2; }
.rr-build__rule { border: 0; height: 1px; background: var(--rr-line); margin: 0; }
.rr-build__group + .rr-build__group { margin-top: 16px; }
.rr-build__group-label { font-size: 12px; font-weight: 800; letter-spacing: 2px; text-transform: uppercase; color: var(--rr-orange); margin: 0 0 8px; }

/* Desktop: cheese is a bulleted list, sauces stack name + description, toppings read as one
   slash-joined line per group — all plain text, no chip styling. */
.rr-chips--cheese, .rr-chips--sauces { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.rr-chips--cheese .rr-chip { position: relative; padding-left: 18px; color: var(--rr-navy-deep); font-weight: 700; font-size: 15px; }
.rr-chips--cheese .rr-chip::before { content: ''; position: absolute; left: 2px; top: 8px; width: 6px; height: 6px; border-radius: 999px; background: var(--rr-orange); }
.rr-chips--sauces .rr-chip { color: var(--rr-navy-deep); font-size: 15px; }
.rr-build__sauce-name { font-weight: 700; }
.rr-chips--toppings { list-style: none; display: block; }
.rr-chips--toppings .rr-chip { display: inline; color: var(--rr-navy-deep); font-size: 15px; }
.rr-chips--toppings .rr-chip:not(:last-child)::after { content: ' / '; }
.rr-build__callout {
	align-self: flex-start; display: inline-flex; align-items: center; gap: 10px;
	background: var(--rr-orange); color: var(--rr-navy-deep); padding: 14px 24px; border-radius: 6px;
	font-size: 14px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
}

@media (max-width: 639.98px) {
	/* The dark card / chip treatment from the mobile reference — every property the desktop rules
	   above set for these variants gets re-declared here at matching specificity, since a plain
	   `.rr-chip` rule at lower specificity wouldn't win against e.g. `.rr-chips--cheese .rr-chip`. */
	.rr-cat--build-it { background: var(--rr-navy); }
	.rr-cat--build-it .rr-cat__title { color: var(--rr-cream); }
	.rr-cat--build-it .rr-cat__desc { color: var(--rr-cream); opacity: .8; }
	.rr-build { display: block; }
	.rr-build__col { gap: 24px; }
	.rr-build__col + .rr-build__col { margin-top: 24px; }
	.rr-build__step { background: var(--rr-navy-deep); border-radius: 12px; padding: 20px; }
	.rr-build__step-title { color: var(--rr-cream); }
	.rr-build__rule { display: none; }
	/* Toppings read as one flat, ungrouped chip cloud on mobile (per the reference) — the group
	   wrapper and its own <ul> disappear from the box tree (not just hidden) so their chips become
	   direct children of .rr-build__topping-groups and wrap together as a single row set. */
	.rr-build__group { display: contents; }
	.rr-build__group-label { display: none; }
	.rr-build__topping-groups { display: flex; flex-wrap: wrap; gap: 8px; }
	.rr-chips--toppings { display: contents; }
	.rr-chips--toppings .rr-chip:not(:last-child)::after { content: none; }
	.rr-chips--cheese, .rr-chips--sauces { display: flex; flex-wrap: wrap; gap: 8px; }
	.rr-chips--cheese .rr-chip,
	.rr-chips--sauces .rr-chip,
	.rr-chips--toppings .rr-chip {
		display: inline-flex; padding: 8px 16px; border-radius: 999px; background: rgba(255, 255, 255, .08);
		border: 1px solid rgba(255, 255, 255, .15); color: var(--rr-cream); font-size: 14px; font-weight: 500;
	}
	.rr-chips--cheese .rr-chip::before { display: none; }
	.rr-build__sauce-desc { display: none; } /* names only on mobile — no description text in the reference */
	.rr-build__callout { display: none; } /* not present in the mobile reference */
}

/* ==========================================================================
   PDF / order bar
   ========================================================================== */
.rr-pdfbar { background: var(--rr-navy-deep); }
.rr-pdfbar__inner { max-width: var(--rr-max); margin: 0 auto; padding: 28px 16px; display: flex; flex-wrap: wrap; gap: 16px 87px; align-items: center; justify-content: center; }
.rr-pdfbar__pdf, .rr-pdfbar__order { height: 53px; display: flex; align-items: center; justify-content: center; border-radius: 4px; text-decoration: none; width: min(358px, 100%); }
.rr-pdfbar__pdf { gap: 8px; border: 1px solid var(--rr-cream); color: var(--rr-cream); font-family: var(--rr-ui); font-weight: 700; font-size: 14px; text-transform: uppercase; padding: 0 16px; }
.rr-pdfbar__pdf:hover { background: rgba(255, 255, 255, .1); }
.rr-pdfbar__order { background: var(--rr-orange); color: var(--rr-cream); font-family: var(--rr-display); font-size: 33px; padding-top: 5px; text-transform: uppercase; transition: background .2s; }
.rr-pdfbar__order:hover { background: var(--rr-orange-deep); }

/* ==========================================================================
   Gallery
   ========================================================================== */
.rr-gallery { background: #fff; }
.rr-gallery__inner { max-width: var(--rr-max); margin: 0 auto; padding: 96px var(--rr-gutter); display: flex; flex-direction: column; gap: 40px; }
.rr-gallery__text { display: flex; flex-direction: column; gap: 24px; }
.rr-gallery__strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.rr-gallery__strip li { height: 280px; border-radius: 8px; overflow: hidden; }
.rr-gallery__strip img { width: 100%; height: 100%; object-fit: cover; }
.rr-gallery__strip--1 { grid-template-columns: 1fr; }
.rr-gallery__strip--2 { grid-template-columns: repeat(2, 1fr); }
.rr-gallery__strip--3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1023.98px) {
	.rr-gallery__inner { padding-top: 64px; padding-bottom: 64px; }
	.rr-gallery__strip, .rr-gallery__strip--3 { grid-template-columns: repeat(2, 1fr); gap: 12px; }
	.rr-gallery__strip li { height: 200px; }
}

/* ==========================================================================
   Location CTA — static image, scroll-driven parallax (CSS only)
   ========================================================================== */
/* Per the reference (desktop), the map is full-bleed across the whole section — no plain gap between
   it and Gallery above — and the card just sits inset near its top-left, in ordinary flow with normal
   padding. That keeps the card fully inside this section (never overlapping Gallery) without needing
   to shrink the map into its own band, which had been leaving an oversized plain-white gap above it
   that doesn't exist in the design. Mobile keeps its own confirmed-correct band treatment below. */
.rr-cta { position: relative; padding: 56px var(--rr-gutter); display: flex; align-items: flex-start; isolation: isolate; }
.rr-cta__bg-wrap { position: absolute; inset: 0; overflow: hidden; z-index: -2; }
.rr-cta__bg-wrap::after { content: ''; position: absolute; inset: 0; background: rgba(52, 59, 101, .17); }
.rr-cta__bg { position: absolute; left: 0; right: 0; top: -15%; height: 130%; background-size: cover; background-position: center; will-change: transform; }
@supports (animation-timeline: view()) {
	@media (min-width: 1024px) and (prefers-reduced-motion: no-preference) {
		.rr-cta__bg { animation: rr-parallax linear both; animation-timeline: view(); }
	}
}
@keyframes rr-parallax {
	from { transform: translateY(calc(var(--rr-parallax) * -1)); }
	to   { transform: translateY(var(--rr-parallax)); }
}
.rr-cta__card {
	position: relative; z-index: 1; box-shadow: 0 24px 48px rgba(13, 16, 32, .35);
	background: rgba(52, 59, 101, .9); border-radius: 12px; width: 527px; max-width: 100%;
	padding: 40px 28px; display: flex; flex-direction: column; gap: 32px; color: #fff;
}
.rr-cta__content { display: flex; flex-direction: column; gap: 16px; align-items: center; text-align: center; }
.rr-cta__title { font-family: var(--rr-display); font-weight: 400; font-size: clamp(34px, 4vw, 53px); line-height: 1.05; color: #fff; text-transform: uppercase; }
.rr-cta__content p { font-size: 17px; }
.rr-cta__details { display: flex; flex-direction: column; } /* address, then hours — two stacked lines */
.rr-cta__hours--today { display: none; } /* desktop keeps the full weekly summary; mobile swaps to today-only below */
.rr-cta__buttons { display: flex; flex-wrap: wrap; gap: 16px; }
.rr-btn { display: inline-flex; align-items: center; justify-content: center; padding: 14px 28px; border-radius: 4px; font-size: 14px; font-weight: 600; text-transform: uppercase; color: #fff; text-decoration: none; transition: background .2s; }
.rr-btn--ghost { border: 1px solid #fff; background: transparent; }
.rr-btn--ghost:hover { background: rgba(255, 255, 255, .15); }
.rr-btn--solid { background: var(--rr-orange); border: 1px solid var(--rr-orange); }
.rr-btn--solid:hover { background: var(--rr-orange-deep); }
@media (max-width: 639.98px) {
	.rr-cta { padding: 24px var(--rr-gutter) 205px; }
	/* Taller than before (230px vs. 190px) so more of the map shows above the pin marker baked into
	   section-final-cta.png — background-position:center (on .rr-cta__bg) crops less off the TOP of
	   that image as this box gets taller, which pushes the pin further from the box's own top edge
	   and out from under the card's overlap. Bottom padding grew to match, keeping a small ~25px
	   overlap rather than letting the extra height also balloon how far the card sinks into the map. */
	.rr-cta__bg-wrap { inset: auto 0 0 0; height: 230px; }
	/* Fully opaque here (vs. desktop's translucent card) — matches the mobile reference exactly. */
	.rr-cta__card { background: var(--rr-navy); }
	/* The mobile reference leads with the solid (Get Directions) button, full width, ghost button below —
	   a CSS-only reorder so the underlying button-1/button-2 content and desktop's order stay untouched.
	   Scoped to .rr-cta__buttons: .rr-btn/.rr-btn--solid are shared with other modules (e.g. Single
	   Feature's Order Online), which must NOT be forced full-width or reordered to the top. */
	.rr-cta__buttons { flex-direction: column; width: 100%; }
	.rr-cta__buttons .rr-btn { width: 100%; }
	.rr-cta__buttons .rr-btn--solid { order: -1; }
	/* Smaller buttons shrink the overall card so it doesn't dominate the section as much. */
	.rr-cta__buttons .rr-btn { padding: 11px 20px; font-size: 13px; }
	.rr-cta__hours--full { display: none; }
	.rr-cta__hours--today { display: block; }
}

/* ==========================================================================
   Utility content modules
   ========================================================================== */
.rr-content { background: #fff; }
.rr-content__inner { max-width: var(--rr-max); margin: 0 auto; padding: 72px var(--rr-gutter); display: flex; flex-direction: column; gap: 32px; }
.rr-content + .rr-content .rr-content__inner { padding-top: 0; } /* stacked content modules share one rhythm */
.rr-content__cols { display: grid; gap: 48px; grid-template-columns: 1fr; }
.rr-content__cols--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rr-content__cols--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1023.98px) { .rr-content__cols--3 { grid-template-columns: 1fr; gap: 32px; } }
@media (max-width: 767.98px) { .rr-content__cols--2 { grid-template-columns: 1fr; gap: 32px; } }

/* Thin page hero (utility pages) */
.rr-page-hero { position: relative; overflow: hidden; background: var(--rr-navy-deep); color: var(--rr-cream); min-height: 300px; display: flex; align-items: center; justify-content: center; padding: calc(var(--rr-nav-h) + var(--rr-topbar-h)) var(--rr-gutter) 40px; text-align: center; }
.rr-page-hero__media { position: absolute; inset: 0; }
.rr-page-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.rr-page-hero__overlay { position: absolute; inset: 0; background: rgba(52, 59, 101, .55); }
.rr-page-hero__title { position: relative; font-family: var(--rr-display); font-weight: 400; font-size: clamp(38px, 6vw, 64px); line-height: 1.1; text-transform: uppercase; color: var(--rr-cream); text-shadow: 0 2px 12px rgba(0, 0, 0, .25); }
@media (max-width: 639.98px) { .rr-page-hero { min-height: 240px; } }

/* ==========================================================================
   Footer — a navigation component
   ========================================================================== */
/* Figma (node 124:1901 desktop / 116:1528 mobile) has the footer on the LIGHTER navy (--rr-navy),
   not the deep one — confirmed by sampling the reference art, exact hex match. */
.rr-footer { position: relative; background: var(--rr-navy); color: #fff; overflow: hidden; }
/* `cover` forces the art to scale until it fills the box in BOTH dimensions — against a box that's
   90% of the (tall, multi-column) footer's height, that meant scaling the whole image up just to
   satisfy the height, cropping most of its width away and blowing up the details (the horns/text
   collision). `background-size: auto 90%` instead sets ONLY the rendered height to 90% of the box,
   deriving width from the image's own aspect ratio — so the art actually shrinks to fit, uncropped.
   The container spans the full (auto-height) footer via inset:0 rather than an explicit height, since
   percentage HEIGHT on an absolutely positioned child of an auto-height ancestor collapses to zero;
   inset's top/bottom pairing resolves fine against the parent's final content-driven height instead. */
.rr-footer__bg {
	position: absolute; inset: 0;
	background-size: auto 90%; background-position: right bottom; background-repeat: no-repeat;
}
.rr-footer__inner { position: relative; max-width: var(--rr-max); margin: 0 auto; padding: 96px var(--rr-gutter) 48px; display: flex; flex-direction: column; gap: 12px; }
.rr-footer__cols { display: flex; gap: 72px; align-items: flex-start; }
.rr-footer__brand { flex: none; width: 212px; }
.rr-footer__brand img { width: 182px; height: auto; }
.rr-footer__col { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.rr-footer__heading { font-family: var(--rr-display); font-weight: 400; font-size: 18px; line-height: 1.2; text-transform: uppercase; color: #fff; }
.rr-footer__heading--orange, .rr-footer__heading--orange a { color: var(--rr-orange); text-decoration: none; }
.rr-footer__address { display: flex; flex-direction: column; gap: 8px; font-size: 13px; opacity: .8; }
.rr-footer__address a { text-decoration: none; }
.rr-footer__hours { display: flex; flex-direction: column; gap: 4px; font-size: 13px; opacity: .6; }
.rr-footer__hours .is-closed { opacity: .67; }
.rr-footer__links { display: flex; flex-direction: column; gap: 12px; font-size: 14px; }
.rr-footer__links a { text-decoration: none; opacity: .8; transition: opacity .2s; }
.rr-footer__links a:hover { opacity: 1; text-decoration: underline; }
.rr-footer__socials { display: flex; gap: 16px; }
.rr-footer__socials a { display: block; opacity: .9; }
.rr-footer__bottom { display: flex; flex-direction: column; gap: 24px; margin-top: 12px; }
.rr-footer__bottom hr { border: 0; height: 1px; background: rgba(255, 255, 255, .2); margin: 0; }
.rr-footer__meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; font-size: 13px; opacity: .5; }
.rr-footer__meta a { text-decoration: none; }
.rr-footer__meta a:hover { text-decoration: underline; }
@media (max-width: 1023.98px) {
	.rr-footer__inner { padding-top: 64px; }
	.rr-footer__cols { flex-wrap: wrap; gap: 40px 32px; }
	.rr-footer__brand { width: 100%; }
	.rr-footer__col { flex: 1 1 200px; }
}
/* Mobile footer (per the mobile reference): centered logo, the two locations side by side in one
   row, then centered Quick Links + socials, then a centered copyright/legal stack. */
@media (max-width: 639.98px) {
	.rr-footer__inner { padding: 40px 20px 32px; gap: 40px; }
	.rr-footer__cols { display: grid; grid-template-columns: 1fr 1fr; gap: 28px 20px; }
	.rr-footer__brand { grid-column: 1 / -1; width: auto; display: flex; justify-content: center; }
	.rr-footer__brand img { width: 150px; }
	.rr-footer__col--links { grid-column: 1 / -1; text-align: center; gap: 16px; }
	.rr-footer__heading { font-size: 16px; }
	/* Quick Links is orange on desktop but white on mobile per the reference — same source markup,
	   just overridden back to white at this breakpoint. */
	.rr-footer__col--links .rr-footer__heading { color: #fff; }
	.rr-footer__bottom { gap: 16px; }
	.rr-footer__meta { flex-direction: column; align-items: center; text-align: center; gap: 8px; }
	/* The bull-and-rooster art reads full-bleed and taller relative to the shorter, narrower mobile
	   footer (per the mobile reference), vs. a right-corner accent on desktop — already confirmed
	   correct, so this keeps its own fixed-band/cover treatment untouched by the desktop rule above.
	   inset overrides top back to auto (desktop's inset:0 would otherwise pin it there instead of
	   anchoring to the bottom), and background-size back to cover (vs. desktop's auto-90%). */
	.rr-footer__bg { inset: auto 0 0 0; height: 300px; background-size: cover; }
}

/* ==========================================================================
   Front door
   ========================================================================== */
.rr-door { position: relative; display: flex; min-height: 100vh; min-height: 100svh; overflow: hidden; }
.rr-door__panel {
	position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
	padding: 0 60px clamp(56px, 11vh, 110px); text-decoration: none; color: var(--rr-cream); overflow: hidden; min-height: 640px;
}
.rr-door__bg, .rr-door__overlay, .rr-door__vignette, .rr-door__glow { position: absolute; inset: 0; }
.rr-door__bg img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.16, 1, .3, 1); }
.rr-door__overlay { background: rgba(25, 30, 64, .55); transition: background .35s ease; }
.rr-door__panel--siouxfalls .rr-door__overlay { background: rgba(25, 30, 64, .52); }
.rr-door__vignette { top: 50%; background: linear-gradient(to bottom, transparent, rgba(13, 18, 32, .85)); }
.rr-door__panel--siouxfalls .rr-door__vignette { background: linear-gradient(to bottom, transparent, rgba(10, 21, 37, .88)); }
.rr-door__glow { width: 80px; left: auto; right: 0; background: linear-gradient(to right, transparent, rgba(232, 100, 44, .12)); }
.rr-door__panel ~ .rr-door__panel .rr-door__glow { left: 0; right: auto; background: linear-gradient(to right, rgba(232, 100, 44, .12), transparent); }
.rr-door__panel:hover .rr-door__overlay, .rr-door__panel:focus-visible .rr-door__overlay { background: rgba(25, 30, 64, .32); }
.rr-door__panel:hover .rr-door__bg img { transform: scale(1.03); }
.rr-door__panel:focus-visible { outline-offset: -6px; }
.rr-door__content { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; }
.rr-door__name { font-family: var(--rr-display); font-size: clamp(44px, 5vw, 72px); line-height: 1.3; text-transform: uppercase; }
.rr-door__rule { display: block; width: 64px; height: 3px; border-radius: 2px; background: var(--rr-orange); }
.rr-door__address { display: flex; align-items: center; gap: 10px; padding: 20px 0 28px; font-family: var(--rr-ui); font-weight: 500; font-size: clamp(15px, 1.4vw, 20px); opacity: .75; text-align: center; justify-content: center; }
.rr-door__address .rr-icon { width: 24px; height: 24px; flex: none; }
.rr-door__enter {
	display: block; padding: 18px 56px; border-radius: 4px; background: var(--rr-orange); color: #fff;
	font-family: var(--rr-display); font-size: 20px; text-transform: uppercase;
	box-shadow: 0 8px 12px rgba(232, 100, 44, .33); transition: background .2s, transform .2s;
}
.rr-door__panel:hover .rr-door__enter { background: var(--rr-orange-deep); transform: translateY(-2px); }
.rr-door__hours { position: relative; margin-top: 28px; display: flex; justify-content: center; gap: 12px 40px; font-family: var(--rr-ui); font-size: 20px; line-height: 1.35; opacity: .45; text-align: center; }
.rr-door__hgroup { display: flex; flex-direction: column; }
.rr-door__hdays { font-weight: 600; }
.rr-door__divider { position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; margin-left: -2px; pointer-events: none;
	background: linear-gradient(180deg, rgba(232, 100, 44, 0) 0%, rgba(232, 100, 44, .6) 40%, rgba(232, 100, 44, .6) 60%, rgba(232, 100, 44, 0) 100%); }
.rr-door__center { position: absolute; left: 50%; top: 40px; transform: translateX(-50%); width: min(476px, 90vw); text-align: center; pointer-events: none; z-index: 2; }
.rr-door__prompt { font-family: var(--rr-display); font-weight: 400; font-size: 47px; line-height: 1.2; color: var(--rr-orange); text-transform: uppercase; margin-top: 18px; text-shadow: 0 2px 10px rgba(0, 0, 0, .35); }

/* Logo lockup: flame + 21 lettering vectors, positioned by the design's percent insets. Timing is
   transcribed directly from the isolated animation reference (Figma node 222:2517/222:2519) — a
   single 4s loop, repeating forever: the flame fades and scales in, then rotates, squashes/stretches
   and cycles through its orange range continuously; the 21 letters reveal in a staggered wave that
   finishes by ~1.3s, hold, then reset with the flame at the top of every loop. Every track below is
   its own @keyframes because each one eases on a different schedule — CSS only allows one easing
   curve per segment per animation, so they can't be merged into a single keyframes rule. */
.rr-logo { position: relative; width: 285.7px; height: 320.6px; margin: 0 auto; }
.rr-logo > * { position: absolute; display: block; }
.rr-logo__flame svg, .rr-logo__letter img { width: 100%; height: 100%; max-width: none; }
.rr-logo__flame {
	transform-origin: 50% 90%;
	animation: rr-flame-opacity 4s linear infinite, rr-flame-rotate 4s linear infinite,
		rr-flame-scale 4s linear infinite, rr-flame-translate 4s linear infinite;
}
.rr-logo__flame path { animation: rr-flame-fill 4s linear infinite; }

@keyframes rr-flame-opacity {
	0% { animation-timing-function: cubic-bezier(.16, 1, .3, 1); opacity: 0; }
	12.5% { opacity: 1; }
	100% { opacity: 1; }
}
@keyframes rr-flame-rotate {
	0% { rotate: 0rad; }
	17.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); rotate: 0rad; }
	32.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); rotate: -.035rad; }
	47.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); rotate: .026rad; }
	62.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); rotate: -.031rad; }
	80% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); rotate: .021rad; }
	92.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); rotate: -.014rad; }
	100% { rotate: 0rad; }
}
@keyframes rr-flame-scale {
	0% { animation-timing-function: cubic-bezier(.16, 1, .3, 1); scale: .85 .85; }
	17.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); scale: 1 1; }
	30% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); scale: .97 1.05; }
	42.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); scale: 1.03 .96; }
	57.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); scale: .96 1.06; }
	72.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); scale: 1.02 .97; }
	87.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); scale: .98 1.04; }
	100% { scale: 1 1; }
}
@keyframes rr-flame-translate {
	0% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); translate: 0 1px; }
	100% { translate: 0 0; }
}
@keyframes rr-flame-fill {
	0% { animation-timing-function: step-end; fill: #D95A18; }
	17.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); fill: #D95A18; }
	32.5% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); fill: #F2801A; }
	45% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); fill: #D1470D; }
	60% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); fill: #F28C26; }
	75% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); fill: #C7400A; }
	90% { animation-timing-function: cubic-bezier(.4, 0, .6, 1); fill: #EB7A1F; }
	100% { fill: #D95A18; }
}

/* Each letter has its own keyframes (a shared one phase-shifted via animation-delay would reset all
   21 letters at different wall-clock moments instead of together at every 4s loop boundary). */
/* nth-child, not nth-of-type: .rr-logo__flame is also a <span> and is always the first child before
   the 21 letter spans, so nth-of-type(N) here was actually counting the flame as letter slot 1 —
   every letter got the WRONG keyframe animation (off by one), and the real 21st letter matched no
   rule at all (nth-of-type only goes to 21) and never got its reveal animation. nth-child(N+1)
   accounts for that leading flame span directly instead of relying on there being no other siblings. */
.rr-logo__letter:nth-child(2) { animation: rr-letter-1 12s linear infinite; }
.rr-logo__letter:nth-child(3) { animation: rr-letter-2 12s linear infinite; }
.rr-logo__letter:nth-child(4) { animation: rr-letter-3 12s linear infinite; }
.rr-logo__letter:nth-child(5) { animation: rr-letter-4 12s linear infinite; }
.rr-logo__letter:nth-child(6) { animation: rr-letter-5 12s linear infinite; }
.rr-logo__letter:nth-child(7) { animation: rr-letter-6 12s linear infinite; }
.rr-logo__letter:nth-child(8) { animation: rr-letter-7 12s linear infinite; }
.rr-logo__letter:nth-child(9) { animation: rr-letter-8 12s linear infinite; }
.rr-logo__letter:nth-child(10) { animation: rr-letter-9 12s linear infinite; }
.rr-logo__letter:nth-child(11) { animation: rr-letter-10 12s linear infinite; }
.rr-logo__letter:nth-child(12) { animation: rr-letter-11 12s linear infinite; }
.rr-logo__letter:nth-child(13) { animation: rr-letter-12 12s linear infinite; }
.rr-logo__letter:nth-child(14) { animation: rr-letter-13 12s linear infinite; }
.rr-logo__letter:nth-child(15) { animation: rr-letter-14 12s linear infinite; }
.rr-logo__letter:nth-child(16) { animation: rr-letter-15 12s linear infinite; }
.rr-logo__letter:nth-child(17) { animation: rr-letter-16 12s linear infinite; }
.rr-logo__letter:nth-child(18) { animation: rr-letter-17 12s linear infinite; }
.rr-logo__letter:nth-child(19) { animation: rr-letter-18 12s linear infinite; }
.rr-logo__letter:nth-child(20) { animation: rr-letter-19 12s linear infinite; }
.rr-logo__letter:nth-child(21) { animation: rr-letter-20 12s linear infinite; }
.rr-logo__letter:nth-child(22) { animation: rr-letter-21 12s linear infinite; }

/* Letter reveal duration went from 4s to 12s (this loop's total length) but the reveal itself must
   still finish at the same wall-clock moment (~1.3s in) — otherwise a longer duration alone would
   also drag the letter-by-letter reveal out 3x, not just extend the hold afterward. So every keyframe
   percentage below is the original value ÷ 3 (4s/12s): same absolute timing for the reveal, and
   everything from ~11% to 100% is now the extended "settled" hold before the loop restarts. The flame
   animations intentionally keep their own 4s duration — they'll just cycle 3x per loop, so the flame
   keeps visibly moving throughout the hold instead of freezing. */
@keyframes rr-letter-1 { 0% { opacity: 0; translate: 0 8px; } 4.1667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 7.5% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-2 { 0% { opacity: 0; translate: 0 8px; } 4.3333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 7.6667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-3 { 0% { opacity: 0; translate: 0 8px; } 4.5% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 7.8333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-4 { 0% { opacity: 0; translate: 0 8px; } 4.6667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 8% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-5 { 0% { opacity: 0; translate: 0 8px; } 4.8333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 8.1667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-6 { 0% { opacity: 0; translate: 0 8px; } 5% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 8.3333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-7 { 0% { opacity: 0; translate: 0 8px; } 5.1667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 8.5% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-8 { 0% { opacity: 0; translate: 0 8px; } 5.3333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 8.6667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-9 { 0% { opacity: 0; translate: 0 8px; } 5.5% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 8.8333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-10 { 0% { opacity: 0; translate: 0 8px; } 5.6667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 9% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-11 { 0% { opacity: 0; translate: 0 8px; } 5.8333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 9.1667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-12 { 0% { opacity: 0; translate: 0 8px; } 6% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 9.3333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-13 { 0% { opacity: 0; translate: 0 8px; } 6.1667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 9.5% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-14 { 0% { opacity: 0; translate: 0 8px; } 6.3333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 9.6667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-15 { 0% { opacity: 0; translate: 0 8px; } 6.5% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 9.8333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-16 { 0% { opacity: 0; translate: 0 8px; } 6.6667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 10% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-17 { 0% { opacity: 0; translate: 0 8px; } 6.8333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 10.1667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-18 { 0% { opacity: 0; translate: 0 8px; } 7% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 10.3333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-19 { 0% { opacity: 0; translate: 0 8px; } 7.1667% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 10.5% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-20 { 0% { opacity: 0; translate: 0 8px; } 7.3333% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 10.6667% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }
@keyframes rr-letter-21 { 0% { opacity: 0; translate: 0 8px; animation-timing-function: cubic-bezier(.16, 1, .3, 1); } 10.8333% { opacity: 1; translate: 0 0; } 100% { opacity: 1; translate: 0 0; } }

@media (prefers-reduced-motion: reduce) {
	.rr-logo__flame, .rr-logo__flame path, .rr-logo__letter { animation: none; }
	.rr-door__bg img, .rr-door__enter { transition: none; }
}

/* Mobile-only card chrome is hidden on desktop. */
.rr-door__tag, .rr-door__chip, .rr-door__help, .rr-door__enter-m { display: none; }

/* Mobile: logo, prompt and helper text on top, then one rounded card per location. */
@media (max-width: 767.98px) {
	body.rr-door-page { background: var(--rr-navy); }
	.rr-door { flex-direction: column; min-height: 100svh; padding: 8px 16px 32px; gap: 8px; overflow: visible; }
	.rr-door__center { position: static; transform: none; order: -1; width: auto; margin: 0 auto; }
	/* Real width/height, not transform:scale() — a transform is purely visual and doesn't shrink the
	   element's LAYOUT footprint, so the old scale(.5) still reserved flow space for the full 320px-tall
	   untransformed box and only partly clawed it back with a large negative margin, leaving ~90px of
	   dead space before the prompt that didn't show up in any single property. Sizing the box directly
	   makes the reserved space match what's actually drawn, with the rest of the mobile shrink coming
	   from this and the prompt/help text below being smaller, not from a bigger negative margin. The
	   letters/flame still position correctly since their insets are percentages of this same box. */
	.rr-door__center .rr-logo { width: 92px; height: 104px; margin: 0 auto 6px; }
	.rr-door__prompt { font-size: 23px; color: var(--rr-cream); margin-top: 0; text-shadow: none; }
	.rr-door__help { display: block; margin: 4px auto 0; max-width: 300px; font-family: var(--rr-ui); font-size: 14px; line-height: 1.45; color: var(--rr-cream); opacity: .75; }
	.rr-door__divider, .rr-door__glow, .rr-door__vignette, .rr-door__hours, .rr-door__name, .rr-door__rule, .rr-door__enter-d { display: none; }

	.rr-door__panel { flex: none; min-height: 220px; height: 220px; border-radius: 20px; padding: 0 16px 16px; justify-content: flex-end; box-shadow: 0 12px 28px rgba(0, 0, 0, .35); }
	.rr-door__overlay { background: rgba(25, 30, 64, .45); }
	.rr-door__panel--siouxfalls .rr-door__overlay { background: rgba(25, 30, 64, .5); }
	.rr-door__tag { display: block; position: absolute; left: 16px; top: 16px; padding: 6px 12px; border-radius: 999px; background: var(--rr-cream); color: var(--rr-navy-deep); font-family: var(--rr-display); font-size: 15px; }
	.rr-door__chip { display: flex; align-items: center; gap: 6px; position: absolute; right: 16px; top: 16px; padding: 6px 12px; border-radius: 999px; background: rgba(255, 255, 255, .15); border: 1px solid rgba(255, 255, 255, .3); font-family: var(--rr-ui); font-size: 14px; }
	.rr-door__content { width: 100%; align-items: stretch; text-align: left; }
	.rr-door__address { padding: 0 0 12px; font-size: 15px; opacity: .95; }
	.rr-door__address .rr-icon { display: none; }
	.rr-door__enter { padding: 14px 16px; text-align: center; font-size: 19px; box-shadow: none; }
	.rr-door__enter-m { display: inline; }
}

/* ==========================================================================
   Hover colour: brand orange (front door text, footer links)
   ========================================================================== */
.rr-door__name { transition: color .2s; }
.rr-door__panel:hover .rr-door__name, .rr-door__panel:focus-visible .rr-door__name { color: var(--rr-orange); }

.rr-footer a { transition: color .2s, opacity .2s; }
.rr-footer a:hover, .rr-footer a:focus-visible,
.rr-footer__links a:hover, .rr-footer__meta a:hover, .rr-footer__address a:hover, .rr-footer__heading a:hover { color: var(--rr-orange); opacity: 1; }
.rr-footer__socials a:hover img { filter: brightness(0) saturate(100%) invert(48%) sepia(92%) saturate(1800%) hue-rotate(345deg) brightness(97%); }

/* Front door: the panel is a link, so Foundation's `a:hover` colour would recolour all of its text.
   Pin the text colour so only the location name changes on hover. */
.rr-door__panel:hover, .rr-door__panel:focus, .rr-door__panel:active, .rr-door__panel:visited { color: var(--rr-cream); }
