/*
 * PrimeArc Pro — frontend stylesheet.
 *
 * Every colour, size and spacing value comes from the CSS custom properties
 * printed by inc/frontend/dynamic-css.php, which are generated from
 * PrimeArc Pro → Theme Settings. Nothing here is hardcoded to a brand colour.
 *
 * Contents
 *   1.  Reset & base
 *   2.  Layout primitives
 *   3.  Typography & headings
 *   4.  Buttons & links
 *   5.  Header, navigation & mobile menu
 *   6.  Hero slider
 *   7.  News bar
 *   8.  Cards & grids
 *   9.  Split sections & features
 *   10. Accordion
 *   11. Testimonials
 *   12. Services: vertical tabs & single service
 *   13. Contact & forms
 *   14. Legal, FAQ filter, pagination, 404
 *   15. Footer
 *   16. Utilities, motion & responsive
 *   17. Portfolio grid & image popup
 */

/* ==========================================================================
   1. Reset & base
   ========================================================================== */

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

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background-color: var(--pa-bg);
	color: var(--pa-body);
	font-family: var(--pa-font-body);
	font-size: var(--pa-fs-base);
	font-weight: var(--pa-weight-body);
	line-height: var(--pa-lh-body);
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/*
 * The hidden attribute must always win. Several components set their own
 * display value, which would otherwise beat the browser default of
 * [hidden] { display: none } and leave the element visible on screen.
 */
[hidden] { display: none !important; }

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

img { height: auto; display: block; }

figure { margin: 0; }

a {
	color: var(--pa-primary);
	text-decoration: none;
	transition: color .25s ease;
}

a:hover { color: var(--pa-accent); }

button { font: inherit; }

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

::selection {
	background: var(--pa-primary);
	color: #fff;
}

hr {
	border: 0;
	border-top: 1px solid var(--pa-border);
	margin: 2.5rem 0;
}

/* ==========================================================================
   2. Layout primitives
   ========================================================================== */

.pa-page {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.pa-main { flex: 1 0 auto; }

.pa-container {
	width: 100%;
	max-width: var(--pa-container);
	margin-inline: auto;
	padding-inline: 24px;
}

.pa-container--narrow { max-width: 900px; }

.pa-section {
	padding-block: var(--pa-section-y);
	position: relative;
}

.pa-section--tight { padding-block: calc(var(--pa-section-y) * .6); }

.pa-section--alt { background-color: var(--pa-surface); }

.pa-section--bg {
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	position: relative;
}

.pa-section--bg::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--pa-bg);
	opacity: .94;
}

.pa-section--bg > * { position: relative; }

.pa-section__actions {
	display: flex;
	justify-content: center;
	margin-top: 52px;
}

.pa-grid {
	display: grid;
	gap: 28px;
}

.pa-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pa-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pa-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* ==========================================================================
   3. Typography & headings
   ========================================================================== */

h1, h2, h3, h4, h5, h6 {
	margin: 0 0 .6em;
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-weight: var(--pa-weight-heading);
	line-height: 1.18;
	letter-spacing: var(--pa-heading-spacing);
}

h1 { font-size: var(--pa-fs-h1); }
h2 { font-size: var(--pa-fs-h2); }
h3 { font-size: var(--pa-fs-h3); }
h4 { font-size: var(--pa-fs-h4); }
h5 { font-size: calc(var(--pa-fs-h4) * .9); }
h6 { font-size: calc(var(--pa-fs-h4) * .82); }

p { margin: 0 0 1.15em; }
p:last-child { margin-bottom: 0; }

.pa-heading { margin-bottom: 56px; }
.pa-heading--center { text-align: center; max-width: 760px; margin-inline: auto; }
.pa-heading--left { text-align: left; max-width: 640px; }

.pa-heading__eyebrow {
	display: inline-block;
	margin-bottom: 18px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: var(--pa-eyebrow-transform);
	position: relative;
	padding-left: 34px;
}

.pa-heading__eyebrow::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 24px;
	height: 1px;
	background: var(--pa-accent);
}

.pa-heading--center .pa-heading__eyebrow { padding-left: 0; }

.pa-heading--center .pa-heading__eyebrow::before {
	position: static;
	display: block;
	margin: 0 auto 12px;
	width: 40px;
}

.pa-heading__title { margin-bottom: 0; }

.pa-heading__subtitle {
	margin-top: 20px;
	font-size: 1.03rem;
	color: var(--pa-body);
}

.pa-prose { color: var(--pa-body); }
.pa-prose > *:last-child { margin-bottom: 0; }
.pa-prose h2, .pa-prose h3, .pa-prose h4 { margin-top: 1.6em; }
.pa-prose ul, .pa-prose ol { padding-left: 1.3em; margin: 0 0 1.15em; }
.pa-prose li { margin-bottom: .5em; }
.pa-prose a { color: var(--pa-accent); text-decoration: underline; text-underline-offset: 3px; }
.pa-prose a:hover { color: var(--pa-primary); }
.pa-prose blockquote {
	margin: 1.8em 0;
	padding: 4px 0 4px 26px;
	border-left: 2px solid var(--pa-accent);
	font-size: 1.08em;
	color: var(--pa-heading);
}
.pa-prose img { margin: 1.6em 0; border-radius: var(--pa-card-radius); }
.pa-prose table { width: 100%; border-collapse: collapse; margin: 1.6em 0; }
.pa-prose th, .pa-prose td { padding: 12px 14px; border: 1px solid var(--pa-border); text-align: left; }
.pa-prose th { background: var(--pa-surface); color: var(--pa-heading); font-weight: 600; }
.pa-prose code { background: var(--pa-surface); padding: 2px 6px; font-size: .9em; }
.pa-prose pre { background: var(--pa-surface); padding: 18px; overflow-x: auto; }

.pa-prose--lead { font-size: 1.09rem; }

.pa-statement {
	font-size: clamp(26px, 3.2vw, calc(var(--pa-fs-h2) * .96));
	line-height: 1.28;
	margin-bottom: 28px;
}

.pa-section--statement { text-align: center; }
.pa-section--statement .pa-heading__eyebrow { padding-left: 0; }
.pa-section--statement .pa-heading__eyebrow::before {
	position: static;
	display: block;
	margin: 0 auto 12px;
	width: 40px;
}

.pa-intro {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	gap: 40px;
	align-items: start;
	padding-bottom: 8px;
}

.pa-intro__title { font-size: var(--pa-fs-h3); margin: 0; }
.pa-intro__text { margin: 0; }

/* ==========================================================================
   4. Buttons & links
   ========================================================================== */

.pa-btn {
	--pa-btn-current-bg: var(--pa-btn-bg);
	--pa-btn-current-text: var(--pa-btn-text);
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: var(--pa-btn-py) var(--pa-btn-px);
	border: 1px solid var(--pa-btn-current-bg);
	border-radius: var(--pa-btn-radius);
	background: var(--pa-btn-current-bg);
	color: var(--pa-btn-current-text);
	font-family: var(--pa-font-heading);
	font-size: var(--pa-btn-fs);
	font-weight: var(--pa-btn-fw);
	letter-spacing: var(--pa-btn-ls);
	line-height: 1.2;
	text-transform: var(--pa-btn-transform);
	text-align: center;
	cursor: pointer;
	overflow: hidden;
	transition: color .3s ease, background-color .3s ease, border-color .3s ease, transform .3s ease, box-shadow .3s ease;
}

.pa-btn > span,
.pa-btn > svg { position: relative; z-index: 1; }

.pa-btn::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--pa-btn-hover-bg);
	transform: translateX(-101%);
	transition: transform .38s cubic-bezier(.4, 0, .2, 1);
	z-index: 0;
}

.pa-btn:hover,
.pa-btn:focus-visible {
	color: var(--pa-btn-hover-ink);
	border-color: var(--pa-btn-hover-bg);
}

.pa-btn:hover::after,
.pa-btn:focus-visible::after { transform: translateX(0); }

.pa-btn--secondary {
	background: transparent;
	color: var(--pa-primary);
	border-color: var(--pa-primary);
}

.pa-btn--ghost {
	background: transparent;
	color: #fff;
	border-color: rgba(255, 255, 255, .55);
}

.pa-btn--ghost:hover { border-color: var(--pa-btn-hover-bg); }

.pa-btn--light {
	background: #fff;
	color: var(--pa-primary);
	border-color: #fff;
}

/*
 * Buttons on dark bands.
 *
 * The hero slider, the call-to-action sections and the highlighted contact
 * card all sit on the brand colour, where a brand-coloured button would
 * disappear. In those places the solid button inverts: a light fill with
 * brand-coloured text. Both colours come from Theme Settings > Colours.
 */
.pa-slide__actions .pa-btn--primary,
.pa-cta--dark .pa-btn--primary,
.pa-cta--image .pa-btn--primary,
.pa-cta--accent .pa-btn--primary,
.pa-aside__card--accent .pa-btn--primary {
	background: var(--pa-btn-dark-bg);
	color: var(--pa-btn-dark-text);
	border-color: var(--pa-btn-dark-bg);
}

/* On an accent-coloured band the usual hover would match the background, so
   these buttons sweep to the primary colour instead. */
.pa-cta--accent .pa-btn--primary::after,
.pa-aside__card--accent .pa-btn--primary::after { background: var(--pa-primary); }

/*
 * The inverted colours above share the specificity of .pa-btn:hover and sit
 * later in the file, so they would otherwise keep their dark text while the
 * background swept to a dark colour. These hover rules are one class more
 * specific and hand the text back to the contrast-checked hover ink.
 */
.pa-slide__actions .pa-btn--primary:hover,
.pa-slide__actions .pa-btn--primary:focus-visible,
.pa-cta--dark .pa-btn--primary:hover,
.pa-cta--dark .pa-btn--primary:focus-visible,
.pa-cta--image .pa-btn--primary:hover,
.pa-cta--image .pa-btn--primary:focus-visible {
	color: var(--pa-btn-hover-ink);
	border-color: var(--pa-btn-hover-bg);
}

/* These two sweep to the primary colour, so the text is checked against that. */
.pa-cta--accent .pa-btn--primary:hover,
.pa-cta--accent .pa-btn--primary:focus-visible,
.pa-aside__card--accent .pa-btn--primary:hover,
.pa-aside__card--accent .pa-btn--primary:focus-visible {
	color: var(--pa-btn-primary-ink);
	border-color: var(--pa-primary);
}

.pa-btn--block { display: flex; width: 100%; }

.pa-btn__icon { flex: 0 0 auto; }

.pa-link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	margin-top: 20px;
	color: var(--pa-primary);
	font-family: var(--pa-font-heading);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .09em;
	text-transform: uppercase;
}

.pa-link-arrow svg { transition: transform .3s ease; }
.pa-link-arrow:hover { color: var(--pa-accent); }
.pa-link-arrow:hover svg { transform: translateX(5px); }

.pa-stars { display: inline-flex; gap: 2px; color: var(--pa-accent); }
.pa-stars__off { opacity: .32; }

/* ==========================================================================
   5. Header, navigation & mobile menu
   ========================================================================== */

