/* ==========================================================================
   The Owensboro Barbershop — theme stylesheet
   --------------------------------------------------------------------------
   Specificity contract with Elementor:
     kit defaults ............ (0,3,0)  .elementor-kit-N .elementor-widget-x ...
     THIS FILE ............... (0,3,1)  body .elementor .class .inner
     shop's own widget styles  (0,4,0)  .elementor-N .elementor-element.elementor-element-id ...
   Colour/spacing switches (dark sections, cards) go through custom properties,
   never through deeper selectors, so the shop's style controls always win.
   No !important outside the editor guard and reduced-motion.
   ========================================================================== */

/* ---------------------------------------------------------------- tokens */
:root {
	--ink: #0D1625;
	--ink-2: #111C2F;
	--navy: #16294D;
	--blue: #1F4FA3;
	--blue-2: #2A5FBF;
	--red: #B8232B;
	--red-dk: #8F1A20;
	--cream: #F5EFE4;
	--cream-2: #EBE2D0;
	--paper: #FBF8F2;
	--line: #DCD2BF;
	--brass: #C8A04A;
	--brass-lt: #DDBB6B;
	--text: #1B2230;
	--muted: #5A606C;
	--on-dark-muted: #B9C0CC;
	--green: #2E7D4F;
	--green-lt: #5BD08A;

	--font-display: "Oswald", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
	--font-body: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--font-script: "Yesteryear", "Brush Script MT", "Segoe Script", cursive;

	--container: 1240px;
	--gutter: clamp(20px, 4vw, 40px);
	--section-y: clamp(64px, 8vw, 120px);
	--radius: 14px;
	--radius-sm: 8px;
	--shadow-1: 0 1px 2px rgba(13, 22, 37, .06), 0 10px 26px -14px rgba(13, 22, 37, .22);
	--shadow-2: 0 2px 6px rgba(13, 22, 37, .08), 0 28px 56px -24px rgba(13, 22, 37, .42);
	--pole: repeating-linear-gradient(-45deg, var(--red) 0 10px, #fff 10px 20px, var(--blue) 20px 30px, #fff 30px 40px);
	--ease: cubic-bezier(.2, .7, .2, 1);

	/* Contextual colours (light surfaces); .on-dark and cards redefine them. */
	--c-h: var(--ink);
	--c-text: var(--text);
	--c-muted: var(--muted);
	--c-eyebrow: var(--red);
	--c-script: var(--red);
	--c-link: var(--blue);
	--c-rule: var(--line);
	--c-icon: var(--red);
	--c-icon-bg: rgba(184, 35, 43, .1);
	--c-focus: var(--blue);
}

.on-dark,
.obs-header,
.obs-topbar,
.obs-footer,
.obs-drawer__panel {
	--c-h: var(--cream);
	--c-text: #E9E2D4;
	--c-muted: var(--on-dark-muted);
	--c-eyebrow: var(--brass);
	--c-script: var(--brass-lt);
	--c-link: var(--brass-lt);
	--c-rule: rgba(245, 239, 228, .14);
	--c-icon: var(--brass);
	--c-icon-bg: rgba(200, 160, 74, .16);
	--c-focus: var(--brass-lt);
}

/* Light cards sitting inside dark sections reset the palette. */
.obs-ticket,
.obs-info__card,
.obs-review,
.obs-col-card > .elementor-widget-wrap,
.obs-feature .elementor-image-box-wrapper {
	--c-h: var(--ink);
	--c-text: var(--text);
	--c-muted: var(--muted);
	--c-eyebrow: var(--red);
	--c-script: var(--red);
	--c-link: var(--blue);
	--c-rule: var(--line);
	--c-icon: var(--red);
	--c-focus: var(--blue);
}

/* ---------------------------------------------------------------- base */
*,
*::before,
*::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: 96px;
}

body {
	margin: 0;
	background: var(--cream);
	color: var(--text);
	font-family: var(--font-body);
	font-size: 1.0625rem;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

img,
svg,
video,
iframe { max-width: 100%; }
img { height: auto; }

#wpadminbar img { max-width: none; }

a {
	color: var(--c-link);
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
}
a:hover { text-decoration-thickness: 2px; }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-display);
	font-weight: 600;
	line-height: 1.05;
	color: var(--c-h);
	text-transform: uppercase;
	letter-spacing: .01em;
	margin: 0 0 .5em;
}

p { margin: 0 0 1em; }

address { font-style: normal; }

.obs-ico {
	width: 1em;
	height: 1em;
	flex: none;
	vertical-align: -.125em;
}

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

.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 !important;
	width: 1px;
	word-wrap: normal !important;
}

.skip-link {
	position: absolute;
	left: 12px;
	top: -100px;
	z-index: 1000;
	padding: 12px 18px;
	background: var(--paper);
	color: var(--ink);
	font-weight: 700;
	border-radius: var(--radius-sm);
	box-shadow: var(--shadow-2);
	text-decoration: none;
}
.skip-link:focus { top: 12px; }

.obs-main:focus { outline: none; }

.obs-wrap {
	width: 100%;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

/* ---------------------------------------------------------------- buttons */
.obs-btn,
body .elementor .obs-btn-red .elementor-button,
body .elementor .obs-btn-ghost .elementor-button,
body .elementor .obs-btn-outline .elementor-button,
body .elementor .obs-btn-outline-light .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .6em;
	min-height: 52px;
	padding: .8em 1.55em;
	border: 2px solid transparent;
	border-radius: var(--radius-sm);
	font-family: var(--font-display);
	font-size: .98rem;
	font-weight: 600;
	letter-spacing: .09em;
	line-height: 1.1;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	position: relative;
	overflow: hidden;
	transition: background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease);
}
.obs-btn .obs-ico { width: 1.15em; height: 1.15em; }

.obs-btn--red,
body .elementor .obs-btn-red .elementor-button {
	background: var(--red);
	color: #fff;
	box-shadow: 0 10px 22px -12px rgba(184, 35, 43, .75);
}
.obs-btn--red::after,
body .elementor .obs-btn-red .elementor-button::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 4px;
	background: var(--pole);
	background-size: 57px 57px;
	transform: translateY(100%);
	transition: transform .25s var(--ease);
}
.obs-btn--red:hover,
.obs-btn--red:focus-visible,
body .elementor .obs-btn-red .elementor-button:hover,
body .elementor .obs-btn-red .elementor-button:focus-visible {
	background: var(--red-dk);
	color: #fff;
	transform: translateY(-2px);
}
.obs-btn--red:hover::after,
body .elementor .obs-btn-red .elementor-button:hover::after { transform: none; }

.obs-btn--ghost,
body .elementor .obs-btn-ghost .elementor-button {
	background: rgba(13, 22, 37, .25);
	border-color: rgba(245, 239, 228, .6);
	color: var(--cream);
	backdrop-filter: blur(2px);
}
.obs-btn--ghost:hover,
.obs-btn--ghost:focus-visible,
body .elementor .obs-btn-ghost .elementor-button:hover,
body .elementor .obs-btn-ghost .elementor-button:focus-visible {
	background: var(--cream);
	border-color: var(--cream);
	color: var(--ink);
}

.obs-btn--outline,
body .elementor .obs-btn-outline .elementor-button {
	background: transparent;
	border-color: var(--ink);
	color: var(--ink);
}
.obs-btn--outline:hover,
.obs-btn--outline:focus-visible,
body .elementor .obs-btn-outline .elementor-button:hover,
body .elementor .obs-btn-outline .elementor-button:focus-visible {
	background: var(--ink);
	color: var(--cream);
}

body .elementor .obs-btn-outline-light .elementor-button {
	background: transparent;
	border-color: var(--brass);
	color: var(--brass-lt);
}
body .elementor .obs-btn-outline-light .elementor-button:hover,
body .elementor .obs-btn-outline-light .elementor-button:focus-visible {
	background: var(--brass);
	color: var(--ink);
}

.on-dark .obs-btn--outline {
	border-color: rgba(245, 239, 228, .55);
	color: var(--cream);
}
.on-dark .obs-btn--outline:hover,
.on-dark .obs-btn--outline:focus-visible {
	background: var(--cream);
	color: var(--ink);
}

.obs-btn--sm {
	min-height: 42px;
	padding: .55em 1.05em;
	font-size: .86rem;
}

.obs-btns {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
}
.obs-btns--center { justify-content: center; }
.obs-btns--left { justify-content: flex-start; }

body .elementor .elementor-widget-button.elementor-widget__width-auto { margin-inline-end: 12px; }

body .elementor .obs-center-btn { text-align: center; }

