/**
 * Playscapes Scotland Ltd — Site styles
 * Brand-aligned, mobile-first. See brand/BRAND-GUIDELINES-Playscapes-Scotland.md
 */

/* ========== Design tokens (brand palette) ========== */
:root {
  /* Primary — Teal (trust, CTAs) */
  --ps-teal: #1CA3BA;
  --ps-teal-dark: #1899AD;
  --ps-teal-light: #4BB8CA;
  /* Accent — Magenta (headings, emphasis) */
  --ps-magenta: #B21F7B;
  --ps-magenta-dark: #8E1862;
  --ps-magenta-light: #D64D9A;
  /* Secondary — Green (values, sustainability) */
  --ps-green: #9CCB3B;
  --ps-green-dark: #7BA52E;
  --ps-green-light: #C5E078;
  /* Neutrals */
  --ps-bg: #F4F4F4;
  --ps-bg-alt: #F9F9F9;
  /* Main nav tabs: default top strip (all items uniform) */
  --ps-nav-tab-strip: #dce0ea;
  --ps-white: #FFFFFF;
  --ps-text: #222222;
  --ps-text-muted: #555555;
  --ps-navy: #212755;
  --ps-navy-deep: #0f1530;
  --ps-navy-soft: #1a1f3d;
  --ps-hero-navy-grad: linear-gradient(155deg, var(--ps-navy-deep) 0%, var(--ps-navy) 46%, var(--ps-navy-soft) 100%);
  --ps-footer: var(--ps-navy);
  /* Typography */
  --ps-font-heading: 'Montserrat', system-ui, sans-serif;
  --ps-font-body: 'Open Sans', system-ui, sans-serif;
  /* Spacing (mobile-first, scale up on larger screens) */
  --ps-section-padding-y: 3rem;
  --ps-container-padding-x: 1rem;
  --ps-touch-min: 44px;
  /* Main nav bar height — updated by JS for transparent-over-video hero overlap */
  --ps-nav-height: 72px;
  /* SHANARRI — indicator hues (wellbeing wheel–style; familiar in many GIRFEC resources) */
  --ps-shanarri-safe: #1e40af;
  --ps-shanarri-healthy: #166534;
  --ps-shanarri-achieving: #b45309;
  --ps-shanarri-nurtured: #be123c;
  --ps-shanarri-active: #c2410c;
  --ps-shanarri-respected: #6d28d9;
  --ps-shanarri-responsible: #0f766e;
  --ps-shanarri-included: #b21f7b;
  /* Depth & atmosphere */
  --ps-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
  --ps-shadow-md: 0 8px 24px rgba(0, 0, 0, 0.08), 0 2px 6px rgba(0, 0, 0, 0.04);
  --ps-shadow-lg: 0 20px 50px rgba(0, 0, 0, 0.12), 0 8px 20px rgba(0, 0, 0, 0.06);
  --ps-shadow-card: 0 4px 20px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
  --ps-shadow-card-hover: 0 20px 45px rgba(0, 0, 0, 0.1), 0 8px 20px rgba(0, 0, 0, 0.06);
  --ps-radius: 0.875rem;
  --ps-radius-lg: 1.25rem;
  /* Align full-bleed rails with .ps-container max-width */
  --ps-container-max: 1140px;
  /* Editorial type — match homepage services footer CTA */
  --ps-type-eyebrow-size: 0.72rem;
  --ps-type-eyebrow-tracking: 0.16em;
  --ps-type-section-title-leading: 1.22;
  --ps-type-section-title-tracking: -0.02em;
  /* Short stroke under section / page titles (navy to magenta) */
  --ps-heading-stroke-gradient: linear-gradient(90deg, var(--ps-navy) 0%, var(--ps-magenta) 100%);
  --ps-heading-stroke-w: 3rem;
  --ps-heading-stroke-h: 4px;
  /* Portfolio zigzag block titles + timeline rail (brand light teal to green) */
  --ps-heading-stroke-gradient-wellbeing: linear-gradient(90deg, var(--ps-teal-light) 0%, var(--ps-green) 100%);
  --ps-zigzag-milestone-rail-gradient: linear-gradient(180deg, var(--ps-teal-light) 0%, var(--ps-green) 100%);
  /* Bootstrap Reboot uses these for bare <a> — replace default blue with brand navy / magenta hover */
  --bs-link-color: var(--ps-navy);
  --bs-link-hover-color: var(--ps-magenta);
  --bs-link-color-rgb: 33, 39, 85;
  --bs-link-hover-color-rgb: 178, 31, 123;
}

@media (min-width: 768px) {
  :root {
    --ps-section-padding-y: 4rem;
    --ps-container-padding-x: 1.5rem;
  }
}

@media (min-width: 992px) {
  :root {
    --ps-section-padding-y: 5rem;
  }
}

/* ========== Base ========== */
/* overflow-x on body breaks position:sticky for descendants (e.g. main nav); clip on html instead */
html {
  scroll-behavior: smooth;
  overflow-x: hidden;
}

body {
  font-family: var(--ps-font-body);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ps-text);
  background-color: var(--ps-bg);
  -webkit-font-smoothing: antialiased;
}

/* Subtle grain overlay for depth (optional on key sections) */
.ps-grain::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.035;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Headings — Montserrat, Deep Navy per guidelines */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--ps-font-heading);
  color: var(--ps-navy);
  font-weight: 700;
  line-height: 1.2;
}

h1, .h1 { font-size: clamp(1.75rem, 5vw, 2.75rem); }
h2, .h2 { font-size: clamp(1.5rem, 4vw, 2rem); }
h3, .h3, h4, .h4 { font-size: clamp(1.2rem, 3vw, 1.35rem); font-weight: 600; }

p {
  margin-bottom: 1rem;
  max-width: 65ch;
  /* Prefer fuller last lines where supported (Chrome 117+, Safari 17.5+) */
  text-wrap: pretty;
}

/* Headings that break across lines: avoid one short rag line where supported */
h1, h2, h3 {
  text-wrap: balance;
}

.text-muted { color: var(--ps-text-muted) !important; }

/* ========== Layout ========== */
.ps-section {
  padding-top: var(--ps-section-padding-y);
  padding-bottom: var(--ps-section-padding-y);
  background:#FFF;
}

.ps-section-alt {
  background-color: var(--ps-bg-alt);
}

/* Marketing pages: same offset-rail language as case studies / recent projects */
.ps-section--offset-rail-left,
.ps-section--offset-rail-right {
  position: relative;
  isolation: isolate;
  overflow: visible;
}

.ps-section--offset-rail-left::before,
.ps-section--offset-rail-right::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  width: min(32vw, 400px);
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(
    165deg,
    rgba(28, 163, 186, 0.1) 0%,
    rgba(33, 39, 85, 0.05) 55%,
    rgba(178, 31, 123, 0.04) 100%
  );
}

.ps-section--offset-rail-left::before {
  left: 0;
}

.ps-section--offset-rail-right::before {
  right: 0;
}

.ps-section--offset-rail-left > .ps-container,
.ps-section--offset-rail-right > .ps-container {
  position: relative;
  z-index: 1;
}

.ps-container {
  width: 100%;
  max-width: var(--ps-container-max);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

/* ========== Navbar ========== */
.ps-nav {
  background-color: var(--ps-white);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

/* Desktop: tab strip flush top + bottom (no white gap around hover/active fills) */
@media (min-width: 992px) {
  .ps-nav.navbar {
    --bs-navbar-padding-y: 0;
    padding-top: 0;
    padding-bottom: 0;
  }

  .ps-nav .ps-container.container-fluid {
    align-items: stretch;
    min-height: 3.25rem;
  }

  .ps-nav .navbar-brand {
    align-self: center;
  }

  .ps-nav .navbar-collapse {
    display: flex !important;
    align-items: stretch;
    flex: 1 1 auto;
    min-width: 0;
  }

  .ps-nav .navbar-collapse .ps-mobile-nav__shell {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: stretch;
    min-height: 100%;
    min-width: 0;
  }

  .ps-nav .ps-mobile-nav__desktop {
    display: flex;
    align-items: stretch;
    flex: 1 1 auto;
    min-height: 100%;
    align-self: stretch;
  }

  .ps-nav .ps-mobile-nav__desktop .navbar-nav.ps-main-tabs {
    align-items: stretch !important;
    flex: 1 1 auto;
    min-height: 100%;
  }

  .ps-nav .ps-mobile-nav__desktop .nav-item {
    display: flex;
    align-items: stretch;
  }
}

.ps-site-header.sticky-top {
  position: sticky;
  top: 0;
  z-index: 1020;
  overflow: visible;
}

/* Sit above .ps-services-mega (z-index 1040) so the bar stays visible & clickable when mega is open */
.ps-site-header .ps-nav {
  position: relative;
  z-index: 1050;
}

.ps-nav .navbar-brand {
  text-decoration: none;
  padding: 0.375rem 0;
  position: relative;
}

.ps-nav-brand__mark {
  height: 28px;
  width: auto;
  max-width: 48px;
  object-fit: contain;
  display: block;
}

.ps-nav .ps-nav-brand__mark--white {
  display: none !important;
}

.ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-nav-brand__mark--colour {
  display: none !important;
}

.ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-nav-brand__mark--white {
  display: block !important;
}

.ps-nav .navbar-brand:hover .ps-nav-brand__mark--colour,
.ps-nav .navbar-brand:hover .ps-nav-brand__mark--white {
  opacity: 0.92;
}

.ps-nav .nav-link {
  color: var(--ps-text) !important;
  font-weight: 600;
  font-size: 0.95rem;
  padding: 0.5rem 0.75rem !important;
  min-height: var(--ps-touch-min);
  display: inline-flex;
  align-items: center;
}

.ps-nav .nav-link:hover,
.ps-nav .nav-link.active {
  color: var(--ps-teal) !important;
}

/* Services mega trigger — match nav-link (button reset) */
.ps-nav .ps-nav-services-trigger {
  appearance: none;
  border: 0;
  font: inherit;
  text-align: inherit;
  cursor: pointer;
  color: inherit;
  background: transparent;
  width: 100%;
}

@media (min-width: 992px) {
  .ps-nav .ps-nav-services-trigger {
    width: auto;
  }
}

/* Main nav: same default for every item (grey top strip + white body); hover/active shows brand accent */
@media (min-width: 992px) {
  .ps-mobile-nav__desktop .ps-main-tabs {
    gap: 0 !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item .nav-link,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item .ps-nav-services-trigger {
    display: inline-flex;
    align-items: center;
    align-self: stretch;
    min-height: 3.25rem;
    height: 100%;
    padding: 0 0.9rem !important;
    line-height: 1.45;
    border-radius: 0;
    border-top: 4px solid var(--ps-nav-tab-strip);
    font-size: 0.8rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--ps-navy) !important;
    background: #fff !important;
    transition: background-color 0.2s ease, color 0.2s ease, border-top-color 0.2s ease;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--1 .nav-link:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--1 .nav-link.active {
    border-top-color: var(--ps-magenta);
    background: rgba(178, 31, 123, 0.1) !important;
    color: var(--ps-navy) !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--2 .ps-nav-services-trigger:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--2 .ps-nav-services-trigger.active,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--2 .ps-nav-services-trigger[aria-expanded="true"] {
    border-top-color: var(--ps-green);
    background: rgba(156, 203, 59, 0.16) !important;
    color: var(--ps-navy) !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--3 .nav-link:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--3 .nav-link.active {
    border-top-color: var(--ps-navy);
    background: rgba(33, 39, 85, 0.08) !important;
    color: var(--ps-navy) !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--4 .nav-link:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--4 .nav-link.active {
    border-top-color: var(--ps-teal);
    background: rgba(28, 163, 186, 0.14) !important;
    color: var(--ps-navy) !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--5 .nav-link:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--5 .nav-link.active {
    border-top-color: var(--ps-green);
    background: rgba(156, 203, 59, 0.16) !important;
    color: var(--ps-navy) !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--6 .nav-link:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--6 .nav-link.active {
    border-top-color: var(--ps-teal);
    background: rgba(28, 163, 186, 0.14) !important;
    color: var(--ps-navy) !important;
  }

  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--7 .nav-link:hover,
  .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--7 .nav-link.active {
    border-top-color: var(--ps-magenta);
    background: rgba(178, 31, 123, 0.1) !important;
    color: var(--ps-navy) !important;
  }

  /* Video hero: transparent bar + white links; brand accent strips on hover (see .ps-nav--hero-video) */
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item .nav-link,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item .ps-nav-services-trigger {
    background: transparent !important;
    color: rgba(255, 255, 255, 0.95) !important;
    border-top-color: rgba(255, 255, 255, 0.22);
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--1 .nav-link:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--1 .nav-link.active {
    border-top-color: var(--ps-magenta);
    background: rgba(178, 31, 123, 0.28) !important;
    color: #fff !important;
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--2 .ps-nav-services-trigger:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--2 .ps-nav-services-trigger.active,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--2 .ps-nav-services-trigger[aria-expanded="true"] {
    border-top-color: var(--ps-green);
    background: rgba(156, 203, 59, 0.3) !important;
    color: #fff !important;
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--3 .nav-link:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--3 .nav-link.active {
    border-top-color: rgba(255, 255, 255, 0.85);
    background: rgba(255, 255, 255, 0.14) !important;
    color: #fff !important;
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--4 .nav-link:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--4 .nav-link.active {
    border-top-color: var(--ps-teal);
    background: rgba(28, 163, 186, 0.28) !important;
    color: #fff !important;
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--5 .nav-link:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--5 .nav-link.active {
    border-top-color: var(--ps-green);
    background: rgba(156, 203, 59, 0.3) !important;
    color: #fff !important;
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--6 .nav-link:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--6 .nav-link.active {
    border-top-color: var(--ps-teal);
    background: rgba(28, 163, 186, 0.28) !important;
    color: #fff !important;
  }

  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--7 .nav-link:hover,
  .ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .ps-mobile-nav__desktop .ps-main-tabs .nav-item.ps-nav-slot--7 .nav-link.active {
    border-top-color: var(--ps-magenta);
    background: rgba(178, 31, 123, 0.28) !important;
    color: #fff !important;
  }
}

/* Transparent nav over looping video heroes (.ps-hero-sub--has-video, folio case headers, service landing heroes) */
.ps-nav.ps-nav--hero-video {
  transition: background-color 0.35s ease, box-shadow 0.35s ease;
}

.ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) {
  background-color: transparent;
  box-shadow: none;
}


.ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .navbar-toggler {
  color: #fff;
}

.ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .navbar-toggler-icon {
  filter: brightness(0) invert(1);
}

.ps-nav.ps-nav--hero-video:not(.ps-nav--scrolled) .navbar-toggler:focus-visible {
  outline-color: rgba(255, 255, 255, 0.85);
}

/*
 * Transparent nav only works when hero footage sits *under* the bar (stacking).
 * Sticky keeps the nav pinned while scrolling; overlap is separate.
 * JS: body.ps-page-has-video-hero + --ps-nav-height from measured nav.
 */
body.ps-page-has-video-hero main > section.ps-hero-sub--has-video:first-child {
  margin-top: calc(-1 * var(--ps-nav-height));
  padding-top: calc(var(--ps-section-padding-y) + var(--ps-nav-height));
  border-top-color: transparent;
}

body.ps-page-has-video-hero main.ps-case-study > article > header.ps-folio-hero--has-video {
  margin-top: calc(-1 * var(--ps-nav-height));
}

body.ps-page-has-video-hero main.ps-service-landing > .ps-service-landing-hero--has-video:first-child {
  margin-top: calc(-1 * var(--ps-nav-height));
  padding-top: calc(2.75rem + var(--ps-nav-height));
  border-top-color: transparent;
}

/* Mobile: full-screen overlay nav (hero-style) + integrated services drawer */
@media (max-width: 991.98px) {
  #mainNav.navbar-collapse {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1055;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    transition: none !important;
  }

  #mainNav.navbar-collapse.collapsing {
    height: 100vh !important;
    min-height: 100dvh !important;
    transition: none !important;
  }

  #mainNav.navbar-collapse.show {
    display: flex !important;
    flex-direction: column !important;
    height: 100vh !important;
    min-height: 100dvh !important;
    max-height: none !important;
    overflow: hidden !important;
  }

  /* Corporate mobile menu: 35px gutter + safe-area; left-aligned column */
  .ps-mobile-nav__shell {
    --ps-mobile-nav-pad-start: max(35px, env(safe-area-inset-left, 0px));
    --ps-mobile-nav-pad-end: max(35px, env(safe-area-inset-right, 0px));
    position: relative;
    display: flex;
    flex-direction: column;
    flex: 1;
    width: 100%;
    min-height: 100dvh;
    padding-top: calc(max(0.5rem, env(safe-area-inset-top)) + 2.75rem + 0.35rem);
    padding-right: var(--ps-mobile-nav-pad-end);
    padding-bottom: 1.5rem;
    padding-left: var(--ps-mobile-nav-pad-start);
    background: var(--ps-hero-navy-grad);
    overflow: hidden;
    box-sizing: border-box;
  }

  .ps-mobile-nav__shell::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
      radial-gradient(circle at 14% 18%, rgba(178, 31, 123, 0.22) 0%, transparent 28%),
      radial-gradient(circle at 82% 10%, rgba(156, 203, 59, 0.14) 0%, transparent 26%),
      radial-gradient(circle at 72% 85%, rgba(28, 163, 186, 0.18) 0%, transparent 30%);
    pointer-events: none;
  }

  .ps-mobile-nav__close {
    /* Align with navbar toggler (same inset as .ps-container, not menu content gutter) */
    --ps-mobile-nav-close-inset: max(var(--ps-container-padding-x), env(safe-area-inset-right, 0px));
    position: absolute;
    top: max(0.5rem, env(safe-area-inset-top));
    right: var(--ps-mobile-nav-close-inset);
    width: auto;
    min-width: var(--ps-touch-min);
    height: 2.75rem;
    margin: 0;
    padding: 0 0.5rem 0 0;
    border: none;
    border-radius: 0;
    background: transparent;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    cursor: pointer;
    z-index: 2;
    transition: opacity 0.2s ease;
  }

  .ps-mobile-nav__close:hover {
    opacity: 0.88;
  }

  .ps-mobile-nav__close:focus {
    outline: none;
  }

  .ps-mobile-nav__close:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.75);
    outline-offset: 2px;
  }

  .ps-mobile-nav__close-icon {
    position: relative;
    width: 24px;
    height: 24px;
    display: block;
    flex-shrink: 0;
  }

  .ps-mobile-nav__close-icon::before,
  .ps-mobile-nav__close-icon::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 24px;
    height: 3px;
    background: currentColor;
    border-radius: 1.5px;
  }

  .ps-mobile-nav__close-icon::before {
    transform: translate(-50%, -50%) rotate(45deg);
  }

  .ps-mobile-nav__close-icon::after {
    transform: translate(-50%, -50%) rotate(-45deg);
  }

  .ps-mobile-nav__brand {
    position: relative;
    display: block;
    align-self: flex-start;
    max-width: min(220px, 72vw);
    margin: 0 0 1.5rem;
    z-index: 2;
    text-decoration: none;
  }

  .ps-mobile-nav__logo {
    width: 100%;
    height: auto;
    display: block;
    filter: drop-shadow(0 2px 16px rgba(0, 0, 0, 0.2));
  }

  .ps-mobile-nav__body {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    z-index: 2;
    width: 100%;
    align-items: stretch;
    box-sizing: border-box;
  }

  .ps-mobile-nav__stage {
    position: relative;
    flex: 1;
    min-height: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
  }

  .ps-mobile-nav__main {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 0.5rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }

  .ps-mobile-nav__main .navbar-nav {
    gap: 0;
    flex-direction: column;
    align-items: stretch;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    list-style: none;
    text-align: left;
    box-sizing: border-box;
  }

  .ps-mobile-nav__main .ps-main-tabs .nav-item {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
  }

  .ps-mobile-nav__main .ps-main-tabs .nav-item:not(:last-child) .nav-link,
  .ps-mobile-nav__main .ps-main-tabs .nav-item:not(:last-child) .ps-nav-services-trigger {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  }

  .ps-mobile-nav__main .ps-main-tabs .nav-item .nav-link,
  .ps-mobile-nav__main .ps-main-tabs .nav-item .ps-nav-services-trigger {
    padding: 0.85rem 0 !important;
    margin-bottom: 0;
    border-radius: 0;
    border-left: none;
    background: transparent !important;
    color: rgba(255, 255, 255, 0.94) !important;
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-weight: 600;
    width: 100%;
    text-align: left;
    justify-content: flex-start;
    transition: color 0.2s ease, background-color 0.2s ease;
  }

  .ps-mobile-nav__main .ps-main-tabs .nav-item .nav-link:hover,
  .ps-mobile-nav__main .ps-main-tabs .nav-item .nav-link.active,
  .ps-mobile-nav__main .ps-main-tabs .nav-item .ps-nav-services-trigger:hover,
  .ps-mobile-nav__main .ps-main-tabs .nav-item .ps-nav-services-trigger.active,
  .ps-mobile-nav__main .ps-main-tabs .nav-item .ps-nav-services-trigger[aria-expanded="true"] {
    color: #fff !important;
    background: rgba(255, 255, 255, 0.04) !important;
  }

  .ps-mobile-nav__contact {
    flex-shrink: 0;
    width: 100%;
    max-width: none;
    margin: 0;
    text-align: left;
    padding: 1.25rem 0 0.25rem;
    margin-top: auto;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    box-sizing: border-box;
  }

  .ps-mobile-nav__contact-heading {
    font-family: var(--ps-font-heading);
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--ps-teal-light);
    margin: 0 0 0.65rem;
  }

  .ps-mobile-nav__contact-line {
    margin: 0 0 0.4rem;
    font-size: 0.88rem;
    line-height: 1.45;
  }

  .ps-mobile-nav__contact-line a {
    color: rgba(255, 255, 255, 0.92);
    text-decoration: none;
    font-weight: 600;
  }

  .ps-mobile-nav__contact-line a:hover {
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 0.15em;
  }

  .ps-mobile-nav__contact-address {
    margin: 0.5rem 0 0;
    font-size: 0.78rem;
    line-height: 1.45;
    color: rgba(255, 255, 255, 0.65);
    max-width: 20rem;
    margin-left: 0;
    margin-right: 0;
  }

  /* Services drawer — slides over main list */
  .ps-mobile-nav__services-drawer {
    position: absolute;
    inset: 0;
    z-index: 4;
    display: flex;
    flex-direction: column;
    background: var(--ps-hero-navy-grad);
    border-radius: 0;
    box-shadow: none;
    transform: translateX(100%);
    transition: transform 0.38s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.38s;
    visibility: hidden;
    overflow: hidden;
  }

  .ps-mobile-nav__services-drawer::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background:
      radial-gradient(circle at 14% 18%, rgba(178, 31, 123, 0.22) 0%, transparent 28%),
      radial-gradient(circle at 82% 10%, rgba(156, 203, 59, 0.14) 0%, transparent 26%),
      radial-gradient(circle at 72% 85%, rgba(28, 163, 186, 0.18) 0%, transparent 30%);
  }

  .ps-mobile-nav__services-drawer > * {
    position: relative;
    z-index: 1;
  }

  .ps-mobile-nav__services-drawer:not([hidden]) {
    transform: translateX(0);
    visibility: visible;
  }

  .ps-nav--services-drawer-open .ps-mobile-nav__main {
    pointer-events: none;
  }

  .ps-nav--services-drawer-open .ps-mobile-nav__stage {
    overflow: visible;
  }

  .ps-mobile-nav__services-head {
    flex-shrink: 0;
    padding: 0.75rem 0 0.65rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    text-align: left;
  }

  .ps-mobile-nav__back {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.5rem 0.65rem 0;
    margin: 0 0 0.35rem;
    border: 0;
    background: none;
    color: rgba(255, 255, 255, 0.85);
    font-family: var(--ps-font-heading);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    cursor: pointer;
  }

  .ps-mobile-nav__back:hover {
    color: #fff;
  }

  .ps-mobile-nav__back-icon {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-left: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    margin-left: 2px;
  }

  .ps-mobile-nav__services-eyebrow {
    font-family: var(--ps-font-heading);
    font-size: var(--ps-type-eyebrow-size);
    font-weight: 700;
    letter-spacing: var(--ps-type-eyebrow-tracking);
    text-transform: uppercase;
    color: var(--ps-teal-light);
    margin: 0 0 0.25rem;
  }

  .ps-mobile-nav__services-title {
    font-family: var(--ps-font-heading);
    font-size: 1.05rem;
    font-weight: 800;
    color: #fff;
    margin: 0;
    line-height: 1.25;
  }

  .ps-mobile-nav__services-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 0.75rem 0 1rem;
  }

  .ps-mobile-nav__services-simple {
    display: block;
  }

  .ps-mobile-nav__services-simple-list {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .ps-mobile-nav__services-simple-list li {
    margin: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  }

  .ps-mobile-nav__services-simple-list li:last-child {
    border-bottom: none;
  }

  .ps-mobile-nav__services-simple-list a {
    display: block;
    padding: 0.85rem 0;
    font-family: var(--ps-font-heading);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.94);
    text-decoration: none;
    text-align: left;
    transition: color 0.2s ease, background-color 0.2s ease;
  }

  .ps-mobile-nav__services-simple-list a:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.04);
  }

  .ps-mobile-nav__services-actions {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
  }

  .ps-mobile-nav__services-actions .btn-outline-light {
    border-color: rgba(255, 255, 255, 0.35);
    color: #fff;
  }

  .ps-mobile-nav__services-actions .btn-outline-light:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: #fff;
    color: #fff;
  }

  .ps-nav .nav-item .btn {
    margin-top: 0.5rem;
    margin-bottom: 0.25rem;
    width: 100%;
    justify-content: center;
  }
}

@media (min-width: 992px) {
  .ps-mobile-nav__shell {
    display: flex;
    align-items: stretch;
    justify-content: flex-end;
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    min-height: 100%;
  }

  .ps-mobile-nav__desktop {
    flex: 0 0 auto;
    align-self: stretch;
    display: flex;
    min-height: 100%;
  }
}

.ps-nav .navbar-toggler {
  border: none;
  padding: 0.5rem;
  background: transparent;
  color: var(--ps-navy-deep);
}

.ps-nav .navbar-toggler:focus {
  box-shadow: none;
}