.pa-header {
	position: relative;
	z-index: 90;
	background: var(--pa-header-bg);
	border-bottom: 1px solid var(--pa-border);
}

.pa-header--sticky {
	position: sticky;
	top: 0;
}

.pa-header.is-scrolled { box-shadow: var(--pa-shadow-sm); }

.pa-topbar {
	background: var(--pa-primary);
	color: rgba(255, 255, 255, .82);
	font-size: 13px;
}

.pa-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	min-height: 42px;
	padding-block: 6px;
}

.pa-topbar__text { margin: 0; letter-spacing: .01em; }

.pa-topbar__meta {
	display: flex;
	align-items: center;
	gap: 22px;
	margin-left: auto;
}

.pa-topbar__link {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: inherit;
	white-space: nowrap;
}

.pa-topbar__link:hover { color: #fff; }

.pa-header__bar { background: var(--pa-header-bg); }

.pa-header__inner {
	display: flex;
	align-items: center;
	gap: 32px;
	min-height: var(--pa-header-h);
	transition: min-height .3s ease;
}

.pa-header.is-scrolled .pa-header__inner { min-height: var(--pa-header-h-scrolled); }

.pa-header__brand { flex: 0 0 auto; margin-right: auto; }

.pa-logo { display: inline-flex; align-items: center; }

.pa-logo__img { margin-top:10px; width: var(--pa-logo-w); height: auto; }
.pa-logo__img--mobile { display: none; }

.pa-logo .custom-logo { width: var(--pa-logo-w); height: auto; }

.pa-logo__text {
	display: inline-flex;
	align-items: baseline;
	gap: 8px;
	font-family: var(--pa-font-heading);
	line-height: 1;
}

.pa-logo__text-main {
	color: var(--pa-heading);
	font-size: 26px;
	font-weight: 700;
	letter-spacing: -.01em;
}

.pa-logo__text-accent {
	color: var(--pa-accent);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.pa-nav { display: flex; }

.pa-nav__list {
	display: flex;
	align-items: center;
	gap: var(--pa-nav-gap);
	margin: 0;
	padding: 0;
	list-style: none;
}

.pa-nav__item { position: relative; }

.pa-nav__link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 10px 0;
	color: var(--pa-nav-color);
	font-family: var(--pa-font-heading);
	font-size: var(--pa-nav-fs);
	font-weight: 500;
	letter-spacing: .01em;
	text-transform: var(--pa-nav-transform);
	position: relative;
}

.pa-nav__link::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 4px;
	width: 0;
	height: 1px;
	background: var(--pa-nav-hover);
	transition: width .3s ease;
}

.pa-nav__item:hover > .pa-nav__link,
.pa-nav__link:focus-visible { color: var(--pa-nav-hover); }

.pa-nav__item:hover > .pa-nav__link::after { width: 100%; }

.pa-nav__item.is-current > .pa-nav__link { color: var(--pa-nav-active); }
.pa-nav__item.is-current > .pa-nav__link::after { width: 100%; background: var(--pa-nav-active); }

.pa-nav__chevron { transition: transform .3s ease; }
.pa-nav__item:hover > .pa-nav__link .pa-nav__chevron { transform: rotate(180deg); }

.pa-nav__expand { display: none; }

.pa-nav__submenu {
	position: absolute;
	top: calc(100% + 6px);
	left: -18px;
	min-width: 240px;
	margin: 0;
	padding: 10px 0;
	list-style: none;
	background: var(--pa-dropdown-bg);
	border: 1px solid var(--pa-border);
	box-shadow: var(--pa-shadow);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .25s ease, transform .25s ease, visibility .25s;
	z-index: 20;
}

.pa-nav__item:hover > .pa-nav__submenu,
.pa-nav__item:focus-within > .pa-nav__submenu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.pa-nav__submenu .pa-nav__link {
	display: flex;
	justify-content: space-between;
	width: 100%;
	padding: 9px 20px;
	color: var(--pa-dropdown-text);
	font-size: 14.5px;
}

.pa-nav__submenu .pa-nav__link::after { display: none; }
.pa-nav__submenu .pa-nav__link:hover { background: var(--pa-surface); color: var(--pa-nav-hover); }

.pa-nav__submenu .pa-nav__submenu { top: -10px; left: 100%; }

.pa-header__actions {
	display: flex;
	align-items: center;
	gap: 16px;
	flex: 0 0 auto;
	margin-left: auto;
}

.pa-btn--header { padding: 13px 26px; font-size: 13px; }

/* Hamburger — always right aligned, hidden on desktop. */
.pa-burger {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 46px;
	height: 46px;
	padding: 0 10px;
	margin-left: auto;
	background: transparent;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-btn-radius);
	cursor: pointer;
}

.pa-burger__bar {
	display: block;
	height: 1.5px;
	width: 100%;
	background: var(--pa-nav-color);
	transition: transform .3s ease, opacity .25s ease;
}

.pa-burger.is-open .pa-burger__bar:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.pa-burger.is-open .pa-burger__bar:nth-child(2) { opacity: 0; }
.pa-burger.is-open .pa-burger__bar:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

.pa-mobile-overlay {
	position: fixed;
	inset: 0;
	background: rgba(10, 20, 30, .5);
	backdrop-filter: blur(2px);
	opacity: 0;
	transition: opacity .3s ease;
	z-index: 95;
}

.pa-mobile-overlay.is-visible { opacity: 1; }

.pa-mobile-nav {
	position: fixed;
	top: 0;
	right: 0;
	width: min(380px, 88vw);
	height: 100%;
	padding: 22px 26px 40px;
	background: var(--pa-bg);
	border-left: 1px solid var(--pa-border);
	overflow-y: auto;
	overscroll-behavior: contain;
	transform: translateX(100%);
	transition: transform .35s cubic-bezier(.4, 0, .2, 1);
	z-index: 100;
}

.pa-mobile-nav.is-open { transform: translateX(0); }

.pa-mobile-nav__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding-bottom: 18px;
	margin-bottom: 12px;
	border-bottom: 1px solid var(--pa-border);
}

.pa-mobile-nav__title {
	font-family: var(--pa-font-heading);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--pa-accent);
}

.pa-mobile-nav__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	background: transparent;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-btn-radius);
	color: var(--pa-heading);
	cursor: pointer;
	transition: background-color .25s ease, color .25s ease;
}

.pa-mobile-nav__close:hover { background: var(--pa-surface); color: var(--pa-accent); }

.pa-mobile-nav__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.pa-mobile-nav__list .pa-nav__item {
	border-bottom: 1px solid var(--pa-border);
	position: relative;
}

.pa-mobile-nav__list .pa-nav__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 15px 44px 15px 0;
	font-size: 16px;
	font-weight: 500;
}

.pa-mobile-nav__list .pa-nav__link::after { display: none; }
.pa-mobile-nav__list .pa-nav__chevron { display: none; }

.pa-mobile-nav__list .pa-nav__expand {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	position: absolute;
	top: 6px;
	right: 0;
	width: 40px;
	height: 40px;
	background: transparent;
	border: 0;
	color: var(--pa-body);
	cursor: pointer;
	transition: transform .3s ease;
}

.pa-mobile-nav__list .pa-nav__expand[aria-expanded="true"] { transform: rotate(180deg); color: var(--pa-accent); }

.pa-mobile-nav__list .pa-nav__submenu {
	position: static;
	opacity: 1;
	visibility: visible;
	transform: none;
	box-shadow: none;
	border: 0;
	border-top: 1px solid var(--pa-border);
	background: var(--pa-surface);
	padding: 4px 0;
	margin: 0 0 12px;
	display: none;
}

.pa-mobile-nav__list .pa-nav__item.is-expanded > .pa-nav__submenu { display: block; }

.pa-mobile-nav__list .pa-nav__submenu .pa-nav__link { padding: 11px 16px; font-size: 15px; }

.pa-mobile-nav__cta { margin-top: 26px; }

.pa-mobile-nav__divider {
	height: 1px;
	background: var(--pa-border);
	margin: 28px 0 22px;
}

.pa-mobile-nav__divider--legal { margin: 22px 0 18px; }

.pa-mobile-nav__socials {
	display: flex;
	justify-content: center;
}

.pa-mobile-nav__socials .pa-socials { justify-content: center; gap: 14px; }

.pa-mobile-nav__legal {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	text-align: center;
}

.pa-mobile-nav__legal-link {
	display: block;
	width: 100%;
	padding: 12px 8px;
	color: var(--pa-body);
	font-size: 14px;
	letter-spacing: .02em;
	transition: color .25s ease, background-color .25s ease;
}

.pa-mobile-nav__legal-link:hover {
	color: var(--pa-accent);
	background: var(--pa-surface);
}

/* Social icons */
.pa-socials {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pa-socials__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: inherit;
	transition: color .25s ease, background-color .25s ease, border-color .25s ease, transform .25s ease;
}

