/* ==========================================================================
   PBN Signature — design system
   Tokens are editable in Appearance → Customize → PBN Brand.
   ========================================================================== */

@font-face { font-family: "Playfair Display"; font-style: normal; font-weight: 400 700; font-display: swap; src: url("../fonts/playfair-display.woff2") format("woff2"); }
@font-face { font-family: "Playfair Display"; font-style: italic; font-weight: 400 600; font-display: swap; src: url("../fonts/playfair-display-italic.woff2") format("woff2"); }
@font-face { font-family: "Jost"; font-style: normal; font-weight: 300 600; font-display: swap; src: url("../fonts/jost.woff2") format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 400 600; font-display: swap; src: url("../fonts/cormorant-garamond.woff2") format("woff2"); }
@font-face { font-family: "Cormorant Garamond"; font-style: italic; font-weight: 400 500; font-display: swap; src: url("../fonts/cormorant-garamond-italic.woff2") format("woff2"); }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 300 600; font-display: swap; src: url("../fonts/montserrat.woff2") format("woff2"); }

:root {
	--pbn-ink: #2b2b2b;
	--pbn-ivory: #f7f5f2;
	--pbn-paper: #fdfcfa;
	--pbn-stone: #ece7e1;
	--pbn-taupe: #6a655f;
	--pbn-accent: #ba1900;
	--pbn-sage: #56604f;
	--pbn-accent-dark: #961400;
	--pbn-accent-light: #ef6a4f;
	--pbn-ink-soft: color-mix(in srgb, var(--pbn-ink) 78%, var(--pbn-ivory));
	--pbn-line: color-mix(in srgb, var(--pbn-ink) 14%, transparent);
	--pbn-line-light: color-mix(in srgb, var(--pbn-paper) 18%, transparent);

	--pbn-serif: "Playfair Display", "Iowan Old Style", Georgia, serif;
	--pbn-sans: "Jost", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--pbn-type-scale: 1;

	--pbn-fs-display: calc(clamp(2.75rem, 1.6rem + 4.6vw, 6.25rem) * var(--pbn-type-scale));
	--pbn-fs-h1: calc(clamp(2.4rem, 1.7rem + 3vw, 4.6rem) * var(--pbn-type-scale));
	--pbn-fs-h2: calc(clamp(2rem, 1.45rem + 2.2vw, 3.5rem) * var(--pbn-type-scale));
	--pbn-fs-h3: calc(clamp(1.35rem, 1.15rem + .8vw, 1.85rem) * var(--pbn-type-scale));
	--pbn-fs-lede: clamp(1.08rem, 1rem + .35vw, 1.3rem);
	--pbn-fs-body: 1.09rem;
	--pbn-fs-small: .875rem;
	--pbn-fs-eyebrow: .75rem;

	--pbn-wrap: 1320px;
	--pbn-gutter: clamp(1rem, .5rem + 2.4vw, 3rem);
	--pbn-space-section: clamp(4.5rem, 3rem + 6vw, 9.5rem);
	--pbn-radius: 2px;
	--pbn-header-h: 84px;
	--pbn-ease: cubic-bezier(.22, .61, .36, 1);
	--pbn-ease-out: cubic-bezier(.16, 1, .3, 1);
}

/* ----- Base ----- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--pbn-header-h) + 16px); }
body {
	margin: 0;
	background: var(--pbn-ivory);
	color: var(--pbn-ink);
	font-family: var(--pbn-sans);
	font-size: var(--pbn-fs-body);
	line-height: 1.65;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}
img, video, svg, iframe { max-width: 100%; }
img, video { height: auto; display: block; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { color: var(--pbn-accent); }
button { font: inherit; color: inherit; }
::selection { background: var(--pbn-ink); color: var(--pbn-paper); }
:focus-visible { outline: 2px solid var(--pbn-accent); outline-offset: 3px; }
.pbn-main:focus { outline: none; }
.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.pbn-skip {
	position: fixed; top: 12px; left: 12px; z-index: 1000; padding: .75rem 1.1rem;
	background: var(--pbn-ink); color: var(--pbn-paper); transform: translateY(-160%);
	transition: transform .2s var(--pbn-ease);
}
.pbn-skip:focus { transform: none; color: var(--pbn-paper); }

h1, h2, h3, h4, .pbn-display, .pbn-h1, .pbn-h2, .pbn-h3 {
	font-family: var(--pbn-serif);
	font-weight: 400;
	line-height: 1.08;
	letter-spacing: -.012em;
	margin: 0 0 .5em;
	text-wrap: balance;
}
h1 em, h2 em, h3 em, .elementor-heading-title em { font-style: italic; font-weight: 400; color: var(--pbn-accent); }
p { margin: 0 0 1.1em; text-wrap: pretty; }

.pbn-display, .pbn-display .elementor-heading-title { font-size: var(--pbn-fs-display); line-height: 1.02; letter-spacing: -.02em; }
.pbn-h1, .pbn-h1 .elementor-heading-title, .pbn-article__title, .pbn-case__title { font-size: var(--pbn-fs-h1); }
.pbn-h2, .pbn-h2 .elementor-heading-title { font-size: var(--pbn-fs-h2); }
.pbn-h3, .pbn-h3 .elementor-heading-title { font-size: var(--pbn-fs-h3); line-height: 1.15; letter-spacing: -.012em; }
.pbn-lede, .pbn-lede p { font-size: var(--pbn-fs-lede); line-height: 1.6; color: var(--pbn-ink-soft); }

.pbn-eyebrow:not(.elementor-widget), .pbn-eyebrow .elementor-heading-title {
	display: inline-flex; align-items: center; gap: .75rem;
	font-family: var(--pbn-sans); font-size: var(--pbn-fs-eyebrow); font-weight: 600;
	letter-spacing: .2em; text-transform: uppercase; color: var(--pbn-taupe);
	margin: 0 0 1.25rem; line-height: 1.4;
}
.pbn-eyebrow:not(.elementor-widget)::before, .pbn-eyebrow .elementor-heading-title::before {
	content: ""; width: 2rem; height: 1px; background: currentColor; opacity: .7;
}
.pbn-eyebrow--light, .pbn-section--ink .pbn-eyebrow, .pbn-section--ink .pbn-eyebrow .elementor-heading-title { color: color-mix(in srgb, var(--pbn-paper) 72%, transparent); }

/* ----- Layout ----- */
.pbn-wrap { width: 100%; max-width: calc(var(--pbn-wrap) + var(--pbn-gutter) * 2); margin-inline: auto; padding-inline: var(--pbn-gutter); }
.pbn-wrap--narrow { max-width: calc(780px + var(--pbn-gutter) * 2); }
.pbn-section { padding-block: var(--pbn-space-section); position: relative; }
.pbn-section--paper { background: var(--pbn-paper); }
.pbn-section--stone { background: color-mix(in srgb, var(--pbn-stone) 45%, var(--pbn-ivory)); }
.pbn-section--ink { background: var(--pbn-ink); color: var(--pbn-paper); }
.pbn-section--ink a:hover { color: var(--pbn-stone); }
.pbn-section__head { display: flex; gap: 2rem; justify-content: space-between; align-items: end; flex-wrap: wrap; margin-bottom: clamp(2rem, 1rem + 3vw, 4rem); }
.pbn-section__head > :first-child { max-width: 46rem; }
.pbn-section__head .pbn-h2 { margin-bottom: 0; }