/* ---------------------------------------------------------------- live status chip */
.obs-status {
	display: inline-flex;
	align-items: center;
	gap: .55em;
	padding: .34em .85em .34em .7em;
	border-radius: 999px;
	font-family: var(--font-display);
	font-size: .8rem;
	font-weight: 500;
	letter-spacing: .08em;
	line-height: 1.2;
	text-transform: uppercase;
	white-space: nowrap;
}
.obs-status__dot {
	position: relative;
	width: .6em;
	height: .6em;
	border-radius: 50%;
	background: currentColor;
	flex: none;
}
.obs-status.is-open { background: rgba(46, 125, 79, .12); color: var(--green); }
.obs-status.is-closed { background: rgba(184, 35, 43, .1); color: var(--red-dk); }
.obs-status.is-open .obs-status__dot::after {
	content: "";
	position: absolute;
	inset: -4px;
	border-radius: 50%;
	border: 2px solid currentColor;
	opacity: 0;
	animation: obs-pulse 2.4s var(--ease) infinite;
}
.on-dark .obs-status.is-open,
.obs-topbar .obs-status.is-open,
.obs-footer .obs-status.is-open,
.obs-drawer .obs-status.is-open { background: rgba(91, 208, 138, .14); color: var(--green-lt); }
.on-dark .obs-status.is-closed,
.obs-topbar .obs-status.is-closed,
.obs-footer .obs-status.is-closed,
.obs-drawer .obs-status.is-closed { background: rgba(240, 120, 126, .14); color: #F4A3A7; }
/* Cards inside dark sections are light again. */
.obs-ticket .obs-status.is-open,
.obs-info__card .obs-status.is-open { background: rgba(46, 125, 79, .12); color: var(--green); }
.obs-ticket .obs-status.is-closed,
.obs-info__card .obs-status.is-closed { background: rgba(184, 35, 43, .1); color: var(--red-dk); }

@keyframes obs-pulse {
	0% { transform: scale(.6); opacity: .8; }
	70%, 100% { transform: scale(1.5); opacity: 0; }
}

/* ---------------------------------------------------------------- hours */
.obs-hours { margin: 0; }
.obs-hours__row {
	display: flex;
	justify-content: space-between;
	gap: 1em;
	padding: .55em 0;
	border-bottom: 1px dashed var(--c-rule);
}
.obs-hours__row:last-child { border-bottom: 0; }
.obs-hours dt,
.obs-hours dd { margin: 0; }
.obs-hours dt { font-weight: 600; color: var(--c-h); }
.obs-hours dd { color: var(--c-text); font-variant-numeric: tabular-nums; text-align: right; }
.obs-hours__row.is-closed dd { color: var(--c-muted); }
.obs-hours__row.is-today {
	position: relative;
	background: linear-gradient(90deg, rgba(184, 35, 43, .07), transparent 80%);
	margin-inline: -.75em;
	padding-inline: .75em;
	border-radius: 6px;
}
.obs-hours__row.is-today dt::after {
	content: "Today";
	margin-left: .6em;
	padding: .1em .45em;
	border-radius: 4px;
	background: var(--red);
	color: #fff;
	font-family: var(--font-display);
	font-size: .66rem;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
	vertical-align: .15em;
}
.obs-hours-note { margin: .75em 0 0; font-size: .92rem; color: var(--c-muted); font-style: italic; }

.obs-hgroups {
	list-style: none;
	margin: 0;
	padding: 0;
}
.obs-hgroups li {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1em;
	padding: .5em 0;
	border-bottom: 1px solid var(--c-rule);
}
.obs-hgroups li:last-child { border-bottom: 0; }
.obs-hgroups__days {
	font-family: var(--font-display);
	font-weight: 500;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--c-h);
}
.obs-hgroups__time { font-variant-numeric: tabular-nums; color: var(--c-text); text-align: right; }
.obs-hgroups li.is-closed .obs-hgroups__time { color: var(--c-muted); }

/* ---------------------------------------------------------------- announcement + top bar */
.obs-announce {
	background: var(--red);
	color: #fff;
	font-weight: 600;
	text-align: center;
}
.obs-announce__in {
	margin-block: 0;
	padding-block: .6em;
	font-size: .98rem;
}

.obs-topbar {
	background: var(--ink-2);
	color: var(--on-dark-muted);
	font-size: .9rem;
	border-bottom: 1px solid rgba(245, 239, 228, .06);
}
.obs-topbar__in {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 42px;
}
.obs-topbar p { margin: 0; }
.obs-topbar__walkin {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	color: var(--cream);
	font-weight: 600;
}
.obs-topbar__walkin .obs-ico { color: var(--brass); width: 1.1em; height: 1.1em; }
.obs-topbar__meta {
	display: inline-flex;
	align-items: center;
	gap: 1rem;
}
.obs-topbar__hours { white-space: nowrap; }

/* ---------------------------------------------------------------- header */
.obs-header {
	position: sticky;
	top: 0;
	z-index: 60;
	/* Solid: nothing patterned ever sits behind navigation text. */
	background: linear-gradient(180deg, #101B2D 0%, var(--ink) 100%);
	color: var(--cream);
	transition: box-shadow .25s var(--ease);
}
.admin-bar .obs-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .obs-header { top: 46px; } }
@media (max-width: 600px) { .admin-bar .obs-header { top: 0; } }

.obs-header::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -5px;
	height: 5px;
	background: var(--pole);
	background-size: 57px 57px;
	animation: obs-pole-slide 3.5s linear infinite;
	pointer-events: none;
}
.obs-header.is-scrolled { box-shadow: 0 14px 30px -18px rgba(0, 0, 0, .7); }

@keyframes obs-pole-slide {
	from { background-position: 0 0; }
	to { background-position: 57px 0; }
}

.obs-header__in {
	display: flex;
	align-items: center;
	gap: clamp(16px, 2.4vw, 40px);
	min-height: 86px;
	transition: min-height .25s var(--ease);
}
.obs-header.is-scrolled .obs-header__in { min-height: 70px; }

/* Brand lockup — mirrors the street sign: script "The", display name, red ribbon. */
.obs-brand {
	display: inline-flex;
	align-items: center;
	flex: none;
	color: var(--cream);
	text-decoration: none;
	line-height: 1;
	font-size: 16px;
}
.obs-brand:hover { color: var(--cream); }
.obs-brand__lockup {
	position: relative;
	display: inline-grid;
	justify-items: center;
	padding-top: .5em;
}
.obs-brand__the {
	position: absolute;
	top: -.12em;
	left: -.35em;
	font-family: var(--font-script);
	font-size: 1.12em;
	color: var(--brass-lt);
	transform: rotate(-9deg);
	letter-spacing: 0;
}
.obs-brand__name {
	font-family: var(--font-display);
	font-weight: 700;
	font-size: 1.62em;
	letter-spacing: .05em;
	text-transform: uppercase;
	line-height: .95;
	white-space: nowrap;
}
.obs-brand__ribbon {
	display: block;
	margin-top: .32em;
	padding: .28em 1.05em .26em 1.39em;
	background: var(--red);
	color: #fff;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: .6em;
	letter-spacing: .34em;
	line-height: 1;
	text-transform: uppercase;
	white-space: nowrap;
	clip-path: polygon(0 0, 100% 0, calc(100% - .6em) 50%, 100% 100%, 0 100%, .6em 50%);
}
.obs-brand--custom img { display: block; max-height: 62px; width: auto; }
.obs-brand--footer { font-size: 19px; }
.obs-brand--drawer { font-size: 15px; }

/* Primary navigation — styles BOTH shapes: wp_nav_menu (nav > ul > li > a) and the fallback. */
.obs-nav { margin-left: auto; }
.obs-nav > ul,
.obs-nav .obs-nav__list {
	display: flex;
	align-items: center;
	gap: clamp(.4rem, 1.6vw, 1.6rem);
	list-style: none;
	margin: 0;
	padding: 0;
}
.obs-nav li { position: relative; list-style: none; }
.obs-nav a {
	position: relative;
	display: inline-block;
	padding: .55em .15em;
	color: var(--cream);
	font-family: var(--font-display);
	font-size: .96rem;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	transition: color .2s var(--ease);
}
.obs-nav a::after {
	content: "";
	position: absolute;
	left: .15em;
	right: .15em;
	bottom: .2em;
	height: 2px;
	background: var(--brass);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .25s var(--ease);
}
.obs-nav a:hover,
.obs-nav a:focus-visible,
.obs-nav .current-menu-item > a,
.obs-nav .current_page_item > a { color: var(--brass-lt); }
.obs-nav a:hover::after,
.obs-nav a:focus-visible::after,
.obs-nav .current-menu-item > a::after,
.obs-nav .current_page_item > a::after { transform: scaleX(1); }

.obs-nav .sub-menu {
	position: absolute;
	top: 100%;
	left: -14px;
	z-index: 5;
	min-width: 230px;
	margin: 0;
	padding: 10px;
	list-style: none;
	background: var(--ink-2);
	border: 1px solid rgba(245, 239, 228, .1);
	border-radius: 10px;
	box-shadow: var(--shadow-2);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
}
.obs-nav li:hover > .sub-menu,
.obs-nav li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.obs-nav .sub-menu a { display: block; padding: .6em .8em; letter-spacing: .08em; }
.obs-nav .sub-menu a::after { content: none; }

.obs-header__cta {
	display: flex;
	align-items: center;
	gap: 10px;
	flex: none;
}

.obs-burger {
	display: none;
	align-items: center;
	gap: .6em;
	min-height: 44px;
	padding: 0 .9em;
	border: 1px solid rgba(245, 239, 228, .35);
	border-radius: var(--radius-sm);
	background: transparent;
	color: var(--cream);
	font-family: var(--font-display);
	font-size: .86rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	cursor: pointer;
}
.obs-burger__bars { display: grid; gap: 4px; width: 20px; }
.obs-burger__bars span {
	display: block;
	height: 2px;
	border-radius: 2px;
	background: currentColor;
}
.obs-burger__bars span:nth-child(2) { width: 70%; justify-self: end; }
.obs-burger:hover { border-color: var(--brass); color: var(--brass-lt); }

/* ---------------------------------------------------------------- mobile drawer */
/* Solid ink with a soft brass glow: nothing patterned behind the links. */
.obs-drawer {
	position: fixed;
	inset: 0;
	z-index: 200;
}
.obs-drawer[hidden] { display: none; }
.obs-drawer__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(6, 10, 18, .66);
	backdrop-filter: blur(4px);
	opacity: 0;
	transition: opacity .3s var(--ease);
}
.obs-drawer__panel {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	display: flex;
	flex-direction: column;
	width: min(420px, 92vw);
	padding: 16px 22px calc(20px + env(safe-area-inset-bottom)) 30px;
	overflow-y: auto;
	overscroll-behavior: contain;
	background:
		radial-gradient(120% 45% at 100% 0%, rgba(200, 160, 74, .13), transparent 60%),
		linear-gradient(180deg, #111C2F 0%, var(--ink) 55%);
	color: var(--cream);
	box-shadow: -30px 0 60px -30px rgba(0, 0, 0, .8);
	transform: translateX(100%);
	transition: transform .35s var(--ease);
}
/* Barber-pole edge along the left side: decoration only, nothing written over it. */
.obs-drawer__panel::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 6px;
	background: repeating-linear-gradient(-25deg, var(--red) 0 10px, #fff 10px 20px, var(--blue) 20px 30px, #fff 30px 40px);
	background-size: 6px 57px;
	animation: obs-pole-rise 4s linear infinite;
}
@keyframes obs-pole-rise {
	from { background-position: 0 0; }
	to { background-position: 0 -57px; }
}
.obs-drawer.is-open .obs-drawer__backdrop { opacity: 1; }
.obs-drawer.is-open .obs-drawer__panel { transform: none; }

.obs-drawer__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 4px 0 16px;
	border-bottom: 1px solid rgba(245, 239, 228, .1);
}
.obs-drawer__close {
	display: inline-grid;
	place-items: center;
	width: 44px;
	height: 44px;
	flex: none;
	border: 1px solid rgba(245, 239, 228, .18);
	border-radius: 50%;
	background: rgba(245, 239, 228, .06);
	color: var(--cream);
	cursor: pointer;
	transition: background-color .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease);
}
.obs-drawer__close .obs-ico { width: 20px; height: 20px; }
.obs-drawer__close:hover { background: rgba(245, 239, 228, .12); border-color: var(--brass); color: var(--brass-lt); }