.pa-socials--plain .pa-socials__link { width: 26px; height: 26px; }
.pa-socials--plain .pa-socials__link:hover { color: #fff; transform: translateY(-1px); }

.pa-socials--circle .pa-socials__link,
.pa-socials--square .pa-socials__link {
	width: 42px;
	height: 42px;
	border: 1px solid var(--pa-border);
	color: var(--pa-heading);
}

.pa-socials--circle .pa-socials__link { border-radius: 50%; }
.pa-socials--square .pa-socials__link { border-radius: var(--pa-card-radius); }

.pa-socials--circle .pa-socials__link:hover,
.pa-socials--square .pa-socials__link:hover {
	background: var(--pa-accent);
	border-color: var(--pa-accent);
	color: #fff;
}

.pa-socials--footer .pa-socials__link {
	border-color: rgba(255, 255, 255, .18);
	color: var(--pa-footer-text);
}

/* ==========================================================================
   6. Hero slider
   ========================================================================== */

.pa-slider {
	position: relative;
	height: var(--pa-slider-h);
	overflow: hidden;
	background: var(--pa-primary);
}

.pa-slider__track { position: relative; height: 100%; }

.pa-slide {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity .9s ease, visibility .9s;
}

.pa-slide.is-active { opacity: 1; visibility: visible; z-index: 2; }

.pa-slider--slide .pa-slide { transform: translateX(40px); transition: opacity .9s ease, transform .9s ease, visibility .9s; }
.pa-slider--slide .pa-slide.is-active { transform: translateX(0); }

.pa-slider--rise .pa-slide { transform: translateY(30px); transition: opacity .9s ease, transform .9s ease, visibility .9s; }
.pa-slider--rise .pa-slide.is-active { transform: translateY(0); }

.pa-slide__media {
	position: absolute;
	inset: 0;
	overflow: hidden;
}

.pa-slide__media img,
.pa-slide__media picture {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.pa-slide__media--plain {
	background: linear-gradient(140deg, var(--pa-primary) 0%, var(--pa-secondary) 100%);
}

.pa-slider--zoom .pa-slide.is-active .pa-slide__media img {
	animation: pa-kenburns 14s ease-out forwards;
}

@keyframes pa-kenburns {
	from { transform: scale(1); }
	to { transform: scale(1.08); }
}

.pa-slide__overlay { position: absolute; inset: 0; }

.pa-slide__inner {
	position: relative;
	z-index: 3;
	width: 100%;
}

.pa-slide__content {
	max-width: 680px;
	color: #fff;
}

.pa-slide--center .pa-slide__content { margin-inline: auto; text-align: center; }
.pa-slide--right .pa-slide__content { margin-left: auto; text-align: right; }

.pa-slide__eyebrow {
	display: inline-block;
	margin-bottom: 22px;
	padding: 8px 16px;
	border: 1px solid rgba(255, 255, 255, .35);
	color: #fff;
	font-family: var(--pa-font-heading);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .2em;
	text-transform: uppercase;
	backdrop-filter: blur(3px);
}

.pa-slide__title {
	margin: 0 0 22px;
	color: #fff;
	font-family: var(--pa-font-heading);
	font-size: clamp(32px, 5vw, var(--pa-fs-h1));
	font-weight: var(--pa-weight-heading);
	line-height: 1.1;
	letter-spacing: var(--pa-heading-spacing);
}

.pa-slide__text {
	margin: 0 0 34px;
	color: rgba(255, 255, 255, .88);
	font-size: 1.06rem;
	max-width: 580px;
}

.pa-slide--center .pa-slide__text { margin-inline: auto; }
.pa-slide--right .pa-slide__text { margin-left: auto; }

.pa-slide__actions { display: flex; flex-wrap: wrap; gap: 14px; }
.pa-slide--center .pa-slide__actions { justify-content: center; }
.pa-slide--right .pa-slide__actions { justify-content: flex-end; }

.pa-slider__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 5;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	background: rgba(255, 255, 255, .1);
	border: 1px solid rgba(255, 255, 255, .32);
	color: #fff;
	cursor: pointer;
	backdrop-filter: blur(4px);
	transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}

.pa-slider__arrow:hover {
	background: var(--pa-accent);
	border-color: var(--pa-accent);
}

.pa-slider__arrow--prev { left: 26px; }
.pa-slider__arrow--next { right: 26px; }

.pa-slider__dots {
	position: absolute;
	left: 50%;
	bottom: 30px;
	transform: translateX(-50%);
	z-index: 5;
	display: flex;
	gap: 12px;
}

.pa-slider__dot {
	width: 34px;
	height: 3px;
	padding: 0;
	background: rgba(255, 255, 255, .34);
	border: 0;
	cursor: pointer;
	overflow: hidden;
}

.pa-slider__dot-fill {
	display: block;
	width: 0;
	height: 100%;
	background: var(--pa-accent);
	transition: width .3s ease;
}

.pa-slider__dot.is-active .pa-slider__dot-fill { width: 100%; }

/* ==========================================================================
   7. News bar
   ========================================================================== */

.pa-newsbar {
	display: flex;
	align-items: stretch;
	background: var(--pa-newsbar-bg);
	color: var(--pa-newsbar-text);
	overflow: hidden;
	position: relative;
	z-index: 5;
}

.pa-newsbar__label {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	padding: 0 26px;
	background: var(--pa-newsbar-label-bg);
	color: var(--pa-newsbar-label-text);
	font-family: var(--pa-font-heading);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	white-space: nowrap;
}

.pa-newsbar__viewport {
	flex: 1 1 auto;
	overflow: hidden;
	position: relative;
}

.pa-newsbar__track {
	display: flex;
	width: max-content;
	animation: pa-marquee var(--pa-newsbar-duration) linear infinite;
}

.pa-newsbar__track--right { animation-direction: reverse; }

.pa-newsbar--pause:hover .pa-newsbar__track { animation-play-state: paused; }

@keyframes pa-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}

.pa-newsbar__list {
	display: flex;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pa-newsbar__item {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	padding: 14px 0;
	margin-right: 42px;
	font-size: 14px;
	white-space: nowrap;
}

.pa-newsbar__dot {
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: var(--pa-newsbar-label-bg);
	flex: 0 0 auto;
}

.pa-newsbar__link { color: inherit; }
.pa-newsbar__link:hover { color: var(--pa-accent-on-dark); }

/* ==========================================================================
   8. Cards & grids
   ========================================================================== */

.pa-cat {
	position: relative;
	display: flex;
	background: var(--pa-bg);
	border-radius: var(--pa-card-radius);
	overflow: hidden;
	transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}

.pa-cats--bordered .pa-cat { border: 1px solid var(--pa-border); }
.pa-cats--filled .pa-cat { background: var(--pa-surface); border: 1px solid transparent; }

.pa-cats--image .pa-cat {
	background-size: cover;
	background-position: center;
	min-height: 340px;
	color: #fff;
	align-items: flex-end;
}

.pa-cat__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(18, 38, 30, .1) 0%, rgba(18, 38, 30, .82) 100%);
}

.pa-cat__body {
	position: relative;
	padding: 38px 34px;
	width: 100%;
}

.pa-cat:hover {
	transform: translateY(-4px);
	box-shadow: var(--pa-shadow);
}

.pa-cats--bordered .pa-cat:hover { border-color: var(--pa-accent); }

.pa-cat__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 62px;
	height: 62px;
	margin-bottom: 24px;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	color: var(--pa-accent);
	transition: background-color .3s ease, color .3s ease, border-color .3s ease;
}

.pa-cat:hover .pa-cat__icon {
	background: var(--pa-accent);
	border-color: var(--pa-accent);
	color: #fff;
}

.pa-cats--image .pa-cat__icon { border-color: rgba(255, 255, 255, .4); color: #fff; }

.pa-cat__title { font-size: var(--pa-fs-h3); margin-bottom: 14px; }
.pa-cat__title a { color: inherit; }
.pa-cats--image .pa-cat__title { color: #fff; }

.pa-cat__text { margin: 0; }
.pa-cats--image .pa-cat__text { color: rgba(255, 255, 255, .85); }
.pa-cats--image .pa-link-arrow { color: #fff; }

/* Service card */
.pa-service-card {
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	overflow: hidden;
	transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
	height: 100%;
}

.pa-service-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--pa-shadow);
	border-color: var(--pa-accent);
}

.pa-service-card__link { display: flex; flex-direction: column; height: 100%; color: inherit; }

.pa-service-card__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--pa-surface);
}

.pa-service-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .6s cubic-bezier(.2, .8, .3, 1);
}

.pa-service-card:hover .pa-service-card__media img { transform: scale(1.05); }

.pa-service-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 30px 30px 32px;
}

.pa-service-card__icon {
	display: inline-flex;
	color: var(--pa-accent);
	margin-bottom: 16px;
}

.pa-service-card__category {
	display: block;
	margin-bottom: 10px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.pa-service-card__title {
	font-size: calc(var(--pa-fs-h3) * .86);
	margin-bottom: 12px;
	color: var(--pa-heading);
	transition: color .25s ease;
}

.pa-service-card:hover .pa-service-card__title { color: var(--pa-accent); }

.pa-service-card__text { margin: 0 0 22px; font-size: .96rem; }

.pa-service-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	color: var(--pa-primary);
	font-family: var(--pa-font-heading);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.pa-service-card__cta svg { transition: transform .3s ease; }
.pa-service-card:hover .pa-service-card__cta { color: var(--pa-accent); }
.pa-service-card:hover .pa-service-card__cta svg { transform: translateX(5px); }

/* Why / values / disciplines */
.pa-why__item { padding: 4px 0; }

.pa-why--bordered .pa-why__item,
.pa-why--filled .pa-why__item {
	padding: 34px 32px;
	border-radius: var(--pa-card-radius);
	transition: transform .35s ease, box-shadow .35s ease;
}

.pa-why--bordered .pa-why__item { border: 1px solid var(--pa-border); background: var(--pa-bg); }
.pa-why--filled .pa-why__item { background: var(--pa-surface); }

.pa-why--bordered .pa-why__item:hover,
.pa-why--filled .pa-why__item:hover { transform: translateY(-3px); box-shadow: var(--pa-shadow); }

.pa-why__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	margin-bottom: 20px;
	color: var(--pa-accent);
	background: var(--pa-accent-12);
	border-radius: var(--pa-card-radius);
}

.pa-why__title { font-size: calc(var(--pa-fs-h3) * .8); margin-bottom: 12px; }
.pa-why__title a { color: inherit; }
.pa-why__title a:hover { color: var(--pa-accent); }
.pa-why__text { margin: 0; font-size: .97rem; }

.pa-value {
	padding: 32px 30px;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	border-top: 2px solid var(--pa-accent);
	transition: transform .35s ease, box-shadow .35s ease;
}

.pa-value:hover { transform: translateY(-3px); box-shadow: var(--pa-shadow); }
.pa-value__icon { display: inline-flex; color: var(--pa-accent); margin-bottom: 16px; }
.pa-value__title { font-size: calc(var(--pa-fs-h3) * .8); margin-bottom: 10px; }
.pa-value__text { margin: 0; font-size: .96rem; }

.pa-discipline {
	display: flex;
	flex-direction: column;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	overflow: hidden;
	height: 100%;
	transition: transform .35s ease, box-shadow .35s ease;
}

.pa-discipline:hover { transform: translateY(-4px); box-shadow: var(--pa-shadow); }

.pa-discipline__media { aspect-ratio: 4 / 3; overflow: hidden; background: var(--pa-surface); }
.pa-discipline__media img { width: 100%; height: 100%; object-fit: cover; }
.pa-discipline__body { padding: 32px 30px; }
.pa-discipline__icon { display: inline-flex; color: var(--pa-accent); margin-bottom: 16px; }
.pa-discipline__title { font-size: calc(var(--pa-fs-h3) * .84); margin-bottom: 12px; }
.pa-discipline__text { margin: 0; font-size: .97rem; }

/* Numbered steps */
.pa-steps {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 28px;
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: pa-step;
}

.pa-steps__item {
	position: relative;
	padding: 34px 28px;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
}

.pa-steps__number {
	display: block;
	margin-bottom: 16px;
	color: var(--pa-accent-25);
	font-family: var(--pa-font-heading);
	font-size: 40px;
	font-weight: 700;
	line-height: 1;
}

.pa-steps__icon { display: inline-flex; color: var(--pa-accent); margin-bottom: 14px; }
.pa-steps__title { font-size: calc(var(--pa-fs-h3) * .78); margin-bottom: 10px; }
.pa-steps__text { margin: 0; font-size: .95rem; }

/* ==========================================================================
   9. Split sections & features
   ========================================================================== */

.pa-split {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 70px;
	align-items: center;
}

.pa-split--reverse .pa-split__media { order: 2; }
.pa-split--no-media { grid-template-columns: minmax(0, 1fr); max-width: 860px; }

.pa-split__media { position: relative; }

.pa-split__image {
	position: relative;
	overflow: hidden;
	border-radius: var(--pa-card-radius);
	z-index: 2;
}

.pa-split__image img { width: 100%; height: auto; display: block; }

.pa-split__image--secondary {
	position: absolute;
	right: -32px;
	bottom: -42px;
	width: 46%;
	border: 8px solid var(--pa-bg);
	z-index: 3;
}