/* Elementor containers: map theme spacing onto Elementor's container variables. */
.e-con.pbn-section { --padding-top: var(--pbn-space-section); --padding-bottom: var(--pbn-space-section); --padding-left: var(--pbn-gutter); --padding-right: var(--pbn-gutter); padding-block: 0; }
.e-con.pbn-section--tight { --padding-top: clamp(3rem, 2rem + 3vw, 5rem); --padding-bottom: clamp(3rem, 2rem + 3vw, 5rem); }
.e-con.pbn-section--flush { --padding-top: 0; --padding-bottom: 0; --padding-left: 0; --padding-right: 0; }
.e-con.pbn-section--ink { --background-color: var(--pbn-ink); }
.e-con { --gap: clamp(1.5rem, 1rem + 2vw, 3rem); }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.pbn-section--ink .elementor-heading-title, .pbn-section--ink .elementor-widget-text-editor { color: var(--pbn-paper); }
.pbn-section--ink .pbn-lede, .pbn-section--ink .pbn-lede p { color: color-mix(in srgb, var(--pbn-paper) 76%, transparent); }

/* Editorial split (native Elementor widgets): text column + image column. */
.pbn-split { align-items: center; }
.pbn-split__media img, .pbn-figure img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.pbn-figure--tall img { aspect-ratio: 3 / 4; }
.pbn-figure--wide img { aspect-ratio: 3 / 2; }
.pbn-figure figcaption, .pbn-figure .widget-image-caption {
	margin-top: .9rem; font-size: var(--pbn-fs-small); color: var(--pbn-taupe); text-align: left; letter-spacing: .01em;
}
.pbn-quote .elementor-heading-title, .pbn-quote {
	font-family: var(--pbn-serif); font-size: clamp(1.6rem, 1.2rem + 1.6vw, 2.6rem); line-height: 1.2;
	font-weight: 400; letter-spacing: -.01em;
}
.pbn-checklist, .pbn-checklist ul { list-style: none; margin: 0 0 1.5rem; padding: 0; display: grid; gap: .1rem; }
.pbn-checklist li { display: flex; gap: .85rem; align-items: flex-start; padding: .85rem 0; border-bottom: 1px solid var(--pbn-line); }
.pbn-checklist .pbn-icon { flex: none; width: 20px; height: 20px; color: var(--pbn-accent); margin-top: .2rem; }
.elementor-widget-text-editor.pbn-checklist ul li::before {
	content: ""; flex: none; width: 18px; height: 1px; margin-top: .85em; background: var(--pbn-accent);
}
.pbn-columns-2 ul { columns: 2 16rem; column-gap: 3rem; }
.pbn-columns-2 li { break-inside: avoid; }