.obs-drawer__nav { margin: 8px 0 20px; }
.obs-drawer__nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.obs-drawer__nav li { list-style: none; }
.obs-drawer__nav a {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .72em .15em .72em 0;
	border-bottom: 1px solid rgba(245, 239, 228, .08);
	color: var(--cream);
	font-family: var(--font-display);
	font-size: 1.4rem;
	font-weight: 500;
	letter-spacing: .07em;
	line-height: 1.15;
	text-transform: uppercase;
	text-decoration: none;
	opacity: 0;
	transform: translateX(18px);
	transition: color .2s var(--ease), padding .2s var(--ease), opacity .35s var(--ease), transform .35s var(--ease);
}
.obs-drawer.is-open .obs-drawer__nav a { opacity: 1; transform: none; }
/* Stagger: with a WordPress menu the anchors are grandchildren, so target li:nth-child(n) a. */
.obs-drawer.is-open .obs-drawer__nav li:nth-child(2) a { transition-delay: .04s; }
.obs-drawer.is-open .obs-drawer__nav li:nth-child(3) a { transition-delay: .08s; }
.obs-drawer.is-open .obs-drawer__nav li:nth-child(4) a { transition-delay: .12s; }
.obs-drawer.is-open .obs-drawer__nav li:nth-child(5) a { transition-delay: .16s; }
.obs-drawer.is-open .obs-drawer__nav li:nth-child(6) a { transition-delay: .2s; }
.obs-drawer__nav a::after {
	content: "";
	width: 9px;
	height: 9px;
	flex: none;
	border-top: 2px solid currentColor;
	border-right: 2px solid currentColor;
	transform: rotate(45deg);
	opacity: .45;
}
.obs-drawer__nav a:hover { color: var(--brass-lt); }
.obs-drawer__nav .current-menu-item > a,
.obs-drawer__nav .current_page_item > a {
	padding-left: 20px;
	color: var(--brass-lt);
}
.obs-drawer__nav .current-menu-item > a::before,
.obs-drawer__nav .current_page_item > a::before {
	content: "";
	position: absolute;
	left: 2px;
	top: 50%;
	width: 8px;
	height: 8px;
	margin-top: -4px;
	border-radius: 50%;
	background: var(--red);
	box-shadow: 0 0 0 3px rgba(184, 35, 43, .3);
}
.obs-drawer__nav .sub-menu a { font-size: 1.1rem; padding-left: 1em; }

.obs-drawer__info {
	padding: 14px 16px;
	border: 1px solid rgba(245, 239, 228, .1);
	border-radius: 14px;
	background: rgba(245, 239, 228, .045);
}
.obs-drawer__info .obs-status { margin-bottom: .45rem; }
.obs-drawer__info .obs-hgroups li { padding: .38em 0; border-bottom-color: rgba(245, 239, 228, .08); }
.obs-drawer__walkin { margin: .55rem 0 0; color: var(--on-dark-muted); font-size: .92rem; }
.obs-drawer__actions {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
	margin-top: auto;
	padding-top: 18px;
}
.obs-drawer__actions .obs-btn {
	width: 100%;
	min-height: 50px;
	padding: .7em .6em;
	font-size: .88rem;
	letter-spacing: .06em;
}
@media (max-width: 340px) {
	.obs-drawer__actions { grid-template-columns: 1fr; }
}

html.obs-drawer-open,
html.obs-drawer-open body { overflow: hidden; }

/* ---------------------------------------------------------------- sections + background patterns */
.obs-sec {
	position: relative;
	isolation: isolate;
	padding-block: var(--section-y);
}
.obs-sec::before,
.obs-sec::after {
	pointer-events: none;
}

/* Paper + barbershop wallpaper (line-art tools). */
.bg-paper { background-color: var(--cream); }
.bg-paper::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: url("../img/patterns/tools.svg");
	background-size: 300px 300px;
	opacity: .055;
}

/* Cream band + harlequin penny-tile diamonds, fading toward the middle. */
.bg-cream2 { background-color: var(--cream-2); }
.bg-cream2::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: repeating-conic-gradient(from 45deg, rgba(13, 22, 37, .055) 0 25%, transparent 0 50%);
	background-size: 44px 44px;
	-webkit-mask-image: linear-gradient(180deg, #000 0%, rgba(0, 0, 0, .25) 35%, rgba(0, 0, 0, .25) 65%, #000 100%);
	mask-image: linear-gradient(180deg, #000 0%, rgba(0, 0, 0, .25) 35%, rgba(0, 0, 0, .25) 65%, #000 100%);
}

/* Ink + pressed-tin ceiling and a warm brass glow. */
.bg-ink { background-color: var(--ink); color: var(--c-text); }
.bg-ink::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: url("../img/patterns/tin.svg");
	background-size: 96px 96px;
	opacity: .1;
	/* The tin frames the section and fades out where the text sits. */
	-webkit-mask-image: radial-gradient(ellipse 70% 65% at 50% 50%, transparent 35%, #000 100%);
	mask-image: radial-gradient(ellipse 70% 65% at 50% 50%, transparent 35%, #000 100%);
}
.bg-ink::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(60% 55% at 50% 0%, rgba(200, 160, 74, .14), transparent 70%),
		radial-gradient(40% 50% at 100% 100%, rgba(31, 79, 163, .16), transparent 70%);
}

/* Navy + suit pinstripes. */
.bg-navy { background-color: var(--navy); color: var(--c-text); }
.bg-navy::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: repeating-linear-gradient(90deg, rgba(245, 239, 228, .045) 0 1px, transparent 1px 13px);
}
.bg-navy::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(70% 80% at 0% 50%, rgba(13, 22, 37, .55), transparent 70%);
}

.obs-sec--head { padding-bottom: clamp(20px, 3vw, 40px); }
.obs-sec--flush { padding-top: 0; }

/* Home hero: photo (Elementor background control) + scrim and glow as pseudo-elements,
   so the same definition serves Elementor and the theme's own renderer. */
.obs-hero {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: clamp(600px, 88vh, 880px);
	padding-block: clamp(72px, 9vh, 120px) clamp(84px, 11vh, 140px);
	background-color: var(--ink);
	background-size: cover;
	background-position: center;
	color: var(--c-text);
}
.obs-hero > .elementor-container { width: 100%; }
.obs-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, rgba(10, 16, 28, .96) 0%, rgba(10, 16, 28, .86) 34%, rgba(10, 16, 28, .45) 62%, rgba(10, 16, 28, .2) 100%),
		linear-gradient(0deg, rgba(10, 16, 28, .85) 0%, rgba(10, 16, 28, 0) 34%);
}
.obs-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(55% 60% at 12% 40%, rgba(200, 160, 74, .16), transparent 70%),
		repeating-linear-gradient(90deg, rgba(245, 239, 228, .025) 0 1px, transparent 1px 12px);
}

/* Inner-page banners. */
.obs-banner {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: clamp(380px, 48vh, 540px);
	padding-block: clamp(72px, 9vw, 130px) clamp(64px, 8vw, 110px);
	background-color: var(--ink);
	background-size: cover;
	background-position: center;
	color: var(--c-text);
}
.obs-banner > .elementor-container { width: 100%; }
.obs-banner::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, rgba(10, 16, 28, .95) 0%, rgba(10, 16, 28, .82) 40%, rgba(10, 16, 28, .38) 75%, rgba(10, 16, 28, .22) 100%),
		linear-gradient(0deg, rgba(10, 16, 28, .7) 0%, rgba(10, 16, 28, 0) 45%);
}
.obs-banner::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 6px;
	background: var(--pole);
	background-size: 57px 57px;
	animation: obs-pole-slide 4s linear infinite;
}
.obs-banner--plain {
	min-height: 0;
	background-image: url("../img/patterns/tools-light.svg");
	background-size: 300px 300px;
}
.obs-banner--plain::before { background: linear-gradient(90deg, rgba(10, 16, 28, .97), rgba(10, 16, 28, .9)); }
.obs-banner__in { position: relative; }
.obs-banner__title:not(.elementor-element) {
	font-size: clamp(2.4rem, 1.6rem + 3.2vw, 4.4rem);
	font-weight: 700;
	line-height: .95;
	max-width: 18ch;
}
.obs-banner__lede:not(.elementor-element) { max-width: 56ch; font-size: 1.15rem; color: var(--c-text); }

/* Trust strip under the hero. */
.obs-strip {
	padding-block: 20px;
	background: var(--ink-2);
	border-bottom: 1px solid rgba(245, 239, 228, .06);
}
.obs-strip::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 6px;
	background: var(--pole);
	background-size: 57px 57px;
	animation: obs-pole-slide 4s linear infinite;
}