.pa-split__accent {
	position: absolute;
	left: -22px;
	top: -22px;
	width: 46%;
	height: 46%;
	border: 1px solid var(--pa-accent);
	z-index: 1;
}

.pa-split--reverse .pa-split__accent { left: auto; right: -22px; }
.pa-split--reverse .pa-split__image--secondary { right: auto; left: -32px; }

.pa-split__content .pa-heading { margin-bottom: 26px; }

.pa-split__actions { margin-top: 34px; }

.pa-features {
	margin: 30px 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 16px;
}

.pa-features__item {
	display: flex;
	align-items: flex-start;
	gap: 14px;
}

.pa-features__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	color: var(--pa-accent);
	background: var(--pa-accent-12);
	border-radius: var(--pa-card-radius);
}

.pa-features__text { font-size: .98rem; padding-top: 4px; }

.pa-stats-row {
	display: flex;
	flex-wrap: wrap;
	gap: 44px;
	margin: 36px 0 0;
	padding: 28px 0 0;
	border-top: 1px solid var(--pa-border);
	list-style: none;
}

.pa-stats-row__value {
	display: block;
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 40px;
	font-weight: 700;
	line-height: 1.1;
}

.pa-stats-row__label {
	display: block;
	margin-top: 6px;
	font-size: .88rem;
	letter-spacing: .04em;
}

/* CTA band */
.pa-cta {
	padding-block: calc(var(--pa-section-y) * .8);
	background-color: var(--pa-primary);
	background-size: cover;
	background-position: center;
	position: relative;
	color: #fff;
}

.pa-cta--image::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--pa-primary-90);
}

.pa-cta--light { background-color: var(--pa-surface); color: var(--pa-body); }
.pa-cta--accent { background-color: var(--pa-accent); color: #fff; }

.pa-cta > * { position: relative; }

.pa-cta__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 48px;
}

.pa-cta__content { max-width: 660px; }

.pa-cta__eyebrow {
	display: inline-block;
	margin-bottom: 14px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
}

.pa-cta--accent .pa-cta__eyebrow { color: rgba(255, 255, 255, .85); }
.pa-cta--light .pa-cta__eyebrow { color: var(--pa-accent-ink); }
.pa-cta--dark .pa-cta__eyebrow { color: var(--pa-accent-on-dark); }

.pa-cta__title {
	margin: 0 0 14px;
	color: inherit;
	font-size: clamp(26px, 3.4vw, calc(var(--pa-fs-h2) * .92));
}

.pa-cta--dark .pa-cta__title,
.pa-cta--accent .pa-cta__title { color: #fff; }

.pa-cta__text { margin: 0; opacity: .88; }

.pa-cta__actions { display: flex; flex-wrap: wrap; gap: 14px; flex: 0 0 auto; }

.pa-cta--light .pa-btn--ghost { color: var(--pa-primary); border-color: var(--pa-primary); }
.pa-cta--light .pa-btn--ghost:hover,
.pa-cta--light .pa-btn--ghost:focus-visible { color: var(--pa-btn-hover-ink); border-color: var(--pa-btn-hover-bg); }

/* ==========================================================================
   10. Accordion
   ========================================================================== */

.pa-accordion { border-top: 1px solid var(--pa-border); }

.pa-accordion__item { border-bottom: 1px solid var(--pa-border); }

.pa-accordion__heading { margin: 0; font-size: inherit; }

.pa-accordion__trigger {
	display: flex;
	align-items: center;
	gap: 18px;
	width: 100%;
	padding: 24px 4px;
	background: transparent;
	border: 0;
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: calc(var(--pa-fs-h4) * .96);
	font-weight: 600;
	line-height: 1.4;
	text-align: left;
	cursor: pointer;
	transition: color .25s ease;
}

.pa-accordion__trigger:hover { color: var(--pa-accent); }

.pa-accordion__number {
	flex: 0 0 auto;
	color: var(--pa-accent);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .1em;
	padding-top: 3px;
}

.pa-accordion__title { flex: 1 1 auto; }

.pa-accordion__indicator {
	position: relative;
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	color: var(--pa-accent);
	transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}

.pa-accordion__minus { display: none; }

.pa-accordion__item.is-open .pa-accordion__indicator {
	background: var(--pa-accent);
	border-color: var(--pa-accent);
	color: #fff;
}

.pa-accordion__item.is-open .pa-accordion__plus { display: none; }
.pa-accordion__item.is-open .pa-accordion__minus { display: block; }
.pa-accordion__item.is-open .pa-accordion__trigger { color: var(--pa-accent); }

.pa-accordion__panel { overflow: hidden; }

.pa-accordion__content {
	padding: 0 60px 28px 4px;
	color: var(--pa-body);
}

.pa-accordion--numbered .pa-accordion__content { padding-left: 44px; }

.pa-accordion--legal .pa-accordion__trigger { padding-block: 22px; }

/* ==========================================================================
   11. Testimonials
   ========================================================================== */

.pa-quote {
	display: flex;
	flex-direction: column;
	padding: 38px 34px 34px;
	margin: 0;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	height: 100%;
}

.pa-quote__mark { color: var(--pa-accent-25); margin-bottom: 14px; }

.pa-quote .pa-stars { margin-bottom: 16px; }

.pa-quote__text { margin: 0 0 26px; font-size: 1rem; color: var(--pa-body); }
.pa-quote__text p { margin: 0; }

.pa-quote__author {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: auto;
	padding-top: 22px;
	border-top: 1px solid var(--pa-border);
}

.pa-quote__avatar {
	flex: 0 0 auto;
	width: 52px;
	height: 52px;
	border-radius: 50%;
	overflow: hidden;
	background: var(--pa-accent-12);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.pa-quote__avatar img { width: 100%; height: 100%; object-fit: cover; }

.pa-quote__initials {
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 16px;
	font-weight: 700;
	letter-spacing: .04em;
}

.pa-quote__identity { display: flex; flex-direction: column; gap: 3px; }

.pa-quote__name {
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 15px;
	font-weight: 600;
}

.pa-quote__meta { font-size: 13px; opacity: .82; }

.pa-tslider { position: relative; }
.pa-tslider__viewport { overflow: hidden; }

.pa-tslider__track {
	display: flex;
	gap: 28px;
	transition: transform .55s cubic-bezier(.4, 0, .2, 1);
	will-change: transform;
}

.pa-tslider__slide { flex: 0 0 calc((100% - 56px) / 3); }

.pa-tslider__controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 20px;
	margin-top: 40px;
}

.pa-tslider__arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	background: transparent;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	color: var(--pa-heading);
	cursor: pointer;
	transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}

.pa-tslider__arrow:hover:not(:disabled) {
	background: var(--pa-accent);
	border-color: var(--pa-accent);
	color: #fff;
}

.pa-tslider__arrow:disabled { opacity: .35; cursor: default; }

.pa-tslider__dots { display: flex; gap: 8px; }

.pa-tslider__dot {
	width: 26px;
	height: 3px;
	padding: 0;
	border: 0;
	background: var(--pa-border);
	cursor: pointer;
	transition: background-color .25s ease;
}

.pa-tslider__dot.is-active { background: var(--pa-accent); }

/* ==========================================================================
   12. Services: vertical tabs & single service
   ========================================================================== */

.pa-vtabs {
	display: grid;
	grid-template-columns: minmax(280px, 340px) minmax(0, 1fr);
	gap: 48px;
	align-items: start;
}

.pa-vtabs__nav {
	position: sticky;
	top: calc(var(--pa-header-h-scrolled) + 24px);
	display: flex;
	flex-direction: column;
	gap: 30px;
}

.pa-vtabs__group-title {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 12px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--pa-border);
	color: var(--pa-accent);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.pa-vtabs__group-list { display: flex; flex-direction: column; }

.pa-vtabs__tab {
	display: flex;
	align-items: center;
	gap: 12px;
	width: 100%;
	padding: 15px 16px;
	background: transparent;
	border: 0;
	border-left: 2px solid transparent;
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 15.5px;
	font-weight: 500;
	text-align: left;
	cursor: pointer;
	transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}

.pa-vtabs__tab:hover { background: var(--pa-surface); color: var(--pa-accent); }

.pa-vtabs__tab.is-active {
	background: var(--pa-surface);
	border-left-color: var(--pa-accent);
	color: var(--pa-accent);
	font-weight: 600;
}

.pa-vtabs__tab-icon { display: inline-flex; flex: 0 0 auto; color: var(--pa-accent); }
.pa-vtabs__tab-label { flex: 1 1 auto; }

.pa-vtabs__tab-arrow {
	flex: 0 0 auto;
	opacity: 0;
	transform: translateX(-4px);
	transition: opacity .25s ease, transform .25s ease;
}

.pa-vtabs__tab.is-active .pa-vtabs__tab-arrow { opacity: 1; transform: translateX(0); }

.pa-vtabs__panel { display: none; }
.pa-vtabs__panel.is-active { display: block; animation: pa-fade-up .45s ease both; }

@keyframes pa-fade-up {
	from { opacity: 0; transform: translateY(12px); }
	to { opacity: 1; transform: translateY(0); }
}

.pa-vtabs__mobile-head { display: none; }

.pa-vtabs__panel-body {
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	overflow: hidden;
}

.pa-vtabs__media { aspect-ratio: 21 / 9; overflow: hidden; background: var(--pa-surface); }
.pa-vtabs__media img { width: 100%; height: 100%; object-fit: cover; }

.pa-vtabs__content { padding: 40px 42px 44px; }

.pa-vtabs__eyebrow {
	display: inline-block;
	margin-bottom: 12px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.pa-vtabs__title { font-size: var(--pa-fs-h3); margin-bottom: 14px; }
.pa-vtabs__lead { font-size: 1.03rem; color: var(--pa-heading); margin-bottom: 14px; }
.pa-vtabs__text { margin-bottom: 26px; }

.pa-vtabs__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px 26px;
	margin: 0 0 30px;
	padding: 0;
	list-style: none;
}

.pa-vtabs__list li { display: flex; align-items: flex-start; gap: 10px; font-size: .95rem; }
.pa-vtabs__check { color: var(--pa-accent); flex: 0 0 auto; margin-top: 4px; }

/* Single service */
.pa-service-hero {
	position: relative;
	padding-block: calc(var(--pa-section-y) * .72);
	background-color: var(--pa-surface);
	background-size: cover;
	background-position: center;
}

.pa-service-hero--image { color: #fff; }

.pa-service-hero--image::before {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(120deg, var(--pa-primary-90) 20%, rgba(18, 38, 30, .68) 100%);
}

.pa-service-hero > * { position: relative; }

.pa-service-hero__inner { max-width: 780px; }

.pa-service-hero__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 70px;
	height: 70px;
	margin-bottom: 22px;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	color: var(--pa-accent);
}

.pa-service-hero--image .pa-service-hero__icon { border-color: rgba(255, 255, 255, .3); background: rgba(255, 255, 255, .08); color: var(--pa-accent-on-dark); }
.pa-service-hero--image .pa-service-hero__category { color: var(--pa-accent-on-dark); }