/* ----- Buttons ----- */
.pbn-btn, .elementor-widget.pbn-btn-el .elementor-button {
	--btn-bg: var(--pbn-accent); --btn-fg: #fff; --btn-bd: var(--pbn-accent);
	position: relative; display: inline-flex; align-items: center; justify-content: center; gap: .7rem;
	min-height: 52px; padding: .95rem 1.6rem; border: 1px solid var(--btn-bd); border-radius: var(--pbn-radius);
	background: var(--btn-bg); color: var(--btn-fg); font-family: var(--pbn-sans); font-size: .8rem; font-weight: 600;
	letter-spacing: .14em; text-transform: uppercase; text-decoration: none; line-height: 1.2; cursor: pointer;
	overflow: hidden; isolation: isolate; transition: color .45s var(--pbn-ease), border-color .45s var(--pbn-ease);
}
.pbn-btn::before, .elementor-widget.pbn-btn-el .elementor-button::before {
	content: ""; position: absolute; inset: 0; z-index: -1; background: var(--btn-sweep, var(--pbn-ink));
	transform: scaleX(0); transform-origin: right; transition: transform .55s var(--pbn-ease-out);
}
.pbn-btn:hover, .elementor-widget.pbn-btn-el .elementor-button:hover { color: #fff; border-color: var(--btn-sweep, var(--pbn-ink)); }
.pbn-btn:hover::before, .elementor-widget.pbn-btn-el .elementor-button:hover::before { transform: scaleX(1); transform-origin: left; }
.pbn-btn .pbn-icon { width: 18px; height: 18px; transition: transform .45s var(--pbn-ease-out); }
.pbn-btn:hover .pbn-icon--arrow { transform: translateX(4px); }
.pbn-btn--ghost, .elementor-widget.pbn-btn-el--ghost .elementor-button { --btn-bg: transparent; --btn-fg: var(--pbn-ink); --btn-bd: color-mix(in srgb, var(--pbn-ink) 35%, transparent); }
.pbn-btn--light { --btn-bg: var(--pbn-paper); --btn-fg: var(--pbn-ink); --btn-bd: var(--pbn-paper); }
.pbn-btn--outline-light, .pbn-section--ink .pbn-btn--ghost { --btn-bg: transparent; --btn-fg: var(--pbn-paper); --btn-bd: color-mix(in srgb, var(--pbn-paper) 40%, transparent); }
.pbn-btn--block { width: 100%; }
.elementor-widget.pbn-btn-el .elementor-button-content-wrapper { gap: .6rem; }
.pbn-link {
	display: inline-flex; align-items: center; gap: .55rem; font-size: .8rem; font-weight: 600; letter-spacing: .14em;
	text-transform: uppercase; text-decoration: none; padding-bottom: .35rem; border-bottom: 1px solid currentColor;
}
.pbn-link .pbn-icon { width: 16px; height: 16px; transition: transform .4s var(--pbn-ease-out); }
.pbn-link:hover .pbn-icon { transform: translateX(4px); }

/* ----- Rating badge ----- */
.pbn-rating { display: inline-flex; align-items: center; gap: .6rem; text-decoration: none; font-size: var(--pbn-fs-small); color: inherit; }
.pbn-rating__stars { display: inline-flex; color: #b8892f; }
.pbn-rating__stars .pbn-icon { width: 14px; height: 14px; }
.pbn-rating strong { font-weight: 700; }
.pbn-rating--light { color: color-mix(in srgb, var(--pbn-paper) 80%, transparent); }

/* ----- Top bar & header ----- */
.pbn-topbar { background: var(--pbn-ink); color: color-mix(in srgb, var(--pbn-paper) 78%, transparent); font-size: .78rem; }
.pbn-topbar__inner { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; min-height: 40px; }
.pbn-topbar__eyebrow { margin: 0; letter-spacing: .18em; text-transform: uppercase; font-weight: 600; font-size: .7rem; }
.pbn-topbar__meta { display: flex; align-items: center; gap: 1.75rem; }
.pbn-topbar__item { display: inline-flex; align-items: center; gap: .45rem; }
.pbn-topbar .pbn-icon { width: 15px; height: 15px; }
.pbn-topbar .pbn-rating { font-size: .78rem; }
.pbn-topbar .pbn-rating:hover { color: var(--pbn-paper); }

.pbn-header {
	position: sticky; top: 0; z-index: 100; background: color-mix(in srgb, var(--pbn-paper) 94%, transparent);
	backdrop-filter: saturate(1.4) blur(14px); -webkit-backdrop-filter: saturate(1.4) blur(14px);
	border-bottom: 1px solid transparent; transition: border-color .3s, box-shadow .3s, background .3s;
}
.admin-bar .pbn-header { top: 32px; }
.pbn-header.is-scrolled { border-bottom-color: var(--pbn-line); box-shadow: 0 10px 30px -24px rgba(43, 43, 43, .5); }
.pbn-header__inner { display: flex; align-items: center; gap: 2rem; min-height: var(--pbn-header-h); transition: min-height .3s var(--pbn-ease); }
.pbn-header.is-scrolled .pbn-header__inner { min-height: 70px; }

.pbn-logo { display: inline-flex; align-items: center; gap: .65rem; text-decoration: none; flex: none; }
.pbn-logo__img { width: auto; height: 54px; max-width: 150px; object-fit: contain; transition: height .3s var(--pbn-ease); }
.pbn-header.is-scrolled .pbn-logo__img { height: 46px; }
.pbn-logo__mark { font-family: var(--pbn-serif); font-size: 1.7rem; font-weight: 600; letter-spacing: -.02em; }
.pbn-logo__word { font-size: .7rem; letter-spacing: .22em; text-transform: uppercase; font-weight: 600; color: var(--pbn-taupe); }

.pbn-nav { margin-left: auto; }
.pbn-nav__list { list-style: none; display: flex; align-items: center; gap: clamp(1rem, .3rem + 1.4vw, 2.1rem); margin: 0; padding: 0; }
.pbn-nav__list > li { position: relative; display: flex; align-items: center; }
.pbn-nav__list a {
	display: inline-block; padding: .5rem 0; font-size: .86rem; font-weight: 500; letter-spacing: .02em; text-decoration: none;
	background: linear-gradient(currentColor, currentColor) left calc(100% - 4px) / 0 1px no-repeat; transition: background-size .45s var(--pbn-ease-out), color .2s;
}
.pbn-nav__list a:hover, .pbn-nav__list .current-menu-item > a, .pbn-nav__list .current-menu-ancestor > a { background-size: 100% 1px; color: var(--pbn-ink); }
.pbn-subtoggle { display: inline-grid; place-items: center; width: 22px; height: 22px; padding: 0; margin-left: .15rem; border: 0; background: none; cursor: pointer; }
.pbn-nav .sub-menu {
	position: absolute; top: calc(100% + 10px); left: -1.25rem; min-width: 270px; list-style: none; margin: 0; padding: .75rem 0;
	background: var(--pbn-paper); border: 1px solid var(--pbn-line); box-shadow: 0 30px 60px -30px rgba(43, 43, 43, .35);
	opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .25s, transform .35s var(--pbn-ease-out), visibility .25s;
}
.pbn-nav .sub-menu::before { content: ""; position: absolute; inset: -12px 0 auto; height: 12px; }
.pbn-nav li:hover > .sub-menu, .pbn-nav li:focus-within > .sub-menu, .pbn-nav li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.pbn-nav .sub-menu a { display: block; padding: .65rem 1.25rem; background: none; font-size: .9rem; }
.pbn-nav .sub-menu a:hover { background: var(--pbn-ivory); color: var(--pbn-ink); }

.pbn-header__actions { display: flex; align-items: center; gap: 1.25rem; }
.pbn-header__phone { display: inline-flex; align-items: center; gap: .5rem; font-size: .88rem; font-weight: 600; text-decoration: none; white-space: nowrap; }
.pbn-header__phone .pbn-icon { width: 18px; height: 18px; color: var(--pbn-accent); }
.pbn-header__cta { min-height: 46px; padding: .75rem 1.2rem; font-size: .72rem; }

.pbn-burger { display: none; width: 46px; height: 46px; border: 1px solid var(--pbn-line); background: transparent; border-radius: 50%; cursor: pointer; padding: 0; place-items: center; }
.pbn-burger__lines { display: grid; gap: 6px; width: 18px; }
.pbn-burger__lines span { height: 1.5px; background: currentColor; transition: transform .3s var(--pbn-ease); }
.pbn-burger__lines span:last-child { width: 60%; justify-self: end; }

/* Mobile navigation overlay */
.pbn-mnav { position: fixed; inset: 0; z-index: 200; background: rgba(30, 30, 30, .35); }
.pbn-mnav[hidden] { display: none; }
.pbn-mnav__panel {
	position: absolute; inset: 0 0 0 auto; width: min(100%, 460px); background: var(--pbn-paper); display: flex; flex-direction: column;
	padding: 1rem var(--pbn-gutter) calc(1.5rem + env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain;
	animation: pbn-slide-in .45s var(--pbn-ease-out);
}
.pbn-mnav.is-closing .pbn-mnav__panel { animation: pbn-slide-out .3s var(--pbn-ease) forwards; }
@keyframes pbn-slide-in { from { transform: translateX(100%); } }
@keyframes pbn-slide-out { to { transform: translateX(100%); } }
.pbn-mnav__top { display: flex; align-items: center; justify-content: space-between; min-height: 64px; }
.pbn-mnav__top .pbn-logo__img { height: 44px; }
.pbn-mnav__close { width: 46px; height: 46px; display: grid; place-items: center; border: 1px solid var(--pbn-line); border-radius: 50%; background: none; cursor: pointer; }
.pbn-mnav__list { list-style: none; margin: 1.5rem 0; padding: 0; }
.pbn-mnav__list > li { border-bottom: 1px solid var(--pbn-line); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; }
.pbn-mnav__list > li > a { display: block; padding: .95rem 0; font-family: var(--pbn-serif); font-size: 1.75rem; font-weight: 400; text-decoration: none; letter-spacing: -.015em; }
.pbn-mnav__list .pbn-subtoggle { width: 44px; height: 44px; }
.pbn-mnav__list .sub-menu { list-style: none; width: 100%; margin: 0 0 1rem; padding: 0 0 0 .25rem; display: none; }
.pbn-mnav__list li.is-open > .sub-menu { display: block; }
.pbn-mnav__list li.is-open > .pbn-subtoggle svg { transform: rotate(180deg); }
.pbn-mnav__list .sub-menu a { display: block; padding: .5rem 0; text-decoration: none; color: var(--pbn-ink-soft); }
.pbn-mnav__foot { margin-top: auto; display: grid; gap: .75rem; }
.pbn-mnav__foot .pbn-rating { justify-content: center; margin-top: .5rem; }

/* Sticky mobile action bar */
.pbn-mbar { display: none; }

/* ----- Footer ----- */
.pbn-footer { background: var(--pbn-paper); color: var(--pbn-taupe); border-top: 1px solid var(--pbn-line); padding-top: clamp(4rem, 3rem + 5vw, 7.5rem); font-size: .95rem; }
.pbn-footer a { text-decoration: none; color: var(--pbn-ink); transition: color .2s; }
.pbn-footer a:hover { color: var(--pbn-accent); }
.pbn-footer__lead { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 2rem 4rem; align-items: end; padding-bottom: clamp(3rem, 2rem + 4vw, 5.5rem); border-bottom: 1px solid var(--pbn-line); }
.pbn-footer__lead .pbn-eyebrow { grid-column: 1 / -1; margin-bottom: -1rem; }
.pbn-footer__statement { font-family: var(--pbn-serif); font-weight: 400; color: var(--pbn-ink); font-size: clamp(2.3rem, 1.4rem + 4vw, 4.6rem); line-height: 1.04; letter-spacing: -.015em; max-width: 14ch; margin: 0; }
.pbn-footer__statement em { color: var(--pbn-accent); }
.pbn-footer__ctas { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: flex-end; }
.pbn-footer__grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.3fr; gap: clamp(2rem, 1rem + 3vw, 4rem); padding-block: clamp(3rem, 2rem + 3vw, 4.5rem); }
.pbn-footer__brand p { max-width: 34ch; margin: 1.5rem 0; }
.pbn-footer .pbn-logo__img { height: 78px; max-width: 180px; }
.pbn-footer .pbn-logo__word { color: inherit; }
.pbn-footer__heading { font-family: var(--pbn-sans); font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; font-weight: 600; color: var(--pbn-ink); margin: 0 0 1.4rem; }
.pbn-footer__heading::after { content: ""; display: block; width: 1.5rem; height: 2px; margin-top: .75rem; background: var(--pbn-accent); }
.pbn-footer__links, .pbn-footer__contact { list-style: none; margin: 0; padding: 0; display: grid; gap: .7rem; }
.pbn-footer__links a { color: var(--pbn-taupe); }
.pbn-footer__links a:hover, .pbn-footer__links .current-menu-item > a { color: var(--pbn-ink); }
.pbn-footer__contact li { display: flex; gap: .7rem; align-items: flex-start; }
.pbn-footer__contact .pbn-icon { width: 18px; height: 18px; flex: none; margin-top: .2rem; color: var(--pbn-accent); }
.pbn-social { list-style: none; display: flex; gap: .5rem; padding: 0; margin: 1.75rem 0 0; }
.pbn-social a { width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid var(--pbn-line); border-radius: 50%; color: var(--pbn-ink); transition: background .3s, color .3s, border-color .3s; }
.pbn-social a:hover { background: var(--pbn-accent); border-color: var(--pbn-accent); color: #fff; }
.pbn-social .pbn-icon { width: 18px; height: 18px; }
.pbn-footer__base { display: flex; flex-wrap: wrap; gap: 1rem 2rem; justify-content: space-between; align-items: center; padding-block: 1.75rem; border-top: 1px solid var(--pbn-line); font-size: .8rem; }
.pbn-footer__base p { margin: 0; }
.pbn-footer__legal { list-style: none; display: flex; flex-wrap: wrap; gap: 1.5rem; margin: 0; padding: 0; }
.pbn-footer__legal a { color: var(--pbn-taupe); }

/* ----- Articles, legal pages, blog ----- */
.pbn-article__head { padding: clamp(3.5rem, 2rem + 5vw, 7rem) 0 clamp(2rem, 1rem + 2vw, 3rem); }
.pbn-article__title { margin-bottom: .35em; }
.pbn-article__lede { font-size: var(--pbn-fs-lede); color: var(--pbn-ink-soft); max-width: 40rem; }
.pbn-article__media img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.pbn-article__cta { margin-block: 4rem var(--pbn-space-section); padding: 2.5rem; background: var(--pbn-paper); border: 1px solid var(--pbn-line); display: flex; flex-wrap: wrap; gap: 1.5rem; align-items: center; justify-content: space-between; }
.pbn-article__cta p { margin: 0; font-family: var(--pbn-serif); font-size: 1.5rem; }
.pbn-prose { padding-bottom: var(--pbn-space-section); }
.pbn-prose > * { max-width: 70ch; }
.pbn-prose h2 { font-size: clamp(1.6rem, 1.3rem + 1vw, 2.2rem); margin-top: 2.2em; }
.pbn-prose h3 { font-size: 1.35rem; margin-top: 1.8em; }
.pbn-prose ul, .pbn-prose ol { padding-left: 1.2rem; margin: 0 0 1.25em; }
.pbn-prose li { margin-bottom: .45em; }
.pbn-prose blockquote { margin: 2rem 0; padding-left: 1.5rem; border-left: 2px solid var(--pbn-accent); font-family: var(--pbn-serif); font-size: 1.35rem; }
.pbn-postgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 3rem 2rem; padding-bottom: var(--pbn-space-section); }
.pbn-postcard__link { display: grid; gap: .75rem; text-decoration: none; }
.pbn-postcard__media { overflow: hidden; display: block; }
.pbn-postcard__media img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; transition: transform 1.2s var(--pbn-ease-out); }
.pbn-postcard__link:hover img { transform: scale(1.04); }
.pbn-postcard__title { font-size: 1.6rem; margin: 0; }
.pbn-postcard__excerpt { color: var(--pbn-taupe); }
.pbn-pagination { grid-column: 1 / -1; }
.pbn-pagination .nav-links { display: flex; gap: .5rem; }
.pbn-pagination .page-numbers { padding: .5rem .9rem; border: 1px solid var(--pbn-line); text-decoration: none; }
.pbn-pagination .current { background: var(--pbn-ink); color: var(--pbn-paper); }
.pbn-404 { padding-block: clamp(5rem, 3rem + 8vw, 10rem); }
.pbn-404__links { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2rem; }

/* Breadcrumbs */
.pbn-crumbs { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; font-size: .78rem; letter-spacing: .04em; color: var(--pbn-taupe); margin-bottom: 1.75rem; }
.pbn-crumbs a { text-decoration: none; }
.pbn-crumbs a:hover { text-decoration: underline; }
.pbn-crumbs__sep { opacity: .5; }
.pbn-section--ink .pbn-crumbs, .pbn-crumbs--light { color: color-mix(in srgb, var(--pbn-paper) 70%, transparent); }

/* ----- Project case study ----- */
.pbn-case__hero { padding-block: clamp(2.5rem, 1.5rem + 4vw, 6rem) clamp(3rem, 2rem + 4vw, 6rem); }
.pbn-case__hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 1rem + 4vw, 6rem); align-items: end; }
.pbn-case__lede { font-size: var(--pbn-fs-lede); color: var(--pbn-ink-soft); max-width: 36rem; }
.pbn-case__facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 0; margin: 2.5rem 0 0; border-top: 1px solid var(--pbn-line); }
.pbn-case__facts div { padding: 1.1rem 1rem 0 0; }
.pbn-case__facts dt { font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; color: var(--pbn-taupe); font-weight: 600; margin-bottom: .35rem; }
.pbn-case__facts dd { margin: 0; font-family: var(--pbn-serif); font-size: 1.2rem; }
.pbn-case__cover { margin: 0; overflow: hidden; }
.pbn-case__cover img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.pbn-case__body { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: clamp(2rem, 1rem + 4vw, 6rem); padding-block: clamp(2rem, 1rem + 3vw, 4rem) 0; }
.pbn-case__h2 { font-size: clamp(1.7rem, 1.3rem + 1.2vw, 2.4rem); margin-top: 0; }
.pbn-case__story .pbn-case__h2:not(:first-child) { margin-top: 2.5rem; }
.pbn-case__aside { position: relative; }
.pbn-case__card { position: sticky; top: calc(var(--pbn-header-h) + 2rem); background: var(--pbn-paper); border: 1px solid var(--pbn-line); padding: 2rem; display: grid; gap: .5rem; }
.pbn-case__card-title { font-family: var(--pbn-serif); font-size: 1.55rem; line-height: 1.15; margin: 0; }
.pbn-case__card p { color: var(--pbn-ink-soft); }
.pbn-case__call { display: inline-flex; gap: .5rem; align-items: center; justify-content: center; margin-top: .5rem; text-decoration: none; font-weight: 600; }
.pbn-case__call .pbn-icon { width: 18px; color: var(--pbn-accent); }
.pbn-case__compare, .pbn-case__related { background: var(--pbn-paper); }