.ps-nav .navbar-toggler:focus-visible {
  outline: 2px solid var(--ps-teal);
  outline-offset: 2px;
}

.ps-nav .navbar-toggler-icon {
  width: 1.5rem;
  height: 1.125rem;
  vertical-align: middle;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 18'%3E%3Cpath fill='none' stroke='%23212755' stroke-width='2' stroke-linecap='round' d='M1 1.5h22M1 9h22M1 16.5h22'/%3E%3C/svg%3E") !important;
  background-size: 1.5rem 1.125rem;
  background-repeat: no-repeat;
  background-position: center;
}

/* ========== Services mega menu (desktop only — mobile uses integrated drawer) ========== */
@media (max-width: 991.98px) {
  .ps-services-mega {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
}

.ps-services-mega {
  position: fixed;
  inset: 0;
  z-index: 1040;
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.28s ease, visibility 0.28s ease;
}

.ps-services-mega:not([hidden]) {
  pointer-events: auto;
  visibility: visible;
  opacity: 1;
}

/* Lock page scroll while services mega is open (desktop + mobile).
   Avoid overflow:hidden on html — it can break sticky positioning; body alone is enough for scroll lock. */
body.ps-services-mega-open {
  overflow: hidden;
}

.ps-services-mega__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(6, 10, 26, 0.62);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

.ps-services-mega__sheet {
  position: absolute;
  display: flex;
  flex-direction: column;
  left: 0;
  right: 0;
  width: 100%;
  background: var(--ps-hero-navy-grad);
  color: rgba(255, 255, 255, 0.92);
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
  overflow: hidden;
  border: none;
}

.ps-services-mega__sheet::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(circle at 14% 18%, rgba(178, 31, 123, 0.22) 0%, transparent 28%),
    radial-gradient(circle at 82% 10%, rgba(156, 203, 59, 0.14) 0%, transparent 26%),
    radial-gradient(circle at 72% 85%, rgba(28, 163, 186, 0.18) 0%, transparent 30%);
}

.ps-services-mega__inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  max-height: 100%;
}

/* Mobile: full-screen sheet */
@media (max-width: 991.98px) {
  .ps-services-mega__sheet {
    inset: 0;
    width: 100%;
    height: 100%;
    max-height: 100dvh;
    border-radius: 0;
    animation: ps-services-mega-in 0.38s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  @keyframes ps-services-mega-in {
    from {
      opacity: 0;
      transform: translateY(12px) scale(0.992);
    }
    to {
      opacity: 1;
      transform: translateY(0) scale(1);
    }
  }
}

/* Desktop: full-width panel below sticky nav */
@media (min-width: 992px) {
  .ps-services-mega__backdrop {
    top: var(--ps-nav-mega-top, 72px);
  }

  .ps-services-mega__sheet {
    left: 0;
    right: 0;
    top: var(--ps-nav-mega-top, 72px);
    transform: none;
    width: 100%;
    max-height: min(calc(100vh - var(--ps-nav-mega-top, 72px)), 920px);
    margin-top: 0;
    border-radius: 0;
    animation: ps-services-mega-in-desktop 0.32s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

  @keyframes ps-services-mega-in-desktop {
    from {
      opacity: 0;
      transform: translateY(-8px);
    }
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }
}

.ps-services-mega__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  flex-shrink: 0;
  padding: clamp(1.1rem, 3vw, 1.65rem) 0 1rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  background: transparent;
}

.ps-services-mega__eyebrow {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-type-eyebrow-size);
  font-weight: 700;
  letter-spacing: var(--ps-type-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--ps-teal-light);
  margin-bottom: 0.35rem;
}

.ps-services-mega__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.25rem, 2.5vw, 1.65rem);
  font-weight: 800;
  color: #fff;
  letter-spacing: var(--ps-type-section-title-tracking);
  line-height: 1.2;
  margin: 0 0 0.4rem;
}

.ps-services-mega__lead {
  margin: 0;
  font-size: 0.95rem;
  color: rgba(255, 255, 255, 0.72);
  max-width: 44rem;
  line-height: 1.5;
}

.ps-services-mega__close {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.28);
  background: rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.95);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.ps-services-mega__close:hover {
  background: rgba(178, 31, 123, 0.2);
  border-color: rgba(178, 31, 123, 0.55);
  color: #fff;
}

.ps-services-mega__close-icon {
  position: relative;
  width: 18px;
  height: 18px;
  display: block;
}

.ps-services-mega__close-icon::before,
.ps-services-mega__close-icon::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 18px;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
}

.ps-services-mega__close-icon::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.ps-services-mega__close-icon::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

.ps-services-mega__grid {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding: 1rem 0 1.25rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
}

@media (min-width: 576px) {
  .ps-services-mega__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
  }
}

@media (min-width: 992px) {
  .ps-services-mega__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    padding: 1.15rem 0 1.35rem;
  }
}

.ps-services-mega-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  text-decoration: none;
  color: inherit;
  border-radius: var(--ps-radius);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
  transition: box-shadow 0.25s ease, transform 0.25s ease, border-color 0.25s ease, background-color 0.25s ease;
}

.ps-services-mega-card:hover {
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35);
  transform: translateY(-3px);
  border-color: rgba(28, 163, 186, 0.45);
  background: rgba(255, 255, 255, 0.09);
}

.ps-services-mega-card:focus-visible {
  outline: 2px solid var(--ps-teal-light);
  outline-offset: 3px;
}

.ps-services-mega-card--teal { --mega-card-accent: var(--ps-teal); }
.ps-services-mega-card--magenta { --mega-card-accent: var(--ps-magenta); }
.ps-services-mega-card--navy { --mega-card-accent: rgba(255, 255, 255, 0.55); }
.ps-services-mega-card--green { --mega-card-accent: var(--ps-green); }

.ps-services-mega-card__media {
  position: relative;
  flex-shrink: 0;
  height: clamp(7.25rem, 11vw, 9.5rem);
  overflow: hidden;
  background-color: rgba(15, 21, 48, 0.5);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  transition: transform 0.45s ease;
}

.ps-services-mega-card__media::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 4px;
  background: var(--mega-card-accent, var(--ps-teal));
  z-index: 1;
}

.ps-services-mega-card:hover .ps-services-mega-card__media {
  transform: scale(1.04);
}

.ps-services-mega-card__body {
  padding: 0.85rem 1rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  flex: 1;
}

.ps-services-mega-card__title {
  font-family: var(--ps-font-heading);
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #fff;
  line-height: 1.3;
  /* Reserve exactly two lines so blurbs and CTAs line up across the grid */
  min-height: calc(2 * 1.3 * 0.82rem);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

.ps-services-mega-card__blurb {
  font-size: 0.82rem;
  color: rgba(255, 255, 255, 0.68);
  line-height: 1.45;
  flex: 1;
}

.ps-services-mega-card__cta {
  font-family: var(--ps-font-heading);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ps-teal-light);
  margin-top: auto;
  padding-top: 0.35rem;
}

.ps-services-mega-card:hover .ps-services-mega-card__cta {
  color: var(--ps-magenta-light);
}

.ps-services-mega__footer {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  padding: 1rem 0 clamp(1.1rem, 3vw, 1.5rem);
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  background: transparent;
}

.ps-services-mega__footer .ps-services-mega__footer-secondary {
  border-color: rgba(255, 255, 255, 0.4);
  color: rgba(255, 255, 255, 0.95);
}

.ps-services-mega__footer .ps-services-mega__footer-secondary:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: #fff;
  color: #fff;
}

@media (min-width: 992px) {
  .ps-services-mega__footer {
    justify-content: flex-end;
  }
}

.ps-services-mega__footer .btn {
  margin-bottom: 0;
}

/* ========== Buttons (unified line-height & height) ========== */
.ps-nav .btn,
.ps-hero .btn,
.ps-cta .btn,
.btn-primary,
.btn-outline-primary,
.btn-light,
.btn-outline-light {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.25;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  font-family: var(--ps-font-heading);
  font-weight: 600;
  margin-bottom:32px;
  border-radius: 0.5rem;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.btn-primary,
.btn-light,
.btn-outline-light {
  min-height: var(--ps-touch-min);
  padding: 0.7rem 1.5rem;
}

.btn-primary {
  background-color: var(--ps-teal);
  border: none;
  color: #fff;
}

.btn-primary:hover {
  background-color: var(--ps-magenta);
  color: #fff;
}

.btn-primary:focus-visible {
  outline: 2px solid var(--ps-teal-dark);
  outline-offset: 2px;
}

.btn-outline-primary {
  border: 2px solid var(--ps-teal);
  color: var(--ps-teal);
  background: transparent;
  min-height: var(--ps-touch-min);
  padding: 0.55rem 1.25rem;
}

.btn-outline-primary:hover {
  background-color: var(--ps-teal);
  color: #fff;
  border-color: var(--ps-teal);
}

.btn-light {
  background-color: var(--ps-white);
  color: var(--ps-teal);
  border: none;
}

.btn-light:hover {
  background-color: var(--ps-bg-alt);
  color: var(--ps-magenta);
}

.btn-outline-light {
  border: 2px solid rgba(255, 255, 255, 0.9);
  color: #fff;
  background: transparent;
}

.btn-outline-light:hover {
  background-color: rgba(255, 255, 255, 0.2);
  color: #fff;
  border-color: #fff;
}

/* Small buttons (nav CTA etc.) — same line-height, smaller padding */
.btn-sm.btn-primary,
.btn-sm.btn-outline-primary,
.ps-nav .btn {
  min-height: 40px;
  padding: 0.5rem 1.15rem;
  font-size: 0.9rem;
}

/* ========== Animated shapes (playful but corporate) ========== */
@keyframes ps-float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(8px, -10px) scale(1.02); }
  66% { transform: translate(-5px, 6px) scale(0.98); }
}

@keyframes ps-float-slow {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(15px, -12px); }
}

@keyframes ps-pulse-soft {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 0.6; transform: scale(1.05); }
}

@keyframes ps-blob {
  0%, 100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
  50% { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
}

.ps-shapes {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 0;
}

.ps-shape {
  position: absolute;
  border-radius: 50%;
  animation-duration: 12s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
}

.ps-shape--1 {
  width: 120px;
  height: 120px;
  background: rgba(255, 255, 255, 0.12);
  top: 10%;
  right: 15%;
  animation-name: ps-float;
}

.ps-shape--2 {
  width: 80px;
  height: 80px;
  background: rgba(156, 203, 59, 0.2);
  bottom: 20%;
  right: 8%;
  animation-name: ps-float-slow;
  animation-duration: 15s;
  animation-delay: -2s;
}

.ps-shape--3 {
  width: 160px;
  height: 160px;
  background: rgba(214, 77, 154, 0.08);
  bottom: 5%;
  left: 5%;
  animation-name: ps-pulse-soft;
  animation-duration: 8s;
}

.ps-shape--blob {
  border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
  animation: ps-blob 14s ease-in-out infinite;
}

.ps-shapes--values .ps-shape {
  background: rgba(156, 203, 59, 0.12);
}

.ps-shapes--values .ps-shape--2 {
  background: rgba(28, 163, 186, 0.1);
}

.ps-shapes--values .ps-shape--3 {
  background: rgba(178, 31, 123, 0.06);
}

@media (max-width: 767.98px) {
  .ps-shape--1 { width: 70px; height: 70px; right: 5%; }
  .ps-shape--2 { width: 50px; height: 50px; }
  .ps-shape--3 { width: 90px; height: 90px; }
}

/* ========== Hero (homepage) — typography-led show-stopper ========== */
.ps-hero {
  color: #fff;
  position: relative;
  overflow: hidden;
}

/* Modifier: full-bleed typography hero (no image) */
.ps-hero--typo {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 5rem 0 5.5rem; /* extra bottom so teal extends behind the wave */
}

.ps-hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background: linear-gradient(155deg, #062e28 0%, #0a3d35 22%, var(--ps-teal-dark) 45%, var(--ps-teal) 72%, #0d5349 100%);
  opacity: 1;
}

.ps-hero-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 80% 50% at 70% 40%, rgba(75, 184, 202, 0.2) 0%, transparent 50%);
  pointer-events: none;
}

.ps-hero--typo .ps-shapes {
  z-index: 0;
}

.ps-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: 1140px;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

.ps-hero__content {
  max-width: 28em;
}

.ps-hero__eyebrow {
  font-family: var(--ps-font-heading);
  font-weight: 700;
  font-size: clamp(0.75rem, 2vw, 0.9rem);
  letter-spacing: 0.35em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.85);
  margin-bottom: 0.5rem;
}

.ps-hero__title {
  font-family: var(--ps-font-heading);
  font-weight: 900;
  line-height: 0.95;
  margin-bottom: 0.2em;
  color: #fff;
  position: relative;
}

.ps-hero__title::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -0.15em;
  width: 1.2em;
  height: 4px;
  background: linear-gradient(90deg, var(--ps-green-light), var(--ps-green));
  border-radius: 2px;
  box-shadow: 0 0 20px rgba(197, 224, 120, 0.4);
}

.ps-hero__title-line {
  letter-spacing: -0.02em;
}

.ps-hero__title-line--1 {
  font-size: clamp(3rem, 12vw, 6.5rem);
  color: #fff;
  background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0.92) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.ps-hero__title-line--2 {
  font-size: clamp(2.8rem, 10vw, 5.5rem);
  color: var(--ps-green-light);
  text-shadow: 0 0 40px rgba(197, 224, 120, 0.35), 0 2px 4px rgba(0, 0, 0, 0.1);
}

.ps-hero__tagline {
  font-family: var(--ps-font-heading);
  font-weight: 600;
  font-size: clamp(1rem, 2.5vw, 1.35rem);
  letter-spacing: 0.02em;
  color: rgba(255, 255, 255, 0.95);
  margin-bottom: 1rem;
}

.ps-hero__lead {
  font-size: clamp(0.95rem, 1.5vw, 1.05rem);
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.88);
  max-width: 26em;
  margin-bottom: 1.75rem;
}

.ps-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.ps-hero__ctas .btn {
  margin: 0;
}

/* Scroll hint */
.ps-hero__scroll {
  position: absolute;
  bottom: 1.5rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
}

.ps-hero__scroll-dot {
  display: block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.6);
  animation: ps-scroll-bounce 2s ease-in-out infinite;
}

@keyframes ps-scroll-bounce {
  0%, 100% { transform: translateY(0); opacity: 0.6; }
  50% { transform: translateY(8px); opacity: 1; }
}

@media (min-width: 768px) {
  .ps-hero--typo {
    padding: 6rem 0 5rem;
  }
  .ps-hero__content {
    max-width: 22em;
  }
}

@media (min-width: 992px) {
  .ps-hero__content {
    max-width: 26em;
  }
}

/* Legacy hero image (if used elsewhere) */
.ps-hero-img {
  position: relative;
  overflow: hidden;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.2);
  clip-path: polygon(0 0, 100% 0, 100% 92%, 8% 100%, 0 100%);
  border-radius: 0 0 0 1rem;
}

.ps-hero-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  min-height: 220px;
  display: block;
}

.ps-hero-play img.ps-play-graphic {
  max-width: 100%;
  height: auto;
  filter: drop-shadow(0 10px 24px rgba(0, 0, 0, 0.15));
}

/* ========== Page hero (subpages) — dark navy band ========== */
.ps-hero-sub {
  background: var(--ps-hero-navy-grad);
  color: #fff;
  padding: 3rem 0;
  position: relative;
  overflow: hidden;
  border-top: 3px solid rgba(255, 255, 255, 0.08);
}

.ps-hero-sub::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 14% 18%, rgba(178, 31, 123, 0.24) 0%, transparent 28%),
    radial-gradient(circle at 82% 10%, rgba(156, 203, 59, 0.16) 0%, transparent 26%),
    radial-gradient(circle at 72% 85%, rgba(28, 163, 186, 0.2) 0%, transparent 30%);
  pointer-events: none;
}

.ps-hero-sub::after {
  content: '';
  position: absolute;
  right: -40vw;
  bottom: -70px;
  width: 300vw;
  height: 100vh;
  background: linear-gradient(135deg, rgba(28, 163, 186, 0.22), rgba(255, 255, 255, 0.04));
  transform: rotate(-35deg);
  pointer-events: none;
}

.ps-hero-sub h1 {
  color: #fff;
  font-size: clamp(2.05rem, 5vw, 3.35rem);
  font-weight: 900;
  letter-spacing: -0.02em;
  line-height: 1.3;
  margin-bottom: 0.65rem;
  text-wrap: balance;
  max-width: 100%;
}

@media (min-width: 768px) {
  .ps-hero-sub h1 {
    max-width: 80%;
  }
}

@media (min-width: 992px) {
  .ps-hero-sub h1 {
    max-width: 60%;
  }
}

.ps-hero-sub p {
  margin-bottom: 1rem;
  color: rgba(255, 255, 255, 0.95);
  max-width: 40rem;
  font-size: 1.05rem;
}

.ps-hero-sub .ps-kicker {
  color: var(--ps-teal-light);
}

.ps-hero-sub .ps-page-intro {
  color: rgba(255, 255, 255, 0.94);
}

.ps-hero-sub .ps-page-intro a {
  color: #fff;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(28, 163, 186, 0.85);
}

.ps-hero-sub .ps-page-intro a:hover {
  color: var(--ps-teal-light);
  text-decoration-color: var(--ps-teal-light);
}

.ps-hero-sub .ps-container {
  position: relative;
  z-index: 1;
}

/* Static photo behind subpage heroes (see includes/hero-image-backdrop.php) */
.ps-hero-image-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.ps-hero-image-bg__media {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.ps-hero-image-bg__scrim {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ps-hero-image-bg--dark .ps-hero-image-bg__scrim {
  background: linear-gradient(
    135deg,
    rgba(33, 39, 85, 0.88) 0%,
    rgba(33, 39, 85, 0.76) 55%,
    rgba(28, 163, 186, 0.28) 100%
  );
}

.ps-hero-sub--has-image::before,
.ps-hero-sub--has-image::after {
  opacity: 0.42;
  z-index: 1;
}

.ps-hero-sub--has-image .ps-container {
  z-index: 2;
}

/* Static photo behind subpage heroes (see includes/hero-image-backdrop.php) */
.ps-hero-image-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.ps-hero-image-bg__media {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.ps-hero-image-bg__scrim {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ps-hero-image-bg--dark .ps-hero-image-bg__scrim {
  background: linear-gradient(
    135deg,
    rgba(33, 39, 85, 0.88) 0%,
    rgba(33, 39, 85, 0.76) 55%,
    rgba(28, 163, 186, 0.28) 100%
  );
}

.ps-hero-sub--has-image::before,
.ps-hero-sub--has-image::after {
  opacity: 0.42;
  z-index: 1;
}

.ps-hero-sub--has-image .ps-container {
  z-index: 2;
}

/* Muted loop video behind subpage heroes (see includes/hero-video-backdrop.php) */
.ps-hero-video-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.ps-hero-video-bg__media {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 100%;
  min-height: 100%;
  object-fit: cover;
  object-position: center;
}

.ps-hero-video-bg__scrim {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ps-hero-video-bg--dark .ps-hero-video-bg__scrim {
  background: linear-gradient(
    135deg,
    rgba(33, 39, 85, 0.84) 0%,
    rgba(33, 39, 85, 0.72) 55%,
    rgba(28, 163, 186, 0.22) 100%
  );
}

.ps-hero-video-bg--light .ps-hero-video-bg__scrim {
  background: linear-gradient(
    120deg,
    rgba(255, 255, 255, 0.84) 0%,
    rgba(247, 248, 251, 0.72) 45%,
    rgba(238, 243, 248, 0.58) 100%
  );
}

.ps-hero-sub--has-video::before,
.ps-hero-sub--has-video::after {
  opacity: 0.42;
  z-index: 1;
}

.ps-hero-sub--has-video .ps-container {
  z-index: 2;
}

.ps-hero-values {
  margin: 1rem 0 1.1rem;
  font-family: var(--ps-font-heading);
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.76);
  line-height: 1.25;
  white-space: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}

.ps-hero-values::-webkit-scrollbar {
  display: none;
}

.ps-hero-values strong {
  color: inherit;
  font-weight: inherit;
}

/* Dark heroes: subpages + service landings share the same value-link treatment (not Bootstrap default blue) */
.ps-hero-sub .ps-hero-values a,
.ps-service-landing-hero .ps-hero-values a {
  color: rgba(255, 255, 255, 0.86);
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.3);
  padding-bottom: 0.01em;
  transition: color 0.2s ease, border-color 0.2s ease;
}

.ps-hero-sub .ps-hero-values a:hover,
.ps-service-landing-hero .ps-hero-values a:hover {
  color: rgba(255, 255, 255, 0.98);
  border-bottom-color: rgba(214, 77, 154, 0.65);
}

.ps-hero-sub .ps-hero-values a:focus-visible,
.ps-service-landing-hero .ps-hero-values a:focus-visible {
  outline: 2px solid rgba(214, 77, 154, 0.75);
  outline-offset: 2px;
  border-bottom-color: rgba(214, 77, 154, 0.9);
}

.ps-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-top: 5.2rem;
}

.ps-hero-actions .btn {
  min-height: var(--ps-touch-min);
}

.ps-hero-actions .btn-outline-light {
  border-color: rgba(255, 255, 255, 0.72);
  color: #fff;
}

.ps-hero-actions .btn-outline-light:hover {
  border-color: #fff;
  color: #fff;
  background: rgba(255, 255, 255, 0.12);
}

@media (min-width: 768px) {
  .ps-hero-sub {
    padding: 4rem 0;
  }
}

/* ========== About / Contact section titles (bold + short gradient stroke) ========== */
.ps-page-section h2 {
  font-size: clamp(1.35rem, 2.5vw, 1.6rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  margin-bottom: 1rem;
  padding-bottom: 0;
  border-bottom: none;
  display: inline-block;
}

.ps-page-section h2::after {
  content: "";
  display: block;
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  margin-top: 0.65rem;
  background: var(--ps-heading-stroke-gradient);
  border-radius: 2px;
  transform: scaleX(var(--ps-stroke-scale, 0.5));
  transform-origin: left center;
  transition: transform 0.3s linear;
}

/* When a band-style header sits inside .ps-page-section, use the bar (not h2::after) */
.ps-page-section .ps-section-header h2 {
  display: block;
  font-size: clamp(1.65rem, 3.8vw, 2.35rem);
  margin-bottom: 0.65rem;
}

.ps-page-section .ps-section-header h2::after {
  display: none;
  content: none;
}

/* Inline links in content blocks: dark navy default, magenta on hover */
.ps-page-section a:not(.btn),
.ps-folio-prose a:not(.btn),
.ps-folio-content a:not(.btn),
.ps-lead-paragraph a:not(.btn),
.ps-brand-value a:not(.btn),
.ps-impact-card a:not(.btn),
.ps-case-study-pillar a:not(.btn),
.ps-contact-quicklinks a:not(.btn),
.ps-news-archive__subscribe a:not(.btn),
/* Catch-all for marketing sections where copy lives in .ps-section-header, plain columns, etc. (not .ps-page-section) */
main section.ps-section:not(.ps-cta) a:not(.btn):not(.ps-shanarri-jump-tile):not(.ps-value-jump-tile):not(.ps-news-archive__link):not(.ps-case-study-directory__media),
main section.ps-folio-section a:not(.btn):not(.ps-shanarri-jump-tile):not(.ps-value-jump-tile):not(.ps-news-archive__link):not(.ps-case-study-directory__media) {
  color: var(--ps-navy);
  text-decoration: underline;
  text-decoration-color: rgba(178, 31, 123, 0.5);
  text-decoration-thickness: 1.5px;
  text-underline-offset: 0.17em;
  font-weight: 600;
  transition: color 0.2s ease, text-decoration-color 0.2s ease;
}

.ps-page-section a:not(.btn):hover,
.ps-folio-prose a:not(.btn):hover,
.ps-folio-content a:not(.btn):hover,
.ps-lead-paragraph a:not(.btn):hover,
.ps-brand-value a:not(.btn):hover,
.ps-impact-card a:not(.btn):hover,
.ps-case-study-pillar a:not(.btn):hover,
.ps-contact-quicklinks a:not(.btn):hover,
.ps-news-archive__subscribe a:not(.btn):hover,
main section.ps-section:not(.ps-cta) a:not(.btn):not(.ps-shanarri-jump-tile):not(.ps-value-jump-tile):not(.ps-news-archive__link):not(.ps-case-study-directory__media):hover,
main section.ps-folio-section a:not(.btn):not(.ps-shanarri-jump-tile):not(.ps-value-jump-tile):not(.ps-news-archive__link):not(.ps-case-study-directory__media):hover {
  color: var(--ps-magenta);
  text-decoration-color: var(--ps-magenta);
}

.ps-page-section a:not(.btn):focus-visible,
.ps-folio-prose a:not(.btn):focus-visible,
.ps-folio-content a:not(.btn):focus-visible,
.ps-lead-paragraph a:not(.btn):focus-visible,
.ps-brand-value a:not(.btn):focus-visible,
.ps-impact-card a:not(.btn):focus-visible,
.ps-case-study-pillar a:not(.btn):focus-visible,
.ps-contact-quicklinks a:not(.btn):focus-visible,
.ps-news-archive__subscribe a:not(.btn):focus-visible,
main section.ps-section:not(.ps-cta) a:not(.btn):not(.ps-shanarri-jump-tile):not(.ps-value-jump-tile):not(.ps-news-archive__link):not(.ps-case-study-directory__media):focus-visible,
main section.ps-folio-section a:not(.btn):not(.ps-shanarri-jump-tile):not(.ps-value-jump-tile):not(.ps-news-archive__link):not(.ps-case-study-directory__media):focus-visible {
  outline: 2px solid rgba(28, 163, 186, 0.45);
  outline-offset: 2px;
  border-radius: 2px;
}

/* ========== Fluid wave dividers — section overlays previous, curve morphs ========== */
.ps-wave {
  position: relative;
  width: 100%;
  line-height: 0;
  overflow: visible;
  z-index: 2;
  pointer-events: none;
}

.ps-wave__svg {
  width: 100%;
  height: auto;
  display: block;
  min-height: 70px;
  overflow: visible;
}

.ps-wave__path--fill {
  transition: none;
}

.ps-wave__path--stroke {
  transition: none;
}

/* Hero to Trust: wave overlays hero so teal is tucked behind (no visible hero bottom) */
.ps-wave--hero-trust {
  margin-top: -90px; /* tuck hero behind the wave */
  margin-bottom: 0;
}

.ps-wave--hero-trust .ps-wave__path--fill {
  fill: var(--ps-white);
}

.ps-wave--hero-trust .ps-wave__path--stroke {
  stroke: rgba(33, 39, 85, 0.85);
}

/* Trust to Services: wave overlays trust so white is tucked behind */
.ps-wave--trust-services {
  margin-top: -50px;
  margin-bottom: 0;
}

.ps-wave--trust-services .ps-wave__path--fill {
  fill: var(--ps-bg-alt);
}

.ps-wave--trust-services .ps-wave__path--stroke {
  stroke: var(--ps-magenta);
}

@media (min-width: 768px) {
  .ps-wave__svg { min-height: 90px; }
  .ps-wave--hero-trust .ps-wave__svg { min-height: 100px; }
}

/* ========== Trust / experience — Light bg, teal typography (no merge) ========== */
.ps-trust {
  background: var(--ps-white);
  color: var(--ps-text);
  position: relative;
  padding-top: 3rem; /* clear space below wave before content */
  padding-bottom: 4rem; /* extend white behind the second wave */
}

.ps-trust .ps-container {
  position: relative;
  z-index: 1;
}

.ps-trust__eyebrow {
  margin-bottom: 0.5rem;
}

.ps-trust h2 {
  color: var(--ps-teal-dark);
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  margin-bottom: 1rem;
}

.ps-trust__lead {
  color: var(--ps-text-muted);
  max-width: 40rem;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 1.75rem;
  font-size: clamp(0.95rem, 1.2vw, 1.05rem);
}

.ps-trust__clients-label {
  font-family: var(--ps-font-heading);
  font-weight: 600;
  font-size: 0.8rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
  margin-bottom: 1rem;
}

.ps-clients {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  justify-content: center;
  list-style: none;
  padding: 0;
  margin: 0;
}

.ps-trust .ps-clients li {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--ps-teal-dark);
  background: rgba(28, 163, 186, 0.08);
  padding: 0.4rem 1rem;
  border-radius: 999px;
  border: 2px solid var(--ps-teal);
}

.ps-trust .ps-clients li::before {
  display: none;
}

/* ========== Section headers (bold, brand-led) ========== */
.ps-section-header {
  text-align: center;
  margin-bottom: 2.5rem;
}

@media (min-width: 768px) {
  .ps-section-header {
    margin-bottom: 3rem;
  }
}

/* Eyebrows — same voice as “Full service catalogue” / services CTA */
.ps-section-header__eyebrow,
.ps-services-footer-cta__eyebrow,
.ps-kicker,
.ps-zigzag__eyebrow,
.ps-folio-agency-head__kicker,
.ps-trust__eyebrow,
.ps-testimonial-showcase-folio__eyebrow,
.ps-related-cs-head__eyebrow {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-type-eyebrow-size);
  font-weight: 700;
  letter-spacing: var(--ps-type-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--ps-teal);
  line-height: 1.35;
}

.ps-section-header__eyebrow {
  margin-bottom: 0.5rem;
}

/* Film / promo bands use eyebrow outside `.ps-section-header`; global `p { max-width: 65ch }` would
   leave the eyebrow block left-aligned while `mx-auto` leads sit centred — match the stack. */
.ps-section .col-lg-10.text-center > .ps-section-header__eyebrow {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}

.ps-section-header h2,
.ps-section-header h2.ps-heading-accent {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.65rem, 3.8vw, 2.35rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  color: var(--ps-navy);
  margin-bottom: 0.65rem;
}

.ps-section-header__bar {
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  background: var(--ps-heading-stroke-gradient);
  margin: 0 auto 1rem;
  border-radius: 2px;
  transform: scaleX(var(--ps-stroke-scale, 0.5));
  transform-origin: center center;
  transition: transform 0.3s linear;
}

/* Split-column / editorial blocks: same eyebrow + stroke as centred section headers */
.ps-section-header--left {
  text-align: left;
}

.ps-section-header--left .ps-section-header__bar {
  margin-left: 0;
  margin-right: auto;
  transform-origin: left center;
}

/* Centred band headers use .ps-section-header p { max-width + margin auto }; left blocks must not centre the eyebrow */
.ps-section-header--left .ps-section-header__eyebrow {
  max-width: none;
  margin-left: 0;
  margin-right: 0;
}

.ps-section-header p {
  max-width: 36rem;
  margin-left: auto;
  margin-right: auto;
}

/* ========== Service cards (home) — accent by psychology ========== */
.ps-service-card {
  --card-accent-rgb: 28, 163, 186;
  --card-bg-image: none;
  background: var(--ps-white);
  border-radius: 0.75rem;
  padding: 1.5rem 1.5rem 1.5rem 1.75rem;
  height: 100%;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-left: 4px solid var(--ps-teal);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-left-color 0.2s ease;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.ps-service-card::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image:
    linear-gradient(140deg, rgba(255, 255, 255, 0.94) 0%, rgba(255, 255, 255, 0.92) 46%, rgba(255, 255, 255, 0.84) 100%),
    var(--card-bg-image);
  background-size: cover;
  background-position: center;
}

.ps-service-card::after {
  content: "";
  position: absolute;
  right: -60px;
  top: -55px;
  width: 170px;
  height: 170px;
  border-radius: 999px;
  background: radial-gradient(circle at center, rgba(var(--card-accent-rgb), 0.14) 0%, rgba(var(--card-accent-rgb), 0.05) 46%, transparent 70%);
  pointer-events: none;
}

@media (max-width: 575.98px) {
  .ps-service-card::after {
    width: 120px;
    height: 120px;
    right: -48px;
    top: -44px;
  }
}

.ps-service-card--green {
  --card-accent-rgb: 156, 203, 59;
  border-left-color: var(--ps-green);
}

.ps-service-card--green:hover {
  border-left-color: var(--ps-green-dark);
}

.ps-service-card--magenta {
  --card-accent-rgb: 178, 31, 123;
  border-left-color: var(--ps-magenta);
}

.ps-service-card--magenta:hover {
  border-left-color: var(--ps-magenta-dark);
}

.ps-service-card:hover {
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.08);
  transform: translateY(-3px);
  border-left-color: var(--ps-teal-dark);
}