.pa-service-hero__category {
	display: inline-block;
	margin-bottom: 16px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.pa-service-hero__title { margin-bottom: 18px; font-size: clamp(30px, 4.4vw, calc(var(--pa-fs-h1) * .86)); }
.pa-service-hero--image .pa-service-hero__title { color: #fff; }

.pa-service-hero__lead { margin: 0; font-size: 1.08rem; }
.pa-service-hero--image .pa-service-hero__lead { color: rgba(255, 255, 255, .9); }

.pa-service-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: 60px;
	align-items: start;
}

.pa-service-layout--full { grid-template-columns: minmax(0, 1fr); max-width: 900px; }

.pa-service-intro { font-size: 1.1rem; color: var(--pa-heading); margin-bottom: 42px; }

.pa-service-block { margin-bottom: 54px; }
.pa-service-block:last-child { margin-bottom: 0; }

.pa-service-block__title {
	position: relative;
	margin-bottom: 26px;
	padding-bottom: 14px;
	font-size: calc(var(--pa-fs-h3) * .96);
}

.pa-service-block__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 44px;
	height: 2px;
	background: var(--pa-accent);
}

.pa-caps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px 34px; }

.pa-caps__item { display: flex; gap: 14px; }

.pa-caps__marker {
	flex: 0 0 auto;
	width: 8px;
	height: 8px;
	margin-top: 9px;
	border: 1px solid var(--pa-accent);
	transform: rotate(45deg);
}

.pa-caps__title { font-size: 1.02rem; margin-bottom: 6px; }
.pa-caps__text { margin: 0; font-size: .94rem; }

.pa-process { margin: 0; padding: 0; list-style: none; }

.pa-process__step {
	display: flex;
	gap: 24px;
	padding-bottom: 30px;
	position: relative;
}

.pa-process__step:not(:last-child)::before {
	content: "";
	position: absolute;
	left: 21px;
	top: 46px;
	bottom: 0;
	width: 1px;
	background: var(--pa-border);
}

.pa-process__number {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	background: var(--pa-surface);
	border: 1px solid var(--pa-border);
	border-radius: 50%;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 13px;
	font-weight: 700;
}

.pa-process__title { font-size: 1.05rem; margin-bottom: 8px; padding-top: 10px; }
.pa-process__text { margin: 0; font-size: .96rem; }

.pa-checklist-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px 30px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pa-checklist-grid li { display: flex; align-items: flex-start; gap: 11px; font-size: .97rem; }
.pa-checklist-grid__icon { color: var(--pa-accent); flex: 0 0 auto; margin-top: 4px; }

.pa-benefits { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }

.pa-benefits__item {
	padding: 26px 26px 28px;
	background: var(--pa-surface);
	border-radius: var(--pa-card-radius);
	border-left: 2px solid var(--pa-accent);
}

.pa-benefits__title { font-size: 1.02rem; margin-bottom: 8px; }
.pa-benefits__text { margin: 0; font-size: .94rem; }

.pa-gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.pa-gallery-grid__item { margin: 0; overflow: hidden; border-radius: var(--pa-card-radius); }
.pa-gallery-grid img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4 / 3; transition: transform .5s ease; }
.pa-gallery-grid__item:hover img { transform: scale(1.05); }

/* Sidebar */
.pa-aside { display: flex; flex-direction: column; gap: 22px; position: sticky; top: calc(var(--pa-header-h-scrolled) + 24px); }

.pa-aside__card {
	padding: 32px 30px;
	background: var(--pa-surface);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
}

.pa-aside__card--accent { background: var(--pa-primary); color: rgba(255, 255, 255, .86); border-color: transparent; }
.pa-aside__card--accent .pa-aside__title { color: #fff; }

.pa-aside__badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	margin-bottom: 16px;
	background: rgba(255, 255, 255, .12);
	border-radius: var(--pa-card-radius);
	color: #fff;
}

.pa-aside__title {
	display: flex;
	align-items: center;
	gap: 9px;
	font-size: calc(var(--pa-fs-h4) * .95);
	margin-bottom: 12px;
}

.pa-aside__title-icon { color: var(--pa-accent); }
.pa-aside__card--accent .pa-aside__title-icon { color: var(--pa-accent-on-dark); }
.pa-aside__text { margin: 0 0 20px; font-size: .95rem; }
.pa-aside__note { margin: 16px 0 0; font-size: .85rem; opacity: .8; }

.pa-aside__contact { margin: 0 0 22px; padding: 0; list-style: none; display: grid; gap: 12px; }
.pa-aside__contact li { display: flex; align-items: flex-start; gap: 11px; font-size: .95rem; }
.pa-aside__icon { color: var(--pa-accent); flex: 0 0 auto; margin-top: 3px; }

.pa-aside__list { margin: 0; padding: 0; list-style: none; }
.pa-aside__list li { border-bottom: 1px solid var(--pa-border); }
.pa-aside__list li:last-child { border-bottom: 0; }

.pa-aside__list a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 12px 0;
	color: var(--pa-heading);
	font-size: .95rem;
}

.pa-aside__list a svg { color: var(--pa-accent); opacity: 0; transform: translateX(-4px); transition: opacity .25s ease, transform .25s ease; }
.pa-aside__list a:hover { color: var(--pa-accent); }
.pa-aside__list a:hover svg { opacity: 1; transform: translateX(0); }

.pa-hours { margin: 0; padding: 0; list-style: none; }

.pa-hours__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 9px 0;
	border-bottom: 1px dashed var(--pa-border);
	font-size: .93rem;
}

.pa-hours__row:last-child { border-bottom: 0; }
.pa-hours__day { color: var(--pa-heading); font-weight: 500; }
.pa-hours__row.is-closed .pa-hours__time { opacity: .6; }

/* ==========================================================================
   13. Contact & forms
   ========================================================================== */

.pa-contact-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	padding: 32px 28px;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}

.pa-contact-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--pa-shadow);
	border-color: var(--pa-accent);
}

.pa-contact-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	margin-bottom: 18px;
	background: var(--pa-accent-12);
	border-radius: var(--pa-card-radius);
	color: var(--pa-accent);
}

.pa-contact-card__label {
	margin-bottom: 8px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.pa-contact-card__value {
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 1.02rem;
	font-weight: 500;
	line-height: 1.5;
	word-break: break-word;
}

a.pa-contact-card__value:hover { color: var(--pa-accent); }

.pa-contact-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 360px;
	gap: 50px;
	align-items: start;
}

.pa-contact-aside { display: flex; flex-direction: column; gap: 22px; }

.pa-form-wrap {
	padding: 44px 42px 46px;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
}

.pa-form__title { font-size: var(--pa-fs-h3); margin-bottom: 10px; }
.pa-form__text { margin-bottom: 30px; }

.pa-form__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 22px;
}

.pa-form__field { display: flex; flex-direction: column; }
.pa-form__field--full { grid-column: 1 / -1; }

.pa-form__label {
	margin-bottom: 8px;
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .04em;
}

.pa-form__optional { color: var(--pa-body); font-weight: 400; opacity: .7; }

.pa-req { color: var(--pa-accent); }

.pa-form__input {
	width: 100%;
	padding: 14px 16px;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-btn-radius);
	color: var(--pa-heading);
	font-family: var(--pa-font-body);
	font-size: 15px;
	line-height: 1.5;
	transition: border-color .25s ease, box-shadow .25s ease;
}

.pa-form__input::placeholder { color: var(--pa-body); opacity: .55; }

.pa-form__input:focus {
	outline: none;
	border-color: var(--pa-accent);
	box-shadow: 0 0 0 3px var(--pa-accent-12);
}

.pa-form__input.has-error { border-color: #c0392b; }

.pa-form__textarea { resize: vertical; min-height: 150px; }

.pa-form__select {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2355636F' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='m5 9 7 7 7-7'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	padding-right: 42px;
}

.pa-form__file {
	padding: 12px 14px;
	border: 1px dashed var(--pa-border);
	border-radius: var(--pa-btn-radius);
	font-size: 14px;
	width: 100%;
}

.pa-form__hint { margin-top: 7px; font-size: 12.5px; opacity: .78; }

.pa-form__error {
	display: none;
	margin-top: 6px;
	color: #c0392b;
	font-size: 12.5px;
}

.pa-form__error:not(:empty) { display: block; }

.pa-form__consent {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	font-size: .92rem;
	line-height: 1.6;
	cursor: pointer;
}

.pa-form__consent input {
	flex: 0 0 auto;
	width: 19px;
	height: 19px;
	margin-top: 3px;
	accent-color: var(--pa-accent);
	cursor: pointer;
}

.pa-form__actions { margin-top: 30px; }

.pa-form__submit { min-width: 200px; }

.pa-form__spinner {
	display: none;
	width: 16px;
	height: 16px;
	border: 2px solid rgba(255, 255, 255, .4);
	border-top-color: #fff;
	border-radius: 50%;
	animation: pa-spin .7s linear infinite;
	position: relative;
	z-index: 1;
}

.pa-form.is-loading .pa-form__spinner { display: block; }
.pa-form.is-loading .pa-form__submit { pointer-events: none; opacity: .82; }

@keyframes pa-spin { to { transform: rotate(360deg); } }

.pa-form__hp {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.pa-form__message {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 18px 20px;
	margin-bottom: 26px;
	border-radius: var(--pa-card-radius);
	font-size: .96rem;
}

.pa-form__message p { margin: 0; }

.pa-form__message--success {
	background: rgba(38, 132, 89, .08);
	border: 1px solid rgba(38, 132, 89, .32);
	color: #1f6b48;
}

.pa-form__message-icon { flex: 0 0 auto; margin-top: 2px; }

.pa-form__message--error {
	background: rgba(192, 57, 43, .07);
	border: 1px solid rgba(192, 57, 43, .3);
	color: #a5342a;
}

.pa-form.is-sent { display: none; }

.pa-map {
	overflow: hidden;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	line-height: 0;
}

.pa-map iframe { display: block; width: 100%; }

/* ==========================================================================
   14. Legal, FAQ filter, breadcrumbs, pagination, 404
   ========================================================================== */

.pa-page-hero {
	position: relative;
	padding-block: calc(var(--pa-section-y) * .66);
	background-color: var(--pa-surface);
	background-size: cover;
	background-position: center;
	text-align: center;
}

.pa-page-hero--image { color: #fff; }

.pa-page-hero--image::before {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--pa-primary-90);
}

.pa-page-hero > * { position: relative; }

.pa-page-hero__eyebrow {
	display: inline-block;
	margin-bottom: 14px;
	color: var(--pa-accent);
	font-family: var(--pa-font-heading);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .18em;
	text-transform: uppercase;
}

.pa-page-hero--image .pa-page-hero__eyebrow { color: var(--pa-accent-on-dark); }

.pa-page-hero__title { margin-bottom: 16px; font-size: clamp(30px, 4.6vw, calc(var(--pa-fs-h1) * .82)); }
.pa-page-hero--image .pa-page-hero__title { color: #fff; }

.pa-page-hero__subtitle {
	max-width: 720px;
	margin: 0 auto;
	font-size: 1.04rem;
}

.pa-page-hero--image .pa-page-hero__subtitle { color: rgba(255, 255, 255, .88); }

.pa-breadcrumbs { margin-bottom: 20px; font-size: 13px; }

.pa-breadcrumbs__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pa-breadcrumbs__item { display: inline-flex; align-items: center; gap: 8px; }
.pa-breadcrumbs__item a { color: inherit; opacity: .78; }
.pa-breadcrumbs__item a:hover { opacity: 1; color: var(--pa-accent); }
.pa-breadcrumbs__item [aria-current] { color: var(--pa-accent); }
.pa-breadcrumbs__sep { opacity: .5; }

.pa-service-hero .pa-breadcrumbs__list { justify-content: flex-start; }

.pa-filter {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 40px;
}

.pa-filter__btn {
	padding: 10px 20px;
	background: transparent;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-btn-radius);
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: .04em;
	cursor: pointer;
	transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}

.pa-filter__btn:hover { border-color: var(--pa-accent); color: var(--pa-accent); }

.pa-filter__btn.is-active {
	background: var(--pa-primary);
	border-color: var(--pa-primary);
	color: #fff;
}

.pa-filter__empty { margin-top: 30px; text-align: center; opacity: .8; }

.pa-legal-intro { margin-bottom: 38px; }

.pa-legal-intro__updated {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 16px;
	padding: 7px 14px;
	background: var(--pa-surface);
	border-radius: var(--pa-card-radius);
	color: var(--pa-heading);
	font-size: 12.5px;
}

.pa-legal-intro__updated svg { color: var(--pa-accent); }

.pa-legal-extra { margin-top: 40px; }

.pa-faq-split {
	display: grid;
	grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
	gap: 60px;
	align-items: start;
}

.pa-faq-split__aside .pa-heading { margin-bottom: 26px; }
.pa-faq-split__image { margin-bottom: 26px; overflow: hidden; border-radius: var(--pa-card-radius); }
.pa-faq-split__image img { width: 100%; height: auto; }

.pa-pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 56px;
}

.pa-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	min-width: 46px;
	height: 46px;
	padding: 0 14px;
	justify-content: center;
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-btn-radius);
	color: var(--pa-heading);
	font-family: var(--pa-font-heading);
	font-size: 14px;
	transition: background-color .25s ease, border-color .25s ease, color .25s ease;
}