/* CTA band: barber red with halftone dots and pole-striped edges. */
.obs-cta {
	background: linear-gradient(160deg, #C4262F 0%, var(--red) 45%, var(--red-dk) 100%);
	text-align: center;
	--c-h: #fff;
	--c-text: #FFF3EA;
	--c-muted: #FBDCD4;
	--c-script: #FCE3B8;
	--c-eyebrow: #FCE3B8;
	--c-focus: #fff;
}
.obs-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background-image: radial-gradient(rgba(255, 255, 255, .16) 1.3px, transparent 1.8px);
	background-size: 15px 15px;
	-webkit-mask-image: radial-gradient(75% 90% at 50% 50%, transparent 30%, #000 100%);
	mask-image: radial-gradient(75% 90% at 50% 50%, transparent 30%, #000 100%);
}
.obs-cta::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		repeating-linear-gradient(-45deg, rgba(255, 255, 255, .5) 0 10px, transparent 10px 20px, rgba(31, 79, 163, .65) 20px 30px, transparent 30px 40px) left top / 22px 100% no-repeat,
		repeating-linear-gradient(-45deg, rgba(255, 255, 255, .5) 0 10px, transparent 10px 20px, rgba(31, 79, 163, .65) 20px 30px, transparent 30px 40px) right top / 22px 100% no-repeat;
	opacity: .55;
}
.obs-cta .obs-btn--red {
	background: var(--cream);
	color: var(--red-dk);
	box-shadow: 0 12px 26px -14px rgba(0, 0, 0, .6);
}
.obs-cta .obs-btn--red:hover,
.obs-cta .obs-btn--red:focus-visible { background: #fff; color: var(--red-dk); }
.obs-cta .obs-btn--ghost,
.obs-cta .obs-btn--outline { border-color: rgba(255, 255, 255, .7); color: #fff; background: rgba(0, 0, 0, .08); }
.obs-cta .obs-btn--ghost:hover,
.obs-cta .obs-btn--outline:hover { background: #fff; color: var(--red-dk); }

/* ---------------------------------------------------------------- Elementor: layout */
/* Boxed sections line up exactly with .obs-wrap (header/footer): container = --container,
   inner padding = gutter minus the column gap Elementor adds inside each column. */
.elementor-column-gap-no { --colpad: 0px; }
.elementor-column-gap-narrow { --colpad: 5px; }
.elementor-column-gap-default { --colpad: 10px; }
.elementor-column-gap-extended { --colpad: 15px; }
.elementor-column-gap-wide { --colpad: 20px; }
.elementor-column-gap-wider { --colpad: 30px; }

body .elementor-section.elementor-section-boxed > .elementor-container {
	max-width: var(--container);
	padding-inline: max(0px, calc(var(--gutter) - var(--colpad, 10px)));
}

/* Widget rhythm: one variable per widget kind instead of deeper selectors. */
body .elementor .elementor-widget:not(:last-child) {
	margin-block-end: var(--w-space, 22px);
	margin-bottom: var(--w-space, 22px);
}
.obs-eyebrow { --w-space: .9rem; }
.obs-script { --w-space: .3rem; }
.obs-crumbs-w { --w-space: 1.4rem; }
.elementor-widget-heading { --w-space: 1.1rem; }
.elementor-widget-text-editor { --w-space: 1.6rem; }
.elementor-widget-icon-list { --w-space: 1.8rem; }
.elementor-widget-button.elementor-widget__width-auto { --w-space: 12px; }
.obs-signature { --w-space: 1.4rem; }
.obs-menu-w { --w-space: 2.2rem; }

/* ---------------------------------------------------------------- Elementor: type */
body .elementor .elementor-widget-heading .elementor-heading-title {
	font-family: var(--font-display);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: .01em;
	text-transform: uppercase;
	color: var(--c-h);
}
body .elementor .elementor-widget-heading h1.elementor-heading-title {
	font-size: clamp(2.6rem, 1.6rem + 3.6vw, 4.6rem);
	font-weight: 700;
	line-height: .95;
}
body .elementor .elementor-widget-heading h2.elementor-heading-title {
	font-size: clamp(2rem, 1.35rem + 2.3vw, 3.35rem);
}
body .elementor .elementor-widget-heading h3.elementor-heading-title {
	font-size: clamp(1.25rem, 1.1rem + .5vw, 1.5rem);
	letter-spacing: .04em;
}

body .elementor .elementor-widget-text-editor {
	color: var(--c-text);
	font-family: var(--font-body);
	font-size: 1.0625rem;
	line-height: 1.7;
}
body .elementor .elementor-widget-text-editor p { margin: 0 0 1em; }
body .elementor .elementor-widget-text-editor p:last-child { margin-bottom: 0; }
body .elementor .elementor-widget-text-editor a { color: var(--c-link); }

/* Eyebrow: a decorative label (div, never a heading level) with a pole-stripe chip. */
body .elementor .obs-eyebrow .elementor-heading-title,
.obs-eyebrow:not(.elementor-element) {
	display: inline-block;
	font-family: var(--font-display);
	font-size: .82rem;
	font-weight: 500;
	letter-spacing: .24em;
	line-height: 1.3;
	text-transform: uppercase;
	color: var(--c-eyebrow);
}
body .elementor .obs-eyebrow .elementor-heading-title::before,
.obs-eyebrow:not(.elementor-element)::before {
	content: "";
	display: inline-block;
	width: 30px;
	height: 7px;
	margin-right: .75em;
	vertical-align: .2em;
	border-radius: 2px;
	background: var(--pole);
	background-size: 28px 28px;
	box-shadow: 0 0 0 1px rgba(13, 22, 37, .12);
}

/* Script flourish. */
body .elementor .obs-script .elementor-heading-title,
.obs-script:not(.elementor-element) {
	display: inline-block;
	font-family: var(--font-script);
	font-size: clamp(1.75rem, 1.25rem + 1.6vw, 2.6rem);
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1.15;
	text-transform: none;
	color: var(--c-script);
	transform: rotate(-3deg);
	transform-origin: left center;
}
body .elementor .obs-signature .elementor-heading-title { font-size: clamp(2rem, 1.5rem + 1.6vw, 2.8rem); }

/* Centering helpers (work with and without .elementor-widget-container). */
body .elementor .elementor-widget.obs-center { text-align: center; }
body .elementor .elementor-widget.obs-center > .elementor-widget-container,
body .elementor .elementor-widget-text-editor.obs-center > :not(.elementor-widget-container):not(.elementor-element-overlay) {
	margin-inline: auto;
}
body .elementor .obs-script.obs-center .elementor-heading-title { transform-origin: center; }

/* Lede: measure on the content, never the widget wrapper (it sits in a flex row). */
body .elementor .elementor-widget.obs-lede { max-width: none; width: 100%; }
body .elementor .obs-lede > .elementor-widget-container,
body .elementor .elementor-widget-text-editor.obs-lede > :not(.elementor-widget-container):not(.elementor-element-overlay) {
	max-width: 58ch;
}
body .elementor .elementor-widget-text-editor.obs-lede { font-size: clamp(1.1rem, 1rem + .35vw, 1.25rem); color: var(--c-text); }

body .elementor .obs-prose > .elementor-widget-container,
body .elementor .elementor-widget-text-editor.obs-prose > :not(.elementor-widget-container):not(.elementor-element-overlay) {
	max-width: min(68ch, 100%);
}

/* Hero copy. */
body .elementor .obs-hero__title h1.elementor-heading-title {
	font-size: clamp(2.75rem, 1.5rem + 4.9vw, 5.85rem);
	line-height: .92;
	letter-spacing: .005em;
	text-shadow: 0 2px 30px rgba(0, 0, 0, .35);
}
body .elementor .obs-hero__script .elementor-heading-title { font-size: clamp(1.9rem, 1.3rem + 1.9vw, 3rem); }
body .elementor .elementor-widget-text-editor.obs-hero__lede { color: #EDE6D8; text-shadow: 0 1px 16px rgba(0, 0, 0, .4); }
.obs-hero__lede { --w-space: 2rem; }

/* Banner title. */
body .elementor .obs-banner__title h1.elementor-heading-title { text-shadow: 0 2px 26px rgba(0, 0, 0, .35); }
/* ch must be measured at the heading's own size, so the measure goes on the title element. */
body .elementor .obs-banner__title .elementor-heading-title { max-width: 20ch; }

/* ---------------------------------------------------------------- Elementor: media */
body .elementor .obs-photo img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--radius);
	box-shadow: var(--shadow-2);
}
body .elementor .obs-photo--square img { aspect-ratio: 1 / 1; }
body .elementor .obs-photo--frame img {
	border: 10px solid var(--paper);
	border-radius: 6px;
}
body .elementor .elementor-widget.obs-photo--frame { padding: 0 6px 6px 0; }
body .elementor .elementor-widget.obs-photo--frame::after {
	content: "";
	position: absolute;
	top: -12px;
	left: 26px;
	width: 108px;
	height: 26px;
	background: var(--pole);
	background-size: 57px 57px;
	border-radius: 3px;
	box-shadow: 0 6px 14px -6px rgba(13, 22, 37, .45);
	transform: rotate(-4deg);
	opacity: .95;
	pointer-events: none;
}
@media (min-width: 768px) {
	body .elementor .obs-photo--tilt img { transform: rotate(-1.6deg); }
}
body .elementor .obs-owner__media .elementor-widget-wrap::after {
	content: "";
	position: absolute;
	right: -10px;
	bottom: -26px;
	width: 132px;
	height: 190px;
	background: url("../img/props/razor.webp") center / contain no-repeat;
	filter: drop-shadow(0 16px 18px rgba(13, 22, 37, .35));
	transform: rotate(14deg);
	pointer-events: none;
}

/* ---------------------------------------------------------------- Elementor: lists */
body .elementor .elementor-widget-icon-list .elementor-icon-list-items {
	list-style: none;
	margin: 0;
	padding: 0;
}
body .elementor .obs-checks .elementor-icon-list-item {
	display: flex;
	align-items: center;
	gap: .8em;
	padding: .38em 0;
	font-size: 1.03rem;
	color: var(--c-text);
}
body .elementor .obs-checks .elementor-icon-list-icon {
	display: inline-grid;
	place-items: center;
	width: 30px;
	height: 30px;
	flex: none;
	border-radius: 50%;
	background: var(--c-icon-bg);
	color: var(--c-icon);
	--e-icon-list-icon-size: 14px;
}
body .elementor .obs-checks .elementor-icon-list-icon i,
body .elementor .obs-checks .elementor-icon-list-icon svg {
	width: 14px;
	height: 14px;
	font-size: 14px;
	color: var(--c-icon);
	fill: var(--c-icon);
}
body .elementor .obs-checks .elementor-icon-list-text {
	color: var(--c-text);
	font-weight: 600;
	padding: 0;
}

/* Trust strip (inline icon list). */
body .elementor .obs-trust .elementor-icon-list-items {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 0;
}
body .elementor .obs-trust .elementor-icon-list-item {
	display: inline-flex;
	align-items: center;
	gap: .65em;
	margin: 0;
	padding: .2em 1.6em;
	position: relative;
}
/* Elementor's inline lists add 8px side margins per item at (0,4,0); reset at (0,5,1), which
   still loses to the shop's own "space between" control (0,6,0). */
body .elementor .obs-trust .elementor-icon-list-items.elementor-inline-items { margin-inline: 0; }
body .elementor .obs-trust .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item { margin-inline: 0; }
body .elementor .obs-trust .elementor-icon-list-item:not(:last-child)::after {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--red);
	box-shadow: 0 0 0 3px rgba(184, 35, 43, .25);
	transform: translate(50%, -50%);
	border: 0;
}
body .elementor .obs-trust .elementor-icon-list-icon i,
body .elementor .obs-trust .elementor-icon-list-icon svg {
	width: 18px;
	height: 18px;
	font-size: 18px;
	color: var(--brass);
	fill: var(--brass);
}
body .elementor .obs-trust .elementor-icon-list-text {
	font-family: var(--font-display);
	font-size: .92rem;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--cream);
	padding: 0;
}

/* ---------------------------------------------------------------- Elementor: feature cards (image box) */
.obs-feature-col > .elementor-widget-wrap { align-content: stretch; }
body .elementor .elementor-widget.obs-feature { height: 100%; }
body .elementor .obs-feature > .elementor-widget-container { height: 100%; }
body .elementor .obs-feature .elementor-image-box-wrapper {
	height: 100%;
	padding: clamp(26px, 2.6vw, 36px) clamp(22px, 2.2vw, 30px);
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	box-shadow: var(--shadow-1);
	text-align: center;
	position: relative;
	overflow: hidden;
	transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
body .elementor .obs-feature .elementor-image-box-wrapper::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 5px;
	background: var(--pole);
	background-size: 57px 57px;
	opacity: .9;
}
body .elementor .obs-feature .elementor-image-box-img {
	display: inline-grid;
	place-items: center;
	width: 96px;
	height: 96px;
	margin: 6px auto 18px;
	border-radius: 50%;
	background: var(--cream);
	box-shadow: inset 0 0 0 1px var(--line), 0 0 0 6px rgba(235, 226, 208, .6);
}
body .elementor .obs-feature .elementor-image-box-img img {
	width: 58px;
	height: 58px;
	border-radius: 0;
	box-shadow: none;
}
body .elementor .obs-feature .elementor-image-box-title {
	margin: 0 0 .5em;
	font-family: var(--font-display);
	font-size: 1.32rem;
	font-weight: 600;
	letter-spacing: .05em;
	line-height: 1.15;
	text-transform: uppercase;
	color: var(--c-h);
}
body .elementor .obs-feature .elementor-image-box-description {
	margin: 0;
	color: var(--c-muted);
	font-size: 1rem;
	line-height: 1.6;
}

/* ---------------------------------------------------------------- Elementor: FAQ toggle */
body .elementor .obs-faq .elementor-toggle { max-width: 860px; margin-inline: auto; }
body .elementor .obs-faq .elementor-toggle-item {
	margin: 0 0 12px;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 12px;
	box-shadow: var(--shadow-1);
	overflow: hidden;
}
body .elementor .obs-faq .elementor-tab-title {
	position: relative;
	display: flex;
	align-items: center;
	margin: 0;
	padding: 1.15em 3.6em 1.15em 1.4em;
	border: 0;
	cursor: pointer;
	list-style: none;
	font-family: var(--font-display);
	font-size: 1.12rem;
	font-weight: 500;
	letter-spacing: .05em;
	line-height: 1.3;
	text-transform: uppercase;
	color: var(--ink);
}
body .elementor .obs-faq summary.elementor-tab-title::-webkit-details-marker { display: none; }
body .elementor .obs-faq .elementor-toggle-title {
	margin: 0;
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	color: inherit;
	text-decoration: none;
}
body .elementor .obs-faq .elementor-toggle-icon { display: none; }
body .elementor .obs-faq .elementor-tab-title::after {
	content: "";
	position: absolute;
	right: 1.3em;
	top: 50%;
	width: 26px;
	height: 26px;
	margin-top: -13px;
	border-radius: 50%;
	background:
		linear-gradient(var(--red), var(--red)) center / 12px 2px no-repeat,
		linear-gradient(var(--red), var(--red)) center / 2px 12px no-repeat,
		rgba(184, 35, 43, .1);
	transition: transform .25s var(--ease);
}
body .elementor .obs-faq .elementor-tab-title.elementor-active::after,
body .elementor .obs-faq details[open] > .elementor-tab-title::after { transform: rotate(45deg); }
body .elementor .obs-faq .elementor-tab-content {
	padding: 0 1.4em 1.3em;
	border: 0;
	color: var(--muted);
	line-height: 1.7;
}
body .elementor .obs-faq .elementor-tab-content p:last-child { margin-bottom: 0; }

/* ---------------------------------------------------------------- Elementor: column card */
body .elementor .obs-col-card > .elementor-widget-wrap,
body .elementor .obs-col-card > .elementor-widget-wrap.elementor-element-populated {
	width: calc(100% - 2 * var(--colpad, 15px));
	margin: var(--colpad, 15px);
	padding: clamp(24px, 3.4vw, 44px);
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 18px;
	box-shadow: var(--shadow-2);
	color: var(--text);
	position: relative;
	overflow: hidden;
}
body .elementor .obs-col-card > .elementor-widget-wrap::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 6px;
	background: var(--pole);
	background-size: 57px 57px;
}
body .elementor .obs-card-title .elementor-heading-title {
	font-size: 1.3rem;
	letter-spacing: .08em;
	padding-bottom: .55em;
	border-bottom: 2px solid var(--ink);
}
.obs-card-title { --w-space: 1rem; }
body .elementor .obs-col-card .elementor-widget-shortcode + .elementor-widget-heading { margin-top: .6rem; }
body .elementor .obs-col-card .obs-status { margin-bottom: .6rem; }