.ps-service-card h3,
.ps-service-card h4 {
  margin-bottom: 0.5rem;
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--ps-text);
  letter-spacing: -0.01em;
}

.ps-service-card p {
  font-size: 0.95rem;
  margin-bottom: 0.75rem;
  color: rgba(34, 34, 34, 0.95);
}

.ps-service-card .ps-link {
  font-family: var(--ps-font-heading);
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--ps-teal);
  text-decoration: none;
}

.ps-service-card .ps-link:hover {
  color: var(--ps-magenta);
  text-decoration: underline;
}

/* ========== Homepage services (creative layout) ========== */
.ps-services-creative {
  display: grid;
  gap: 1.1rem;
}

.ps-services-feature {
  position: relative;
  background: linear-gradient(135deg, var(--ps-navy) 0%, var(--ps-navy) 55%, var(--ps-teal-dark) 100%);
  color: #fff;
  border-radius: 1rem;
  padding: 1.4rem 1.35rem;
  box-shadow: var(--ps-shadow-lg);
  overflow: hidden;
}

.ps-services-feature::after {
  content: '';
  position: absolute;
  right: -40px;
  bottom: -40px;
  width: 160px;
  height: 160px;
  background: rgba(255, 255, 255, 0.14);
  clip-path: polygon(0 100%, 100% 0, 100% 100%);
}

.ps-services-feature__eyebrow {
  font-family: var(--ps-font-heading);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.72rem;
  font-weight: 700;
  color: rgba(255, 255, 255, 0.8);
  margin-bottom: 0.45rem;
}

.ps-services-feature h3 {
  color: #fff;
  font-size: clamp(1.45rem, 3vw, 2rem);
  font-weight: 800;
  margin-bottom: 0.65rem;
}

.ps-services-feature p {
  color: rgba(255, 255, 255, 0.92);
}

.ps-services-stack {
  display: grid;
  gap: 1rem;
}

.ps-service-card--angled {
  position: relative;
}

.ps-service-card--angled::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 82px;
  height: 82px;
  background: rgba(178, 31, 123, 0.16);
  clip-path: polygon(100% 0, 100% 100%, 0 0);
}

.ps-service-card--raised {
  box-shadow: 0 18px 35px rgba(31, 45, 101, 0.14);
}

.ps-service-card--navy {
  --card-accent-rgb: 33, 39, 85;
  border-left-color: var(--ps-navy);
}

.ps-service-card--navy:hover {
  border-left-color: var(--ps-navy);
}

/* Home services card image themes (subtle, content-first) */
.ps-service-card--design {
  --card-bg-image: url("../images/portfolio-design-landscape.jpg");
}

.ps-service-card--consultancy {
  --card-bg-image: url("../images/portfolio-community-outdoor.jpg");
}

.ps-service-card--hubs {
  --card-bg-image: url("../images/portfolio-greenspace-wide.jpg");
}

/* Homepage — services grid footer (heading left, CTA right) */
.ps-services-footer-cta {
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 2rem;
}

.ps-services-footer-cta__text {
  flex: 1 1 18rem;
  min-width: 0;
}

.ps-services-footer-cta__eyebrow {
  margin-bottom: 0.35rem;
}

.ps-services-footer-cta__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.15rem, 2.2vw, 1.45rem);
  font-weight: 800;
  color: var(--ps-navy);
  margin: 0;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  max-width: 28rem;
}

.ps-services-footer-cta__title:not(:last-child) {
  margin-bottom: 0.5rem;
}

.ps-services-footer-cta__text > p.small:last-child {
  margin-bottom: 0;
  max-width: 36rem;
}

.ps-services-footer-cta__text a {
  color: var(--ps-teal-dark);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(28, 163, 186, 0.45);
  text-underline-offset: 0.15em;
}

.ps-services-footer-cta__text a:hover {
  color: var(--ps-magenta);
  text-decoration-color: rgba(178, 31, 123, 0.5);
}

.ps-services-footer-cta__action {
  flex-shrink: 0;
  margin-left: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem;
}

@media (max-width: 767.98px) {
  .ps-services-footer-cta {
    flex-direction: column;
    align-items: stretch;
    gap: 0.85rem;
  }

  .ps-services-footer-cta__text {
    flex: 0 0 auto;
  }

  .ps-services-footer-cta__title {
    max-width: none;
    font-size: clamp(1.1rem, 4.5vw, 1.35rem);
  }

  .ps-services-footer-cta__action {
    margin-left: 0;
    width: 100%;
  }

  .ps-services-footer-cta__action .btn {
    width: 100%;
    justify-content: center;
  }
}

/* ========== Home wellbeing preview (corporate treatment) ========== */
.ps-home-wellbeing .ps-section-header {
  max-width: 64rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-home-wellbeing .ps-section-header h2 {
  max-width: 24ch;
  margin-left: auto;
  margin-right: auto;
  font-size: clamp(1.65rem, 3.3vw, 2.15rem);
  line-height: 1.12;
  letter-spacing: -0.015em;
}

.ps-home-wellbeing .ps-section-header__eyebrow {
  letter-spacing: 0.18em;
}

.ps-home-wellbeing .ps-lead-paragraph {
  font-size: clamp(1rem, 1.55vw, 1.14rem);
  line-height: 1.58;
  font-weight: 600;
  margin-bottom: 0.65rem;
}

.ps-home-wellbeing .col-lg-7 > p:not(.ps-lead-paragraph) {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ps-text-muted);
}

.ps-home-wellbeing__list li {
  margin-bottom: 0.52rem;
  line-height: 1.5;
  font-size: 0.98rem;
}

.ps-home-wellbeing__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  margin-top: 1rem;
}

.ps-home-wellbeing__actions .btn {
  min-height: var(--ps-touch-min);
}

.ps-home-wellbeing__card {
  border-radius: 0.9rem;
  border: 1px solid rgba(33, 39, 85, 0.1);
  background: #fff;
  box-shadow: 0 6px 22px rgba(31, 45, 101, 0.08);
  padding: 1rem 1.05rem 1.05rem;
}

.ps-home-wellbeing__card--kpi {
  border-top: 4px solid var(--ps-teal);
  background: linear-gradient(180deg, rgba(28, 163, 186, 0.08) 0%, rgba(247, 250, 252, 0.96) 72%);
}

.ps-home-wellbeing__card-eyebrow {
  font-family: var(--ps-font-heading);
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ps-teal-dark);
  margin: 0 0 0.3rem;
}

.ps-home-wellbeing__card h3 {
  font-size: 1.1rem;
  line-height: 1.25;
  margin-bottom: 0.55rem;
}

.ps-home-wellbeing__card p {
  font-size: 0.97rem;
  line-height: 1.5;
}

.ps-home-wellbeing__kpis {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.45rem;
}

.ps-home-wellbeing__kpis span {
  display: block;
  border: 1px solid rgba(33, 39, 85, 0.14);
  border-radius: 0.7rem;
  padding: 0.48rem 0.75rem;
  font-size: 0.84rem;
  color: rgba(33, 39, 85, 0.92);
  background: rgba(255, 255, 255, 0.92);
}

.ps-home-wellbeing__kpis strong {
  font-family: var(--ps-font-heading);
  font-size: 1.05rem;
  color: var(--ps-navy);
  margin-right: 0.5rem;
}

@media (min-width: 992px) {
  .ps-home-wellbeing .col-lg-7 {
    padding-right: 1.2rem;
  }

  .ps-home-wellbeing .col-lg-5 {
    padding-left: 0.65rem;
  }
}

@media (min-width: 992px) {
  .ps-services-creative {
    grid-template-columns: 1.05fr 1.4fr;
    align-items: stretch;
  }

  .ps-services-feature {
    padding: 1.8rem 1.65rem;
  }

  .ps-services-stack {
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      'design consultancy'
      'hubs hubs';
    align-content: start;
    align-items: start;
  }

  .ps-services-stack article:nth-child(1) { grid-area: design; }
  .ps-services-stack article:nth-child(2) {
    grid-area: consultancy;
    margin-top: 0;
  }
  .ps-services-stack article:nth-child(3) { grid-area: hubs; }
}

/* ========== Feature block (design & build) — Magenta + Teal ========== */
.ps-feature {
  background-color: var(--ps-white);
  position: relative;
  overflow: hidden;
  border-top: 4px solid var(--ps-magenta);
  border-bottom: 4px solid var(--ps-teal);
}

.ps-feature .ps-shapes {
  opacity: 0.5;
}

.ps-feature__content h2 {
  font-size: clamp(1.6rem, 3.5vw, 2rem);
  font-weight: 800;
  margin-bottom: 1rem;
  padding-bottom: 0;
  border-bottom: none;
  display: inline-block;
}

.ps-feature__content h2::after {
  content: "";
  display: block;
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  margin-top: 0.65rem;
  background: var(--ps-heading-stroke-gradient);
  border-radius: 2px;
}

.ps-feature-img {
  position: relative;
  overflow: hidden;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);
  clip-path: polygon(0 4%, 100% 0, 100% 96%, 0 100%);
  border-radius: 0 0.75rem 0.75rem 0;
}

.ps-feature-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  min-height: 240px;
  display: block;
}

.ps-feature ul {
  padding-left: 1.25rem;
  margin-bottom: 1.5rem;
}

.ps-feature li {
  margin-bottom: 0.35rem;
}

.ps-feature li::marker {
  color: var(--ps-green);
}

/* ========== Values (mission) — Green-led, per-value accent ========== */
.ps-values {
  position: relative;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(156, 203, 59, 0.08) 0%, var(--ps-bg-alt) 50%);
}

.ps-values .ps-container {
  position: relative;
  z-index: 1;
}

.ps-values__header h2 {
  font-size: clamp(1.75rem, 4vw, 2.25rem);
  font-weight: 800;
  color: var(--ps-green-dark);
  margin-bottom: 0.5rem;
}

.ps-values__header .ps-values__bar {
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  background: var(--ps-heading-stroke-gradient);
  margin: 0 auto 1rem;
  border-radius: 2px;
}

.ps-values__card {
  background: var(--ps-white);
  border-radius: 0.75rem;
  padding: 1.5rem;
  height: 100%;
  border-top: 4px solid var(--ps-green);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.ps-values__card--teal {
  border-top-color: var(--ps-teal);
}

.ps-values__card--magenta {
  border-top-color: var(--ps-magenta);
}

.ps-values__card:hover {
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px);
}

.ps-values-icon {
  width: 3.5rem;
  height: 3.5rem;
  margin: 0 auto 0.75rem;
  border-radius: 50%;
  background: rgba(156, 203, 59, 0.2);
  color: var(--ps-green-dark);
  font-size: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
}

.ps-values__card--teal .ps-values-icon {
  background: rgba(28, 163, 186, 0.15);
  color: var(--ps-teal-dark);
}

.ps-values__card--magenta .ps-values-icon {
  background: rgba(178, 31, 123, 0.12);
  color: var(--ps-magenta-dark);
}

.ps-values h3,
.ps-values h4,
.ps-values h5 {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ps-text);
  margin-bottom: 0.25rem;
}

/* ========== CTA band — optional video + navy scrim, bold white type ========== */
.ps-cta {
  background: linear-gradient(135deg, var(--ps-teal) 0%, var(--ps-teal-dark) 100%);
  color: #fff;
  padding: 3.5rem 0;
  text-align: center;
  position: relative;
  overflow: hidden;
}

.ps-cta--has-video {
  display: flex;
  align-items: center;
  min-height: 70vh;
  padding: clamp(2.5rem, 6vw, 4rem) 0;
  background: var(--ps-navy-deep);
}

.ps-cta-video-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.ps-cta-video-bg__media {
  opacity: 0.5;
}

.ps-cta-video-bg__scrim {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    135deg,
    rgba(15, 21, 48, 0.92) 0%,
    rgba(33, 39, 85, 0.88) 42%,
    rgba(33, 39, 85, 0.82) 70%,
    rgba(20, 28, 65, 0.9) 100%
  );
}

.ps-cta--has-video .ps-container {
  z-index: 2;
}

.ps-cta--has-video h2,
.ps-cta--has-video .ps-cta__lead {
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.28);
}

@media (prefers-reduced-motion: reduce) {
  .ps-cta-video-bg {
    display: none;
  }

  .ps-cta--has-video {
    background: var(--ps-hero-navy-grad);
  }
}

.ps-cta h2 {
  color: #fff;
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: 800;
  margin-bottom: 0.5rem;
}

.ps-cta__bar {
  width: 3rem;
  height: 4px;
  background: rgba(255, 255, 255, 0.6);
  margin: 0 auto 1rem;
  border-radius: 2px;
}

.ps-cta p {
  color: rgba(255, 255, 255, 0.95);
  margin-bottom: 1.5rem;
  max-width: 28rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-cta .ps-cta__lead {
  max-width: 36rem;
  color: rgba(255, 255, 255, 0.95);
}

.ps-cta__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.75rem 1rem;
  margin-top: 1.5rem;
}

.ps-cta .btn {
  margin: 0.35rem;
  min-height: var(--ps-touch-min);
}

.ps-cta__actions .btn {
  margin: 0;
}

/* ========== Project cards — Teal accent on hover ========== */
.ps-project-card {
  background: var(--ps-white);
  border-radius: 0.75rem;
  overflow: hidden;
  height: 100%;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-top: 4px solid var(--ps-teal);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-top-color 0.2s ease;
}

.ps-project-card:hover {
  box-shadow: 0 16px 40px rgba(28, 163, 186, 0.15);
  transform: translateY(-4px);
  border-top-color: var(--ps-magenta);
}

.ps-project-card img {
  width: 100%;
  height: 200px;
  object-fit: cover;
  display: block;
  clip-path: polygon(0 0, 100% 0, 100% 88%, 0 100%);
}

.ps-project-card .card-body {
  padding: 1.25rem;
}

.ps-project-card h3,
.ps-project-card .h5 {
  font-size: 1.05rem;
  margin-bottom: 0.25rem;
}

@media (min-width: 768px) {
  .ps-project-card img {
    height: 220px;
  }
}

/* ========== Service blocks (services page) — accent border by type ========== */
.ps-service-block {
  background: var(--ps-white);
  border-radius: 0.75rem;
  padding: 1.75rem 1.75rem 1.75rem 2rem;
  margin-bottom: 2rem;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-left: 5px solid var(--ps-teal);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04);
  transition: box-shadow 0.2s ease, border-left-color 0.2s ease;
}

.ps-service-block--green {
  border-left-color: var(--ps-green);
}

.ps-service-block--magenta {
  border-left-color: var(--ps-magenta);
}

.ps-service-block:hover {
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.08);
  border-left-color: var(--ps-teal-dark);
}

.ps-service-block--green:hover {
  border-left-color: var(--ps-green-dark);
}

.ps-service-block--magenta:hover {
  border-left-color: var(--ps-magenta-dark);
}

.ps-service-block h2 {
  font-size: clamp(1.25rem, 2.5vw, 1.5rem);
  font-weight: 800;
  margin-bottom: 0.5rem;
}

.ps-badge-tag {
  display: inline-block;
  background: rgba(156, 203, 59, 0.25);
  color: var(--ps-green-dark);
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  margin-right: 0.35rem;
  margin-bottom: 0.35rem;
}

/* ========== Footer ========== */
.ps-footer {
  position: relative;
  overflow: hidden;
  background: var(--ps-hero-navy-grad);
  color: rgba(255, 255, 255, 0.9);
  padding: 2.5rem 0 1.5rem;
}

.ps-footer::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(circle at 14% 18%, rgba(178, 31, 123, 0.22) 0%, transparent 28%),
    radial-gradient(circle at 82% 10%, rgba(156, 203, 59, 0.14) 0%, transparent 26%),
    radial-gradient(circle at 72% 85%, rgba(28, 163, 186, 0.18) 0%, transparent 30%);
}

.ps-footer > .ps-container {
  position: relative;
  z-index: 1;
}

.ps-footer h4,
.ps-footer h5,
.ps-footer .ps-footer-heading {
  font-family: var(--ps-font-heading);
  font-weight: 600;
  font-size: 1rem;
  color: #fff;
  margin-bottom: 0.75rem;
  margin-top:80px;
}

.ps-footer a {
  color: rgba(255, 255, 255, 0.88);
  text-decoration: none;
}

.ps-footer a:hover {
  color: #fff;
  text-decoration: underline;
}

.ps-footer ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.ps-footer ul li {
  margin-bottom: 0.35rem;
}

.ps-footer small,
.ps-footer .small {
  font-size: 0.875rem;
  opacity: 0.9;
}

.ps-footer hr {
  border-color: rgba(255, 255, 255, 0.2);
  margin: 1.5rem 0 1rem;
}

.ps-footer .ps-footer-news-intro {
  opacity: 0.82;
  max-width: 22rem;
}

.ps-footer .ps-footer-address {
  margin-top: 1.35rem;
}

.ps-footer-news-block {
  margin-top: 2rem;
}

.ps-footer-news-block .ps-footer-heading {
  margin-top: 0;
}

.ps-footer-accreditations {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.6rem 1rem;
  padding-top: 0.25rem;
}

.ps-footer-accreditations__label {
  font-family: var(--ps-font-heading);
  font-size: 0.7rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.7;
}

.ps-footer-accreditations__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.85rem;
  margin: 0;
  padding: 0;
}

.ps-footer-accreditations__list li {
  margin: 0;
  font-size: 0.85rem;
  opacity: 0.9;
  position: relative;
  padding-left: 0.9rem;
}

.ps-footer-accreditations__list li::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: rgba(28, 163, 186, 0.75);
  position: absolute;
  left: 0;
  top: 0.6em;
  transform: translateY(-50%);
}

.ps-footer .ps-footer-news-subheading {
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.55;
  margin-top: 0.15rem;
}

/* ========== Forms ========== */
.form-control:focus,
.form-select:focus {
  border-color: var(--ps-teal);
  box-shadow: 0 0 0 0.2rem rgba(28, 163, 186, 0.25);
}

.form-label {
  font-weight: 600;
  color: var(--ps-text);
}

/* ========== Scroll-reveal (initial state; jQuery toggles .is-visible) ========== */
.ps-reveal {
  opacity: 0.4;
  transform: none;
  transition: opacity 0.45s ease-out;
  will-change: opacity;
}

.ps-reveal.is-visible {
  opacity: 1;
}

.ps-reveal-delay-1 { transition-delay: 0.1s; }
.ps-reveal-delay-2 { transition-delay: 0.2s; }
.ps-reveal-delay-3 { transition-delay: 0.3s; }
.ps-reveal-delay-4 { transition-delay: 0.4s; }