.pa-pagination .page-numbers:hover { border-color: var(--pa-accent); color: var(--pa-accent); }

.pa-pagination .page-numbers.current {
	background: var(--pa-primary);
	border-color: var(--pa-primary);
	color: #fff;
}

.pa-pagination--inline { justify-content: flex-start; margin-top: 30px; }
.pa-pagination__label { font-size: 14px; margin-right: 6px; }

.pa-post-card {
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	overflow: hidden;
	height: 100%;
	transition: transform .35s ease, box-shadow .35s ease;
}

.pa-post-card:hover { transform: translateY(-4px); box-shadow: var(--pa-shadow); }
.pa-post-card__link { display: flex; flex-direction: column; height: 100%; color: inherit; }
.pa-post-card__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--pa-surface); }
.pa-post-card__media img { width: 100%; height: 100%; object-fit: cover; }
.pa-post-card__body { padding: 28px 28px 30px; display: flex; flex-direction: column; flex: 1 1 auto; }

.pa-post-card__date {
	color: var(--pa-accent);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	margin-bottom: 10px;
}

.pa-post-card__title { font-size: calc(var(--pa-fs-h3) * .82); margin-bottom: 10px; }
.pa-post-card__text { font-size: .95rem; margin-bottom: 20px; }

.pa-post-card__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	color: var(--pa-primary);
	font-family: var(--pa-font-heading);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.pa-post-nav {
	display: flex;
	justify-content: space-between;
	gap: 24px;
	margin-top: 50px;
	padding-top: 30px;
	border-top: 1px solid var(--pa-border);
}

.pa-post-nav__link { display: inline-flex; align-items: center; gap: 10px; max-width: 46%; font-size: .95rem; }
.pa-post-nav__link--next { margin-left: auto; text-align: right; }

.pa-empty-state { text-align: center; padding: 60px 20px; }
.pa-empty-state__icon { display: inline-flex; color: var(--pa-accent); margin-bottom: 18px; }
.pa-empty-state__title { font-size: var(--pa-fs-h3); margin-bottom: 12px; }
.pa-empty-state__text { max-width: 520px; margin: 0 auto 28px; }
.pa-empty-state__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }

.pa-404 { text-align: center; }
.pa-404__inner { max-width: 640px; margin-inline: auto; }

.pa-404__code {
	display: block;
	font-family: var(--pa-font-heading);
	font-size: clamp(84px, 16vw, 168px);
	font-weight: 700;
	line-height: 1;
	color: var(--pa-accent-25);
	letter-spacing: -.03em;
}

.pa-404__title { margin: 12px 0 16px; font-size: var(--pa-fs-h2); }
.pa-404__text { margin-bottom: 32px; }
.pa-404__actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }

.pa-404__links { margin-top: 56px; padding-top: 34px; border-top: 1px solid var(--pa-border); text-align: left; }
.pa-404__links-title { font-size: calc(var(--pa-fs-h4) * .95); margin-bottom: 14px; text-align: center; }
.pa-404__links ul { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 30px; }
.pa-404__links li { border-bottom: 1px solid var(--pa-border); }

.pa-404__links a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 12px 0;
	color: var(--pa-heading);
	font-size: .95rem;
}

.pa-404__links a:hover { color: var(--pa-accent); }
.pa-404__links a svg { color: var(--pa-accent); }

/* ==========================================================================
   15. Footer
   ========================================================================== */

.pa-footer {
	background: var(--pa-footer-bg);
	color: var(--pa-footer-text);
	margin-top: auto;
}

.pa-footer a { color: var(--pa-footer-text); }
.pa-footer a:hover { color: var(--pa-accent-on-dark); }

.pa-footer__main { padding-block: calc(var(--pa-section-y) * .74) calc(var(--pa-section-y) * .5); }

.pa-footer__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.2fr);
	gap: 48px;
}

.pa-footer__logo { margin-bottom: 22px; }
.pa-footer__logo img { height: auto; }

.pa-logo--footer .pa-logo__text-main { color: #fff; }

.pa-footer__about { margin-bottom: 26px; font-size: .95rem; opacity: .85; max-width: 380px; }

.pa-footer__title {
	margin-bottom: 22px;
	color: #fff;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	position: relative;
	padding-bottom: 12px;
}

.pa-footer__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 28px;
	height: 2px;
	background: var(--pa-accent);
}

.pa-footer__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 11px; }
.pa-footer__list a { font-size: .95rem; opacity: .88; transition: opacity .25s ease, transform .25s ease, color .25s ease; display: inline-block; }
.pa-footer__list a:hover { opacity: 1; transform: translateX(3px); }

.pa-footer__contact { margin: 0; padding: 0; list-style: none; display: grid; gap: 15px; }
.pa-footer__contact li { display: flex; align-items: flex-start; gap: 12px; font-size: .95rem; }
.pa-footer__icon { color: var(--pa-accent-on-dark); flex: 0 0 auto; margin-top: 3px; }

.pa-footer__widgets { margin-top: 46px; padding-top: 36px; border-top: 1px solid rgba(255, 255, 255, .1); }

.pa-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .1); }

.pa-footer__bottom-inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 14px 30px;
	padding-block: 26px;
	font-size: .88rem;
}

.pa-footer__copyright { margin: 0; opacity: .8; }

.pa-footer__legal { display: flex; align-items: center; gap: 12px; }
.pa-footer__legal a { opacity: .82; }
.pa-footer__legal a:hover { opacity: 1; }
.pa-footer__legal-sep { opacity: .4; }

.pa-footer__credit { margin: 0; opacity: .6; width: 100%; }

.pa-footer-widget { margin-bottom: 24px; }
.pa-footer-widget ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; }

.pa-to-top {
	position: fixed;
	right: 24px;
	bottom: 24px;
	z-index: 80;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	background: var(--pa-primary);
	border: 0;
	border-radius: var(--pa-btn-radius);
	color: #fff;
	cursor: pointer;
	opacity: 0;
	transform: translateY(10px);
	transition: opacity .3s ease, transform .3s ease, background-color .25s ease;
}

.pa-to-top.is-visible { opacity: 1; transform: translateY(0); }
.pa-to-top:hover { background: var(--pa-accent); }

/* ==========================================================================
   16. Utilities, motion & responsive
   ========================================================================== */

.pa-reveal {
	opacity: 0;
	transform: translateY(22px);
	transition: opacity .7s cubic-bezier(.2, .8, .3, 1), transform .7s cubic-bezier(.2, .8, .3, 1);
	will-change: opacity, transform;
}

.pa-reveal.is-visible { opacity: 1; transform: translateY(0); }

body.pa-menu-open { overflow: hidden; }

.pa-comments { margin-top: 20px; }
.pa-comments__title { font-size: var(--pa-fs-h3); margin-bottom: 24px; }
.pa-comments .comment-list { margin: 0 0 34px; padding: 0; list-style: none; }
.pa-comments .comment-list ol { list-style: none; padding-left: 26px; }
.pa-comments .comment-body { padding: 22px 0; border-bottom: 1px solid var(--pa-border); }
.pa-comments .comment-author { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.pa-comments .comment-author img { border-radius: 50%; }
.pa-comments .comment-meta { font-size: 13px; opacity: .75; margin-bottom: 10px; }
.pa-comments input[type="text"],
.pa-comments input[type="email"],
.pa-comments input[type="url"],
.pa-comments textarea {
	width: 100%;
	padding: 13px 15px;
	background: var(--pa-bg);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-btn-radius);
	font-family: var(--pa-font-body);
	font-size: 15px;
}
.pa-comments .submit {
	padding: var(--pa-btn-py) var(--pa-btn-px);
	background: var(--pa-btn-bg);
	border: 1px solid var(--pa-btn-bg);
	border-radius: var(--pa-btn-radius);
	color: var(--pa-btn-text);
	font-family: var(--pa-font-heading);
	font-size: var(--pa-btn-fs);
	font-weight: var(--pa-btn-fw);
	letter-spacing: var(--pa-btn-ls);
	text-transform: var(--pa-btn-transform);
	cursor: pointer;
	transition: background-color .25s ease, border-color .25s ease;
}
.pa-comments .submit:hover { background: var(--pa-btn-hover-bg); border-color: var(--pa-btn-hover-bg); }

/* --------------------------------------------------------------------------
   Large desktop and below
   -------------------------------------------------------------------------- */