/* ---------------------------------------------------------------- hero ticket */
.obs-ticket {
	position: relative;
	max-width: 420px;
	margin-left: auto;
	padding: 26px 28px 24px;
	background: var(--paper);
	color: var(--text);
	border-radius: 16px;
	transform: rotate(1.4deg);
	transition: transform .4s var(--ease);
	-webkit-mask: radial-gradient(circle 12px at 0 62%, transparent 98%, #000) left / 51% 100% no-repeat, radial-gradient(circle 12px at 100% 62%, transparent 98%, #000) right / 51% 100% no-repeat;
	mask: radial-gradient(circle 12px at 0 62%, transparent 98%, #000) left / 51% 100% no-repeat, radial-gradient(circle 12px at 100% 62%, transparent 98%, #000) right / 51% 100% no-repeat;
}
@media (hover: hover) {
	.obs-ticket:hover { transform: rotate(0deg) translateY(-4px); }
}
/* The notch mask clips box-shadow, so the shadow lives on the wrapper as a drop-shadow. */
body .elementor .obs-hero__card { filter: drop-shadow(0 34px 34px rgba(0, 0, 0, .5)); }
body .elementor-section.obs-hero > .elementor-container { align-items: center; }
.obs-ticket::before {
	content: "";
	position: absolute;
	inset: 8px;
	border: 1px solid rgba(200, 160, 74, .45);
	border-radius: 11px;
	pointer-events: none;
}
.obs-ticket__head {
	display: flex;
	align-items: center;
	gap: 16px;
	padding-bottom: 14px;
	margin-bottom: 6px;
	border-bottom: 2px solid var(--ink);
}
.obs-ticket__pole {
	position: relative;
	width: 18px;
	height: 58px;
	flex: none;
	border-radius: 9px;
	background: repeating-linear-gradient(-30deg, var(--red) 0 7px, #fff 7px 14px, var(--blue) 14px 21px, #fff 21px 28px);
	background-size: 18px 56px;
	box-shadow: inset -4px 0 6px rgba(0, 0, 0, .22), inset 3px 0 4px rgba(255, 255, 255, .5), 0 0 0 2px #C9CED6, 0 0 0 3px #8D95A1;
	animation: obs-pole-rise 2.6s linear infinite;
}
.obs-ticket__kicker {
	font-family: var(--font-display);
	font-size: 1.45rem;
	font-weight: 600;
	letter-spacing: .08em;
	line-height: 1.1;
	text-transform: uppercase;
	color: var(--ink);
	margin-bottom: .3em;
}
.obs-ticket .obs-hgroups { margin: 4px 0 0; }
.obs-ticket .obs-hgroups li { border-bottom-style: dashed; }
.obs-ticket__note { margin: .6em 0 0; font-size: .92rem; font-style: italic; color: var(--muted); }
.obs-ticket__walkin {
	display: flex;
	align-items: center;
	gap: .6em;
	margin-top: 14px;
	padding: .7em .9em;
	border-radius: 10px;
	background: var(--cream-2);
	font-weight: 600;
	color: var(--ink);
	font-size: .97rem;
}
.obs-ticket__walkin .obs-ico { color: var(--red); width: 1.25em; height: 1.25em; }
.obs-ticket__phone {
	display: flex;
	align-items: center;
	gap: .8em;
	margin-top: 14px;
	color: var(--ink);
	text-decoration: none;
	font-family: var(--font-display);
	font-size: 1.55rem;
	font-weight: 600;
	letter-spacing: .04em;
	line-height: 1.05;
}
.obs-ticket__phone small {
	display: block;
	font-family: var(--font-body);
	font-size: .8rem;
	font-weight: 600;
	letter-spacing: .02em;
	color: var(--muted);
	text-transform: none;
}
.obs-ticket__phone .obs-ico {
	width: 44px;
	height: 44px;
	padding: 11px;
	border-radius: 50%;
	background: var(--red);
	color: #fff;
}
.obs-ticket__phone:hover { color: var(--red); }

/* ---------------------------------------------------------------- price menu */
.obs-menu__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0 clamp(32px, 5vw, 72px);
}
.obs-menu--cols-2 .obs-menu__list { grid-template-columns: 1fr 1fr; }
.obs-menu__item { padding: .95em 0; border-bottom: 1px solid var(--c-rule); }
.obs-menu__row {
	display: flex;
	align-items: baseline;
	gap: .7em;
}
.obs-menu__name {
	font-family: var(--font-display);
	font-size: clamp(1.08rem, 1rem + .3vw, 1.26rem);
	font-weight: 500;
	letter-spacing: .06em;
	line-height: 1.25;
	text-transform: uppercase;
	color: var(--c-h);
}
.obs-menu__dots {
	flex: 1;
	min-width: 1.5em;
	border-bottom: 2px dotted var(--c-rule);
	transform: translateY(-.3em);
	opacity: .9;
}
.obs-menu__price {
	font-family: var(--font-display);
	font-size: clamp(1.25rem, 1.1rem + .5vw, 1.55rem);
	font-weight: 600;
	letter-spacing: .03em;
	color: var(--red);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.on-dark .obs-menu__price { color: var(--brass-lt); }
.on-dark .obs-menu__dots { border-bottom-color: rgba(200, 160, 74, .45); }
.obs-menu__note { margin: .3em 0 0; font-size: .95rem; color: var(--c-muted); }
.obs-menu__footnote { margin: 1.5em 0 0; font-size: .95rem; font-style: italic; color: var(--c-muted); text-align: center; }

/* Menu board frame on dark (home). */
.on-dark .obs-menu {
	position: relative;
	max-width: 1040px;
	margin-inline: auto;
	padding: clamp(22px, 4vw, 52px) clamp(20px, 4vw, 60px);
	border: 1px solid rgba(200, 160, 74, .38);
	border-radius: 20px;
	background: linear-gradient(180deg, #131F34 0%, #0F192B 100%); /* solid: no texture behind prices */
	box-shadow: inset 0 0 0 7px rgba(13, 22, 37, .55), inset 0 0 0 8px rgba(200, 160, 74, .2), 0 30px 60px -40px rgba(0, 0, 0, .9);
}
.on-dark .obs-menu__footnote { text-align: center; }
/* Board on light (pricing page). */
.obs-menu-w--board .obs-menu__item:first-child { border-top: 2px solid var(--ink); }
.obs-menu-w--board .obs-menu__footnote { text-align: left; }

/* ---------------------------------------------------------------- reviews (masonry) */
.obs-reviews {
	column-count: 3;
	column-gap: 24px;
}
.obs-review {
	break-inside: avoid;
	margin: 0 0 24px;
	padding: 26px 26px 22px;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	box-shadow: var(--shadow-1);
	color: var(--text);
	display: block;
	-webkit-column-break-inside: avoid;
	page-break-inside: avoid;
}
.obs-review__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1em;
	margin-bottom: .8em;
}
.obs-review__q { width: 34px; height: 34px; color: var(--red); }
.obs-review__src {
	display: inline-flex;
	align-items: center;
	gap: .45em;
	font-family: var(--font-display);
	font-size: .74rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--muted);
}
.obs-review__src .obs-ico { width: 16px; height: 16px; color: var(--blue); }
.obs-review__text { margin: 0; font-size: 1.04rem; line-height: 1.65; color: var(--text); }
.obs-review__text p { margin: 0 0 .8em; }
.obs-review__text p:last-child { margin-bottom: 0; }
.obs-review__more { display: inline-block; margin-top: .6em; font-size: .92rem; font-weight: 600; }
.obs-review__by {
	display: flex;
	align-items: center;
	gap: .8em;
	margin-top: 1.1em;
	padding-top: 1em;
	border-top: 1px dashed var(--line);
}
.obs-review__avatar {
	display: inline-grid;
	place-items: center;
	width: 42px;
	height: 42px;
	flex: none;
	border-radius: 50%;
	background: var(--ink);
	color: var(--brass-lt);
	font-family: var(--font-display);
	font-size: 1.15rem;
	font-weight: 600;
	box-shadow: 0 0 0 3px var(--paper), 0 0 0 4px var(--line);
}
.obs-review__who { display: grid; line-height: 1.25; }
.obs-review__name {
	font-family: var(--font-display);
	font-size: 1.02rem;
	font-weight: 500;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--ink);
}
.obs-review__meta { font-size: .88rem; color: var(--muted); }
.obs-review__reply {
	margin-top: 1em;
	padding: .8em 1em;
	border-left: 3px solid var(--red);
	border-radius: 0 10px 10px 0;
	background: var(--cream-2);
	font-size: .95rem;
}
.obs-review__reply p { margin: .2em 0 0; color: var(--text); }
.obs-review__reply-label {
	font-family: var(--font-display);
	font-size: .74rem;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--red-dk);
}
.obs-reviews-sec .obs-btns { margin-top: 14px; }
.obs-review-actions-top { --w-space: 2.4rem; }