@media (prefers-reduced-motion: reduce) {
  .ps-reveal,
  .ps-page-section h2::after,
  .ps-section-header__bar {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}

/* ========== Nav scroll state ========== */
.ps-nav.ps-nav--scrolled {
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}

/* ========== Utilities ========== */
.ps-heading-accent {
  color: var(--ps-navy);
  font-family: var(--ps-font-heading);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
}

/* Homepage services title: two lines like the old <br>, without a literal break (cleaner reflow on resize) */
.ps-heading-accent--balance {
  text-wrap: balance;
}

.ps-heading-accent--balance .ps-heading-line2 {
  display: block;
}

/* Wellbeing outcomes heading: one accent only (teal = trust / defensible evidence per brand palette) */
.ps-heading-accent--brand-outcomes {
  display: inline-block;
}

.ps-heading-accent--brand-outcomes .ps-heading-brand__line {
  display: block;
}

.ps-heading-accent--brand-outcomes .ps-heading-brand__line2 {
  display: block;
  margin-top: 0.2rem;
}

.ps-heading-brand__highlight {
  color: var(--ps-teal-dark);
}

.ps-page-section h2.ps-heading-accent--brand-outcomes::after {
  background: var(--ps-heading-stroke-gradient-wellbeing);
}

/* ========== Brand guidelines layout (brand-guidelines.php) ========== */
.ps-brand-guidelines {
  background: radial-gradient(circle at top left, rgba(178, 31, 123, 0.08), transparent 55%),
              radial-gradient(circle at bottom right, rgba(28, 163, 186, 0.08), transparent 50%),
              var(--ps-bg);
}

.ps-brand-hero {
  position: relative;
  overflow: hidden;
}

.ps-brand-hero__eyebrow {
  font-family: var(--ps-font-heading);
  font-weight: 700;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  font-size: 0.8rem;
  opacity: 0.9;
}

.ps-brand-layout {
  padding-top: 3rem;
  padding-bottom: 4rem;
}

.ps-brand-toc {
  position: sticky;
  top: 6.5rem;
  padding: 1.25rem 1.4rem;
  border-radius: var(--ps-radius);
  background: rgba(255, 255, 255, 0.92);
  box-shadow: var(--ps-shadow-card);
  border: 1px solid rgba(0, 0, 0, 0.04);
}

.ps-brand-toc__list {
  list-style: none;
  padding-left: 0;
  margin-bottom: 0;
  font-size: 0.9rem;
}

.ps-brand-toc__list li + li {
  margin-top: 0.25rem;
}

.ps-brand-toc__list a {
  display: inline-block;
  color: var(--ps-text);
  text-decoration: none;
}

.ps-brand-toc__list a:hover {
  color: var(--ps-magenta);
  text-decoration: underline;
}

@media (max-width: 991.98px) {
  .ps-brand-toc {
    position: static;
    margin-bottom: 1rem;
  }
}

.ps-brand-card {
  position: relative;
  background: var(--ps-white);
  border-radius: var(--ps-radius-lg);
  padding: 1.75rem 1.75rem 1.75rem 1.75rem;
  margin-bottom: 1.75rem;
  box-shadow: var(--ps-shadow-card);
  border: 1px solid rgba(0, 0, 0, 0.04);
  overflow: hidden;
}

.ps-brand-card h2 {
  font-size: clamp(1.4rem, 2.5vw, 1.7rem);
  margin-bottom: 0.75rem;
  color: var(--ps-magenta);
}

.ps-brand-card__divider {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font-family: var(--ps-font-heading);
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ps-text-muted);
  margin-bottom: 1rem;
}

.ps-brand-card__divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(178, 31, 123, 0.5), transparent);
}

.ps-brand-card ul,
.ps-brand-card ol {
  margin-bottom: 0.75rem;
}

.ps-brand-pill-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.6rem;
  list-style: none;
  padding: 0;
}

.ps-brand-pill-list li {
  padding: 0.3rem 0.85rem;
  border-radius: 999px;
  background: rgba(156, 203, 59, 0.16);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ps-green-dark);
}

.ps-brand-value {
  border-radius: var(--ps-radius);
  padding: 1.1rem 1.25rem;
  background: var(--ps-bg-alt);
  border-left: 4px solid var(--ps-teal);
}

.ps-brand-value h3 {
  font-size: 1rem;
  margin-bottom: 0.35rem;
  color: var(--ps-text);
}

.ps-brand-value--magenta { border-left-color: var(--ps-magenta); }
.ps-brand-value--teal { border-left-color: var(--ps-teal); }
.ps-brand-value--green { border-left-color: var(--ps-green); }
.ps-brand-value--neutral { border-left-color: var(--ps-text-muted); }
.ps-brand-value--dark { border-left-color: var(--ps-footer); }

.ps-brand-tagline-list {
  list-style: none;
  padding-left: 0;
  margin-bottom: 0;
}

.ps-brand-tagline-list li + li {
  margin-top: 0.75rem;
}

.ps-brand-tagline-list span {
  display: block;
  font-size: 0.9rem;
  color: var(--ps-text-muted);
}

.ps-brand-swatches .ps-brand-swatch {
  border-radius: var(--ps-radius);
  padding: 0.9rem 0.9rem 0.85rem;
  color: #fff;
  box-shadow: var(--ps-shadow-sm);
}

.ps-brand-swatch__label {
  display: block;
  font-weight: 700;
  font-size: 0.85rem;
}

.ps-brand-swatch__code {
  display: block;
  font-size: 0.8rem;
  opacity: 0.9;
  margin-bottom: 0.25rem;
}

.ps-brand-swatch p {
  margin-bottom: 0;
  font-size: 0.82rem;
}

.ps-brand-swatch--magenta {
  background: linear-gradient(135deg, var(--ps-magenta) 0%, var(--ps-magenta-dark) 100%);
}

.ps-brand-swatch--teal {
  background: linear-gradient(135deg, var(--ps-teal) 0%, var(--ps-teal-dark) 100%);
}

.ps-brand-swatch--green {
  background: linear-gradient(135deg, var(--ps-green) 0%, var(--ps-green-dark) 100%);
}

.ps-brand-swatch--grey {
  background: linear-gradient(135deg, #ffffff 0%, var(--ps-bg-alt) 100%);
  color: var(--ps-text);
}

.ps-brand-summary {
  border-radius: var(--ps-radius);
  background: rgba(28, 163, 186, 0.04);
  border: 1px solid rgba(28, 163, 186, 0.25);
  padding: 1rem 1.25rem;
}

/* ========== Corporate homepage direction ========== */
.ps-kicker {
  margin-bottom: 0.6rem;
}

/* Homepage hero: video + light scrim; clean separation from content below (no green wedge / sketch layers) */
.ps-corporate-hero {
  position: relative;
  overflow: hidden;
  padding-top: 4.5rem;
  padding-bottom: 5rem;
  border-bottom: 1px solid rgba(33, 39, 85, 0.08);
}

.ps-corporate-hero:not(.ps-corporate-hero--has-video) {
  background: linear-gradient(165deg, #f7f8fb 0%, #eef3f8 55%, #f4f6f9 100%);
}

.ps-corporate-hero .ps-container {
  position: relative;
  z-index: 2;
}

.ps-corporate-hero--has-video .ps-hero-video-bg {
  z-index: 0;
}

.ps-corporate-hero--has-video .ps-container {
  z-index: 2;
}

.ps-corporate-hero__title {
  font-size: clamp(2.2rem, 7vw, 4rem);
  line-height: 0.95;
  font-weight: 900;
  color: var(--ps-navy);
  margin-bottom: 0.6rem;
}

.ps-corporate-hero__title span {
  color: var(--ps-magenta);
}

.ps-corporate-hero__subtitle {
  font-family: var(--ps-font-heading);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--ps-magenta);
  font-size: clamp(1.15rem, 2.3vw, 1.7rem);
  font-weight: 800;
  margin-bottom: 0.85rem;
}

.ps-brand-lockup {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.25rem;
}

.ps-brand-mark {
  width: 44px;
  height: 30px;
  background: url(../images/playscot_brand_mark.svg) no-repeat center center / contain;
  border-radius: 0.2rem;
  box-shadow: inset 0 0 0 3px #fff;
  display:inline-block;
  position: absolute;
  left:0;
}

.ps-corporate-hero__lead {
  max-width: 34rem;
  /* color: rgba(255, 255, 255, 0.92); */
}

.ps-corporate-hero .ps-hero-values {
  margin: 1rem 0 1.1rem;
  color: rgba(34, 34, 34, 0.62);
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: var(--ps-font-heading);
  white-space: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
}

.ps-corporate-hero .ps-hero-values strong {
  color: inherit;
  font-weight: inherit;
}

.ps-corporate-hero .ps-hero-values a {
  color: rgba(33, 39, 85, 0.78);
  text-decoration: none;
  border-bottom: 1px solid rgba(33, 39, 85, 0.28);
  padding-bottom: 0.01em;
  transition: color 0.2s ease, border-color 0.2s ease;
}

.ps-corporate-hero .ps-hero-values a:hover {
  color: rgba(33, 39, 85, 0.92);
  border-bottom-color: rgba(178, 31, 123, 0.62);
}

.ps-corporate-hero .ps-hero-values a:focus-visible {
  outline: 2px solid rgba(178, 31, 123, 0.6);
  outline-offset: 2px;
  border-bottom-color: rgba(178, 31, 123, 0.9);
}

.ps-corporate-hero .ps-hero-actions {
  margin-top: 1.15rem;
}

.ps-corporate-hero__image-wrap {
  position: relative;
  border-radius: 1.5rem;
  overflow: hidden;
  box-shadow: var(--ps-shadow-lg);
  max-width: 460px;
  margin-left: auto;
  z-index: 3;
}

.ps-corporate-hero__image-wrap img {
  display: block;
  width: 100%;
  height: 520px;
  object-fit: cover;
  object-position: center;
}

.ps-corporate-hero__tag {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  background: rgba(33, 39, 85, 0.92);
  color: #fff;
  font-family: var(--ps-font-heading);
  font-size: 0.8rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 0.45rem 0.85rem;
  border-radius: 999px;
}

.ps-corporate-hero__dots {
  position: absolute;
  right: 1rem;
  bottom: 1rem;
  display: flex;
  gap: 0.35rem;
}

.ps-corporate-hero__dots span {
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: var(--ps-navy);
}

.ps-corporate-hero__dots span:nth-child(1) { background: var(--ps-teal); }
.ps-corporate-hero__dots span:nth-child(2) { background: var(--ps-green); }
.ps-corporate-hero__dots span:nth-child(3) { background: var(--ps-magenta); }
.ps-corporate-hero__dots span:nth-child(4) { background: var(--ps-navy); }

.ps-btn-hero {
  background: var(--ps-magenta);
}

.ps-btn-hero:hover {
  background: var(--ps-magenta-dark);
}

.ps-btn-hero-outline {
  border-color: var(--ps-navy-deep);
  color: var(--ps-navy-deep);
  background: transparent;
}

.ps-btn-hero-outline:hover {
  background: rgba(33, 39, 85, 0.08);
  border-color: var(--ps-navy);
  color: var(--ps-navy);
}

.ps-impact-card {
  border-radius: var(--ps-radius);
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: var(--ps-shadow-card);
  padding: 1.1rem 1.2rem;
}

.ps-about-sidebar-card {
  background-color: var(--ps-bg-alt);
  border: 1px solid rgba(0, 0, 0, 0.06);
}

/* About — centred content block; sidebar photo fixed landscape proportion (no portrait skyscraper) */
.ps-about-main__shell {
  max-width: 72rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-about-main__frame {
  aspect-ratio: 16 / 10;
  max-height: min(20rem, 48vw);
  border-radius: 0.65rem;
  overflow: hidden;
}

@media (max-width: 991.98px) {
  .ps-about-main__frame {
    max-height: none;
    width: 100%;
  }
}

.ps-about-main__frame img {
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: cover;
  object-position: center;
}

@media (min-width: 992px) {
  .ps-about-main__media {
    position: sticky;
    top: 5.5rem;
  }
}

.ps-impact-card h3 {
  color: var(--ps-navy);
  margin-bottom: 0.75rem;
  font-size: 1rem;
  line-height: 1.45;
}

.ps-impact-card ul {
  margin-bottom: 0;
}

.ps-impact-card .ps-shanarri-indicator-links,
.ps-impact-card .ps-core-values-links {
  margin-top: 0.15rem;
}

.ps-impact-card--teal {
  background: linear-gradient(135deg, rgba(28, 163, 186, 0.12), rgba(28, 163, 186, 0.04));
  border-color: rgba(28, 163, 186, 0.3);
}

.ps-framework-list li {
  margin-bottom: 0.45rem;
}

/* Homepage “Who we are” — neutral corporate band (continues from hero without mint / decorative wedges) */
.ps-positioning-section {
  position: relative;
  background: linear-gradient(180deg, #f7f8fb 0%, #f2f4f8 100%);
  border-top: 1px solid rgba(33, 39, 85, 0.06);
  padding-top: clamp(3rem, 5vw, 4.75rem);
  padding-bottom: clamp(3rem, 5vw, 4.75rem);
}

/* Single brand accent: thin teal rule under hero border (reads as corporate divider, not illustration) */
.ps-positioning-section::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: min(6rem, 28vw);
  height: 3px;
  background: linear-gradient(90deg, var(--ps-teal) 0%, rgba(28, 163, 186, 0.35) 100%);
  pointer-events: none;
  z-index: 1;
}

.ps-positioning-section::after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom:0;
  width: min(50%, 30vw);
  /* height: 3px; */
  background: var(--ps-teal-dark);
  pointer-events: none;
  z-index: 0;
  opacity:0.2;
}

.ps-positioning-section > .ps-container {
  position: relative;
  z-index: 1;
}

.ps-positioning-section .ps-kicker {
  color: var(--ps-teal-dark);
}

.ps-positioning-section h2,
.ps-positioning-section p,
.ps-positioning-section li,
.ps-positioning-section a {
  color: var(--ps-text);
}

.ps-positioning-section .ps-impact-card h3,
.ps-positioning-section .ps-impact-card p,
.ps-positioning-section .ps-impact-card li {
  color: var(--ps-text);
}

.ps-positioning-section .ps-impact-card a:not(.ps-core-values-links__link):not(.ps-shanarri-indicator-links__link) {
  color: var(--ps-text);
}

.ps-positioning-shell {
  background: rgba(255, 255, 255, 0.5);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: 0.5rem;
  padding: clamp(1.25rem, 2.2vw, 1.85rem);
  box-shadow: 0 1px 2px rgba(31, 45, 101, 0.04), 0 12px 32px rgba(31, 45, 101, 0.06);
}

.ps-positioning-section h2.ps-heading-accent {
  color: var(--ps-navy);
}

.ps-positioning-section .ps-page-section > p:first-of-type,
.ps-positioning-section .ps-lead-paragraph {
  color: var(--ps-text);
}

.ps-positioning-section .ps-impact-card {
  border: 1px solid rgba(33, 39, 85, 0.1);
  box-shadow: 0 8px 24px rgba(31, 45, 101, 0.1);
  background: #fff;
}

@media (max-width: 767.98px) {
  .ps-corporate-hero {
    padding-top: 3.25rem;
    padding-bottom: 4rem;
  }

  .ps-corporate-hero__image-wrap img {
    height: 360px;
  }

  .ps-positioning-section {
    padding-top: 2.75rem;
    padding-bottom: 2.75rem;
  }

  .ps-positioning-shell {
    border-radius: 0.45rem;
    padding: 1rem 0.95rem;
  }
}

/* ========== Internal page visual system ========== */
.ps-page-intro {
  max-width: 70ch;
  font-size: 1.03rem;
}

/* ========== Global first paragraph (lead) treatment ========== */
.ps-page-section > p:first-of-type:not(.ps-section-header__eyebrow),
.ps-zigzag .col-lg-6 > p.ps-zigzag__lead,
.ps-folio-content p:first-of-type,
.ps-service-landing .ps-section .col-lg-6 > p:first-of-type,
.ps-service-landing .ps-section .col-lg-7 > p:first-of-type,
.ps-service-landing .ps-section .col-lg-8 > p:first-of-type {
  font-size: clamp(1.05rem, 1.9vw, 1.18rem);
  line-height: 1.62;
  font-weight: 600;
  color: var(--ps-text);
  max-width: 68ch;
}

.ps-page-section > p:first-of-type + p,
.ps-folio-content p:first-of-type + p,
.ps-service-landing .ps-section .col-lg-6 > p:first-of-type + p,
.ps-service-landing .ps-section .col-lg-7 > p:first-of-type + p,
.ps-service-landing .ps-section .col-lg-8 > p:first-of-type + p {
  margin-top: 0.75rem;
}

/* Utility: force lead style where needed */
.ps-lead-paragraph {
  font-size: clamp(1.05rem, 1.9vw, 1.18rem);
  line-height: 1.62;
  font-weight: 600;
  max-width: 68ch;
}

/* In-page titles (not section-header band) — slightly larger than band titles */
.ps-section h2.ps-heading-accent {
  font-size: clamp(1.7rem, 3.4vw, 2.4rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
}

/* Centre band: CTA reference typography overrides generic section h2 */
.ps-section .ps-section-header h2.ps-heading-accent,
.ps-section .ps-section-header h2 {
  font-size: clamp(1.65rem, 3.8vw, 2.35rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
}

.ps-media-frame {
  position: relative;
  /* border-radius: 1.2rem; */
  overflow: hidden;
  /* box-shadow: var(--ps-shadow-lg); */
  background: #fff;
}

.ps-media-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  border: 64px solid rgba(255, 255, 255, 0.4);
  border-radius: 0;
  pointer-events: none;
  overflow: hidden;
}

@media (max-width: 991.98px) {
  /* Mobile/tablet: use a full-width wash instead of inset desktop frame border */
  .ps-media-frame::before {
    border: 0;
    background: linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.16) 0%,
      rgba(255, 255, 255, 0.06) 34%,
      rgba(255, 255, 255, 0) 70%
    );
  }
}



.ps-media-frame img {
  width: 100%;
  display: block;
  object-fit: cover;
}

.ps-media-frame__label {
  position: absolute;
  left: 0rem;
  bottom: 1rem;
  z-index: 2;
  background: rgba(31, 45, 101, 0.92);
  color: #fff;
  font-family: var(--ps-font-heading);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.75rem;
  border-radius: 0 999px 999px 0;
  padding: 0.42rem 1.5rem;
}

/* Our Approach (community-impact) — “More than construction”: balanced split, compact photo, no heavy frame wash */
.ps-approach-more.ps-section--offset-rail-left::before {
  width: min(18vw, 200px);
  opacity: 0.55;
}

.ps-approach-more__aside {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

@media (min-width: 992px) {
  .ps-approach-more .ps-media-frame--approach {
    border-radius: 0.5rem;
    overflow: hidden;
    width: 100%;
    max-width: 100%;
    aspect-ratio: 4 / 3;
    max-height: min(22rem, 42vh);
    box-shadow: 0 14px 44px rgba(33, 39, 85, 0.1);
  }

  /* Drop the 64px faux “mat” border — it read as a grey band and dwarfed the copy */
  .ps-approach-more .ps-media-frame--approach::before {
    display: none;
  }

  .ps-approach-more .ps-media-frame--approach img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .ps-approach-more .ps-media-frame--approach .ps-media-frame__label {
    bottom: 0.75rem;
    font-size: 0.7rem;
    padding: 0.35rem 1.15rem;
  }

  .ps-approach-more .ps-approach-more__card {
    margin-top: 0;
  }
}

@media (max-width: 991.98px) {
  .ps-approach-more .ps-media-frame--approach {
    border-radius: 0.45rem;
    aspect-ratio: 16 / 10;
    max-height: 15rem;
    overflow: hidden;
  }

  .ps-approach-more .ps-media-frame--approach::before {
    display: none;
  }

  .ps-approach-more .ps-media-frame--approach img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

/* Service split columns — image as background-size: cover (controlled height per breakpoint) */
.ps-service-section-visual {
  position: relative;
  width: 100%;
  min-height: 31rem;
  max-height: 37rem;
  border-radius: 0.65rem;
  overflow: hidden;
  background-color: var(--ps-navy-deep);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.ps-service-section-visual::before {
  content: '';
  position: absolute;
  inset: 0;
  border: 40px solid rgba(255, 255, 255, 0.35);
  pointer-events: none;
  z-index: 1;
}

.ps-service-section-visual__label {
  position: absolute;
  left: 0;
  bottom: 1rem;
  z-index: 2;
  background: rgba(31, 45, 101, 0.92);
  color: #fff;
  font-family: var(--ps-font-heading);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.75rem;
  border-radius: 0 999px 999px 0;
  padding: 0.42rem 1.5rem;
}

@media (min-width: 576px) {
  .ps-service-section-visual {
    min-height: 12.5rem;
    max-height: 19rem;
  }
}

@media (min-width: 992px) {
  .ps-service-section-visual {
    min-height: 26rem;
    max-height: 38rem;
  }
}

/* Services hub full-width strip */
.ps-service-section-visual--banner {
  min-height: 12rem;
  max-height: min(26rem, 55vw);
  border-radius: 0.85rem;
}

@media (min-width: 992px) {
  .ps-service-section-visual--banner {
    min-height: 13.5rem;
    max-height: min(20rem, 42vw);
  }
}

.ps-service-block {
  border-radius: 1rem;
}

.ps-service-block h2 {
  font-size: clamp(1.45rem, 2.8vw, 2rem);
}

.ps-project-card {
  border-radius: 1rem;
}

.ps-project-card img {
  height: 220px;
}

.ps-project-card .card-body h3 {
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--ps-navy);
}

/* ========== Partners / councils strip (procurement-facing) ========== */
.ps-section--partners {
  background: linear-gradient(180deg, var(--ps-white) 0%, #f6f7f9 45%, var(--ps-white) 100%);
  border-top: 1px solid rgba(0, 0, 0, 0.05);
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.ps-partners-intro {
  max-width: 40rem;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ps-text-muted);
  margin-top: 0.75rem;
}

/* ========== Councils carousel (owl) ========== */
.ps-councils-carousel .owl-stage {
  display: flex;
}

.ps-councils-carousel .owl-item {
  display: flex;
  align-items: stretch;
}

/* Authority logo tiles — restrained, boardroom-appropriate */
.ps-council-logo {
  width: 100%;
  min-height: 120px;
  max-height:120px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: 0.35rem;
  box-shadow: none;
  padding: 4px;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.ps-council-logo:hover {
  border-color: rgba(33, 39, 85, 0.18);
  box-shadow: 0 4px 20px rgba(31, 45, 101, 0.06);
}

.ps-council-logo img {
  width: 100%;
  max-width: 100%;
  height: auto;
  /* max-height: 48px; */
  object-fit: contain;
  object-position: center;
  opacity: 0.94;
}

/* Project grid — ROI quick facts (portfolio cards) */
.ps-project-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.5rem 0.35rem;
  margin-top: auto;
  padding-top: 1rem;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.ps-project-stat {
  text-align: center;
}

.ps-project-stat__value {
  display: block;
  font-family: var(--ps-font-heading);
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--ps-teal);
  line-height: 1.15;
}

.ps-project-stat__suffix {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--ps-teal);
}

.ps-project-stat__label {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
  line-height: 1.25;
}

.ps-project-stats__note {
  grid-column: 1 / -1;
  margin: 0.35rem 0 0;
  font-size: 0.65rem;
  color: var(--ps-text-muted);
  text-align: center;
  line-height: 1.35;
}

.ps-councils-carousel .owl-nav {
  margin-top: 1.25rem;
  display: flex;
  justify-content: flex-end;
  gap: 0.35rem;
}

.ps-councils-carousel .owl-nav button.owl-prev,
.ps-councils-carousel .owl-nav button.owl-next {
  width: 32px;
  height: 32px;
  border-radius: 0.25rem !important;
  border: 1px solid rgba(33, 39, 85, 0.14) !important;
  background: var(--ps-white) !important;
  color: var(--ps-navy) !important;
  opacity: 0.85;
  transition: opacity 0.2s ease, border-color 0.2s ease;
}

.ps-councils-carousel .owl-nav button.owl-prev:hover,
.ps-councils-carousel .owl-nav button.owl-next:hover {
  opacity: 1;
  border-color: rgba(33, 39, 85, 0.28) !important;
}

/* ========== Recent projects — full-bleed right rail (desktop) ========== */
.ps-section--recent-projects {
  overflow-x: visible;
  position: relative;
  isolation: isolate;
  background: transparent;
}

.ps-section--recent-projects::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: min(32vw, 420px);
  z-index: 0;
  background: linear-gradient(
    180deg,
    rgba(33, 39, 85, 0.09) 0%,
    rgba(28, 163, 186, 0.07) 45%,
    rgba(178, 31, 123, 0.05) 100%
  );
  pointer-events: none;
}

.ps-section--recent-projects > .ps-container,
.ps-section--recent-projects > .ps-recent-projects-bleed {
  position: relative;
  z-index: 1;
}

.ps-recent-projects-bleed {
  width: 100vw;
  margin-left: calc(50% - 50vw);
  position: relative;
  overflow: visible;
}

.ps-recent-projects-rail {
  padding-left: calc((100vw - min(var(--ps-container-max), 100vw)) / 2 + var(--ps-container-padding-x));
  padding-right: 0;
}

.ps-recent-projects-footer-cta {
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.ps-recent-projects-footer-cta .ps-section-header__bar {
  margin-top: 0.45rem;
  margin-bottom: 0.65rem;
}

.ps-recent-projects-carousel .owl-stage {
  display: flex;
}

.ps-recent-projects-carousel .owl-item {
  display: flex;
  align-items: stretch;
}

.ps-recent-projects-carousel .owl-item .ps-offscreen-card {
  height: 100%;
  width: 100%;
}

.ps-recent-projects-carousel .owl-nav {
  margin-top: 1rem;
  display: flex;
  justify-content: flex-end;
  gap: 0.35rem;
  padding-right: var(--ps-container-padding-x);
}

.ps-recent-projects-carousel .owl-nav button.owl-prev,
.ps-recent-projects-carousel .owl-nav button.owl-next {
  width: 32px;
  height: 32px;
  border-radius: 0.25rem !important;
  border: 1px solid rgba(33, 39, 85, 0.14) !important;
  background: var(--ps-white) !important;
  color: var(--ps-navy) !important;
  opacity: 0.9;
  transition: opacity 0.2s ease, border-color 0.2s ease;
}

.ps-recent-projects-carousel .owl-nav button.owl-prev:hover,
.ps-recent-projects-carousel .owl-nav button.owl-next:hover {
  opacity: 1;
  border-color: rgba(33, 39, 85, 0.28) !important;
}

@media (max-width: 767.98px) {
  /* Full-bleed rail + asymmetric padding often clips slides and causes horizontal scroll on small viewports */
  .ps-recent-projects-bleed {
    width: 100%;
    margin-left: 0;
  }

  .ps-recent-projects-rail {
    padding-left: var(--ps-container-padding-x);
    padding-right: var(--ps-container-padding-x);
  }

  .ps-section--recent-projects::before {
    display: none;
  }

  .ps-recent-projects-carousel .owl-stage-outer {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  .ps-recent-projects-carousel .owl-item .ps-offscreen-card {
    flex-basis: 100%;
    width: 100%;
    max-width: 100%;
  }

  .ps-recent-projects-carousel .owl-nav {
    justify-content: center;
    padding-right: 0;
    padding-left: 0;
  }

  .ps-section--recent-projects > .ps-container:last-of-type {
    margin-top: 0.25rem;
  }

  .ps-recent-projects-footer-cta.ps-services-footer-cta {
    margin-top: 1rem;
    padding: 1.15rem 1.15rem 1.2rem;
    border-top: none;
    border-radius: var(--ps-radius);
    background: var(--ps-white);
    border: 1px solid rgba(33, 39, 85, 0.08);
    box-shadow: var(--ps-shadow-card);
    gap: 0.75rem;
  }

  .ps-recent-projects-footer-cta .ps-services-footer-cta__eyebrow {
    margin-bottom: 0;
  }

  .ps-recent-projects-footer-cta .ps-services-footer-cta__title {
    font-size: 1.15rem;
    line-height: 1.35;
    letter-spacing: -0.015em;
  }

  .ps-recent-projects-footer-cta .ps-section-header__bar {
    width: 2.75rem;
    margin-top: 0.5rem;
    margin-bottom: 0.7rem;
  }

  .ps-recent-projects-footer-cta .ps-services-footer-cta__action .btn {
    min-height: var(--ps-touch-min);
    font-weight: 700;
  }
}

.ps-offscreen-rail {
  display: flex;
  gap: 1rem;
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
  scrollbar-color: rgba(28, 163, 186, 0.6) rgba(0, 0, 0, 0.06);
  padding-bottom: 0.65rem;
}

.ps-offscreen-rail::-webkit-scrollbar {
  height: 8px;
}

.ps-offscreen-rail::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.06);
  border-radius: 999px;
}

.ps-offscreen-rail::-webkit-scrollbar-thumb {
  background: rgba(28, 163, 186, 0.6);
  border-radius: 999px;
}

.ps-offscreen-card {
  width: 350px;
  scroll-snap-align: start;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.08);
  /* border-radius: 1rem; */
  box-shadow: var(--ps-shadow-card);
  padding: 0.7rem 0.7rem 1rem;
}