@media (max-width: 1200px) {
	.pa-vtabs { grid-template-columns: minmax(240px, 300px) minmax(0, 1fr); gap: 36px; }
	.pa-service-layout { grid-template-columns: minmax(0, 1fr) 300px; gap: 44px; }
	.pa-contact-layout { grid-template-columns: minmax(0, 1fr) 320px; gap: 36px; }
	.pa-footer__grid { gap: 36px; }
	.pa-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* --------------------------------------------------------------------------
   Tablet landscape — navigation collapses to the mobile menu here
   -------------------------------------------------------------------------- */

@media (max-width: 1024px) {
	:root { --pa-fs-h1: clamp(34px, 6vw, 48px); }

	.pa-nav { display: none; }
	.pa-burger { display: flex; }
	.pa-btn--header { display: none; }

	.pa-header__inner { gap: 16px; }
	.pa-header__brand { margin-right: auto; }
	.pa-header__actions { margin-left: auto; }

	.pa-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pa-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.pa-split { grid-template-columns: minmax(0, 1fr); gap: 44px; }
	.pa-split--reverse .pa-split__media { order: 0; }
	.pa-split__image--secondary { width: 40%; right: 0; bottom: -26px; }
	.pa-split--reverse .pa-split__image--secondary { left: auto; right: 0; }

	.pa-service-layout { grid-template-columns: minmax(0, 1fr); }
	.pa-aside { position: static; }
	.pa-contact-layout { grid-template-columns: minmax(0, 1fr); }

	.pa-faq-split { grid-template-columns: minmax(0, 1fr); gap: 34px; }
	.pa-faq-split__image { max-width: 420px; }

	.pa-intro { grid-template-columns: minmax(0, 1fr); gap: 16px; }

	.pa-cta__inner { flex-direction: column; align-items: flex-start; gap: 30px; }

	.pa-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.pa-tslider__slide { flex-basis: calc((100% - 28px) / 2); }
}

/* --------------------------------------------------------------------------
   Vertical tabs on mobile
   -------------------------------------------------------------------------- */

@media (max-width: 900px) {
	.pa-vtabs { grid-template-columns: minmax(0, 1fr); gap: 24px; }
	.pa-vtabs__nav { position: static; }

	/* Accordion mode: hide the sidebar, show a trigger on every panel. */
	.pa-vtabs--mobile-accordion .pa-vtabs__nav { display: none; }

	.pa-vtabs--mobile-accordion .pa-vtabs__panels {
		border-top: 1px solid var(--pa-border);
	}

	.pa-vtabs--mobile-accordion .pa-vtabs__panel {
		display: block;
		border-bottom: 1px solid var(--pa-border);
		animation: none;
	}

	.pa-vtabs--mobile-accordion .pa-vtabs__mobile-head {
		display: flex;
		align-items: center;
		gap: 12px;
		width: 100%;
		padding: 20px 4px;
		background: transparent;
		border: 0;
		color: var(--pa-heading);
		font-family: var(--pa-font-heading);
		font-size: 16px;
		font-weight: 600;
		text-align: left;
		cursor: pointer;
	}

	.pa-vtabs--mobile-accordion .pa-vtabs__mobile-head.is-open { color: var(--pa-accent); }

	.pa-vtabs__mobile-indicator {
		margin-left: auto;
		display: inline-flex;
		align-items: center;
		justify-content: center;
		width: 32px;
		height: 32px;
		border: 1px solid var(--pa-border);
		border-radius: var(--pa-card-radius);
		color: var(--pa-accent);
		flex: 0 0 auto;
	}

	.pa-vtabs__mobile-indicator .pa-acc-minus { display: none; }
	.pa-vtabs__mobile-head.is-open .pa-vtabs__mobile-indicator { background: var(--pa-accent); border-color: var(--pa-accent); color: #fff; }
	.pa-vtabs__mobile-head.is-open .pa-acc-plus { display: none; }
	.pa-vtabs__mobile-head.is-open .pa-acc-minus { display: block; }

	.pa-vtabs--mobile-accordion .pa-vtabs__panel-body { display: none; border: 0; margin-bottom: 22px; }
	.pa-vtabs--mobile-accordion .pa-vtabs__panel.is-active .pa-vtabs__panel-body { display: block; }
	.pa-vtabs--mobile-accordion .pa-vtabs__content { padding: 6px 4px 8px; }
	.pa-vtabs--mobile-accordion .pa-vtabs__media { border-radius: var(--pa-card-radius); margin-bottom: 20px; }

	/* Horizontal scrolling tabs. */
	.pa-vtabs--mobile-scroll .pa-vtabs__nav {
		flex-direction: row;
		gap: 0;
		overflow-x: auto;
		overflow-y: hidden;
		scrollbar-width: thin;
		border-bottom: 1px solid var(--pa-border);
		padding-bottom: 2px;
	}

	.pa-vtabs--mobile-scroll .pa-vtabs__group { display: flex; }
	.pa-vtabs--mobile-scroll .pa-vtabs__group-title { display: none; }
	.pa-vtabs--mobile-scroll .pa-vtabs__group-list { flex-direction: row; }

	.pa-vtabs--mobile-scroll .pa-vtabs__tab {
		white-space: nowrap;
		border-left: 0;
		border-bottom: 2px solid transparent;
		background: transparent;
	}

	.pa-vtabs--mobile-scroll .pa-vtabs__tab.is-active { border-bottom-color: var(--pa-accent); background: transparent; }
	.pa-vtabs--mobile-scroll .pa-vtabs__tab-arrow { display: none; }

	/* Full-width stacked tabs. */
	.pa-vtabs--mobile-stacked .pa-vtabs__tab {
		border: 1px solid var(--pa-border);
		border-radius: var(--pa-card-radius);
		margin-bottom: 8px;
	}

	.pa-vtabs--mobile-stacked .pa-vtabs__tab.is-active { border-color: var(--pa-accent); }
}

/* --------------------------------------------------------------------------
   Mobile
   -------------------------------------------------------------------------- */

@media (max-width: 767px) {
	:root {
		--pa-fs-h2: clamp(26px, 6.4vw, 34px);
		--pa-fs-h3: clamp(20px, 4.6vw, 24px);
	}

	.pa-section { padding-block: var(--pa-section-y-mobile); }
	.pa-section--tight { padding-block: calc(var(--pa-section-y-mobile) * .8); }
	.pa-cta { padding-block: calc(var(--pa-section-y-mobile) * 1.05); }

	.pa-container { padding-inline: 20px; }

	.pa-topbar { display: none; }

	.pa-logo__img--desktop { display: block; }
	.pa-logo__img { width: var(--pa-logo-w-mobile); }

	.pa-header__inner { min-height: 72px; }
	.pa-header.is-scrolled .pa-header__inner { min-height: 66px; }

	.pa-logo__text-main { font-size: 21px; }
	.pa-logo__text-accent { font-size: 10.5px; letter-spacing: .1em; }

	.pa-grid { gap: 20px; }
	.pa-grid--2,
	.pa-grid--3,
	.pa-grid--4 { grid-template-columns: minmax(0, 1fr); }

	.pa-heading { margin-bottom: 36px; }
	.pa-heading__subtitle { font-size: .98rem; }

	.pa-slider__arrow { display: none; }
	.pa-slider__dots { bottom: 22px; }
	.pa-slide__content { max-width: 100%; }
	.pa-slide--right .pa-slide__content,
	.pa-slide--center .pa-slide__content { text-align: left; margin: 0; }
	.pa-slide--right .pa-slide__actions,
	.pa-slide--center .pa-slide__actions { justify-content: flex-start; }
	.pa-slide__eyebrow { font-size: 10.5px; padding: 6px 12px; margin-bottom: 16px; }
	.pa-slide__text { font-size: .98rem; margin-bottom: 26px; }
	.pa-slide__actions .pa-btn { flex: 1 1 auto; }

	.pa-newsbar__label { padding: 0 16px; font-size: 10.5px; letter-spacing: .12em; }
	.pa-newsbar__item { font-size: 13px; margin-right: 28px; }

	.pa-cat__body { padding: 30px 26px; }
	.pa-service-card__body { padding: 26px 24px 28px; }

	.pa-split__image--secondary { display: none; }
	.pa-split__accent { display: none; }

	.pa-stats-row { gap: 26px; }
	.pa-stats-row__value { font-size: 32px; }

	.pa-steps { grid-template-columns: minmax(0, 1fr); }

	.pa-caps,
	.pa-benefits,
	.pa-checklist-grid,
	.pa-vtabs__list,
	.pa-404__links ul { grid-template-columns: minmax(0, 1fr); }

	.pa-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.pa-accordion__trigger { padding: 20px 2px; font-size: 1rem; gap: 12px; }
	.pa-accordion__content { padding: 0 8px 24px 2px; }
	.pa-accordion--numbered .pa-accordion__content { padding-left: 2px; }
	.pa-accordion__indicator { width: 32px; height: 32px; }

	.pa-tslider__slide { flex-basis: 100%; }
	.pa-tslider__track { gap: 16px; }
	.pa-quote { padding: 30px 26px 28px; }

	.pa-vtabs__content { padding: 28px 24px 30px; }

	.pa-service-hero { padding-block: 56px; }
	.pa-service-hero__icon { width: 58px; height: 58px; }
	.pa-service-block { margin-bottom: 42px; }

	.pa-form-wrap { padding: 30px 22px 32px; }
	.pa-form__grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
	.pa-form__submit { width: 100%; }

	.pa-page-hero { padding-block: 54px; }
	.pa-page-hero__subtitle { font-size: .98rem; }

	.pa-footer__grid { grid-template-columns: minmax(0, 1fr); gap: 34px; }
	.pa-footer__main { padding-block: 50px 34px; }
	.pa-footer__bottom-inner { flex-direction: column; align-items: flex-start; text-align: left; }

	.pa-post-nav { flex-direction: column; }
	.pa-post-nav__link { max-width: 100%; }
	.pa-post-nav__link--next { margin-left: 0; text-align: left; }

	.pa-cta__actions { width: 100%; }
	.pa-cta__actions .pa-btn { flex: 1 1 auto; }

	.pa-to-top { right: 16px; bottom: 16px; width: 42px; height: 42px; }

	.pa-empty-state__actions .pa-btn,
	.pa-404__actions .pa-btn { flex: 1 1 auto; }
}

/* --------------------------------------------------------------------------
   Small mobile
   -------------------------------------------------------------------------- */

@media (max-width: 420px) {
	.pa-container { padding-inline: 16px; }
	.pa-mobile-nav { width: 100%; padding-inline: 20px; }
	.pa-gallery-grid { grid-template-columns: minmax(0, 1fr); }
	.pa-slide__actions { flex-direction: column; align-items: stretch; }
	.pa-cta__actions { flex-direction: column; align-items: stretch; }
	.pa-filter__btn { font-size: 12px; padding: 9px 14px; }
	.pa-socials--circle .pa-socials__link,
	.pa-socials--square .pa-socials__link { width: 40px; height: 40px; }
}

/* --------------------------------------------------------------------------
   Reduced motion & print
   -------------------------------------------------------------------------- */

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

	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}

	.pa-reveal { opacity: 1 !important; transform: none !important; }
	.pa-newsbar__track { animation: none; }
	.pa-slider--zoom .pa-slide.is-active .pa-slide__media img { animation: none; }
}