/* ---------------------------------------------------------------- Google rating badge */
.obs-rating-wrap { display: flex; }
.obs-center-badge .obs-rating-wrap { justify-content: center; }
.obs-center-badge { --w-space: 2.2rem; }
.obs-hero__rating { --w-space: 0; margin-top: 18px; }
body .elementor .obs-hero__rating { margin-top: 18px; }
.obs-rating {
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	gap: .35em .7em;
	padding: .55em 1em .55em .8em;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: var(--paper);
	box-shadow: var(--shadow-1);
	color: var(--ink);
	text-decoration: none;
	line-height: 1.2;
	transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
a.obs-rating:hover { transform: translateY(-2px); box-shadow: var(--shadow-2); color: var(--ink); }
.obs-rating__num {
	font-family: var(--font-display);
	font-size: 1.35rem;
	font-weight: 600;
	letter-spacing: .02em;
}
.obs-rating__stars {
	position: relative;
	display: inline-block;
	font-size: 1.05rem;
	letter-spacing: .08em;
	line-height: 1;
}
.obs-rating__stars::before {
	content: "★★★★★";
	background: linear-gradient(90deg, var(--brass) var(--pct, 100%), rgba(13, 22, 37, .18) var(--pct, 100%));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.obs-rating__txt {
	display: inline-flex;
	align-items: center;
	gap: .4em;
	font-size: .92rem;
	font-weight: 600;
	color: var(--muted);
}
.obs-rating__txt .obs-ico { width: 15px; height: 15px; color: var(--blue); }
.obs-rating__count::before { content: "·"; margin: 0 .45em 0 .1em; }
/* On the hero (dark photo) the badge goes glassy. */
.on-dark .obs-rating {
	background: rgba(13, 22, 37, .55);
	border-color: rgba(245, 239, 228, .22);
	color: var(--cream);
	backdrop-filter: blur(6px);
	box-shadow: none;
}
.on-dark a.obs-rating:hover { color: var(--cream); background: rgba(13, 22, 37, .75); }
.on-dark .obs-rating__txt { color: #E3DCCD; }
.on-dark .obs-rating__txt .obs-ico { color: #fff; }
.on-dark .obs-rating__stars::before { background: linear-gradient(90deg, var(--brass-lt) var(--pct, 100%), rgba(245, 239, 228, .25) var(--pct, 100%)); -webkit-background-clip: text; background-clip: text; }

/* ---------------------------------------------------------------- info cards (Visit page) */
.obs-info {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	align-items: start;
}
.obs-info__card {
	position: relative;
	padding: 30px 28px 28px;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 18px;
	box-shadow: var(--shadow-2);
	color: var(--text);
}
.obs-info__ico {
	display: inline-grid;
	place-items: center;
	width: 56px;
	height: 56px;
	margin-bottom: 16px;
	border-radius: 50%;
	background: var(--red);
	color: #fff;
	box-shadow: 0 0 0 6px rgba(184, 35, 43, .12);
}
.obs-info__ico .obs-ico { width: 26px; height: 26px; }
.obs-info__title {
	margin: 0 0 .7em;
	font-size: 1.45rem;
	letter-spacing: .06em;
	color: var(--ink);
}
.obs-info__card .obs-address { margin-bottom: 1.2em; font-size: 1.08rem; line-height: 1.6; }
.obs-info__card .obs-status { margin-bottom: .6em; }
.obs-info__big { margin: 0 0 .4em; }
.obs-info__big a {
	font-family: var(--font-display);
	font-size: clamp(1.6rem, 1.3rem + 1vw, 2.1rem);
	font-weight: 600;
	letter-spacing: .03em;
	color: var(--ink);
	text-decoration: none;
}
.obs-info__big a:hover { color: var(--red); }
.obs-info__walkin { color: var(--muted); }
.obs-social--card { margin-top: 1em; }
@media (min-width: 1025px) {
	.obs-info-sec .obs-info { margin-top: calc(-1 * var(--section-y) - 64px); }
	.obs-info-sec { padding-top: var(--section-y); }
}

/* ---------------------------------------------------------------- map + visit block */
.obs-map {
	position: relative;
	border-radius: 18px;
	overflow: hidden;
	/* Street-grid placeholder with a pin: shows while the map loads or if a blocker strips it. */
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23B8232B'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.6A2.6 2.6 0 1 1 12 6.4a2.6 2.6 0 0 1 0 5.2z'/%3E%3C/svg%3E") center 42% / 46px 46px no-repeat,
		linear-gradient(90deg, rgba(13, 22, 37, .07) 2px, transparent 2px) 0 0 / 64px 64px,
		linear-gradient(0deg, rgba(13, 22, 37, .07) 2px, transparent 2px) 0 0 / 64px 64px,
		linear-gradient(35deg, transparent 48%, rgba(255, 255, 255, .7) 48%, rgba(255, 255, 255, .7) 52%, transparent 52%) 0 0 / 100% 100%,
		var(--cream-2);
	box-shadow: var(--shadow-2);
	border: 8px solid var(--paper);
}
.on-dark .obs-map { border-color: rgba(245, 239, 228, .1); }
.obs-map iframe {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	min-height: 320px;
	border: 0;
	filter: saturate(.85) contrast(1.04);
}
.obs-map__link {
	position: absolute;
	right: 12px;
	bottom: 12px;
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: .6em .95em;
	border-radius: 999px;
	background: var(--ink);
	color: var(--cream);
	font-family: var(--font-display);
	font-size: .8rem;
	letter-spacing: .1em;
	text-transform: uppercase;
	text-decoration: none;
	box-shadow: var(--shadow-1);
}
.obs-map__link:hover { background: var(--red); color: #fff; }
.obs-map-col .elementor-widget-wrap { align-content: center; }

.obs-visit { display: grid; gap: 22px; }
.obs-visit__row {
	display: grid;
	grid-template-columns: 52px 1fr;
	gap: 16px;
	align-items: start;
}
.obs-visit__ico {
	display: inline-grid;
	place-items: center;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	border: 1px solid rgba(200, 160, 74, .45);
	color: var(--brass-lt);
	background: rgba(200, 160, 74, .08);
}
.obs-visit__ico .obs-ico { width: 22px; height: 22px; }
.obs-visit__label {
	margin-bottom: .35em;
	font-family: var(--font-display);
	font-size: .8rem;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--c-eyebrow);
}
.obs-visit .obs-address { font-size: 1.12rem; color: var(--c-h); line-height: 1.5; }
.obs-visit .obs-status { margin-bottom: .5em; }
.obs-visit .obs-hgroups { max-width: 380px; }
.obs-visit__phone {
	font-family: var(--font-display);
	font-size: 1.7rem;
	font-weight: 600;
	letter-spacing: .03em;
	color: var(--c-h);
	text-decoration: none;
}
.obs-visit__phone:hover { color: var(--brass-lt); }
.obs-visit .obs-btns { margin-top: 6px; }

/* ---------------------------------------------------------------- social, crumbs, form */
.obs-social {
	display: flex;
	gap: 10px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.obs-social a {
	display: inline-grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: 1px solid var(--c-rule);
	color: var(--c-h);
	transition: background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
}
.obs-social a .obs-ico { width: 20px; height: 20px; }
.obs-social a:hover { background: var(--red); border-color: var(--red); color: #fff; }

.obs-crumbs ol {
	display: flex;
	flex-wrap: wrap;
	gap: .4em;
	list-style: none;
	margin: 0;
	padding: 0;
	font-family: var(--font-display);
	font-size: .8rem;
	letter-spacing: .16em;
	text-transform: uppercase;
}
.obs-crumbs li { display: inline-flex; align-items: center; gap: .4em; color: var(--c-muted); }
.obs-crumbs li + li::before { content: "/"; opacity: .55; }
.obs-crumbs a { color: var(--c-text); text-decoration: none; }
.obs-crumbs a:hover { color: var(--brass-lt); text-decoration: underline; }
.obs-banner .obs-crumbs { margin-bottom: 1.4rem; }

.plugmatrix-form-embed { width: 100%; margin: 0; }
.obs-form-fallback__lead { font-size: 1.05rem; color: var(--text); }
.obs-editor-note {
	margin: 0 0 1em;
	padding: .8em 1em;
	border: 1px dashed var(--blue);
	border-radius: 10px;
	background: rgba(31, 79, 163, .06);
	color: var(--ink);
	font-size: .92rem;
}

/* ---------------------------------------------------------------- footer */
.obs-footer {
	position: relative;
	isolation: isolate;
	margin-top: 0;
	padding-top: clamp(64px, 7vw, 100px);
	background: var(--ink);
	color: var(--c-text);
}
.obs-footer::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(50% 60% at 50% 0%, rgba(200, 160, 74, .1), transparent 70%);
}
.obs-footer__pole {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	height: 8px;
	background: var(--pole);
	background-size: 57px 57px;
	animation: obs-pole-slide 4s linear infinite;
}
.obs-footer__main {
	display: grid;
	grid-template-columns: 1.35fr 1fr 1fr .85fr;
	gap: clamp(32px, 4vw, 64px);
	padding-bottom: clamp(48px, 6vw, 80px);
}
.obs-footer__tag {
	margin: .55em 0 0;
	font-family: var(--font-script);
	font-size: 1.45rem;
	line-height: 1.1;
	color: var(--brass-lt);
	transform: rotate(-2deg);
	transform-origin: left center;
}
.obs-footer__blurb { margin: .9em 0 1.3em; max-width: 36ch; color: var(--on-dark-muted); }
.obs-footer__title {
	margin-bottom: 1.1em;
	font-family: var(--font-display);
	font-size: .86rem;
	font-weight: 500;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--brass-lt);
}
.obs-footer .obs-status { margin-bottom: .8em; }
.obs-footer .obs-hgroups li { padding: .42em 0; }
.obs-footer__walkin { margin: .9em 0 0; color: var(--on-dark-muted); font-size: .95rem; }
.obs-footer__address { margin-bottom: 1em; color: var(--cream); font-size: 1.05rem; line-height: 1.6; }
.obs-footer__links,
.obs-footer__menu {
	list-style: none;
	margin: 0;
	padding: 0;
}
.obs-footer__links li,
.obs-footer__menu li { margin: 0 0 .55em; }
.obs-footer__links a,
.obs-footer__menu a {
	display: inline-flex;
	align-items: center;
	gap: .6em;
	color: var(--cream);
	text-decoration: none;
}
.obs-footer__links .obs-ico { color: var(--brass); width: 1.1em; height: 1.1em; }
.obs-footer__links a:hover,
.obs-footer__menu a:hover { color: var(--brass-lt); text-decoration: underline; }
.obs-footer__bottom { border-top: 1px solid rgba(245, 239, 228, .1); }
.obs-footer__bottom-in {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: .6em 2em;
	padding-block: 1.4em;
	font-size: .9rem;
	color: var(--on-dark-muted);
}
.obs-footer__bottom p { margin: 0; }
.obs-footer__legal { display: flex; flex-wrap: wrap; gap: .4em; align-items: center; }
.obs-footer__legal a { color: var(--on-dark-muted); }
.obs-footer__legal a:hover { color: #fff; }
.obs-footer__legal a.ssq-credit { margin-left: .3em; text-decoration: none; }
.obs-footer__legal a.ssq-credit:hover { color: #fff; text-decoration: underline; }

/* ---------------------------------------------------------------- mobile call bar */
.obs-mcta { display: none; }

/* ---------------------------------------------------------------- plain templates */
.obs-prose-sec { padding-top: clamp(48px, 6vw, 80px); }
.obs-prose:not(.elementor-element) {
	max-width: min(72ch, 100%);
	margin-inline: auto;
	font-size: 1.08rem;
}
.obs-prose h2 { font-size: clamp(1.7rem, 1.4rem + 1vw, 2.2rem); margin-top: 1.6em; }
.obs-prose h3 { font-size: 1.35rem; margin-top: 1.4em; }
.obs-prose img { border-radius: var(--radius); }
.obs-prose__media { margin: 0 0 2em; }
.obs-prose blockquote {
	margin: 1.6em 0;
	padding: .2em 0 .2em 1.2em;
	border-left: 4px solid var(--red);
	font-size: 1.15rem;
	color: var(--ink);
}

.obs-posts { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 28px; }
.obs-post-card {
	overflow: hidden;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	box-shadow: var(--shadow-1);
}
.obs-post-card__media img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.obs-post-card__body { padding: 22px 24px 26px; }
.obs-post-card__date { margin: 0 0 .4em; color: var(--muted); font-size: .9rem; }
.obs-post-card__title { font-size: 1.4rem; margin-bottom: .4em; }
.obs-post-card__title a { color: var(--ink); text-decoration: none; }
.obs-post-card__title a:hover { color: var(--red); }

.obs-search-results { list-style: none; margin: 2em 0; padding: 0; }
.obs-search-results li { padding: 1em 0; border-bottom: 1px solid var(--line); }
.obs-search-results a { font-family: var(--font-display); font-size: 1.3rem; text-transform: uppercase; text-decoration: none; }

.obs-404 { min-height: 70vh; display: grid; place-items: center; text-align: center; }
.obs-404__in { max-width: 760px; }
.obs-404__code {
	font-family: var(--font-display);
	font-size: clamp(7rem, 4rem + 14vw, 15rem);
	font-weight: 700;
	line-height: .85;
	background: var(--pole);
	background-size: 80px 80px;
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	-webkit-text-stroke: 2px rgba(245, 239, 228, .6);
	animation: obs-pole-slide 5s linear infinite;
}
.obs-404__script { display: block; margin: .4em auto .2em; transform: rotate(-3deg); }
.obs-404__title { font-size: clamp(2rem, 1.4rem + 2vw, 3rem); }
.obs-404__text { color: var(--on-dark-muted); margin-bottom: 1.6em; }

.nav-links,
.page-numbers { font-family: var(--font-display); }
.nav-links { display: flex; gap: .5em; justify-content: center; margin-top: 2.4em; }
.page-numbers { display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 .8em; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink); text-decoration: none; }
.page-numbers.current { background: var(--ink); color: var(--cream); border-color: var(--ink); }

/* ---------------------------------------------------------------- scroll reveal (fails open) */
/* .reveal is added by main.js itself, so without JS nothing is ever hidden. */
.reveal { opacity: 1; transform: none; }
html.js .reveal {
	opacity: 0;
	transform: translateY(26px);
	transition: opacity .7s var(--ease), transform .7s var(--ease);
}
html.js .reveal.in { opacity: 1; transform: none; }
body.elementor-editor-active .reveal,
body.elementor-editor-active .reveal.in { opacity: 1 !important; transform: none !important; }

/* ---------------------------------------------------------------- hover-only effects */
@media (hover: hover) {
	body .elementor .obs-feature .elementor-image-box-wrapper:hover { transform: translateY(-6px); box-shadow: var(--shadow-2); }
	.obs-info__card { transition: transform .3s var(--ease); }
	.obs-info__card:hover { transform: translateY(-4px); }
}

/* ---------------------------------------------------------------- responsive: tablet (Elementor's 1024) */
@media (max-width: 1100px) {
	.obs-nav { display: none; }
	.obs-burger { display: inline-flex; }
	.obs-header__cta { margin-left: auto; }
}

@media (max-width: 1024px) {
	.obs-topbar__hours { display: none; }
	.obs-hero { min-height: 0; }
	/* Copy spans the full width once the columns stack, so the scrim must cover all of it. */
	.obs-hero::before {
		background: linear-gradient(180deg, rgba(10, 16, 28, .74) 0%, rgba(10, 16, 28, .88) 50%, rgba(10, 16, 28, .97) 100%);
	}
	.obs-ticket { margin: 28px 0 0; transform: none; max-width: 520px; }
	.obs-reviews { column-count: 2; }
	.obs-info { grid-template-columns: 1fr 1fr; }
	.obs-info__card--hours { grid-row: span 2; }
	.obs-footer__main { grid-template-columns: 1fr 1fr; }
	body .elementor .obs-owner__media .elementor-widget-wrap::after { width: 96px; height: 140px; right: 6px; }
	body .elementor .obs-photo--tilt img { transform: none; }
}

/* ---------------------------------------------------------------- responsive: phones (Elementor's 767) */
@media (max-width: 767px) {
	body { font-size: 1rem; }
	.obs-topbar__walkin { display: none; }
	.obs-topbar__in { min-height: 38px; justify-content: center; font-size: .84rem; }
	.obs-header__in { min-height: 72px; }
	.obs-header.is-scrolled .obs-header__in { min-height: 64px; }
	.obs-brand { font-size: 13.5px; }
	.obs-header__call span { display: none; }
	.obs-header__call { width: 44px; min-height: 44px; padding: 0; }
	.obs-header__call .obs-ico { width: 20px; height: 20px; }
	.obs-burger { padding: 0 .8em; }

	.obs-hero { padding-block: 52px 64px; }
	.obs-banner { min-height: 0; padding-block: 56px 52px; }
	.obs-banner::before { background: linear-gradient(180deg, rgba(10, 16, 28, .78), rgba(10, 16, 28, .9)); }

	body .elementor .obs-trust .elementor-icon-list-items {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 14px 12px;
		justify-items: start;
	}
	body .elementor .obs-trust .elementor-icon-list-item { padding: 0; align-items: flex-start; }
	body .elementor .obs-trust .elementor-icon-list-item::after { display: none; }
	body .elementor .obs-trust .elementor-icon-list-text { font-size: .8rem; letter-spacing: .08em; line-height: 1.35; }

	body .elementor .elementor-widget-button.elementor-widget__width-auto { margin-inline-end: 8px; }

	body .elementor .obs-feature .elementor-image-box-wrapper {
		display: grid;
		grid-template-columns: 64px 1fr;
		gap: 0 16px;
		align-items: start;
		padding: 22px 20px 20px;
		text-align: left;
	}
	body .elementor .obs-feature .elementor-image-box-img {
		width: 64px;
		height: 64px;
		margin: 2px 0 0;
		box-shadow: inset 0 0 0 1px var(--line), 0 0 0 4px rgba(235, 226, 208, .6);
	}
	body .elementor .obs-feature .elementor-image-box-img img { width: 38px; height: 38px; }
	body .elementor .obs-feature .elementor-image-box-title { font-size: 1.15rem; margin-bottom: .3em; }
	body .elementor .obs-feature .elementor-image-box-description { font-size: .97rem; }
	.obs-menu--cols-2 .obs-menu__list { grid-template-columns: 1fr; }
	.obs-reviews { column-count: 1; }
	.obs-info { grid-template-columns: 1fr; }
	.obs-info__card--hours { grid-row: auto; }
	/* Compact footer: centred brand, hours card, address card with side-by-side buttons,
	   one wrapped row of page links, short bottom bar. */
	.obs-footer { padding-top: 40px; }
	.obs-footer__main {
		grid-template-columns: 1fr;
		gap: 16px;
		padding-bottom: 22px;
		text-align: center;
	}
	.obs-footer__brand {
		display: flex;
		flex-direction: column;
		align-items: center;
		margin-bottom: 4px;
	}
	.obs-footer__tag { font-size: 1.35rem; transform-origin: center; }
	.obs-footer__blurb { display: none; }
	.obs-social--footer { justify-content: center; margin-top: 14px; }
	.obs-social--footer a { width: 40px; height: 40px; }
	.obs-footer__title { display: none; }
	.obs-footer__hours,
	.obs-footer__visit {
		padding: 14px 16px;
		border: 1px solid rgba(245, 239, 228, .1);
		border-radius: 14px;
		background: rgba(245, 239, 228, .04);
	}
	.obs-footer__hours { text-align: left; }
	.obs-footer .obs-status { margin-bottom: .35em; }
	.obs-footer .obs-hgroups li { padding: .36em 0; }
	.obs-footer__walkin { margin-top: .5em; font-size: .88rem; }
	.obs-footer__address { margin-bottom: .75em; font-size: 1rem; line-height: 1.5; }
	.obs-footer__links {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 8px;
	}
	.obs-footer__links li { margin: 0; }
	.obs-footer__links li:nth-child(3) { grid-column: 1 / -1; }
	.obs-footer__links a {
		display: flex;
		justify-content: center;
		gap: .45em;
		width: 100%;
		min-height: 44px;
		padding: .5em .6em;
		border: 1px solid rgba(245, 239, 228, .22);
		border-radius: var(--radius-sm);
		font-family: var(--font-display);
		font-size: .82rem;
		font-weight: 500;
		letter-spacing: .08em;
		text-transform: uppercase;
		white-space: nowrap;
	}
	.obs-footer__links li:first-child a { background: var(--red); border-color: var(--red); color: #fff; }
	.obs-footer__links li:first-child .obs-ico { color: #fff; }
	.obs-footer__links a:hover,
	.obs-footer__links a:focus-visible { text-decoration: none; border-color: var(--brass); }
	.obs-footer__menu {
		display: flex;
		flex-wrap: wrap;
		justify-content: center;
		gap: 2px 20px;
	}
	.obs-footer__menu li { margin: 0; }
	.obs-footer__menu a {
		padding: .4em 0;
		font-family: var(--font-display);
		font-size: .84rem;
		letter-spacing: .1em;
		text-transform: uppercase;
	}
	.obs-footer__bottom-in {
		flex-direction: column;
		justify-content: center;
		gap: .25em;
		padding-block: 1em;
		font-size: .8rem;
		text-align: center;
	}
	.obs-footer__legal { justify-content: center; }
	.obs-map iframe { aspect-ratio: 1 / 1; }
	.obs-ticket { padding: 22px 20px 20px; }
	.obs-ticket__phone { font-size: 1.35rem; }
	body .elementor .obs-owner__media .elementor-widget-wrap::after { display: none; }
	body .elementor .elementor-widget.obs-photo--frame::after { width: 84px; height: 20px; }

	/* Sticky Call / Directions bar, shown once the first screen has scrolled away. */
	.obs-mcta {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 70;
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 8px;
		padding: 8px 10px calc(8px + env(safe-area-inset-bottom));
		background: rgba(13, 22, 37, .96);
		backdrop-filter: blur(8px);
		box-shadow: 0 -12px 28px -16px rgba(0, 0, 0, .7);
		transform: translateY(110%);
		transition: transform .3s var(--ease);
	}
	.obs-mcta.is-visible { transform: none; }
	.obs-mcta__btn {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: .5em;
		min-height: 50px;
		border-radius: var(--radius-sm);
		font-family: var(--font-display);
		font-size: .98rem;
		font-weight: 600;
		letter-spacing: .1em;
		text-transform: uppercase;
		text-decoration: none;
	}
	.obs-mcta__btn .obs-ico { width: 1.2em; height: 1.2em; }
	.obs-mcta__btn--call { background: var(--red); color: #fff; }
	.obs-mcta__btn--dir { border: 1px solid rgba(245, 239, 228, .45); color: var(--cream); }
	.obs-mcta:focus-within { transform: none; }
	body.has-mcta { padding-bottom: calc(70px + env(safe-area-inset-bottom)); }
}

@media (max-width: 480px) {
	/* Paired buttons stack full-width on phones instead of wrapping at two different widths. */
	body .elementor .elementor-widget-button.elementor-widget__width-auto { width: 100%; margin-inline-end: 0; }
	body .elementor .elementor-widget-button.elementor-widget__width-auto .elementor-button,
	.obs-btns .obs-btn { width: 100%; }
}

@media (max-width: 420px) {
	.obs-burger__label { display: none; }
	.obs-burger { width: 46px; justify-content: center; padding: 0; }
	.obs-brand { font-size: 12.5px; }
}

/* Landscape phones: the hero must not clip its buttons. */
@media (max-height: 560px) and (orientation: landscape) {
	.obs-hero,
	.obs-banner { min-height: 0; }
}

/* ---------------------------------------------------------------- Elementor editor guards */
body.elementor-editor-active .obs-header { position: relative; top: 0; }
body.elementor-editor-active .obs-mcta { display: none; }

/* ---------------------------------------------------------------- motion */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	html.js .reveal { opacity: 1; transform: none; }
}