.ps-recent-projects-carousel .ps-offscreen-card {
  width: 100%;
  max-width: none;
  border-radius: 0.35rem;
  padding: 0;
  box-shadow: 0 2px 12px rgba(31, 45, 101, 0.07);
  border-color: rgba(33, 39, 85, 0.1);
}

.ps-recent-projects-carousel .ps-offscreen-card .ps-media-frame img {
  height: 220px;
}

@media (min-width: 992px) {
  .ps-recent-projects-carousel .ps-offscreen-card .ps-media-frame img {
    height: 248px;
  }
}

.ps-offscreen-card h3 {
  margin: 0.85rem 1.4rem;
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--ps-navy);
}

.ps-offscreen-card p {
  margin: 0.85rem 1.4rem 1.2rem;
  color: var(--ps-text-muted);
  font-size: 0.92rem;
}

.ps-offscreen-card .ps-media-frame img {
  height: 285px;
}

@media (max-width: 991.98px) {
  .ps-offscreen-rail .ps-offscreen-card {
    flex-basis: calc((100% - 1rem) / 1.6);
  }
}

/* ========== Service landing pages & hub ========== */
.ps-service-landing-hero {
  padding: 2.75rem 0 3rem;
  position: relative;
  overflow: hidden;
  background: var(--ps-hero-navy-grad);
  border-top: 3px solid rgba(255, 255, 255, 0.08);
}

.ps-service-landing-hero .ps-container {
  position: relative;
  z-index: 1;
}

.ps-service-landing-hero::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 12% 16%, rgba(178, 31, 123, 0.16) 0%, transparent 28%),
    radial-gradient(circle at 85% 18%, rgba(156, 203, 59, 0.14) 0%, transparent 27%),
    radial-gradient(circle at 75% 86%, rgba(28, 163, 186, 0.17) 0%, transparent 31%);
  pointer-events: none;
}

/* Accent variants: optional left-edge tint (hero remains navy) */
.ps-service-landing-hero--teal::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: linear-gradient(180deg, var(--ps-teal) 0%, var(--ps-teal-dark) 100%);
  pointer-events: none;
}

.ps-service-landing-hero--magenta::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: linear-gradient(180deg, var(--ps-magenta) 0%, var(--ps-magenta-dark) 100%);
  pointer-events: none;
}

.ps-service-landing-hero--navy::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: rgba(255, 255, 255, 0.2);
  pointer-events: none;
}

.ps-service-landing-hero--navy-teal::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: linear-gradient(180deg, var(--ps-teal-light) 0%, var(--ps-teal) 100%);
  pointer-events: none;
}

.ps-service-landing-hero h1 {
  color: #fff !important;
  font-size: clamp(1.85rem, 4vw, 2.65rem);
  font-weight: 900;
  line-height: 1.15;
}

.ps-service-landing-hero .ps-kicker {
  color: var(--ps-teal-light) !important;
}

.ps-service-landing-hero .ps-page-intro {
  color: rgba(255, 255, 255, 0.95) !important;
}

/* Service landing: looping video under navy scrim (same pattern as subpage / folio heroes) */
.ps-service-landing-hero--has-video {
  background: var(--ps-navy-deep);
  min-height: min(52vh, 520px);
  width: 100%;
  max-width: 100%;
}

/* Full-bleed: no left accent strip (::before from --teal/--magenta/etc.) */
.ps-service-landing-hero--has-video::before {
  content: none;
  display: none;
}

.ps-service-landing-hero--has-video .ps-hero-video-bg {
  z-index: 0;
  left: 0;
  right: 0;
  width: 100%;
  min-width: 100%;
}

.ps-service-landing-hero--has-video .ps-hero-video-bg__media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-width: 100%;
  min-height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
}

.ps-service-landing-hero--has-video::after {
  z-index: 1;
}

.ps-service-landing-hero--has-video .ps-container {
  z-index: 3;
}

.ps-service-landing-hero--has-video h1,
.ps-service-landing-hero--has-video .ps-page-intro {
  text-shadow: 0 1px 22px rgba(0, 0, 0, 0.35);
}

@media (prefers-reduced-motion: reduce) {
  .ps-service-landing-hero--has-video .ps-hero-video-bg {
    display: none;
  }

  .ps-service-landing-hero--has-video {
    background: var(--ps-hero-navy-grad);
    min-height: 0;
  }
}

.ps-service-breadcrumb {
  font-size: 0.85rem;
  margin-bottom: 1rem;
}

.ps-service-breadcrumb a {
  color: rgba(255, 255, 255, 0.95);
  text-decoration: none;
}

.ps-service-breadcrumb a:hover {
  text-decoration: underline;
}

.ps-service-outcomes-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: 1fr;
  align-items: stretch;
}

@media (min-width: 576px) {
  .ps-service-outcomes-grid {
    gap: 1.1rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* Three cards: two on row 1, third full-width below (no awkward empty cell) */
  .ps-service-outcomes-grid:has(> :nth-child(3):last-child) .ps-service-outcome-card:nth-child(3) {
    grid-column: 1 / -1;
  }
}

@media (min-width: 992px) {
  .ps-service-outcomes-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  /* Exactly two cards: stay on one row, equal width (avoids a hole in a 3-col grid) */
  .ps-service-outcomes-grid:has(> :nth-child(2):last-child) {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ps-service-outcomes-grid:has(> :nth-child(3):last-child) .ps-service-outcome-card:nth-child(3) {
    grid-column: auto;
  }
}

/* Explicit utility for sections that must stay 2x2 (e.g. four delivery-stage cards) */
@media (min-width: 576px) {
  .ps-service-outcomes-grid--two-by-two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.ps-service-outcome-card {
  background: var(--ps-white);
  border-radius: var(--ps-radius);
  padding: 1.15rem 1.2rem;
  box-shadow: var(--ps-shadow-card);
  border-left: 4px solid var(--ps-teal);
  height: 100%;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.ps-service-outcome-card--teal { border-left-color: var(--ps-teal); }
.ps-service-outcome-card--green { border-left-color: var(--ps-green); }
.ps-service-outcome-card--magenta { border-left-color: var(--ps-magenta); }

.ps-service-outcome-card h3 {
  color: var(--ps-navy);
  flex-shrink: 0;
}

.ps-service-outcome-card p {
  flex-grow: 1;
}

.ps-service-include-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.ps-service-include-list li {
  position: relative;
  padding-left: 1.35rem;
  margin-bottom: 0.5rem;
}

.ps-service-include-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.5rem;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--ps-teal);
}

.ps-service-split-panel {
  display: flex;
  gap: 0;
  background: var(--ps-white);
  border-radius: var(--ps-radius-lg);
  overflow: hidden;
  box-shadow: var(--ps-shadow-card);
  border: 1px solid rgba(0, 0, 0, 0.06);
}

.ps-service-split-panel__accent {
  width: 8px;
  flex-shrink: 0;
  background: linear-gradient(180deg, var(--ps-magenta), var(--ps-magenta-dark));
}

.ps-service-split-panel__body {
  padding: 1.5rem 1.5rem 1.5rem 1.25rem;
}

.ps-service-steps {
  padding-left: 1.25rem;
  margin-bottom: 0;
}

.ps-service-steps li {
  margin-bottom: 0.5rem;
}

/* Related services strip — aligned with .ps-related-cs-wrap / case study cards */
.ps-related-services-wrap {
  overflow-x: hidden;
}

.ps-related-services-top {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.25rem;
  margin-bottom: clamp(1.5rem, 3.5vw, 2rem);
}

.ps-related-services-head {
  text-align: left;
  max-width: 48rem;
  margin: 0;
}

.ps-related-services-head__eyebrow {
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ps-teal);
  margin-bottom: 0.45rem;
}

.ps-related-services-head__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.35rem, 2.8vw, 1.85rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  color: var(--ps-navy);
  margin-bottom: 0.35rem;
}

.ps-related-services-head__bar {
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  background: var(--ps-heading-stroke-gradient);
  border-radius: 2px;
  margin: 0.4rem 0 0.75rem;
}

.ps-related-services-head__intro {
  max-width: 40rem;
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ps-text-muted);
}

.ps-related-services-all {
  white-space: nowrap;
  align-self: center;
}

.ps-related-services-grid {
  display: grid;
  gap: 1rem;
  width: 100%;
  max-width: 100%;
  grid-template-columns: 1fr;
}

@media (min-width: 576px) {
  .ps-related-services-grid--2,
  .ps-related-services-grid--3,
  .ps-related-services-grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 992px) {
  .ps-related-services-grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .ps-related-services-grid--4 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 1200px) {
  .ps-related-services-grid--4 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.ps-related-services-grid .ps-related-services-card {
  min-width: 0;
}

.ps-related-services-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  height: 100%;
  padding: 0;
  overflow: hidden;
  background: var(--ps-white);
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: var(--ps-radius);
  border-top: 4px solid var(--ps-teal);
  box-shadow: var(--ps-shadow-sm);
  color: inherit;
  text-decoration: none;
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.ps-related-services-card:hover {
  box-shadow: var(--ps-shadow-card-hover);
  transform: translateY(-2px);
  color: inherit;
}

.ps-related-services-card__media {
  display: block;
  width: 100%;
  height: clamp(120px, 22vw, 150px);
  background-size: cover;
  background-position: center;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.ps-related-services-card__body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.4rem;
  flex: 1;
  padding: 1rem 1.1rem 1.15rem;
}

.ps-related-services-card__tag {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ps-teal);
}

.ps-related-services-card__title {
  font-family: var(--ps-font-heading);
  font-size: 1.02rem;
  font-weight: 800;
  color: var(--ps-navy);
  line-height: 1.3;
  min-height: calc(1.3em * 2);
  display: -webkit-box;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

.ps-related-services-card__cta {
  margin-top: auto;
  padding-top: 0.35rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ps-teal);
}

@media (max-width: 767.98px) {
  .ps-related-services-top {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
  }

  .ps-related-services-all {
    align-self: stretch;
    width: 100%;
    text-align: center;
  }

  .ps-related-services-head__bar {
    margin-bottom: 0.65rem;
  }
}

.ps-service-hub-card {
  background: var(--ps-white);
  border-radius: var(--ps-radius);
  padding: 1.35rem 1.25rem;
  box-shadow: var(--ps-shadow-card);
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-top: 4px solid var(--ps-teal);
}

.ps-service-hub-card h3 {
  color: var(--ps-navy);
  font-weight: 800;
}

.ps-service-hub-card--teal { border-top-color: var(--ps-teal); }
.ps-service-hub-card--magenta { border-top-color: var(--ps-magenta); }
.ps-service-hub-card--green { border-top-color: var(--ps-green); }
.ps-service-hub-card--navy { border-top-color: var(--ps-navy); }

/* Service landing: centred copy (global p max-width leaves blocks left-aligned unless centred) */
.ps-prose-narrow {
  max-width: 52ch;
}

.text-center .ps-prose-narrow,
.ps-service-cta-inset .lead {
  margin-left: auto;
  margin-right: auto;
}

.ps-service-cta-inset {
  text-align: center;
  padding-top: 1.75rem;
  margin-top: 0.5rem;
  border-top: 1px solid rgba(0, 0, 0, 0.07);
  max-width: 40rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-service-cta-inset .lead {
  max-width: 36rem;
}

/* Standalone CTA (no divider above) */
.ps-service-cta-inset--solo {
  border-top: none;
  padding-top: 0;
  margin-top: 0;
  max-width: 42rem;
}

/* Any centred service CTA: block-level paragraphs must centre */
main .text-center > p.lead,
.ps-section.text-center p.lead {
  margin-left: auto;
  margin-right: auto;
  max-width: 40rem;
}

/* ========== Project case study / creative folio ========== */
.ps-folio {
  background: var(--ps-bg);
}

/* Full-bleed hero with imagery */
.ps-folio-hero {
  position: relative;
  min-height: min(78vh, 720px);
  display: flex;
  align-items: flex-end;
  color: #fff;
}

.ps-folio-hero__visual {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.ps-folio-hero__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.ps-folio-hero__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(33, 39, 85, 0.92) 0%,
    rgba(33, 39, 85, 0.45) 45%,
    rgba(33, 39, 85, 0.2) 100%
  );
}

/* Case study hero: looping video + layered scrims (readable type over busy footage) */
.ps-folio-hero--has-video {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.ps-folio-hero--has-video .ps-folio-hero__visual {
  width: 100%;
  min-width: 100%;
  overflow: hidden;
}

.ps-folio-hero--has-video .ps-folio-hero__visual .ps-hero-video-bg {
  z-index: 0;
  width: 100%;
  min-width: 100%;
  height: 100%;
}

.ps-folio-hero--has-video .ps-folio-hero__visual .ps-hero-video-bg__media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-width: 100%;
  min-height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
}

.ps-folio-hero--has-video .ps-hero-video-bg--dark .ps-hero-video-bg__scrim {
  background: linear-gradient(
    135deg,
    rgba(15, 21, 48, 0.9) 0%,
    rgba(33, 39, 85, 0.82) 48%,
    rgba(28, 163, 186, 0.16) 100%
  );
}

.ps-folio-hero--has-video .ps-folio-hero__scrim--video {
  z-index: 2;
  background:
    linear-gradient(to top, rgba(15, 21, 48, 0.97) 0%, rgba(15, 21, 48, 0.62) 38%, rgba(33, 39, 85, 0.22) 72%, transparent 100%),
    radial-gradient(circle at 14% 22%, rgba(178, 31, 123, 0.2) 0%, transparent 34%),
    radial-gradient(circle at 82% 78%, rgba(28, 163, 186, 0.16) 0%, transparent 36%);
}

.ps-folio-hero--has-video .ps-folio-hero__title,
.ps-folio-hero--has-video .ps-folio-hero__lede {
  text-shadow: 0 2px 28px rgba(0, 0, 0, 0.55);
}

.ps-folio-hero--has-video .ps-folio-breadcrumb a {
  text-shadow: 0 1px 12px rgba(0, 0, 0, 0.5);
}

.ps-folio-hero--has-video .ps-case-study-meta--light li {
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
}

.ps-folio-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  padding: 2.5rem 0 3.5rem;
}

.ps-folio-breadcrumb {
  font-size: 0.8rem;
  margin-bottom: 1.25rem;
  letter-spacing: 0.02em;
}

.ps-folio-breadcrumb a {
  color: rgba(255, 255, 255, 0.9);
  text-decoration: none;
}

.ps-folio-breadcrumb a:hover {
  text-decoration: underline;
}

.ps-folio-breadcrumb span:not([aria-hidden]) {
  color: rgba(255, 255, 255, 0.55);
}

.ps-folio-hero__eyebrow {
  font-family: var(--ps-font-heading);
  font-size: 0.72rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.75);
  margin-bottom: 0.75rem;
}

.ps-folio-hero__title {
  font-size: clamp(2rem, 5vw, 3.25rem);
  font-weight: 900;
  line-height: 1.05;
  color: #fff !important;
  letter-spacing: -0.02em;
  max-width: 14ch;
  margin-bottom: 1rem;
}

.ps-folio-hero__lede {
  font-size: clamp(1rem, 1.8vw, 1.2rem);
  line-height: 1.55;
  max-width: 36rem;
  color: rgba(255, 255, 255, 0.92);
  margin-bottom: 0;
}

/* Meta chips (on dark) */
.ps-case-study-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  list-style: none;
  padding: 0;
  margin: 1.75rem 0 0;
}

.ps-case-study-meta--light li {
  background: rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, 0.18);
}

.ps-case-study-meta li {
  padding: 0.55rem 1rem;
  border-radius: 0.5rem;
  font-size: 0.88rem;
  font-weight: 600;
  color: #fff;
}

.ps-case-study-meta li span {
  display: block;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 700;
  opacity: 0.8;
  margin-bottom: 0.15rem;
  color: rgba(255, 255, 255, 0.75);
}

/* Narrow reading column */
.ps-folio-prose {
  max-width: 38rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

.ps-folio-prose--wide {
  max-width: 72rem;
}

.ps-folio-prose p {
  max-width: none;
}

.ps-folio-section {
  padding-top: clamp(2.5rem, 6vw, 4.5rem);
  padding-bottom: clamp(2.5rem, 6vw, 4.5rem);
}

.ps-folio-section--breath {
  padding-top: clamp(3rem, 8vw, 5.5rem);
  padding-bottom: clamp(3rem, 8vw, 5.5rem);
}

.ps-folio-section--tight {
  padding-top: 2rem;
  padding-bottom: 2.5rem;
}

.ps-folio-section--muted {
  background: var(--ps-bg-alt);
  border-top: 1px solid rgba(33, 39, 85, 0.07);
  border-bottom: 1px solid rgba(33, 39, 85, 0.07);
}

.ps-folio-section--muted .ps-folio-scope-card,
.ps-folio-section--muted .ps-folio-impact-tile {
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.1);
  box-shadow: 0 10px 32px rgba(31, 45, 101, 0.08);
}