/* ----- Forms (Forminator "None" design + general inputs) ----- */
.pbn-form-shell { background: var(--pbn-paper); border: 1px solid var(--pbn-line); padding: clamp(1.5rem, 1rem + 2vw, 3rem); }
.forminator-ui.forminator-custom-form { margin: 0 !important; }
.forminator-ui .forminator-row { margin-bottom: 1.25rem !important; }
.forminator-ui .forminator-label, .forminator-ui .forminator-field label:not(.forminator-checkbox) {
	display: block; margin-bottom: .5rem !important; font-size: .74rem !important; font-weight: 600 !important; letter-spacing: .14em; text-transform: uppercase; color: var(--pbn-ink) !important;
}
.forminator-ui .forminator-required { color: var(--pbn-accent) !important; }
.forminator-ui input.forminator-input, .forminator-ui textarea.forminator-textarea, .forminator-ui select.forminator-select--field,
.forminator-ui .forminator-select2 + .select2 .select2-selection, .forminator-ui select {
	width: 100%; min-height: 54px; padding: .9rem 1rem !important; border: 1px solid color-mix(in srgb, var(--pbn-ink) 22%, transparent) !important;
	border-radius: var(--pbn-radius) !important; background: var(--pbn-ivory) !important; color: var(--pbn-ink) !important; font: inherit !important; font-size: 1rem !important;
	transition: border-color .2s, background .2s, box-shadow .2s;
}
.forminator-ui textarea.forminator-textarea { min-height: 150px; resize: vertical; }
.forminator-ui input.forminator-input:focus, .forminator-ui textarea.forminator-textarea:focus, .forminator-ui select:focus {
	outline: none; border-color: var(--pbn-ink) !important; background: var(--pbn-paper) !important; box-shadow: 0 0 0 3px color-mix(in srgb, var(--pbn-accent) 30%, transparent);
}
.forminator-ui .forminator-description, .forminator-ui .forminator-checkbox__label { font-size: .88rem !important; color: var(--pbn-taupe) !important; }
.forminator-ui .forminator-error-message { color: #9b2c1f !important; font-size: .82rem !important; margin-top: .4rem; display: block; }
.forminator-ui .forminator-has_error input, .forminator-ui .forminator-has_error textarea { border-color: #9b2c1f !important; }
.forminator-ui .forminator-button-submit {
	min-height: 56px; padding: 1rem 2rem !important; border: 0 !important; border-radius: var(--pbn-radius) !important; background: var(--pbn-ink) !important; color: var(--pbn-paper) !important;
	font: 600 .8rem/1 var(--pbn-sans) !important; letter-spacing: .14em !important; text-transform: uppercase; cursor: pointer; transition: background .3s;
}
.forminator-ui .forminator-button-submit:hover { background: var(--pbn-accent) !important; }
.forminator-ui .forminator-response-message { padding: 1rem 1.25rem !important; border-radius: var(--pbn-radius); margin-bottom: 1.25rem !important; }
.forminator-ui .forminator-response-message.forminator-success { background: color-mix(in srgb, var(--pbn-sage) 14%, var(--pbn-paper)) !important; color: var(--pbn-ink) !important; border-left: 3px solid var(--pbn-sage); }
.forminator-ui .forminator-response-message.forminator-error { background: #fbeceb !important; color: #7a2016 !important; }
.forminator-ui .forminator-checkbox { display: flex !important; gap: .75rem; align-items: flex-start; }
.forminator-ui .forminator-checkbox input { width: 20px; height: 20px; accent-color: var(--pbn-ink); margin-top: .15rem; }

/* ----- Reveal & motion ----- */
.pbn-js [data-reveal] { opacity: 0; transform: translateY(28px); transition: opacity 1s var(--pbn-ease-out), transform 1.1s var(--pbn-ease-out); transition-delay: var(--reveal-delay, 0s); }
.pbn-js [data-reveal].is-in { opacity: 1; transform: none; }
.pbn-js [data-reveal="img"] { opacity: 1; transform: none; clip-path: inset(12% 0 0 0); transition: clip-path 1.4s var(--pbn-ease-out); }
.pbn-js [data-reveal="img"] img { transform: scale(1.12); transition: transform 1.8s var(--pbn-ease-out); }
.pbn-js [data-reveal="img"].is-in { clip-path: inset(0 0 0 0); }
.pbn-js [data-reveal="img"].is-in img { transform: scale(1); }
.elementor-editor-active [data-reveal], .elementor-editor-active [data-reveal="img"] { opacity: 1 !important; transform: none !important; clip-path: none !important; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
	.pbn-js [data-reveal], .pbn-js [data-reveal="img"], .pbn-js [data-reveal="img"] img { opacity: 1; transform: none; clip-path: none; }
}

/* ----- Responsive ----- */
@media (max-width: 1180px) {
	.pbn-header__phone span { display: none; }
	.pbn-footer__grid { grid-template-columns: 1fr 1fr; }
	.pbn-footer__lead { grid-template-columns: 1fr; }
	.pbn-footer__ctas { justify-content: flex-start; }
}
@media (max-width: 1024px) {
	:root { --pbn-header-h: 68px; }
	.pbn-nav, .pbn-header__phone, .pbn-topbar { display: none; }
	.pbn-header__actions { margin-left: auto; }
	.pbn-burger { display: grid; }
	.pbn-logo__img { height: 44px; }
	.pbn-case__hero-grid, .pbn-case__body { grid-template-columns: 1fr; }
	.pbn-case__card { position: static; }
}
@media (max-width: 782px) {
	.admin-bar .pbn-header { top: 46px; }
}
@media (max-width: 640px) {
	.pbn-header__cta { display: none; }
	.pbn-footer__grid { grid-template-columns: 1fr; }
	.pbn-footer__ctas .pbn-btn { width: 100%; }
	.pbn-columns-2 ul { columns: 1; }

	.has-pbn-mobile-bar { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }
	.pbn-mbar {
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 150; display: grid; grid-template-columns: 1fr 2.2fr;
		padding-bottom: env(safe-area-inset-bottom); background: var(--pbn-ink); box-shadow: 0 -12px 30px -20px rgba(0, 0, 0, .5);
		transition: transform .35s var(--pbn-ease);
	}
	.pbn-mbar.is-hidden { transform: translateY(110%); }
	.pbn-mbar a {
		display: flex; align-items: center; justify-content: center; gap: .55rem; min-height: 64px; text-decoration: none;
		color: var(--pbn-paper); font-size: .78rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
	}
	.pbn-mbar .pbn-icon { width: 19px; height: 19px; }
	.pbn-mbar__call { border-right: 1px solid var(--pbn-line-light); }
	.pbn-mbar__book { background: var(--pbn-accent); }
}

@media print {
	.pbn-header, .pbn-topbar, .pbn-footer, .pbn-mbar, .pbn-mnav { display: none !important; }
}

/* ----- Elementor layout helpers used by the PBN page layouts ----- */
.pbn-split--top { align-items: flex-start !important; }
.pbn-split .elementor-widget-button { margin-top: .75rem; }
.e-con.pbn-cards { --gap: 0px; gap: 0; border-top: 1px solid var(--pbn-line); }
.e-con.pbn-card { --padding-top: 2rem; --padding-bottom: 2rem; --padding-right: 1.5rem; --padding-left: 0; border-bottom: 1px solid var(--pbn-line); }
.e-con.pbn-card .pbn-h3 .elementor-heading-title { margin-bottom: .5rem; }
.e-con.pbn-card p { color: var(--pbn-taupe); }
.pbn-form-shell .elementor-shortcode, .elementor-widget.pbn-form-shell { background: var(--pbn-paper); border: 1px solid var(--pbn-line); padding: clamp(1.25rem, 1rem + 2vw, 2.75rem); }
.elementor-widget.pbn-btn-el .elementor-button { fill: currentColor; }
.elementor-widget.pbn-btn-el .elementor-button-text { flex-grow: 0; }
.elementor-widget-heading.pbn-eyebrow { margin-bottom: 0; }
.elementor-widget-heading.pbn-eyebrow .elementor-heading-title { margin-bottom: .25rem; }
.elementor-widget-heading .elementor-heading-title { margin-bottom: 0; }
.pbn-section .elementor-widget-heading.pbn-h2 { max-width: 22ch; }
.pbn-split .elementor-widget-heading.pbn-h2 { max-width: none; }
@media (max-width: 767px) {
	.e-con.pbn-card { --padding-right: 0; }
	.elementor-widget.pbn-btn-el .elementor-button { width: 100%; }
}

/* ----- Refinements after QA ----- */
.e-con.e-child { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; }
.e-con.e-child.pbn-card { --padding-top: 2rem; --padding-bottom: 2rem; --padding-right: 1.5rem; }
.pbn-form-shell .elementor-shortcode { background: none; border: 0; padding: 0; }
.forminator-ui .forminator-response-message:empty,
.forminator-ui .forminator-response-message[aria-hidden="true"]:not(.forminator-show) { display: none !important; }
.pbn-section--ink h1 em, .pbn-section--ink h2 em, .pbn-section--ink h3 em, .pbn-section--ink .elementor-heading-title em { color: #ef6a4f; }

/* ----- Layout refinements (v1.1) ----- */
.pbn-logo__img { height: 60px; max-width: 160px; }
.pbn-header.is-scrolled .pbn-logo__img { height: 50px; }

/* Editorial split section header: shared baseline, intro on the right. */
.e-con.pbn-split-head { margin-bottom: clamp(2rem, 1rem + 2.5vw, 3.75rem); }
.pbn-split-head .elementor-widget-heading.pbn-h2 .elementor-heading-title { margin: 0; }
.pbn-split-head .pbn-lede p { max-width: 34rem; margin-bottom: 0; }
.pbn-split-head__link p { margin: 1.25rem 0 0; }
.pbn-split-head__link .pbn-link { text-decoration: none; }
.pbn-section--ink .pbn-link { color: var(--pbn-paper); }

/* Buttons inside dark sections. */
.pbn-section--ink .elementor-widget.pbn-btn-el .elementor-button { --btn-bg: var(--pbn-paper); --btn-fg: var(--pbn-ink); --btn-bd: var(--pbn-paper); }
.pbn-section--ink .elementor-widget.pbn-btn-el .elementor-button:hover { color: var(--pbn-paper); }
.pbn-section--ink .elementor-widget.pbn-btn-el--ghost .elementor-button { --btn-bg: transparent; --btn-fg: var(--pbn-paper); --btn-bd: color-mix(in srgb, var(--pbn-paper) 40%, transparent); }

/* Service-page closing block: booking + phone + enquiry form. */
.pbn-section--close .pbn-close__title .elementor-heading-title { font-size: clamp(2.2rem, 1.5rem + 2.6vw, 3.8rem); line-height: 1; }
.pbn-close .pbn-lede p { max-width: 30rem; }
.pbn-close__meta { margin-top: 1.75rem; padding-top: 1.5rem; border-top: 1px solid var(--pbn-line-light); }
.pbn-close__meta p { margin: 0 0 .35rem; color: color-mix(in srgb, var(--pbn-paper) 70%, transparent); font-size: .95rem; }
.pbn-close__alt a { font-family: var(--pbn-serif); font-size: 1.45rem; color: var(--pbn-paper); text-decoration: none; margin-left: .35rem; }
.pbn-close__alt a:hover { color: #ef6a4f; }
.pbn-section--close .pbn-form-shell, .pbn-section--close .elementor-widget.pbn-form-shell { color: var(--pbn-ink); border-color: transparent; box-shadow: 0 40px 80px -50px rgba(0, 0, 0, .6); }
@media (min-width: 1025px) {
	.pbn-close > .e-con:first-child { position: sticky; top: calc(var(--pbn-header-h) + 2rem); align-self: flex-start; }
}

/* Consistent spacing between a stacked section header and its content. */
.e-con-inner > .elementor-widget-heading.pbn-h2, .e-con-inner > .elementor-widget-text-editor.pbn-lede { margin-bottom: clamp(1.75rem, 1rem + 2vw, 3rem); }
.e-con-inner > .elementor-widget-heading.pbn-h2:has(+ .pbn-lede) { margin-bottom: .9rem; }
.elementor-widget.pbn-btn-el .elementor-button-icon svg { width: 16px; height: 16px; fill: currentColor; transition: transform .45s var(--pbn-ease-out); }
.elementor-widget.pbn-btn-el .elementor-button:hover .elementor-button-icon svg { transform: translateX(4px); }

/* ----- v2: brand buttons (logo red primary; red sweep on light/outline buttons) ----- */
.pbn-btn--light, .pbn-btn--outline-light, .pbn-section--ink .pbn-btn--ghost,
.pbn-section--ink .elementor-widget.pbn-btn-el .elementor-button { --btn-sweep: var(--pbn-accent); }
.pbn-btn--light:hover { border-color: var(--pbn-accent); }
.pbn-section--ink .elementor-widget.pbn-btn-el .elementor-button { --btn-bg: var(--pbn-accent); --btn-fg: #fff; --btn-bd: var(--pbn-accent); --btn-sweep: #fff; }
.pbn-section--ink .elementor-widget.pbn-btn-el .elementor-button:hover { color: var(--pbn-ink); border-color: #fff; }
.pbn-header__cta { box-shadow: 0 10px 24px -14px rgba(186, 25, 0, .7); }
.pbn-eyebrow:not(.elementor-widget)::before, .pbn-eyebrow .elementor-heading-title::before { background: var(--pbn-accent); opacity: 1; }
.pbn-section--ink .pbn-eyebrow:not(.elementor-widget)::before, .pbn-section--ink .pbn-eyebrow .elementor-heading-title::before { background: var(--pbn-accent-light); }
.pbn-topbar { background: var(--pbn-ink); color: #fff; }
.pbn-topbar .pbn-rating__stars { color: #ffcf6e; }
.pbn-topbar__eyebrow::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: .6rem; border-radius: 50%; background: var(--pbn-accent-light); vertical-align: 1px; }
.pbn-topbar .pbn-rating, .pbn-topbar .pbn-topbar__item { color: rgba(255, 255, 255, .92); }
.pbn-mbar { background: var(--pbn-ink); }
.pbn-mbar__book { background: var(--pbn-accent); }
::selection { background: var(--pbn-accent); color: #fff; }
.pbn-section--ink h1 em, .pbn-section--ink h2 em, .pbn-section--ink h3 em, .pbn-section--ink .elementor-heading-title em { color: var(--pbn-accent-light); }
.pbn-footer:has(.pbn-footer__grid--first) { padding-top: clamp(1rem, 2vw, 2rem); }

/* ----- Section header spacing (Elementor resets widget margins; restore the rhythm) ----- */
.e-con-inner > .elementor-widget-heading.pbn-h2:not(:last-child) { margin-block-end: clamp(1rem, .4rem + 1.6vw, 2.25rem) !important; }
.e-con-inner > .elementor-widget-heading.pbn-h2:has(+ .pbn-lede) { margin-block-end: 0 !important; }
.e-con-inner > .elementor-widget-text-editor.pbn-lede:not(:last-child) { margin-block-end: clamp(1rem, .4rem + 1.6vw, 2.25rem) !important; }
.e-con.pbn-split-head { margin-block-end: clamp(1.25rem, .6rem + 2vw, 2.75rem) !important; }
.pbn-split .e-con > .elementor-widget-heading.pbn-h2:not(:last-child) { margin-block-end: .25rem !important; }
.pbn-split .e-con > .elementor-widget-text-editor.pbn-lede:not(:last-child) { margin-block-end: .75rem !important; }