@media print {
	.pa-header,
	.pa-footer,
	.pa-mobile-nav,
	.pa-mobile-overlay,
	.pa-to-top,
	.pa-newsbar,
	.pa-slider,
	.pa-cta { display: none !important; }

	.pa-section { padding-block: 18px; }
	body { color: #000; font-size: 12pt; }
	.pa-accordion__panel { display: block !important; }
	.pa-accordion__panel[hidden] { display: block !important; }
}

/* ==========================================================================
   17. Portfolio grid & image popup
   ========================================================================== */

.pa-portfolio {
	--pa-portfolio-gap: 20px;
	display: grid;
	gap: var(--pa-portfolio-gap);
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.pa-portfolio--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pa-portfolio--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pa-portfolio--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pa-portfolio--cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }

/* Natural heights: a masonry-style column flow, so nothing is cropped. */
.pa-portfolio--ratio-natural {
	display: block;
	column-gap: var(--pa-portfolio-gap);
	column-count: 3;
}

.pa-portfolio--ratio-natural.pa-portfolio--cols-2 { column-count: 2; }
.pa-portfolio--ratio-natural.pa-portfolio--cols-3 { column-count: 3; }
.pa-portfolio--ratio-natural.pa-portfolio--cols-4 { column-count: 4; }
.pa-portfolio--ratio-natural.pa-portfolio--cols-5 { column-count: 5; }

.pa-portfolio--ratio-natural .pa-portfolio__item {
	break-inside: avoid;
	margin-bottom: var(--pa-portfolio-gap);
	display: inline-block;
	width: 100%;
}

.pa-portfolio--ratio-natural .pa-portfolio__frame { aspect-ratio: auto; }
.pa-portfolio--ratio-natural .pa-portfolio__frame img { position: static; height: auto; }

.pa-portfolio__item { margin: 0; min-width: 0; }

.pa-portfolio__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.pa-portfolio__frame {
	position: relative;
	display: block;
	overflow: hidden;
	background: var(--pa-surface);
	border: 1px solid var(--pa-border);
	border-radius: var(--pa-card-radius);
	aspect-ratio: 4 / 3;
	transition: border-color .3s ease, box-shadow .35s ease, transform .35s ease;
}

.pa-portfolio--ratio-1-1 .pa-portfolio__frame { aspect-ratio: 1 / 1; }
.pa-portfolio--ratio-3-4 .pa-portfolio__frame { aspect-ratio: 3 / 4; }
.pa-portfolio--ratio-16-9 .pa-portfolio__frame { aspect-ratio: 16 / 9; }

.pa-portfolio__frame img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .6s cubic-bezier(.2, .8, .3, 1), filter .35s ease;
}

.pa-portfolio__overlay {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--pa-primary-90);
	opacity: 0;
	transition: opacity .32s ease;
}

.pa-portfolio__zoom {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 54px;
	height: 54px;
	border: 1px solid rgba(255, 255, 255, .55);
	border-radius: 50%;
	color: #fff;
	transform: scale(.82);
	transition: transform .32s cubic-bezier(.2, .8, .3, 1);
}

.pa-portfolio__link:hover .pa-portfolio__overlay,
.pa-portfolio__link:focus-visible .pa-portfolio__overlay { opacity: 1; }

.pa-portfolio__link:hover .pa-portfolio__zoom,
.pa-portfolio__link:focus-visible .pa-portfolio__zoom { transform: scale(1); }

.pa-portfolio__link:hover .pa-portfolio__frame,
.pa-portfolio__link:focus-visible .pa-portfolio__frame { border-color: var(--pa-accent); }

.pa-portfolio--hover-zoom .pa-portfolio__link:hover img { transform: scale(1.07); }
.pa-portfolio--hover-lift .pa-portfolio__link:hover .pa-portfolio__frame { transform: translateY(-5px); box-shadow: var(--pa-shadow); }
.pa-portfolio--hover-fade .pa-portfolio__link:hover img { filter: brightness(.72); }
.pa-portfolio--hover-none .pa-portfolio__link:hover img { transform: none; }

.pa-portfolio__caption {
	margin-top: 12px;
	font-size: .92rem;
	line-height: 1.55;
	color: var(--pa-body);
}

/* --------------------------------------------------------------------------
   Image popup
   -------------------------------------------------------------------------- */

.pa-lightbox {
	position: fixed;
	inset: 0;
	z-index: 120;
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	transition: opacity .3s ease;
}

.pa-lightbox.is-open { opacity: 1; }

.pa-lightbox__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(8, 20, 15, .92);
	backdrop-filter: blur(6px);
	cursor: zoom-out;
}

.pa-lightbox__inner {
	position: relative;
	z-index: 1;
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 76px 96px 96px;
	pointer-events: none;
}

.pa-lightbox__figure {
	position: relative;
	margin: 0;
	max-width: 100%;
	max-height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
	pointer-events: none;
}

.pa-lightbox__stage {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 120px;
	min-height: 120px;
	max-height: calc(100vh - 190px);
}

.pa-lightbox__image {
	max-width: 100%;
	max-height: calc(100vh - 190px);
	width: auto;
	height: auto;
	display: block;
	border-radius: 2px;
	box-shadow: 0 30px 80px rgba(0, 0, 0, .55);
	opacity: 0;
	transform: scale(.97);
	transition: opacity .34s ease, transform .34s cubic-bezier(.2, .8, .3, 1);
	pointer-events: auto;
}

.pa-lightbox__image.is-loaded { opacity: 1; transform: scale(1); }

.pa-lightbox__spinner {
	position: absolute;
	width: 34px;
	height: 34px;
	border: 2px solid rgba(255, 255, 255, .25);
	border-top-color: #fff;
	border-radius: 50%;
	animation: pa-spin .8s linear infinite;
	opacity: 0;
	transition: opacity .2s ease;
}

.pa-lightbox.is-loading .pa-lightbox__spinner { opacity: 1; }

/* Caption + counter bar. */
.pa-lightbox__bar {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 8px 18px;
	max-width: 760px;
	padding: 0 8px;
	text-align: center;
	pointer-events: auto;
}

.pa-lightbox__caption {
	color: rgba(255, 255, 255, .94);
	font-size: .97rem;
	line-height: 1.6;
}

.pa-lightbox__caption:empty { display: none; }

.pa-lightbox__counter {
	flex: 0 0 auto;
	padding: 5px 13px;
	background: rgba(255, 255, 255, .14);
	border: 1px solid rgba(255, 255, 255, .28);
	border-radius: 20px;
	color: #fff;
	font-family: var(--pa-font-heading);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .09em;
	white-space: nowrap;
}

/*
 * Controls.
 *
 * These sit over photographs of any brightness, so they carry their own
 * translucent fill, a light border and a drop shadow rather than relying on
 * the image behind them for contrast.
 */
.pa-lightbox__btn {
	position: absolute;
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	padding: 0;
	background: rgba(18, 38, 30, .72);
	border: 1px solid rgba(255, 255, 255, .45);
	border-radius: 50%;
	color: #fff;
	cursor: pointer;
	pointer-events: auto;
	backdrop-filter: blur(6px);
	box-shadow: 0 6px 22px rgba(0, 0, 0, .45);
	transition: background-color .25s ease, color .25s ease, border-color .25s ease, transform .25s ease, opacity .25s ease;
}

.pa-lightbox__btn:hover,
.pa-lightbox__btn:focus-visible {
	background: #fff;
	border-color: #fff;
	color: var(--pa-primary);
	transform: scale(1.07);
}

.pa-lightbox__btn:focus-visible { outline: 3px solid var(--pa-accent-on-dark); outline-offset: 3px; }

.pa-lightbox__btn[disabled] { opacity: .34; cursor: default; transform: none; }
.pa-lightbox__btn[disabled]:hover { background: rgba(18, 38, 30, .72); border-color: rgba(255, 255, 255, .45); color: #fff; transform: none; }

.pa-lightbox__btn--close { top: 22px; right: 26px; }
.pa-lightbox__btn--prev { left: 26px; top: 50%; transform: translateY(-50%); }
.pa-lightbox__btn--next { right: 26px; top: 50%; transform: translateY(-50%); }

.pa-lightbox__btn--prev:hover,
.pa-lightbox__btn--prev:focus-visible,
.pa-lightbox__btn--next:hover,
.pa-lightbox__btn--next:focus-visible { transform: translateY(-50%) scale(1.07); }

.pa-lightbox__btn--prev[disabled]:hover,
.pa-lightbox__btn--next[disabled]:hover { transform: translateY(-50%); }

body.pa-lightbox-open { overflow: hidden; }

/* --------------------------------------------------------------------------
   Portfolio responsive
   -------------------------------------------------------------------------- */

@media (max-width: 1024px) {
	.pa-portfolio--cols-4,
	.pa-portfolio--cols-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.pa-portfolio--ratio-natural.pa-portfolio--cols-4,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-5 { column-count: 3; }

	.pa-lightbox__inner { padding: 70px 84px 88px; }
}

@media (max-width: 767px) {
	.pa-portfolio,
	.pa-portfolio--cols-2,
	.pa-portfolio--cols-3,
	.pa-portfolio--cols-4,
	.pa-portfolio--cols-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.pa-portfolio--ratio-natural,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-3,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-4,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-5 { column-count: 2; }

	.pa-portfolio__caption { font-size: .86rem; margin-top: 9px; }
	.pa-portfolio__zoom { width: 44px; height: 44px; }

	/* Controls move to a bar under the image so they never cover it. */
	.pa-lightbox__inner { padding: 64px 14px 104px; }

	.pa-lightbox__stage,
	.pa-lightbox__image { max-height: calc(100vh - 210px); }

	.pa-lightbox__btn { width: 50px; height: 50px; }
	.pa-lightbox__btn--close { top: 14px; right: 14px; }

	.pa-lightbox__btn--prev,
	.pa-lightbox__btn--next {
		top: auto;
		bottom: 22px;
		transform: none;
	}

	.pa-lightbox__btn--prev { left: calc(50% - 68px); }
	.pa-lightbox__btn--next { right: calc(50% - 68px); }

	.pa-lightbox__btn--prev:hover,
	.pa-lightbox__btn--prev:focus-visible,
	.pa-lightbox__btn--next:hover,
	.pa-lightbox__btn--next:focus-visible { transform: scale(1.07); }

	.pa-lightbox__btn--prev[disabled]:hover,
	.pa-lightbox__btn--next[disabled]:hover { transform: none; }

	.pa-lightbox__bar { max-width: 100%; }
	.pa-lightbox__caption { font-size: .9rem; }
}

@media (max-width: 420px) {
	.pa-portfolio,
	.pa-portfolio--cols-2,
	.pa-portfolio--cols-3,
	.pa-portfolio--cols-4,
	.pa-portfolio--cols-5 { grid-template-columns: minmax(0, 1fr); }

	.pa-portfolio--ratio-natural,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-2,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-3,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-4,
	.pa-portfolio--ratio-natural.pa-portfolio--cols-5 { column-count: 1; }
}

@media (prefers-reduced-motion: reduce) {
	.pa-lightbox__image { transition: opacity .01ms; transform: none; }
	.pa-lightbox__spinner { animation: none; }
}