.ps-folio-section--muted .ps-folio-impact-tile {
  background: linear-gradient(165deg, #fff 0%, #fafbfc 100%);
}

.ps-folio-section--stats {
  background: linear-gradient(180deg, var(--ps-bg-alt) 0%, #fff 100%);
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

.ps-folio-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

@media (min-width: 768px) {
  .ps-folio-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.ps-folio-stat {
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: var(--ps-radius);
  box-shadow: var(--ps-shadow-sm);
  padding: 1.1rem 0.85rem;
  text-align: center;
}

.ps-folio-stat__value {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.35rem, 3vw, 1.75rem);
  font-weight: 800;
  color: var(--ps-teal);
  line-height: 1.1;
}

.ps-folio-stat__suffix {
  font-size: 0.85rem;
  font-weight: 700;
  vertical-align: top;
}

.ps-folio-stat__label {
  margin-top: 0.45rem;
  font-size: 0.78rem;
  line-height: 1.35;
  color: var(--ps-text-muted);
}

.ps-folio-stats__disclaimer {
  margin-top: 1rem;
  font-size: 0.8rem;
  color: var(--ps-text-muted);
  max-width: 48rem;
}

/* —— Case study: design-agency / corporate folio —— */
.ps-folio-case .ps-folio-hero__title {
  max-width: min(100%, 22ch);
}

.ps-folio-kpi-section {
  background:
    linear-gradient(180deg, #f6f8fb 0%, #fff 55%),
    radial-gradient(ellipse 80% 60% at 100% 0%, rgba(28, 163, 186, 0.08) 0%, transparent 55%);
  border-bottom: 1px solid rgba(33, 39, 85, 0.06);
}

.ps-folio-agency-head {
  text-align: center;
  max-width: 40rem;
  margin: 0 auto 2.25rem;
  box-sizing: border-box;
}

/* Heads that sit straight on .ps-folio-section need the same inset as grids / prose */
.ps-folio-section > .ps-folio-agency-head {
  width: 100%;
  max-width: min(40rem, 100%);
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

.ps-folio-agency-head--left {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
  max-width: 38rem;
}

.ps-folio-section > .ps-folio-agency-head--left {
  max-width: min(38rem, 100%);
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

/* Case study: same 72rem column as KPI / grids — inner copy stays ~42rem, left-aligned */
.ps-folio-case .ps-folio-section > .ps-folio-agency-head--left {
  max-width: 72rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-folio-case .ps-folio-section > .ps-folio-agency-head--left > * {
  max-width: 42rem;
}

.ps-folio-case .ps-folio-section > .ps-folio-agency-head:not(.ps-folio-agency-head--left) {
  max-width: 72rem;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
  box-sizing: border-box;
}

.ps-folio-case .ps-folio-section > .ps-folio-agency-head:not(.ps-folio-agency-head--left) .ps-folio-agency-head__kicker,
.ps-folio-case .ps-folio-section > .ps-folio-agency-head:not(.ps-folio-agency-head--left) .ps-folio-agency-head__title,
.ps-folio-case .ps-folio-section > .ps-folio-agency-head:not(.ps-folio-agency-head--left) .ps-folio-agency-head__lead {
  max-width: 40rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-folio-agency-head__kicker {
  margin-bottom: 0.5rem;
}

.ps-folio-agency-head__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.35rem, 2.8vw, 1.9rem);
  font-weight: 800;
  color: var(--ps-navy);
  letter-spacing: var(--ps-type-section-title-tracking);
  line-height: var(--ps-type-section-title-leading);
  margin-bottom: 0.65rem;
}

.ps-folio-agency-head__lead {
  font-size: 1.02rem;
  line-height: 1.55;
  color: var(--ps-text-muted);
  margin-bottom: 0;
  max-width: 42rem;
  text-wrap: pretty;
}

/* Global `p { max-width: 65ch }` left-aligns the box; centre the lead under centred heads */
.ps-folio-agency-head:not(.ps-folio-agency-head--left) .ps-folio-agency-head__lead {
  margin-left: auto;
  margin-right: auto;
}

.ps-folio-agency-head__rule {
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  background: var(--ps-heading-stroke-gradient);
  border-radius: 2px;
  margin: 1.1rem auto 0;
}

.ps-folio-agency-head--left .ps-folio-agency-head__rule {
  margin-left: 0;
}

.ps-folio-stat {
  border-top: 3px solid var(--ps-teal);
  text-align: left;
  padding: 1.15rem 1rem 1.1rem;
}

.ps-folio-stat__value {
  text-align: left;
}

.ps-folio-stat__label {
  text-align: left;
}

.ps-folio-band {
  padding: clamp(2rem, 5vw, 3.25rem) 0;
}

.ps-folio-band--navy {
  background: var(--ps-hero-navy-grad);
  color: #fff;
}

/* Interactive Surface Graphics — photo under navy (subtle, readable) */
.ps-folio-band--navy.ps-folio-band--thermo-bg {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 70vh;
  min-height: 70dvh;
  padding-top: clamp(2.5rem, 8vh, 5rem);
  padding-bottom: clamp(2.5rem, 8vh, 5rem);
  background-color: var(--ps-navy-deep);
  background-image:
    linear-gradient(155deg, rgba(15, 21, 48, 0.88) 0%, rgba(33, 39, 85, 0.82) 48%, rgba(15, 21, 48, 0.9) 100%),
    radial-gradient(circle at 16% 22%, rgba(178, 31, 123, 0.18) 0%, transparent 36%),
    radial-gradient(circle at 78% 75%, rgba(28, 163, 186, 0.14) 0%, transparent 38%),
    url('../images/thermographics/interactive_learning_space_design_y8t8u.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.ps-folio-band--thermo-bg .ps-folio-band__statement,
.ps-folio-band--thermo-bg .ps-folio-band__meta {
  text-shadow: 0 1px 20px rgba(0, 0, 0, 0.4);
}

.ps-folio-band--navy .ps-folio-band__statement {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.15rem, 2.4vw, 1.55rem);
  font-weight: 700;
  line-height: 1.4;
  max-width: 46rem;
  margin: 0 auto;
  text-align: center;
  color: rgba(255, 255, 255, 0.96);
}

.ps-folio-band--navy .ps-folio-band__meta {
  /* Override global `p { max-width: 65ch }` so the eyebrow shares the same centred column as the statement */
  max-width: 46rem;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0.85rem;
  text-align: center;
  font-size: 0.72rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ps-teal-light);
  font-family: var(--ps-font-heading);
  font-weight: 700;
}

.ps-folio-agency-split {
  display: grid;
  gap: 1.5rem;
  max-width: 72rem;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

@media (min-width: 768px) {
  .ps-folio-agency-split {
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
  }
}

.ps-folio-agency-split__panel {
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.08);
  border-radius: var(--ps-radius);
  padding: clamp(1.25rem, 3vw, 1.75rem);
  box-shadow: 0 10px 36px rgba(31, 45, 101, 0.06);
}

.ps-folio-agency-split__panel--accent {
  border-left: 4px solid var(--ps-magenta);
}

.ps-folio-agency-split__panel--accent-teal {
  border-left: 4px solid var(--ps-teal);
}

.ps-folio-agency-split__label {
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
  margin-bottom: 0.5rem;
}

.ps-folio-agency-split__panel h3 {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--ps-navy);
  margin-bottom: 0.75rem;
}

.ps-folio-agency-split__panel p {
  text-wrap: pretty;
}

.ps-folio-scope-grid {
  display: grid;
  gap: 1.25rem;
  max-width: 72rem;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

@media (min-width: 768px) {
  .ps-folio-scope-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.ps-folio-scope-card {
  background: var(--ps-white);
  border: 1px solid rgba(0, 0, 0, 0.07);
  border-radius: var(--ps-radius);
  padding: 1.35rem 1.25rem;
  box-shadow: var(--ps-shadow-sm);
}

.ps-folio-scope-card__title {
  font-family: var(--ps-font-heading);
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ps-navy);
  margin-bottom: 0.85rem;
  padding-bottom: 0;
  border-bottom: none;
}

.ps-folio-scope-card__title::after {
  content: "";
  display: block;
  width: var(--ps-heading-stroke-w);
  height: 3px;
  margin-top: 0.65rem;
  background: var(--ps-heading-stroke-gradient);
  border-radius: 2px;
}

.ps-folio-scope-card ul {
  margin: 0;
  padding-left: 1.1rem;
  font-size: 0.92rem;
  line-height: 1.55;
  color: var(--ps-text);
}

.ps-folio-scope-card ul li {
  margin-bottom: 0.4rem;
  text-wrap: pretty;
}

.ps-folio-impact-grid {
  display: grid;
  gap: 1rem;
  max-width: 72rem;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

@media (min-width: 576px) {
  .ps-folio-impact-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 992px) {
  .ps-folio-impact-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.ps-folio-impact-tile {
  background: linear-gradient(165deg, #fff 0%, #f8fafc 100%);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: var(--ps-radius);
  padding: 1.2rem 1.05rem;
  min-height: 100%;
  box-shadow: 0 8px 26px rgba(31, 45, 101, 0.06);
}

.ps-folio-impact-tile__index {
  font-family: var(--ps-font-heading);
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  color: var(--ps-magenta);
  margin-bottom: 0.35rem;
}

.ps-folio-impact-tile h3 {
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--ps-navy);
  margin-bottom: 0.5rem;
  line-height: 1.25;
}

.ps-folio-impact-tile p {
  font-size: 0.86rem;
  line-height: 1.45;
  color: var(--ps-text-muted);
  margin: 0;
  text-wrap: pretty;
}

.ps-folio-mfg-grid {
  display: grid;
  gap: 0.85rem;
  max-width: 72rem;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

@media (min-width: 576px) {
  .ps-folio-mfg-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 992px) {
  .ps-folio-mfg-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.ps-folio-mfg-item {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  padding: 1rem 1rem;
  background: var(--ps-white);
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: var(--ps-radius);
}

.ps-folio-mfg-item__mark {
  flex-shrink: 0;
  width: 8px;
  height: 8px;
  margin-top: 0.45rem;
  border-radius: 50%;
  background: var(--ps-teal);
}

.ps-folio-mfg-item h3 {
  font-size: 0.82rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--ps-navy);
  margin-bottom: 0.35rem;
}

.ps-folio-mfg-item p {
  font-size: 0.86rem;
  line-height: 1.45;
  color: var(--ps-text-muted);
  margin: 0;
}

/* Case study layout rhythm: avoid “same centred block” everywhere */
.ps-folio-kpi-section--editorial .ps-folio-agency-head {
  text-align: left;
  margin-left: 0;
  margin-right: auto;
  max-width: 42rem;
}

.ps-folio-kpi-section--editorial .ps-folio-agency-head__rule {
  margin-left: 0;
}

.ps-folio-kpi-section--editorial .ps-folio-stats__disclaimer {
  margin-left: 0;
  text-align: left;
  max-width: 52rem;
}

@media (min-width: 768px) {
  .ps-folio-scope-grid--offset .ps-folio-scope-card:nth-child(2) {
    margin-top: 2.25rem;
  }

  .ps-folio-scope-grid--offset-reverse .ps-folio-scope-card:nth-child(1) {
    margin-top: 2.25rem;
  }
}

@media (min-width: 992px) {
  .ps-folio-impact-grid--rhythm .ps-folio-impact-tile:nth-child(2),
  .ps-folio-impact-grid--rhythm .ps-folio-impact-tile:nth-child(4) {
    transform: translateY(1.35rem);
  }

  .ps-folio-impact-grid--rhythm {
    margin-bottom: 1.75rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ps-folio-impact-grid--rhythm .ps-folio-impact-tile:nth-child(2),
  .ps-folio-impact-grid--rhythm .ps-folio-impact-tile:nth-child(4) {
    transform: none;
  }
}

.ps-folio-timeline-shell {
  max-width: 72rem;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

/* Case studies: one timeline treatment — 72rem shell, rail + dots, left-aligned with section heads */
.ps-folio-case .ps-folio-timeline-shell .ps-folio-timeline {
  margin-left: 0;
  margin-right: auto;
}

/* Case studies: place testimonial + wellbeing side-by-side on desktop */
@media (min-width: 992px) {
  .ps-folio-case:has(> .ps-folio-section--testimonial + .ps-folio-section[aria-labelledby*="wellbeing"]) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(1.5rem, 3vw, 2.75rem);
    row-gap: 2rem;
    grid-auto-flow: row;
  }

  .ps-folio-case:has(> .ps-folio-section--testimonial + .ps-folio-section[aria-labelledby*="wellbeing"]) > * {
    grid-column: 1 / -1; /* default: full width */
  }

  .ps-folio-case:has(> .ps-folio-section--testimonial + .ps-folio-section[aria-labelledby*="wellbeing"]) > .ps-folio-section--testimonial {
    grid-column: 1;
  }

  .ps-folio-case:has(> .ps-folio-section--testimonial + .ps-folio-section[aria-labelledby*="wellbeing"]) > .ps-folio-section--testimonial + .ps-folio-section[aria-labelledby*="wellbeing"] {
    grid-column: 2;
  }
}

.ps-folio-case .ps-folio-timeline {
  border-left-width: 3px;
  border-left-color: rgba(28, 163, 186, 0.42);
}

.ps-folio-case .ps-folio-timeline > li::before {
  width: 13px;
  height: 13px;
  border-width: 3px;
  box-shadow: 0 0 0 1px rgba(28, 163, 186, 0.35);
}

/* Case study: offset colour rail (stacked content — avoids narrow-col / wide-grid gap bug) */
.ps-folio-offset-section {
  position: relative;
  isolation: isolate;
  overflow: visible;
}

.ps-folio-offset-section::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: clamp(180px, 34vw, 400px);
  z-index: 0;
  background: linear-gradient(
    165deg,
    rgba(28, 163, 186, 0.12) 0%,
    rgba(33, 39, 85, 0.06) 50%,
    rgba(178, 31, 123, 0.05) 100%
  );
  pointer-events: none;
}

.ps-folio-offset-section--rail-right::before {
  left: auto;
  right: 0;
}

.ps-folio-offset-section__inner {
  position: relative;
  z-index: 1;
  max-width: 72rem;
  margin: 0 auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

.ps-folio-offset-section__inner > .ps-folio-mfg-grid {
  max-width: none;
  margin: 0;
  padding-left: 0;
  padding-right: 0;
}

.ps-folio-offset-section__intro {
  margin-bottom: clamp(1.25rem, 3vw, 1.85rem);
}

.ps-folio-offset-section__intro.ps-folio-agency-head--left {
  max-width: min(38rem, 100%);
}

.ps-folio-offset-section--rail-right .ps-folio-offset-section__intro {
  margin-left: 0;
  margin-right: auto;
  text-align: left;
}

.ps-folio-offset-section--rail-right .ps-folio-offset-section__intro .ps-folio-agency-head__rule {
  margin-left: 0;
  margin-right: auto;
}

@media (max-width: 575.98px) {
  .ps-folio-offset-section--rail-right .ps-folio-offset-section__intro {
    margin-left: 0;
    text-align: left;
  }

  .ps-folio-offset-section--rail-right .ps-folio-offset-section__intro .ps-folio-agency-head__rule {
    margin-left: 0;
    margin-right: auto;
  }
}

@media (min-width: 992px) {
  .ps-folio-mfg-grid--mosaic {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.9rem;
    align-items: stretch;
  }

  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item__mark {
    display: none;
  }

  /* Corporate “tidy” mode: uniform cards (no wide spans) */
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item {
    gap: 0;
    padding: 1.1rem 1.1rem;
    background: var(--ps-white);
    border-left: none;
    box-shadow: none;
  }

  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(1),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(2),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(3),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(4),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(5),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(6) {
    grid-column: auto;
    grid-row: auto;
  }
}

@media (min-width: 768px) and (max-width: 991.98px) {
  .ps-folio-mfg-grid--mosaic {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item__mark {
    display: none;
  }

  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item {
    gap: 0;
    padding: 1.05rem 1rem;
    background: var(--ps-white);
    border-left: none;
    box-shadow: none;
  }

  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(1),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(2),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(3),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(4),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(5),
  .ps-folio-mfg-grid--mosaic .ps-folio-mfg-item:nth-child(6) {
    grid-column: auto;
    grid-row: auto;
  }
}

.ps-folio-timeline {
  list-style: none;
  padding: 0 0 0 1.5rem;
  margin: 0 auto;
  max-width: 42rem;
  border-left: 2px solid rgba(28, 163, 186, 0.35);
}

.ps-folio-timeline > li {
  position: relative;
  padding: 0 0 1.85rem 1.35rem;
}

.ps-folio-timeline > li:last-child {
  padding-bottom: 0;
}

.ps-folio-timeline > li::before {
  content: '';
  position: absolute;
  left: -1.5rem;
  top: 0.35rem;
  transform: translateX(-50%);
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--ps-teal);
  border: 3px solid var(--ps-bg);
  box-shadow: 0 0 0 1px rgba(28, 163, 186, 0.45);
}

.ps-folio-section--muted .ps-folio-timeline > li::before {
  border-color: var(--ps-white);
}

.ps-folio-timeline__when {
  display: block;
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ps-teal-dark);
  margin-bottom: 0.25rem;
}

.ps-folio-timeline__title {
  display: block;
  font-size: 1.02rem;
  font-weight: 800;
  color: var(--ps-navy);
  margin-bottom: 0.4rem;
}

.ps-folio-timeline p {
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--ps-text-muted);
  margin: 0;
}

.ps-folio-delivery-board {
  max-width: 72rem;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 2.25rem);
  padding-left: max(var(--ps-container-padding-x), 1.5rem);
  padding-right: max(var(--ps-container-padding-x), 1.5rem);
  /* Light, brand-tinted panel (so text/list stay readable) */
  background: linear-gradient(180deg, rgba(33, 39, 85, 0.06) 0%, rgba(28, 163, 186, 0.11) 100%);
  border-radius: var(--ps-radius);
  border: 1px solid rgba(33, 39, 85, 0.10);
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: clamp(1.1rem, 3vw, 2rem);
  align-items: start;
}

@media (max-width: 991.98px) {
  .ps-folio-delivery-board {
    grid-template-columns: 1fr;
  }
}

.ps-folio-delivery-board__content {
  min-width: 0;
}

.ps-folio-delivery-board__media {
  display: flex;
  justify-content: flex-end;
}

@media (max-width: 991.98px) {
  .ps-folio-delivery-board__media {
    justify-content: flex-start;
    width: 100%;
    min-width: 0;
    margin-top: 1.25rem;
  }

  .ps-folio-delivery-board__video-shell {
    max-width: 100%;
  }
}

.ps-folio-delivery-board__video-shell {
  width: 100%;
  max-width: 28rem;
  aspect-ratio: 9 / 16;
  border-radius: 0.55rem;
  overflow: hidden;
  box-shadow: var(--ps-shadow-lg);
  background: #000;
  position: relative;
  margin-top: 0;
}

@media (min-width: 992px) {
  /* Pull portrait clip into the text column on desktop only */
  .ps-folio-delivery-board__video-shell {
    margin-top: -12rem;
  }
}

.ps-folio-delivery-board__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: #000;
}

.ps-folio-delivery-board .ps-folio-agency-head__kicker {
  color: var(--ps-teal);
}

.ps-folio-delivery-board .ps-folio-agency-head__title {
  color: var(--ps-navy);
}

.ps-folio-delivery-board .ps-folio-agency-head__lead {
  color: var(--ps-text-muted);
}

.ps-folio-delivery-board .ps-folio-agency-head--left {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
  max-width: none;
}

.ps-folio-delivery-board .ps-folio-agency-head--left .ps-folio-agency-head__rule {
  margin-left: 0;
}

.ps-folio-delivery-list {
  display: grid;
  gap: 0.65rem;
  list-style: none;
  padding: 0;
  margin: 1.25rem 0 0;
}

@media (min-width: 768px) {
  .ps-folio-delivery-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.ps-folio-delivery-list li {
  position: relative;
  padding: 0.65rem 0.85rem 0.65rem 2rem;
  background: rgba(255, 255, 255, 0.62);
  border: 1px solid rgba(33, 39, 85, 0.10);
  border-radius: 0.35rem;
  font-size: 0.88rem;
  line-height: 1.45;
  color: rgba(33, 39, 85, 0.92);
}

.ps-folio-delivery-list li::before {
  content: '';
  position: absolute;
  left: 0.75rem;
  top: 0.85rem;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ps-teal);
  box-shadow: 0 0 0 1px rgba(28, 163, 186, 0.18);
}

.ps-folio-section--cta {
  padding-top: clamp(2.5rem, 5vw, 4rem);
  padding-bottom: clamp(3rem, 7vw, 5rem);
  background: linear-gradient(180deg, var(--ps-bg-alt) 0%, var(--ps-bg) 100%);
}

.ps-case-study-directory {
  display: grid;
  gap: 1rem;
}

@media (min-width: 992px) {
  .ps-case-study-directory {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.ps-case-study-directory__card {
  display: grid;
  grid-template-columns: 1fr;
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.12);
  border-radius: 0.7rem;
  overflow: hidden;
  box-shadow: 0 12px 24px rgba(20, 24, 44, 0.06);
}

@media (min-width: 768px) {
  .ps-case-study-directory__card {
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
  }
}

.ps-case-study-directory__media {
  display: block;
  min-height: 220px;
}

.ps-case-study-directory__media img {
  width: 100%;
  height: 100%;
  min-height: 220px;
  object-fit: cover;
  display: block;
}

.ps-case-study-directory__body {
  padding: 1rem 1rem 1.1rem;
}

.ps-case-study-directory__tag {
  font-family: var(--ps-font-heading);
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ps-teal-dark);
}

.ps-case-study-nav {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.ps-case-study-nav__grid {
  display: grid;
  gap: 0.9rem;
}

@media (min-width: 768px) {
  .ps-case-study-nav__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.ps-case-study-nav__card {
  display: block;
  text-decoration: none;
  color: var(--ps-text);
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.12);
  border-radius: 0.7rem;
  overflow: hidden;
  padding-bottom: 1rem;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.ps-case-study-nav__card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(20, 24, 44, 0.09);
}

.ps-case-study-nav__label,
.ps-case-study-nav__tag,
.ps-case-study-nav__title,
.ps-case-study-nav__meta,
.ps-case-study-nav__cta {
  display: block;
  padding-left: 1rem;
  padding-right: 1rem;
}

.ps-case-study-nav__label {
  font-family: var(--ps-font-heading);
  text-transform: uppercase;
  letter-spacing: 0.11em;
  font-size: 0.66rem;
  color: var(--ps-text-muted);
  padding-top: 0.9rem;
  margin-bottom: 0.35rem;
}

.ps-case-study-nav__media {
  display: block;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  margin-bottom: 0.85rem;
}

.ps-case-study-nav__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ps-case-study-nav__tag {
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ps-teal-dark);
  margin-bottom: 0.35rem;
}

.ps-case-study-nav__title {
  font-family: var(--ps-font-heading);
  font-weight: 800;
  font-size: 1.12rem;
  color: var(--ps-navy);
  margin-bottom: 0.3rem;
}

.ps-case-study-nav__meta {
  font-size: 0.9rem;
  color: var(--ps-text-muted);
  margin-bottom: 0.45rem;
}

.ps-case-study-nav__cta {
  font-family: var(--ps-font-heading);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ps-magenta);
}

.ps-folio-chapter {
  font-family: var(--ps-font-heading);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ps-teal);
  margin-bottom: 0.75rem;
}

.ps-folio-lede-center {
  max-width: 40rem;
  color: var(--ps-text-muted);
}

.ps-folio-breadcrumb > span:last-of-type {
  color: rgba(255, 255, 255, 0.7);
  font-weight: 600;
}

/* Full-bleed imagery */
.ps-folio-fullbleed {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin: 0;
  max-width: 100%;
}

.ps-folio-fullbleed--single {
  grid-template-columns: 1fr;
}

.ps-folio-fullbleed--single img {
  width: 100%;
  height: min(70vh, 560px);
  object-fit: cover;
  display: block;
}

.ps-folio-figure {
  margin: 0;
  position: relative;
}

.ps-folio-figure--half img {
  width: 100%;
  height: min(52vh, 480px);
  object-fit: cover;
  display: block;
}

.ps-folio-figure figcaption,
.ps-folio-figure__cap {
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
  padding: 0.85rem var(--ps-container-padding-x);
  background: var(--ps-white);
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}

/* Rich captions (title + kicker) — case study image placeholders */
.ps-folio-figcaption--rich {
  text-transform: none;
  letter-spacing: normal;
  line-height: 1.45;
}

.ps-folio-figcap-note {
  display: block;
  font-size: 0.68rem;
  font-style: italic;
  font-weight: 500;
  color: var(--ps-text-muted);
  margin-bottom: 0.4rem;
}

.ps-folio-figcap-title {
  display: block;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ps-navy);
  margin-bottom: 0.35rem;
}

.ps-folio-figcap-kicker {
  display: block;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ps-teal);
}

.ps-folio-fullbleed--single .ps-folio-figure__cap {
  text-align: center;
  padding: 1rem var(--ps-container-padding-x);
}

.ps-folio-fullbleed--single .ps-folio-fullbleed__cap {
  text-align: center;
  text-transform: none;
  letter-spacing: normal;
}

figure.ps-folio-fullbleed.ps-folio-fullbleed--single {
  margin: 0;
}

/* Case study & About — video embed shell */
.ps-folio-video {
  max-width: 960px;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
}

.ps-folio-video__shell {
  border-radius: 0.35rem;
  overflow: hidden;
  box-shadow: var(--ps-shadow-lg);
  background: var(--ps-navy);
}

.ps-folio-video__shell .ps-folio-video__media {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

video.ps-folio-video__media {
  object-fit: cover;
  background: #000;
}

.ps-folio-video__placeholder {
  position: absolute;
  inset: 0;
}

.ps-folio-video__poster-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ps-folio-video__placeholder-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 1.5rem;
  background: linear-gradient(135deg, rgba(33, 39, 85, 0.75), rgba(28, 163, 186, 0.45));
}

.ps-folio-video__placeholder-copy {
  font-size: 0.9rem;
  color: #fff;
  max-width: 22rem;
  line-height: 1.45;
}

.ps-folio-video__placeholder-copy code {
  font-size: 0.8em;
  color: rgba(255, 255, 255, 0.95);
}

.ps-folio-video__play-icon {
  width: 64px;
  height: 64px;
  margin-bottom: 1rem;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.85);
  background: rgba(255, 255, 255, 0.12);
  position: relative;
}

.ps-folio-video__play-icon::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-40%, -50%);
  border-style: solid;
  border-width: 10px 0 10px 16px;
  border-color: transparent transparent transparent #fff;
}

/* Contextual YouTube embeds (`includes/youtube-embed.php`) */
.ps-inline-youtube {
  margin: 0;
  max-width: 960px;
}

/* Folio / column embeds: span the full width of the parent column (no 960px cap). */
.ps-inline-youtube--folio {
  margin-left: auto;
  margin-right: auto;
  max-width: none;
  width: 100%;
}

/* Marketing bands: embed sits in .col-lg-10 — match column width. */
.ps-section .col-lg-10 .ps-inline-youtube {
  max-width: none;
  width: 100%;
}

/* Case study film strip: full viewport width (bleed past .ps-container), caption stays aligned to content. */
.ps-folio-case .ps-folio-section .ps-inline-youtube--folio {
  width: 100vw;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}

.ps-folio-case .ps-folio-section .ps-inline-youtube--folio .ps-inline-youtube__shell {
  border-radius: 0;
  box-shadow: none;
}

.ps-folio-case .ps-folio-section .ps-inline-youtube--folio .ps-inline-youtube__caption {
  max-width: var(--ps-container-max);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--ps-container-padding-x);
  padding-right: var(--ps-container-padding-x);
  box-sizing: border-box;
}

.ps-folio-case .ps-folio-section:has(.ps-inline-youtube--folio) {
  overflow-x: clip;
}

.ps-inline-youtube__shell {
  position: relative;
  aspect-ratio: 16 / 9;
  width: 100%;
  overflow: hidden;
  border-radius: var(--ps-radius, 0.35rem);
  box-shadow: var(--ps-shadow-lg);
  background: var(--ps-navy);
}

.ps-inline-youtube__stage {
  position: absolute;
  inset: 0;
  background: var(--ps-navy);
}

.ps-inline-youtube__iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  pointer-events: none;
}

.ps-inline-youtube__poster {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ps-inline-youtube__caption {
  margin-top: 0.65rem;
  font-size: 0.9rem;
  color: rgba(0, 0, 0, 0.65);
}

/* Pull quote */
.ps-folio-pullquote {
  margin: 0 auto;
  max-width: 42rem;
  padding: clamp(2rem, 5vw, 3rem) var(--ps-container-padding-x);
  border: none;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  text-align: center;
  font-family: var(--ps-font-heading);
  font-size: clamp(1.15rem, 2.2vw, 1.45rem);
  font-weight: 600;
  font-style: normal;
  line-height: 1.45;
  color: var(--ps-navy);
}

.ps-folio-pullquote p {
  max-width: none;
  margin: 0;
}

.ps-case-study-pillar {
  background: var(--ps-white);
  padding: 1.35rem 1.25rem;
  border-radius: var(--ps-radius);
  border-top: 4px solid var(--ps-teal);
  box-shadow: var(--ps-shadow-card);
  border: 1px solid rgba(0, 0, 0, 0.06);
}

.ps-case-study-pillar h3 {
  color: var(--ps-navy);
  font-weight: 800;
}

.ps-case-study .lead {
  color: var(--ps-text);
}

@media (max-width: 767.98px) {
  .ps-folio-fullbleed {
    grid-template-columns: 1fr;
  }

  .ps-folio-figure--half img {
    height: 42vh;
    min-height: 220px;
  }

  .ps-folio-hero {
    min-height: 65vh;
  }
}

/* Related case studies strip (services & supporting pages) */
.ps-related-cs-wrap {
  overflow-x: hidden;
}

/* Use on a section directly before related case studies to avoid a large visual gap */
.ps-section--tight-bottom {
  padding-bottom: clamp(1.75rem, 4vw, 2.6rem);
}

.ps-section--tight-bottom + .ps-related-cs-wrap {
  padding-top: clamp(2rem, 4.2vw, 3rem);
}

/* Desktop: keep the portfolio legend visible while the cards scroll */
@media (min-width: 992px) {
  .ps-related-cs-wrap > .ps-container {
    display: grid;
    grid-template-columns: minmax(18rem, 28%) 1fr;
    column-gap: clamp(1.5rem, 3vw, 2.75rem);
    align-items: start;
  }

  .ps-related-cs-top {
    grid-column: 1;
    grid-row: 1;
    position: sticky;
    top: 6.5rem;
    margin-bottom: 0;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.9rem;
  }

  .ps-related-cs-grid {
    grid-column: 2;
    grid-row: 1;
  }

  .ps-related-cs-all {
    align-self: flex-start;
  }

  .ps-related-cs-top .ps-related-cs-head,
  .ps-related-cs-top .ps-related-cs-head__intro {
    text-align: left;
    margin-left: 0;
    margin-right: 0;
    max-width: none;
  }
}

.ps-related-cs-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 2rem;
  margin-bottom: clamp(1.25rem, 3.5vw, 2rem);
}

.ps-related-cs-all {
  white-space: nowrap;
  align-self: center;
}

.ps-related-cs-head {
  text-align: left;
  max-width: 48rem;
  margin: 0;
}

.ps-related-cs-head__intro {
  text-align: left;
  margin: 0;
  max-width: 40rem;
}

.ps-related-cs-head__bar {
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  background: var(--ps-heading-stroke-gradient);
  border-radius: 2px;
  margin: 0.4rem 0 0.8rem;
}

.ps-related-cs-head__title {
  margin-bottom: 0.3rem;
}

@media (max-width: 767.98px) {
  .ps-related-cs-top {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
  }

  .ps-related-cs-all {
    align-self: flex-start;
    width: 100%;
    text-align: center;
  }

  .ps-related-cs-head__bar {
    margin-bottom: 0.65rem;
  }
}

.ps-related-cs-head {
  text-align: center;
  max-width: 44rem;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: clamp(1.5rem, 4vw, 2.25rem);
}

.ps-related-cs-head__eyebrow {
  margin-bottom: 0.45rem;
}

.ps-related-cs-head__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.35rem, 2.8vw, 1.85rem);
  font-weight: 800;
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  color: var(--ps-navy);
  margin-bottom: 0.6rem;
}

.ps-related-cs-head__intro {
  max-width: 36rem;
  margin: 0 auto;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ps-text-muted);
  text-align: center;
}

.ps-related-cs-top .ps-related-cs-head {
  text-align: left;
  max-width: 48rem;
  margin: 0;
}

.ps-related-cs-top .ps-related-cs-head__intro {
  margin: 0;
  max-width: 40rem;
  text-align: left;
}

.ps-related-cs-top .ps-related-cs-head__title {
  margin-bottom: 0.35rem;
}

.ps-related-cs-top .ps-related-cs-all {
  white-space: nowrap;
  align-self: flex-start;
}

.ps-related-cs-grid {
  display: grid;
  gap: 1rem;
  width: 100%;
  max-width: 100%;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .ps-related-cs-grid--2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ps-related-cs-grid--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .ps-related-cs-grid--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 992px) {
  .ps-related-cs-grid--4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.ps-related-cs-foot {
  display: flex;
  justify-content: center;
  margin-top: clamp(1.5rem, 4vw, 2rem);
}

.ps-related-cs-grid .ps-related-cs-card {
  min-width: 0;
}

.ps-related-cs-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.35rem;
  height: 100%;
  padding: 1.15rem 1.1rem;
  background: var(--ps-white);
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: var(--ps-radius);
  border-top: 4px solid var(--ps-teal);
  box-shadow: var(--ps-shadow-sm);
  color: inherit;
  text-decoration: none;
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.ps-related-cs-card:hover {
  box-shadow: var(--ps-shadow-card-hover);
  transform: translateY(-2px);
  color: inherit;
}

.ps-related-cs-card__tag {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ps-teal);
}

.ps-related-cs-card__title {
  font-family: var(--ps-font-heading);
  font-size: 1.02rem;
  font-weight: 800;
  color: var(--ps-navy);
  line-height: 1.25;
  min-height: calc(1.25em * 3);
  display: -webkit-box;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  overflow: hidden;
}

.ps-related-cs-card__cta {
  margin-top: auto;
  padding-top: 0.25rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--ps-teal);
}

/* ========== Client testimonials — editorial showcase (one at a time) ========== */
.ps-testimonials-section {
  background: linear-gradient(180deg, #f3f5f7 0%, var(--ps-bg-alt) 40%, var(--ps-white) 100%);
}

.ps-testimonials-intro {
  max-width: 38rem;
  color: var(--ps-text-muted);
  font-size: 0.95rem;
}

.ps-testimonials-disclaimer {
  max-width: 42rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-testimonials-showcase {
  padding-bottom: 0.5rem;
}

.ps-testimonial-showcase {
  max-width: 52rem;
  margin-left: auto;
  margin-right: auto;
  padding: 0 0.25rem;
}

.ps-testimonial-showcase__grid {
  display: grid;
  grid-template-columns: minmax(3.5rem, 5.5rem) minmax(0, 1fr);
  gap: 1.25rem 1.5rem;
  align-items: start;
}

@media (min-width: 768px) {
  .ps-testimonial-showcase__grid {
    grid-template-columns: 5.5rem minmax(0, 1fr);
    gap: 1.5rem 2.25rem;
  }
}

.ps-testimonial-showcase__index {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  line-height: 0.85;
  padding-top: 0.15rem;
  user-select: none;
}

.ps-testimonial-showcase__index-num {
  font-family: var(--ps-font-heading);
  font-size: clamp(2.75rem, 7vw, 4.25rem);
  font-weight: 900;
  letter-spacing: -0.06em;
  color: rgba(28, 163, 186, 0.22);
}

.ps-testimonial-showcase__index-of {
  font-family: var(--ps-font-heading);
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
  margin-top: 0.5rem;
}

.ps-testimonial-showcase__main {
  border-left: 3px solid var(--ps-teal);
  padding-left: clamp(1rem, 3vw, 1.75rem);
}

.ps-testimonial-showcase__quote {
  margin: 0;
  padding: 0;
  border: none;
}

.ps-testimonial-showcase__quote p {
  margin: 0;
  font-family: var(--ps-font-body);
  font-size: clamp(1.2rem, 2.35vw, 1.55rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.55;
  letter-spacing: 0.01em;
  color: var(--ps-navy);
}

.ps-testimonial-showcase__rule {
  height: 1px;
  margin: 1.35rem 0 1.15rem;
  background: linear-gradient(90deg, var(--ps-teal) 0%, rgba(28, 163, 186, 0.12) 55%, transparent 100%);
  max-width: 12rem;
}

.ps-testimonial-showcase__footer {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}

.ps-testimonial-showcase__avatar {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--ps-navy);
  color: #fff;
  font-family: var(--ps-font-heading);
  font-size: 0.75rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0.04em;
}

.ps-testimonial-showcase__meta {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}

.ps-testimonial-showcase__badge {
  font-family: var(--ps-font-heading);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ps-teal);
}

.ps-testimonial-showcase__name {
  font-family: var(--ps-font-heading);
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--ps-navy);
  letter-spacing: -0.02em;
}

.ps-testimonial-showcase__role {
  font-family: var(--ps-font-body);
  font-size: 0.84rem;
  color: var(--ps-text-muted);
  line-height: 1.45;
}

.ps-testimonial-showcase__sep {
  opacity: 0.5;
  padding: 0 0.15em;
}

.ps-testimonial-showcase__project {
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ps-navy);
  opacity: 0.55;
  margin-top: 0.35rem;
}

/* Owl — controls */
.ps-testimonials-carousel .owl-nav {
  margin-top: 1.5rem;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.65rem;
}

.ps-testimonials-carousel .owl-nav button.owl-prev,
.ps-testimonials-carousel .owl-nav button.owl-next {
  width: 40px;
  height: 40px;
  border-radius: 0.25rem !important;
  border: 1px solid rgba(33, 39, 85, 0.16) !important;
  background: var(--ps-white) !important;
  color: var(--ps-navy) !important;
  font-size: 1.1rem !important;
  line-height: 1 !important;
  transition: border-color 0.2s ease, background 0.2s ease;
}

.ps-testimonials-carousel .owl-nav button.owl-prev:hover,
.ps-testimonials-carousel .owl-nav button.owl-next:hover {
  border-color: var(--ps-teal) !important;
  background: rgba(28, 163, 186, 0.06) !important;
}

.ps-testimonials-carousel .owl-dots {
  margin-top: 1.25rem;
  text-align: center;
}

.ps-testimonials-carousel .owl-dot span {
  width: 6px;
  height: 6px;
  margin: 4px 5px !important;
  background: rgba(33, 39, 85, 0.2) !important;
  border-radius: 2px !important;
  transition: width 0.25s ease, background 0.2s ease;
}

.ps-testimonials-carousel .owl-dot.active span {
  width: 28px !important;
  background: var(--ps-teal) !important;
}

@media (max-width: 767.98px) {
  .ps-testimonial-showcase__grid {
    grid-template-columns: 1fr;
  }

  .ps-testimonial-showcase__index {
    flex-direction: row;
    align-items: baseline;
    gap: 0.5rem;
  }

  .ps-testimonial-showcase__index-num {
    font-size: 2.25rem;
  }

  .ps-testimonial-showcase__index-of {
    margin-top: 0;
  }

  .ps-testimonial-showcase__main {
    border-left: none;
    border-top: 3px solid var(--ps-teal);
    padding-left: 0;
    padding-top: 1.1rem;
  }
}

/* Case study — testimonial (same showcase system as homepage) */
.ps-folio-section--testimonial {
  padding-top: clamp(1.75rem, 4vw, 2.75rem);
  padding-bottom: clamp(1.75rem, 4vw, 2.75rem);
  background: linear-gradient(180deg, transparent 0%, rgba(243, 245, 247, 0.65) 35%, transparent 100%);
}

.ps-testimonial-showcase--folio {
  max-width: none;
  margin: 0;
  padding: 1.35rem 1.25rem 1.15rem;
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: 0.35rem;
  box-shadow: 0 4px 24px rgba(31, 45, 101, 0.07);
}

.ps-testimonial-showcase-folio__eyebrow {
  margin: 0 0 0.85rem;
}

.ps-testimonial-showcase-folio__note {
  margin-top: 1.15rem;
  padding-top: 1rem;
  border-top: 1px dashed rgba(0, 0, 0, 0.12);
}

@media (max-width: 767.98px) {
  .ps-testimonial-showcase--folio .ps-testimonial-showcase__main {
    border-top: 3px solid var(--ps-teal);
    padding-top: 1rem;
  }
}

/* ========== Wellbeing & Impact page ========== */
.ps-wellbeing-metrics__intro {
  max-width: 42rem;
  color: var(--ps-text-muted);
  font-size: 0.95rem;
  line-height: 1.55;
}

.ps-wellbeing-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem 1.25rem;
}

@media (min-width: 992px) {
  .ps-wellbeing-stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem 1.5rem;
  }
}

.ps-wellbeing-stat {
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: 0.65rem;
  padding: 1.25rem 1.15rem;
  box-shadow: 0 2px 12px rgba(31, 45, 101, 0.05);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  min-height: 100%;
}

.ps-wellbeing-stat__value {
  font-family: var(--ps-font-heading);
  font-size: clamp(2rem, 4.5vw, 2.75rem);
  font-weight: 800;
  line-height: 1.1;
  color: var(--ps-teal);
  letter-spacing: -0.02em;
}

.ps-wellbeing-stat__suffix {
  font-size: 0.65em;
  font-weight: 800;
  vertical-align: super;
  margin-left: 0.05em;
}

.ps-wellbeing-stat__label {
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--ps-text);
}

.ps-wellbeing-metrics__disclaimer {
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
}

.ps-sector-card {
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: 0.65rem;
  padding: 1.25rem 1.2rem;
  border-top: 4px solid var(--ps-teal);
  box-shadow: 0 2px 14px rgba(31, 45, 101, 0.05);
}

.ps-sector-card__title {
  font-family: var(--ps-font-heading);
  font-size: 1.05rem;
  font-weight: 700;
  margin-bottom: 0.65rem;
  color: var(--ps-navy);
}

.ps-sector-card--magenta { border-top-color: var(--ps-magenta); }
.ps-sector-card--green { border-top-color: var(--ps-green); }
.ps-sector-card--navy { border-top-color: var(--ps-navy); }

/* Contact page */
.ps-contact-form {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(247, 250, 252, 0.96) 100%);
  border: 1px solid rgba(33, 39, 85, 0.12);
  border-radius: 0.9rem;
  box-shadow: 0 14px 30px rgba(20, 24, 44, 0.05);
  padding: 1rem;
}

@media (min-width: 768px) {
  .ps-contact-form {
    padding: 1.2rem 1.25rem 1.25rem;
  }
}

.ps-contact-form__meta {
  font-size: 0.82rem;
  color: var(--ps-text-muted);
}

.ps-contact-form__group {
  background: rgba(255, 255, 255, 0.8);
  border: 1px solid rgba(33, 39, 85, 0.08);
  border-radius: 0.75rem;
  padding: 0.8rem;
}

.ps-contact-form__group-title {
  font-family: var(--ps-font-heading);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ps-teal-dark);
  font-weight: 700;
}

.ps-contact-form .form-label {
  font-size: 0.9rem;
  font-weight: 700;
  margin-bottom: 0.35rem;
}

.ps-contact-form .form-control,
.ps-contact-form .form-select {
  border-radius: 0.6rem;
  border-color: rgba(33, 39, 85, 0.16);
  padding: 0.62rem 0.75rem;
  font-size: 0.95rem;
  min-height: 44px;
  background-color: #fff;
}

.ps-contact-form textarea.form-control {
  min-height: 150px;
  resize: vertical;
}

.ps-contact-form .form-control::placeholder {
  color: rgba(85, 85, 85, 0.75);
}

.ps-contact-form .form-text {
  font-size: 0.8rem;
}

.ps-contact-form .form-control:hover,
.ps-contact-form .form-select:hover {
  border-color: rgba(28, 163, 186, 0.45);
}

.ps-contact-form .form-control:focus,
.ps-contact-form .form-select:focus {
  border-color: var(--ps-teal);
  box-shadow: 0 0 0 0.18rem rgba(28, 163, 186, 0.2);
}

.ps-contact-form__submit {
  min-width: 190px;
}

@media (max-width: 575.98px) {
  .ps-contact-form__submit {
    width: 100%;
  }
}

.ps-contact-dl__row {
  margin-bottom: 1rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid rgba(33, 39, 85, 0.12);
}

.ps-contact-dl__row:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}

.ps-contact-dl dt {
  font-weight: 700;
  color: var(--ps-navy);
  margin-bottom: 0.25rem;
}

.ps-contact-quicklinks__list li {
  margin-bottom: 0.4rem;
}

.ps-contact-quicklinks__list li:last-child {
  margin-bottom: 0;
}

@media (min-width: 992px) {
  .ps-contact-sidebar {
    position: sticky;
    top: 6.1rem;
    align-self: flex-start;
  }
}

/* ========== News archive (blog.php) ========== */
.ps-page-head-simple {
  background: linear-gradient(180deg, #ffffff 0%, #f7f9fc 100%);
  border-top: 1px solid rgba(33, 39, 85, 0.08);
  border-bottom: 1px solid rgba(33, 39, 85, 0.08);
  padding: 2.1rem 0 2rem;
}

.ps-page-head-simple h1 {
  margin-bottom: 0.55rem;
  max-width: 22ch;
}

.ps-page-head-simple .ps-kicker {
  color: var(--ps-teal-dark);
}

.ps-page-head-simple .ps-page-intro {
  color: var(--ps-text-muted);
  max-width: 56rem;
}

.ps-page-head-simple .ps-hero-values {
  color: var(--ps-text-muted);
  font-size: 0.86rem;
  margin-top: 0.7rem;
}

.ps-page-head-simple__meta {
  margin-top: 0.7rem;
}

.ps-page-head-simple .ps-hero-actions {
  margin-top: 1rem;
}

.ps-news-archive__year-block {
  margin-bottom: 2.5rem;
}

.ps-news-archive__year-block:last-of-type {
  margin-bottom: 0;
}

.ps-news-archive__year-heading {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.5rem, 3vw, 1.85rem);
  font-weight: 800;
  color: var(--ps-navy);
  margin-bottom: 1.25rem;
  padding-bottom: 0.5rem;
  border-bottom: 3px solid var(--ps-teal);
  max-width: 6rem;
}

.ps-news-archive__item {
  border-bottom: 1px solid rgba(33, 39, 85, 0.1);
}

.ps-news-archive__item:last-child {
  border-bottom: 0;
}

.ps-news-archive__link {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 1.15rem 0;
  text-decoration: none;
  color: inherit;
  transition: background-color 0.18s ease;
  border-radius: 0.5rem;
  margin-left: -0.5rem;
  margin-right: -0.5rem;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

@media (min-width: 576px) {
  .ps-news-archive__link {
    gap: 1.25rem;
    align-items: center;
  }
}

.ps-news-archive__link:hover {
  background: rgba(28, 163, 186, 0.06);
}

.ps-news-archive__link:focus-visible {
  outline: 2px solid var(--ps-teal);
  outline-offset: 2px;
}

.ps-news-archive__thumb {
  flex: 0 0 5.5rem;
  width: 5.5rem;
  height: 4rem;
  border-radius: 0.45rem;
  overflow: hidden;
  background: var(--ps-navy);
}

@media (min-width: 576px) {
  .ps-news-archive__thumb {
    flex-basis: 7.5rem;
    width: 7.5rem;
    height: 5rem;
  }
}

.ps-news-archive__thumb-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.ps-news-archive__thumb--placeholder {
  background: linear-gradient(135deg, rgba(33, 39, 85, 0.85), rgba(28, 163, 186, 0.35));
}

.ps-news-archive__body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.ps-news-archive__meta {
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
  font-weight: 600;
}

.ps-news-archive__meta time {
  margin-right: 0.65rem;
}

.ps-news-archive__cat {
  color: var(--ps-teal);
}

.ps-news-archive__title {
  font-family: var(--ps-font-heading);
  font-weight: 800;
  font-size: 1.05rem;
  line-height: 1.3;
  color: var(--ps-navy);
}

.ps-news-archive__link:hover .ps-news-archive__title {
  color: var(--ps-magenta);
}

.ps-news-archive__excerpt {
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--ps-text-muted);
  display: -webkit-box;
  line-clamp: 2;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.ps-news-archive__topic-list a {
  text-decoration: none;
}

.ps-news-archive__topic-list a:hover {
  text-decoration: underline;
}

.ps-news-archive__aside-links {
  padding-left: 1.1rem;
}

.ps-news-archive__subscribe-label {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.7rem;
  color: var(--ps-text-muted);
}

/* News article (news-article.php) */
.ps-news-breadcrumb a {
  color: var(--ps-navy);
  text-decoration: underline;
  text-decoration-color: rgba(33, 39, 85, 0.25);
}

.ps-news-breadcrumb a:hover {
  color: var(--ps-teal-dark);
  text-decoration-color: var(--ps-teal-dark);
}

.ps-news-breadcrumb span {
  color: var(--ps-text-muted);
}

.ps-news-article__head {
  max-width: 58rem;
  margin: 0 0 1.5rem;
}

.ps-news-article__meta {
  font-family: var(--ps-font-heading);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.72rem;
  color: var(--ps-teal-dark);
}

.ps-news-article__title {
  font-size: clamp(1.65rem, 3.7vw, 2.55rem);
  line-height: 1.2;
  margin-bottom: 0.55rem;
  color: var(--ps-navy);
}

.ps-news-article__excerpt {
  color: var(--ps-text-muted);
  max-width: 52rem;
}

@media (min-width: 992px) {
  .ps-news-article__figure {
    position: sticky;
    top: 6.25rem;
  }
}

.ps-news-article__lead-img {
  width: 100%;
  height: clamp(260px, 42vw, 520px);
  object-fit: cover;
}

.ps-news-article__prose {
  max-width: 60ch;
}

.ps-news-article__prose p {
  font-size: 1.05rem;
  line-height: 1.65;
  margin-bottom: 1rem;
}

.ps-news-article__prose p:last-child {
  margin-bottom: 0;
}

/* SHANARRI — card showcase (wellbeing page) */
.ps-shanarri-showcase {
  position: relative;
  overflow: hidden;
}

.ps-shanarri-showcase::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse 85% 50% at 50% 0%, rgba(28, 163, 186, 0.09) 0%, transparent 58%);
  pointer-events: none;
}

.ps-shanarri-showcase .ps-container {
  position: relative;
  z-index: 1;
}

.ps-shanarri-showcase__intro {
  max-width: 42rem;
  color: var(--ps-text-muted);
  font-size: 0.95rem;
  line-height: 1.55;
}

.ps-shanarri-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  max-width: 68rem;
  margin-left: auto;
  margin-right: auto;
}

@media (min-width: 768px) {
  .ps-shanarri-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.15rem 1.35rem;
  }
}

.ps-shanarri-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.45rem 0.85rem;
  max-width: 52rem;
  margin: 0 auto 1.65rem;
  padding: 0 0.5rem;
}

.ps-shanarri-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-family: var(--ps-font-heading);
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
}

.ps-shanarri-legend__item::before {
  content: "";
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--legend-dot);
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.06) inset;
}

.ps-shanarri-legend__item--safe { --legend-dot: var(--ps-shanarri-safe); }
.ps-shanarri-legend__item--healthy { --legend-dot: var(--ps-shanarri-healthy); }
.ps-shanarri-legend__item--achieving { --legend-dot: var(--ps-shanarri-achieving); }
.ps-shanarri-legend__item--nurtured { --legend-dot: var(--ps-shanarri-nurtured); }
.ps-shanarri-legend__item--active { --legend-dot: var(--ps-shanarri-active); }
.ps-shanarri-legend__item--respected { --legend-dot: var(--ps-shanarri-respected); }
.ps-shanarri-legend__item--responsible { --legend-dot: var(--ps-shanarri-responsible); }
.ps-shanarri-legend__item--included { --legend-dot: var(--ps-shanarri-included); }

.ps-shanarri-card {
  --shanarri-accent: var(--ps-teal);
  --shanarri-accent-bg: rgba(28, 163, 186, 0.14);
  --shanarri-thumb-x: 0%;
  --shanarri-thumb-y: -8%;
  --shanarri-thumb-scale: 1.14;
  background: var(--ps-white);
  border-radius: 0.75rem;
  border: 1px solid rgba(33, 39, 85, 0.08);
  padding: 1.35rem 1.35rem 1.45rem 1.45rem;
  box-shadow: 0 4px 24px rgba(31, 45, 101, 0.06);
  position: relative;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  height: 100%;
}

.ps-shanarri-card--safe {
  --shanarri-accent: var(--ps-shanarri-safe);
  --shanarri-accent-bg: rgba(30, 64, 175, 0.12);
  --shanarri-thumb-x: -9%;
  --shanarri-thumb-y: -14%;
  --shanarri-thumb-scale: 1.24;
}

.ps-shanarri-card--healthy {
  --shanarri-accent: var(--ps-shanarri-healthy);
  --shanarri-accent-bg: rgba(22, 101, 52, 0.12);
  --shanarri-thumb-x: 5%;
  --shanarri-thumb-y: -16%;
  --shanarri-thumb-scale: 1.2;
}

.ps-shanarri-card--achieving {
  --shanarri-accent: var(--ps-shanarri-achieving);
  --shanarri-accent-bg: rgba(180, 83, 9, 0.12);
  --shanarri-thumb-x: -6%;
  --shanarri-thumb-y: -10%;
  --shanarri-thumb-scale: 1.22;
}

.ps-shanarri-card--nurtured {
  --shanarri-accent: var(--ps-shanarri-nurtured);
  --shanarri-accent-bg: rgba(190, 18, 60, 0.12);
  --shanarri-thumb-x: 3%;
  --shanarri-thumb-y: -18%;
  --shanarri-thumb-scale: 1.18;
}

.ps-shanarri-card--active {
  --shanarri-accent: var(--ps-shanarri-active);
  --shanarri-accent-bg: rgba(194, 65, 12, 0.12);
  --shanarri-thumb-x: -11%;
  --shanarri-thumb-y: -8%;
  --shanarri-thumb-scale: 1.26;
}

.ps-shanarri-card--respected {
  --shanarri-accent: var(--ps-shanarri-respected);
  --shanarri-accent-bg: rgba(109, 40, 217, 0.12);
  --shanarri-thumb-x: 7%;
  --shanarri-thumb-y: -12%;
  --shanarri-thumb-scale: 1.19;
}

.ps-shanarri-card--responsible {
  --shanarri-accent: var(--ps-shanarri-responsible);
  --shanarri-accent-bg: rgba(15, 118, 110, 0.12);
  --shanarri-thumb-x: -4%;
  --shanarri-thumb-y: -15%;
  --shanarri-thumb-scale: 1.21;
}

.ps-shanarri-card--included {
  --shanarri-accent: var(--ps-shanarri-included);
  --shanarri-accent-bg: rgba(178, 31, 123, 0.12);
  --shanarri-thumb-x: 6%;
  --shanarri-thumb-y: -11%;
  --shanarri-thumb-scale: 1.23;
}

.ps-shanarri-card::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.9rem;
  bottom: 0.9rem;
  width: 3px;
  border-radius: 2px;
  background: var(--shanarri-accent);
}

.ps-shanarri-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 36px rgba(31, 45, 101, 0.11);
}

.ps-shanarri-card__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.65rem;
  margin-bottom: 0.75rem;
}

.ps-shanarri-card__index {
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  color: var(--shanarri-accent);
}

/* Circular photo “badge” — portfolio placeholders, offset crop inside ring */
.ps-shanarri-card__thumb {
  position: relative;
  flex-shrink: 0;
  width: 3.4rem;
  height: 3.4rem;
}

.ps-shanarri-card__thumb-ring {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  overflow: hidden;
  border: 2px solid var(--shanarri-accent);
  background: var(--shanarri-accent-bg);
  box-shadow:
    0 5px 16px rgba(31, 45, 101, 0.12),
    inset 0 0 0 1px rgba(255, 255, 255, 0.5);
  position: relative;
  transition: transform 0.28s ease, box-shadow 0.28s ease;
}

.ps-shanarri-card__thumb-ring::after {
  content: "";
  position: absolute;
  right: -1px;
  bottom: 5px;
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--shanarri-accent);
  opacity: 0.45;
  z-index: 2;
  pointer-events: none;
  box-shadow: 0 0 0 2px var(--ps-white);
}

.ps-shanarri-card--safe .ps-shanarri-card__thumb-ring { transform: rotate(-5deg); }
.ps-shanarri-card--healthy .ps-shanarri-card__thumb-ring { transform: rotate(4deg); }
.ps-shanarri-card--achieving .ps-shanarri-card__thumb-ring { transform: rotate(-3deg); }
.ps-shanarri-card--nurtured .ps-shanarri-card__thumb-ring { transform: rotate(5deg); }
.ps-shanarri-card--active .ps-shanarri-card__thumb-ring { transform: rotate(-4deg); }
.ps-shanarri-card--respected .ps-shanarri-card__thumb-ring { transform: rotate(3deg); }
.ps-shanarri-card--responsible .ps-shanarri-card__thumb-ring { transform: rotate(-2deg); }
.ps-shanarri-card--included .ps-shanarri-card__thumb-ring { transform: rotate(4deg); }

.ps-shanarri-card:hover .ps-shanarri-card__thumb-ring {
  transform: rotate(0deg) scale(1.05);
  box-shadow:
    0 8px 22px rgba(31, 45, 101, 0.14),
    inset 0 0 0 1px rgba(255, 255, 255, 0.55);
}

.ps-shanarri-card__thumb-img {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 148%;
  height: 148%;
  max-width: none;
  object-fit: cover;
  object-position: center;
  transform: translate(calc(-50% + var(--shanarri-thumb-x, 0%)), calc(-50% + var(--shanarri-thumb-y, -8%))) scale(var(--shanarri-thumb-scale, 1.14));
  transition: transform 0.35s ease;
}

.ps-shanarri-card:hover .ps-shanarri-card__thumb-img {
  transform: translate(calc(-50% + var(--shanarri-thumb-x, 0%)), calc(-50% + var(--shanarri-thumb-y, -8%))) scale(calc(var(--shanarri-thumb-scale, 1.14) * 1.03));
}

@media (min-width: 768px) {
  .ps-shanarri-card__thumb {
    width: 3.65rem;
    height: 3.65rem;
  }
}

.ps-shanarri-card__title {
  font-family: var(--ps-font-heading);
  font-size: 1.06rem;
  font-weight: 800;
  margin: 0;
  color: var(--ps-navy);
  letter-spacing: -0.02em;
  flex: 1 1 8rem;
  min-width: 0;
}

.ps-shanarri-card__text {
  font-size: 0.9rem;
  line-height: 1.58;
  color: var(--ps-text);
}

.ps-shanarri-showcase__footnote {
  max-width: 38rem;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.5;
}

@media (max-width: 575.98px) {
  .ps-wellbeing-stats {
    grid-template-columns: 1fr;
  }
}

/* ========== Our Approach (community-impact) ========== */
.ps-approach-steps {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 768px) {
  .ps-approach-steps {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem;
  }
}

@media (min-width: 1200px) {
  .ps-approach-steps {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
  }
}

.ps-approach-step {
  background: var(--ps-white);
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-radius: 0.65rem;
  padding: 1.25rem 1.15rem 1.2rem;
  border-top: 4px solid var(--ps-teal);
  box-shadow: 0 2px 12px rgba(31, 45, 101, 0.05);
  height: 100%;
}

.ps-approach-step__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  font-family: var(--ps-font-heading);
  font-weight: 800;
  font-size: 0.95rem;
  color: #fff;
  background: linear-gradient(135deg, var(--ps-teal) 0%, var(--ps-teal-dark) 100%);
  margin-bottom: 0.65rem;
}

.ps-approach-step__title {
  font-family: var(--ps-font-heading);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ps-navy);
  margin-bottom: 0.5rem;
}

.ps-brand-value h3.h6 {
  letter-spacing: 0.06em;
  font-weight: 700;
  color: var(--ps-navy);
}

/* ========== Projects portfolio — zigzag showcase ========== */
.ps-portfolio-showcase {
  overflow-x: clip;
}

@media (min-width: 992px) {
  .ps-portfolio-showcase {
    overflow-x: visible;
  }
}

.ps-portfolio-showcase .ps-zigzag-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.ps-zigzag {
  padding: clamp(2.75rem, 6.5vw, 4.5rem) 0;
  border-bottom: 1px solid rgba(33, 39, 85, 0.08);
}

.ps-zigzag:last-of-type {
  border-bottom: none;
}

/* Projects portfolio: full-bleed half-viewport wash per row (alternates with .ps-zigzag--alt); content stays in .ps-container */
.ps-portfolio-showcase .ps-zigzag {
  position: relative;
  isolation: isolate;
}

.ps-portfolio-showcase .ps-zigzag::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: calc(50% - 70vw);
  width: 30vw;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(
    168deg,
    rgba(28, 163, 186, 0.14) 0%,
    rgba(33, 39, 85, 0.05) 52%,
    rgba(178, 31, 123, 0.06) 100%
  );
}

/* Non-alt rows: wash sits under the left image — wider + anchored to viewport so it doesn’t “float” right of the edge */
.ps-portfolio-showcase .ps-zigzag:not(.ps-zigzag--alt)::before {
  width: min(56vw, 52rem);
}

.ps-portfolio-showcase .ps-zigzag--alt::before {
  left: auto;
  right: calc(50% - 50vw);
  background: linear-gradient(
    192deg,
    rgba(178, 31, 123, 0.06) 0%,
    rgba(33, 39, 85, 0.05) 48%,
    rgba(28, 163, 186, 0.12) 100%
  );
}

.ps-portfolio-showcase .ps-zigzag .row {
  position: relative;
  z-index: 1;
}

@media (max-width: 991.98px) {
  .ps-portfolio-showcase .ps-zigzag::before,
  .ps-portfolio-showcase .ps-zigzag--alt::before {
    left: calc(50% - 50vw);
    right: auto;
    width: 100vw;
    opacity: 0.88;
  }

  .ps-portfolio-showcase .ps-zigzag--alt::before {
    background: linear-gradient(
      168deg,
      rgba(28, 163, 186, 0.11) 0%,
      rgba(33, 39, 85, 0.04) 55%,
      rgba(178, 31, 123, 0.05) 100%
    );
  }
}

.ps-project-showcase__media .ps-media-frame img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

/* Desktop: showcase photos bleed past the column; left image pulls to viewport edge (container padding + half gutter + extra) */
@media (min-width: 992px) {
  .ps-portfolio-showcase .ps-zigzag:not(.ps-zigzag--alt) .col-lg-6.order-lg-1 .ps-project-showcase__media {
    position: relative;
    z-index: 2;
    --ps-zigzag-bleed-x: clamp(2rem, 10vw, 7rem);
    width: min(
      148%,
      calc(100% + var(--ps-container-padding-x) + var(--ps-zigzag-bleed-x))
    );
    max-width: none;
    margin-left: calc(
      -1 * var(--ps-container-padding-x) - 0.5 * var(--bs-gutter-x, 1.5rem) - clamp(7.35rem, 2vw, 1.25rem)
    );
    margin-right: 0;
  }

  .ps-portfolio-showcase .ps-zigzag--alt .col-lg-6.order-lg-2 .ps-project-showcase__media {
    position: relative;
    z-index: 2;
    --ps-zigzag-bleed-x: clamp(2rem, 10vw, 7rem);
    width: min(
      148%,
      calc(100% + var(--ps-container-padding-x) + var(--ps-zigzag-bleed-x))
    );
    max-width: none;
    margin-left: auto;
    margin-right: calc(
      -1 * var(--ps-container-padding-x) - 0.5 * var(--bs-gutter-x, 1.5rem) - clamp(0.35rem, 2vw, 1.25rem)
    );
  }
}

.ps-zigzag__eyebrow {
  margin-bottom: 0.35rem;
}

.ps-zigzag__title {
  font-family: var(--ps-font-heading);
  font-size: clamp(1.35rem, 2.8vw, 1.75rem);
  font-weight: 800;
  color: var(--ps-navy);
  line-height: var(--ps-type-section-title-leading);
  letter-spacing: var(--ps-type-section-title-tracking);
  margin-bottom: 0.75rem;
}

.ps-zigzag__title::after,
.ps-title-bar--wellbeing::after {
  content: "";
  display: block;
  width: var(--ps-heading-stroke-w);
  height: var(--ps-heading-stroke-h);
  margin-top: 0.55rem;
  background: var(--ps-heading-stroke-gradient-wellbeing);
  border-radius: 2px;
}

.ps-zigzag__lead {
  font-size: 1.05rem;
  line-height: 1.55;
  color: var(--ps-text);
  margin-bottom: 0.75rem;
}

/* Inline sequence (replaces arrow-in-copy): flex steps + brand dots, wraps cleanly */
.ps-flow-steps {
  list-style: none;
  margin: 0.35rem 0 0.65rem;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  row-gap: 0.45rem;
}

.ps-flow-steps li {
  display: inline-flex;
  align-items: center;
  font-size: 0.95rem;
  line-height: 1.45;
  color: var(--ps-text);
}

.ps-flow-steps li:not(:last-child)::after {
  content: "";
  display: block;
  width: 5px;
  height: 5px;
  margin: 0 0.5rem;
  border-radius: 50%;
  flex-shrink: 0;
  background: linear-gradient(135deg, var(--ps-teal-light) 0%, var(--ps-green) 100%);
}

.ps-flow-steps + p {
  margin-top: 0;
}

.ps-zigzag__bullets {
  margin: 0.75rem 0 0;
  padding-left: 1.15rem;
  color: var(--ps-text-muted);
  font-size: 0.95rem;
  line-height: 1.55;
}

.ps-zigzag__bullets li + li {
  margin-top: 0.35rem;
}

.ps-zigzag__stats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1rem;
  margin: 1.25rem 0 0;
  padding: 1rem 0 0;
  border-top: 1px dashed rgba(33, 39, 85, 0.12);
}

/* Consistent space before CTA after prose / stats / milestones in zigzag rows */
.ps-zigzag a.btn {
  margin-top: clamp(1.5rem, 4vw, 1.85rem) !important;
}

.ps-zigzag__stat {
  flex: 1 1 7rem;
  min-width: 0;
}

.ps-zigzag__stat-value {
  display: block;
  font-family: var(--ps-font-heading);
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--ps-teal);
  line-height: 1.1;
  letter-spacing: -0.02em;
}

.ps-zigzag__stat-suffix {
  font-size: 0.65em;
  font-weight: 800;
  vertical-align: super;
}

.ps-zigzag__stat-label {
  display: block;
  font-size: 0.75rem;
  line-height: 1.35;
  color: var(--ps-text-muted);
  margin-top: 0.2rem;
}

.ps-zigzag__milestones {
  margin: 1.15rem 0 0;
  padding: 0;
  border-left: none;
  padding-left: 1rem;
  position: relative;
}

.ps-zigzag__milestones::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--ps-zigzag-milestone-rail-gradient);
  border-radius: 2px;
}

.ps-zigzag__milestone {
  margin: 0;
  padding: 0.5rem 0;
}

.ps-zigzag__milestone + .ps-zigzag__milestone {
  border-top: 1px solid rgba(33, 39, 85, 0.08);
}

.ps-zigzag__milestone dt {
  font-family: var(--ps-font-heading);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ps-navy);
  margin: 0;
}

.ps-zigzag__milestone dd {
  margin: 0.35rem 0 0;
  font-size: 0.9rem;
  line-height: 1.45;
  color: var(--ps-text-muted);
}

/* Extra air after zigzag list; no tinted panel — same surface as rest of section */
.ps-portfolio-showcase__footer.ps-services-footer-cta {
  margin-top: clamp(2rem, 6vw, 3.5rem);
}

@media (max-width: 991.98px) {
  .ps-zigzag .order-lg-1,
  .ps-zigzag .order-lg-2 {
    order: unset;
  }

  .ps-zigzag__stats {
    flex-direction: column;
  }

  .ps-zigzag__stat {
    flex: none;
  }
}

/* Homepage: newsletter / updates band (legacy site newsletter parity) */
.ps-newsletter-band {
  background: linear-gradient(135deg, rgba(28, 163, 186, 0.09) 0%, rgba(178, 31, 123, 0.05) 100%);
  border-block: 1px solid rgba(33, 39, 85, 0.08);
}

/* Deep topic pages (brand values + SHANARRI indicators) — context-first, no full hero */
.ps-topic-deep__breadcrumb {
  margin-bottom: 1.25rem;
}

.ps-topic-deep__crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  list-style: none;
  padding: 0;
  margin: 0;
  font-family: var(--ps-font-heading);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ps-text-muted);
}

.ps-topic-deep__crumbs li {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.ps-topic-deep__crumbs li:not(:last-child)::after {
  content: "/";
  opacity: 0.45;
  font-weight: 500;
  letter-spacing: normal;
}

.ps-topic-deep__crumbs a {
  color: var(--ps-teal);
  text-decoration: none;
}

.ps-topic-deep__crumbs a:hover {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.ps-topic-deep__crumbs li[aria-current="page"] {
  color: var(--ps-navy);
  letter-spacing: 0.06em;
}

.ps-topic-deep__figure {
  margin: 0;
}

.ps-topic-deep__img-shell {
  position: relative;
  border-radius: 0.65rem;
  overflow: hidden;
  box-shadow: 0 12px 40px rgba(31, 45, 101, 0.1);
  background: var(--ps-navy);
}

.ps-topic-deep__img-shell::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 4px;
  z-index: 2;
  background: var(--topic-strip, var(--ps-teal));
}

.ps-topic-deep__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.ps-topic-deep__figcaption {
  max-width: 36rem;
}

.ps-topic-deep__meta-links .ps-topic-deep__sep {
  margin: 0 0.4rem;
  opacity: 0.45;
}

.ps-topic-deep__img-shell--shanarri-safe { --topic-strip: var(--ps-shanarri-safe); }
.ps-topic-deep__img-shell--shanarri-healthy { --topic-strip: var(--ps-shanarri-healthy); }
.ps-topic-deep__img-shell--shanarri-achieving { --topic-strip: var(--ps-shanarri-achieving); }
.ps-topic-deep__img-shell--shanarri-nurtured { --topic-strip: var(--ps-shanarri-nurtured); }
.ps-topic-deep__img-shell--shanarri-active { --topic-strip: var(--ps-shanarri-active); }
.ps-topic-deep__img-shell--shanarri-respected { --topic-strip: var(--ps-shanarri-respected); }
.ps-topic-deep__img-shell--shanarri-responsible { --topic-strip: var(--ps-shanarri-responsible); }
.ps-topic-deep__img-shell--shanarri-included { --topic-strip: var(--ps-shanarri-included); }

.ps-value-topic-deep--teal { --topic-strip: var(--ps-teal); }
.ps-value-topic-deep--magenta { --topic-strip: var(--ps-magenta); }
.ps-value-topic-deep--green { --topic-strip: var(--ps-green); }
.ps-value-topic-deep--neutral { --topic-strip: var(--ps-text-muted); }

.ps-topic-deep__img-shell--value-teal { --topic-strip: var(--ps-teal); }
.ps-topic-deep__img-shell--value-magenta { --topic-strip: var(--ps-magenta); }
.ps-topic-deep__img-shell--value-green { --topic-strip: var(--ps-green); }
.ps-topic-deep__img-shell--value-neutral { --topic-strip: var(--ps-text-muted); }

/* Topic-deep heroes (SHANARRI indicators + core values): band, article alignment, meta chips */
.ps-topic-deep.ps-section-alt {
  background: linear-gradient(180deg, var(--ps-bg-alt) 0%, #f3f4f7 100%);
  border-bottom: 1px solid rgba(33, 39, 85, 0.07);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.6);
}

.ps-topic-deep .ps-topic-deep__intro {
  padding-top: 0.15rem;
  text-align: left;
}

/* Split-column topic heroes: gradient bar sits flush left under the title (not centred like band headers) */
.ps-topic-deep .ps-topic-deep__intro .ps-section-header__bar {
  margin-left: 0;
  margin-right: auto;
  margin-bottom: 1rem;
}

.ps-topic-deep .ps-topic-deep__intro h1.ps-heading-accent {
  display: block;
  text-align: left;
}

.ps-topic-deep .ps-lead-paragraph {
  max-width: 42rem;
  color: var(--ps-text);
}

/* Topic-deep hero meta row (SHANARRI + brand values): chips, not default Bootstrap links */
.ps-topic-deep .ps-topic-deep__intro .ps-topic-deep__meta-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.55rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--ps-text-muted);
}

.ps-topic-deep .ps-topic-deep__intro .ps-topic-deep__meta-links .ps-topic-deep__sep {
  margin: 0;
  opacity: 0.4;
  user-select: none;
}

.ps-topic-deep .ps-topic-deep__intro .ps-topic-deep__meta-links a {
  display: inline-flex;
  align-items: center;
  padding: 0.32rem 0.65rem;
  border-radius: 999px;
  border: 1px solid rgba(33, 39, 85, 0.14);
  background: rgba(255, 255, 255, 0.88);
  color: var(--ps-navy) !important;
  text-decoration: none !important;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease;
}

.ps-topic-deep .ps-topic-deep__intro .ps-topic-deep__meta-links a:hover {
  color: var(--ps-magenta) !important;
  border-color: rgba(178, 31, 123, 0.42);
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 2px 10px rgba(33, 39, 85, 0.06);
}

.ps-topic-deep .ps-topic-deep__intro .ps-topic-deep__meta-links a:focus-visible {
  outline: 2px solid rgba(178, 31, 123, 0.45);
  outline-offset: 3px;
}

.ps-shanarri-indicator-article,
.ps-value-topic-article {
  padding-top: clamp(2.25rem, 4.5vw, 3.25rem);
}

.ps-shanarri-indicator-body.ps-page-section > h3.ps-heading-accent:first-of-type,
.ps-value-topic-body.ps-page-section > h3.ps-heading-accent:first-of-type {
  margin-top: 0;
}

.ps-shanarri-indicator-body.ps-page-section h3.ps-heading-accent,
.ps-value-topic-body.ps-page-section h3.ps-heading-accent {
  font-size: clamp(1.15rem, 2.2vw, 1.35rem);
  font-weight: 700;
  margin-bottom: 0.85rem;
  max-width: 42rem;
}

.ps-shanarri-indicator-body.ps-page-section > p,
.ps-value-topic-body.ps-page-section > p {
  max-width: 42rem;
}

/* Lead emphasis: opening paragraph under first content heading only */
.ps-shanarri-indicator-body.ps-page-section > h3:first-of-type + p,
.ps-value-topic-body.ps-page-section > h3:first-of-type + p {
  font-size: 1.05rem;
  font-weight: 500;
}

.ps-value-topic-body .ps-value-topic-footnote {
  max-width: 42rem;
  text-align: left;
}

@media (min-width: 992px) {
  .ps-shanarri-indicator-body .ps-shanarri-jump,
  .ps-value-topic-body .ps-value-jump {
    margin-top: 3rem;
  }
}

/* SHANARRI indicator tile grid (all 8, current marked) */
.ps-shanarri-jump {
  margin-top: 2.75rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(33, 39, 85, 0.08);
}

.ps-shanarri-jump__title {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-type-eyebrow-size);
  font-weight: 700;
  letter-spacing: var(--ps-type-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--ps-teal);
  text-align: center;
  margin-bottom: 1.25rem;
}

.ps-shanarri-jump__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.65rem;
}

@media (min-width: 576px) {
  .ps-shanarri-jump__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.65rem;
  }
}

.ps-shanarri-jump__cell {
  min-width: 0;
}

.ps-shanarri-jump-tile {
  display: block;
  height: 100%;
  text-decoration: none;
  color: inherit;
  border-radius: 0.55rem;
  border: 1px solid rgba(33, 39, 85, 0.1);
  background: var(--ps-white);
  box-shadow: 0 2px 12px rgba(31, 45, 101, 0.05);
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}

a.ps-shanarri-jump-tile:hover {
  border-color: rgba(28, 163, 186, 0.45);
  box-shadow: 0 8px 28px rgba(31, 45, 101, 0.1);
  transform: translateY(-2px);
  color: inherit;
}

.ps-shanarri-jump-tile--current {
  border-color: var(--ps-navy);
  box-shadow: 0 6px 24px rgba(33, 39, 85, 0.12);
  cursor: default;
}

.ps-shanarri-jump-tile__inner {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  height: 100%;
  padding: 0.35rem 0.35rem 0.5rem;
}

.ps-shanarri-jump-tile__media {
  position: relative;
  border-radius: 0.4rem;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: rgba(33, 39, 85, 0.06);
}

.ps-shanarri-jump-tile__media::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  z-index: 1;
  background: var(--tile-strip, var(--ps-teal));
}

.ps-shanarri-jump-tile--safe { --tile-strip: var(--ps-shanarri-safe); }
.ps-shanarri-jump-tile--healthy { --tile-strip: var(--ps-shanarri-healthy); }
.ps-shanarri-jump-tile--achieving { --tile-strip: var(--ps-shanarri-achieving); }
.ps-shanarri-jump-tile--nurtured { --tile-strip: var(--ps-shanarri-nurtured); }
.ps-shanarri-jump-tile--active { --tile-strip: var(--ps-shanarri-active); }
.ps-shanarri-jump-tile--respected { --tile-strip: var(--ps-shanarri-respected); }
.ps-shanarri-jump-tile--responsible { --tile-strip: var(--ps-shanarri-responsible); }
.ps-shanarri-jump-tile--included { --tile-strip: var(--ps-shanarri-included); }

.ps-shanarri-jump-tile__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ps-shanarri-jump-tile__label {
  display: block;
  font-family: var(--ps-font-heading);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
  color: var(--ps-navy);
  margin-top: 0.4rem;
  line-height: 1.25;
}

.ps-shanarri-jump-tile__here {
  display: block;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-align: center;
  color: var(--ps-teal);
  margin-top: 0.15rem;
}

/* Brand value tile grid (4 pillars) */
.ps-value-jump {
  margin-top: 2.75rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(33, 39, 85, 0.08);
}

.ps-value-jump__title {
  font-family: var(--ps-font-heading);
  font-size: var(--ps-type-eyebrow-size);
  font-weight: 700;
  letter-spacing: var(--ps-type-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--ps-teal);
  text-align: center;
  margin-bottom: 1.25rem;
}

.ps-value-jump__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}

@media (min-width: 768px) {
  .ps-value-jump__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.ps-value-jump__cell {
  min-width: 0;
}

.ps-value-jump-tile {
  display: block;
  height: 100%;
  text-decoration: none;
  color: inherit;
  border-radius: 0.55rem;
  border: 1px solid rgba(33, 39, 85, 0.1);
  background: var(--ps-white);
  box-shadow: 0 2px 12px rgba(31, 45, 101, 0.05);
  transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}

a.ps-value-jump-tile:hover {
  border-color: rgba(28, 163, 186, 0.45);
  box-shadow: 0 8px 28px rgba(31, 45, 101, 0.1);
  transform: translateY(-2px);
  color: inherit;
}

.ps-value-jump-tile--current {
  border-color: var(--ps-navy);
  box-shadow: 0 6px 24px rgba(33, 39, 85, 0.12);
  cursor: default;
}

.ps-value-jump-tile--teal { --tile-strip: var(--ps-teal); }
.ps-value-jump-tile--magenta { --tile-strip: var(--ps-magenta); }
.ps-value-jump-tile--green { --tile-strip: var(--ps-green); }
.ps-value-jump-tile--neutral { --tile-strip: var(--ps-text-muted); }

.ps-value-jump-tile__inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 0.4rem 0.4rem 0.55rem;
}

.ps-value-jump-tile__media {
  position: relative;
  border-radius: 0.4rem;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: rgba(33, 39, 85, 0.06);
}

.ps-value-jump-tile__media::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: var(--tile-strip, var(--ps-teal));
  z-index: 1;
}

.ps-value-jump-tile__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ps-value-jump-tile__label {
  display: block;
  font-family: var(--ps-font-heading);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-align: center;
  color: var(--ps-navy);
  margin-top: 0.5rem;
}

.ps-value-jump-tile__here {
  display: block;
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-align: center;
  color: var(--ps-teal);
  margin-top: 0.2rem;
}

/* Lighter end CTA (no full-bleed teal band on topic deep pages) */
.ps-topic-inline-cta {
  padding-block: 0.5rem 2.5rem;
}

.ps-topic-inline-cta__panel {
  max-width: 40rem;
  margin: 0 auto;
  padding: clamp(1.5rem, 4vw, 2rem) clamp(1.25rem, 4vw, 2rem);
  border-radius: 0.75rem;
  border: 1px solid rgba(33, 39, 85, 0.1);
  background: linear-gradient(145deg, rgba(28, 163, 186, 0.06), rgba(255, 255, 255, 0.96));
  box-shadow: 0 8px 32px rgba(31, 45, 101, 0.06);
}

.ps-topic-inline-cta__lead {
  max-width: 32rem;
}

a.ps-shanarri-legend__item {
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}

a.ps-shanarri-legend__item:hover {
  color: var(--ps-navy);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* SHANARRI indicator list — impact cards & sidebars */
.ps-shanarri-indicator-links {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0;
  margin: 0;
}

.ps-shanarri-indicator-links__link {
  --indicator-accent: var(--ps-teal);
  --indicator-accent-bg: rgba(28, 163, 186, 0.1);
  display: flex;
  align-items: center;
  gap: 0.65rem;
  width: 100%;
  min-height: var(--ps-touch-min);
  padding: 0.55rem 0.75rem 0.55rem 0.65rem;
  border-radius: 0.5rem;
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-left: 3px solid var(--indicator-accent);
  background: rgba(255, 255, 255, 0.88);
  color: var(--ps-navy);
  font-family: var(--ps-font-heading);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-decoration: none;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.65) inset;
  transition:
    color 0.2s ease,
    border-color 0.2s ease,
    background-color 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.2s ease;
}

.ps-shanarri-indicator-links__link:hover {
  color: var(--ps-navy);
  background: var(--indicator-accent-bg);
  border-color: rgba(33, 39, 85, 0.14);
  border-left-color: var(--indicator-accent);
  box-shadow: var(--ps-shadow-sm);
  transform: translateX(2px);
}

.ps-shanarri-indicator-links__link:focus-visible {
  outline: 2px solid rgba(28, 163, 186, 0.5);
  outline-offset: 2px;
}

.ps-shanarri-indicator-links__dot {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--indicator-accent);
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.06) inset;
}

.ps-shanarri-indicator-links__label {
  flex: 1;
  min-width: 0;
  line-height: 1.25;
}

.ps-shanarri-indicator-links__link--safe { --indicator-accent: var(--ps-shanarri-safe); --indicator-accent-bg: rgba(30, 64, 175, 0.1); }
.ps-shanarri-indicator-links__link--healthy { --indicator-accent: var(--ps-shanarri-healthy); --indicator-accent-bg: rgba(22, 101, 52, 0.1); }
.ps-shanarri-indicator-links__link--achieving { --indicator-accent: var(--ps-shanarri-achieving); --indicator-accent-bg: rgba(180, 83, 9, 0.1); }
.ps-shanarri-indicator-links__link--nurtured { --indicator-accent: var(--ps-shanarri-nurtured); --indicator-accent-bg: rgba(190, 18, 60, 0.1); }
.ps-shanarri-indicator-links__link--active { --indicator-accent: var(--ps-shanarri-active); --indicator-accent-bg: rgba(194, 65, 12, 0.1); }
.ps-shanarri-indicator-links__link--respected { --indicator-accent: var(--ps-shanarri-respected); --indicator-accent-bg: rgba(109, 40, 217, 0.1); }
.ps-shanarri-indicator-links__link--responsible { --indicator-accent: var(--ps-shanarri-responsible); --indicator-accent-bg: rgba(15, 118, 110, 0.1); }
.ps-shanarri-indicator-links__link--included { --indicator-accent: var(--ps-shanarri-included); --indicator-accent-bg: rgba(178, 31, 123, 0.1); }

.ps-impact-card--teal .ps-shanarri-indicator-links__link {
  background: rgba(255, 255, 255, 0.94);
}

.ps-impact-card .ps-shanarri-indicator-links__link,
.ps-impact-card .ps-core-values-links__link {
  text-decoration: none;
  text-underline-offset: unset;
}

@media (min-width: 576px) {
  .ps-shanarri-indicator-links {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem 0.5rem;
  }
}

@media (min-width: 992px) {
  .ps-shanarri-indicator-links {
    grid-template-columns: 1fr;
  }
}

/* Core values list — same chip pattern, brand teal accent */
.ps-core-values-links {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0;
  margin: 0;
}

.ps-core-values-links__link {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: var(--ps-touch-min);
  padding: 0.6rem 0.85rem;
  border-radius: 0.5rem;
  border: 1px solid rgba(33, 39, 85, 0.1);
  border-left: 3px solid var(--ps-teal);
  background: rgba(255, 255, 255, 0.88);
  color: var(--ps-navy);
  font-family: var(--ps-font-heading);
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-decoration: none;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.65) inset;
  transition:
    color 0.2s ease,
    border-color 0.2s ease,
    background-color 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.2s ease;
}

.ps-core-values-links__link:hover {
  color: var(--ps-navy);
  background: rgba(28, 163, 186, 0.1);
  border-color: rgba(28, 163, 186, 0.35);
  border-left-color: var(--ps-teal);
  box-shadow: var(--ps-shadow-sm);
  transform: translateX(2px);
}

.ps-core-values-links__link:focus-visible {
  outline: 2px solid rgba(28, 163, 186, 0.5);
  outline-offset: 2px;
}

.ps-core-values-links__label {
  line-height: 1.3;
}

.ps-impact-card--teal .ps-core-values-links__link {
  background: rgba(255, 255, 255, 0.94);
}

.ps-shanarri-mega-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.5rem;
  font-size: 0.85rem;
  line-height: 1.2;
}

.ps-shanarri-mega-links .text-muted {
  display: none;
}

.ps-shanarri-mega-links a {
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  padding: 0.28rem 0.58rem;
  border-radius: 999px;
  border: 1px solid rgba(33, 39, 85, 0.16);
  background: rgba(255, 255, 255, 0.92);
  color: var(--ps-navy);
  text-decoration: none;
  font-weight: 600;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}

.ps-shanarri-mega-links a:hover {
  color: var(--ps-magenta);
  border-color: rgba(178, 31, 123, 0.5);
  background: rgba(178, 31, 123, 0.06);
}

