
:root{
  --bg:#050709;
  --bg2:#0b0e11;
  --panel:#12161b;
  --line:rgba(255,255,255,.09);
  --text:#f6f3ed;
  --muted:#a9afb5;
  --orange:#ff6900;
  --orange2:#ff9a18;
  --max:1280px;
}

html{scroll-behavior:smooth}
body.prs-body{margin:0!important;background:var(--bg)!important}
.prs-site{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow-x:hidden}
.prs-site *{box-sizing:border-box}
.prs-site a{color:inherit;text-decoration:none}
.prs-site button,.prs-site input,.prs-site select,.prs-site textarea{font:inherit}

.prs-header{width:min(calc(100% - 64px),var(--max));margin:0 auto;min-height:92px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:20}
.prs-brand{display:flex;align-items:center;gap:13px}
.prs-brand-mark{color:var(--orange);font-size:30px;text-shadow:0 0 18px rgba(255,105,0,.55)}
.prs-brand-text{display:grid;line-height:.9}
.prs-brand-text strong{font-size:19px;letter-spacing:.18em}
.prs-brand-text small{margin-top:8px;color:var(--orange);font-size:10px;font-weight:900;letter-spacing:.42em}

.prs-nav{display:flex;align-items:center;gap:30px;font-size:13px;font-weight:700}
.prs-nav a[aria-current="page"]{color:var(--orange2)}
.prs-nav-cta{border:1px solid var(--orange);background:transparent;color:var(--orange2);padding:12px 18px;border-radius:6px;cursor:pointer;font-weight:800}

.prs-hero{position:relative;min-height:820px;background:#050709}
.prs-hero-grid{width:min(calc(100% - 64px),var(--max));margin:0 auto;min-height:700px;display:grid;grid-template-columns:.82fr 1.18fr;align-items:center;gap:12px;position:relative;z-index:5}
.prs-hero-copy{position:relative;z-index:8}
.prs-kicker{margin:0 0 14px;color:var(--orange2);font-size:11px;font-weight:900;letter-spacing:.16em}
.prs-hero h1{margin:0 0 26px;font-size:clamp(58px,6.3vw,94px);line-height:.92;letter-spacing:-.06em;text-transform:uppercase}
.prs-hero h1 span{color:var(--orange)}
.prs-hero-lead{margin:0 0 16px;max-width:560px;font-size:21px;line-height:1.5}
.prs-hero-body{margin:0;max-width:590px;color:var(--muted);font-size:16px;line-height:1.72}

.prs-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}
.prs-button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;padding:0 20px;border-radius:6px;text-transform:uppercase;font-size:12px;font-weight:900;letter-spacing:.035em;cursor:pointer}
.prs-button-solid{background:linear-gradient(135deg,#ff5d00,#ff930f);border:1px solid var(--orange);color:#fff;box-shadow:0 12px 35px rgba(255,95,0,.22)}
.prs-button-outline{background:transparent;border:1px solid rgba(255,124,24,.72);color:#fff}
.prs-button-full{width:100%}

.prs-hero-art{position:relative;height:650px;overflow:visible}
.prs-hero-art img{position:absolute;inset:0 auto 0 0;width:112%;height:100%;object-fit:contain;object-position:center right;pointer-events:none;user-select:none;filter:saturate(1.05) contrast(1.03) drop-shadow(0 26px 56px rgba(0,0,0,.4))}
.prs-glow{position:absolute;pointer-events:none;border-radius:50%;mix-blend-mode:screen;filter:blur(14px);background:radial-gradient(circle,rgba(255,234,170,.5),rgba(255,122,15,.16) 28%,transparent 70%);animation:prs-flicker 2.6s ease-in-out infinite}
.prs-glow-chest{width:16%;aspect-ratio:1;left:52%;top:31%}
.prs-glow-tail{width:26%;aspect-ratio:1;left:58%;top:58%;animation-delay:.7s}

.prs-embers{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3}
.prs-ember{position:absolute;width:3px;height:3px;border-radius:50%;background:#ff7611;box-shadow:0 0 10px rgba(255,92,0,.9);animation:prs-ember linear infinite}

.prs-section{padding:92px 32px}
.prs-section-inner{width:min(100%,var(--max));margin:0 auto}
.prs-section h2,.prs-about-strip h2,.prs-cta h2{margin:0;font-size:clamp(34px,4vw,50px);line-height:1.02;letter-spacing:-.04em}
.prs-services{background:var(--bg2)}
.prs-card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:34px}
.prs-card{min-height:275px;background:linear-gradient(180deg,#161b21,#101419);border:1px solid var(--line);border-radius:10px;padding:28px}
.prs-card-icon{width:48px;height:48px;border:1px solid rgba(255,105,0,.5);border-radius:10px;display:grid;place-items:center;color:var(--orange);font-size:20px;font-weight:900;margin-bottom:24px}
.prs-card h3{margin:0 0 14px;font-size:20px}
.prs-card p{margin:0;color:var(--muted);line-height:1.68}

.prs-work{background:#07090b}
.prs-feature{display:grid;grid-template-columns:1.15fr .85fr;gap:50px;align-items:center;margin-top:34px}
.prs-browser{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#11161b;box-shadow:0 25px 80px rgba(0,0,0,.4)}
.prs-browser-bar{height:36px;background:#1a1f24;display:flex;gap:6px;align-items:center;padding:0 13px}
.prs-browser-bar i{width:8px;height:8px;border-radius:50%;background:#555}
.prs-browser-body{min-height:330px;padding:40px;background:radial-gradient(circle at 78% 18%,rgba(255,105,0,.12),transparent 22%),linear-gradient(140deg,#0d1115,#151a1f)}
.prs-browser-body strong{display:block;font-size:26px}
.prs-browser-body span{display:block;color:var(--orange2);font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-top:6px}
.prs-browser-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}
.prs-browser-grid b{display:block;height:86px;border:1px solid rgba(255,255,255,.08);border-radius:6px;background:#1b2229}
.prs-feature-copy h3{margin:0 0 18px;font-size:clamp(34px,3.2vw,46px);line-height:1.04;letter-spacing:-.04em}
.prs-feature-copy p{color:#d4d7da;line-height:1.72}

.prs-about-strip,.prs-cta,.prs-footer{width:min(calc(100% - 64px),var(--max));margin:0 auto}
.prs-about-strip{padding:72px 0;display:flex;justify-content:space-between;align-items:center;gap:30px}
.prs-about-strip p:not(.prs-kicker){color:var(--muted);max-width:760px;line-height:1.7}
.prs-cta{padding:46px 0;display:flex;justify-content:space-between;align-items:center;gap:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.prs-footer{padding:44px 0 58px;display:grid;grid-template-columns:1fr auto;gap:40px;color:var(--muted);font-size:14px}
.prs-footer>div{display:grid;gap:7px;align-content:start}
.prs-footer strong{color:#fff;text-transform:uppercase;font-size:12px;letter-spacing:.07em}
.prs-footer a{color:#fff}

.prs-about-hero{min-height:540px;background:radial-gradient(circle at 75% 38%,rgba(255,92,0,.12),transparent 26%),#07090b}
.prs-about-hero-inner{width:min(calc(100% - 64px),var(--max));margin:0 auto;padding:100px 0 120px}
.prs-about-hero h1{margin:0 0 24px;font-size:clamp(54px,7vw,90px);line-height:.96;letter-spacing:-.055em;max-width:900px}
.prs-about-hero p:last-child{max-width:800px;color:#d4d7da;line-height:1.7;font-size:20px}
.prs-about-main{width:min(calc(100% - 64px),var(--max));margin:0 auto;padding:88px 0 0}
.prs-about-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.prs-about-grid article{padding:32px;background:linear-gradient(180deg,#151a20,#101419);border:1px solid var(--line);border-radius:10px}
.prs-about-grid span{color:var(--orange);font-size:12px;font-weight:900;letter-spacing:.14em}
.prs-about-grid h2{margin:12px 0;font-size:24px}
.prs-about-grid p{margin:0;color:var(--muted);line-height:1.72}
.prs-cta-about{width:100%;margin-top:70px}

.prs-modal{position:fixed;inset:0;z-index:999999;display:none;align-items:center;justify-content:center;padding:20px}
.prs-modal.is-open{display:flex}
.prs-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82);backdrop-filter:blur(8px)}
.prs-modal-dialog{position:relative;width:min(100%,620px);padding:34px;background:linear-gradient(180deg,#151a20,#0d1013);border:1px solid rgba(255,122,22,.3);border-radius:14px;box-shadow:0 35px 100px rgba(0,0,0,.7)}
.prs-modal-close{position:absolute;right:14px;top:10px;border:0;background:transparent;color:#fff;font-size:30px;cursor:pointer}
.prs-modal-dialog h2{margin:8px 0;font-size:36px}
.prs-modal-intro{margin:0 0 24px;color:var(--muted)}
.prs-contact-form label{display:grid;gap:8px;margin-bottom:18px}
.prs-contact-form label span{font-size:13px;font-weight:800}
.prs-contact-form input,.prs-contact-form select,.prs-contact-form textarea{width:100%;padding:13px 14px;background:#090c0f;border:1px solid rgba(255,255,255,.12);border-radius:7px;color:#fff;outline:0}
.prs-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.prs-honeypot{position:absolute!important;left:-9999px!important}
.prs-form-status{min-height:22px;margin-top:12px;color:var(--muted);font-size:14px}
.prs-form-status.is-success{color:#95e7a8}
.prs-form-status.is-error{color:#ff9b8e}

@keyframes prs-ember{
  from{transform:translate3d(0,30px,0);opacity:0}
  12%{opacity:1}
  to{transform:translate3d(var(--drift,40px),-480px,0);opacity:0}
}
@keyframes prs-flicker{
  0%,100%{opacity:.10}
  30%{opacity:.24}
  58%{opacity:.15}
  76%{opacity:.30}
}



@media(prefers-reduced-motion:reduce){
  .prs-ember,.prs-glow{animation:none!important}
}


/* v1.0.2 prominent phoenix chest glow */
.prs-glow-chest {
  width: 19% !important;
  aspect-ratio: 1;
  left: 49.5% !important;
  top: 34% !important;
  border-radius: 50%;
  background:
    radial-gradient(circle,
      rgba(255,255,235,.98) 0 5%,
      rgba(255,224,135,.88) 7% 11%,
      rgba(255,163,37,.60) 18%,
      rgba(255,92,0,.30) 34%,
      rgba(255,55,0,.12) 52%,
      transparent 74%);
  filter:
    blur(7px)
    drop-shadow(0 0 16px rgba(255,174,56,.75))
    drop-shadow(0 0 30px rgba(255,91,0,.38));
  opacity: .22;
  mix-blend-mode: screen;
  pointer-events: none;
  transform: none !important;
  animation: prs-heart-breathe 3.4s ease-in-out infinite !important;
}

.prs-glow-chest::before {
  content: "";
  position: absolute;
  inset: 30%;
  border-radius: 50%;
  background: rgba(255,250,220,.96);
  filter: blur(3px);
  box-shadow:
    0 0 10px rgba(255,241,190,.9),
    0 0 22px rgba(255,151,39,.75),
    0 0 38px rgba(255,83,0,.48);
  opacity: .50;
  animation: prs-heart-core 3.4s ease-in-out infinite !important;
}

@keyframes prs-heart-breathe {
  0%,100% { opacity: .20; }
  32%     { opacity: .35; }
  50%     { opacity: .70; }
  68%     { opacity: .40; }
}

@keyframes prs-heart-core {
  0%,100% { opacity: .35; }
  42%     { opacity: .68; }
  52%     { opacity: .95; }
  68%     { opacity: .55; }
}

/* Keep all phoenix artwork and page geometry stationary. */
.prs-hero-art,
.prs-hero-art img,
.prs-hero,
.prs-hero-grid {
  transform: none !important;
  animation: none !important;
}

.prs-glow-tail {
  animation: none !important;
  opacity: .08 !important;
  transform: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .prs-glow-chest,
  .prs-glow-chest::before {
    animation: none !important;
  }
  .prs-glow-chest { opacity: .42 !important; }
  .prs-glow-chest::before { opacity: .72 !important; }
}


/* v1.0.3 exact hero-effect alignment correction */

/* The previous glow was too far right. This places it over the phoenix's
   illuminated chest/heart area in the actual rendered homepage. */
.prs-glow-chest {
  left: 32.5% !important;
  top: 33.5% !important;
  width: 17% !important;
  height: auto !important;
  aspect-ratio: 1 / 1 !important;
  transform: none !important;
}

/* The secondary tail glow was visually confusing, remove it entirely. */
.prs-glow-tail {
  display: none !important;
}

/* Keep the phoenix itself completely fixed. */
.prs-hero-art,
.prs-hero-art img {
  transform: none !important;
  animation: none !important;
  transition: none !important;
}


/* v1.0.4 chest-glow position refinement */
.prs-glow-chest {
  left: 30.5% !important;
  top: 36.5% !important;
}


/* v1.0.5 chest-glow position refinement */
.prs-glow-chest {
  left: 28.8% !important;
  top: 38.3% !important;
}


/* v1.0.6 reduce chest glow brightness by ~50% */
.prs-glow-chest {
  opacity: .11 !important;
}

@keyframes prs-heart-breathe {
  0%,100% { opacity: .10; }
  32%     { opacity: .175; }
  50%     { opacity: .35; }
  68%     { opacity: .20; }
}

@keyframes prs-heart-core {
  0%,100% { opacity: .175; }
  42%     { opacity: .34; }
  52%     { opacity: .475; }
  68%     { opacity: .275; }
}


/* v1.0.7 restore a moderately visible chest glow */
.prs-glow-chest {
  opacity: .17 !important;
}

@keyframes prs-heart-breathe {
  0%,100% { opacity: .15; }
  32%     { opacity: .26; }
  50%     { opacity: .52; }
  68%     { opacity: .30; }
}

@keyframes prs-heart-core {
  0%,100% { opacity: .26; }
  42%     { opacity: .50; }
  52%     { opacity: .70; }
  68%     { opacity: .41; }
}


/* v1.0.8 animated chest glow + embers in front of phoenix */

/* Make the chest glow visibly fade in and out. */
.prs-glow-chest {
  animation: prs-chest-pulse-v108 3.6s ease-in-out infinite !important;
  opacity: .16 !important;
}

.prs-glow-chest::before {
  animation: prs-chest-core-pulse-v108 3.6s ease-in-out infinite !important;
}

@keyframes prs-chest-pulse-v108 {
  0%, 100% { opacity: .08; }
  20%      { opacity: .16; }
  48%      { opacity: .52; }
  62%      { opacity: .34; }
  82%      { opacity: .14; }
}

@keyframes prs-chest-core-pulse-v108 {
  0%, 100% { opacity: .10; }
  28%      { opacity: .28; }
  50%      { opacity: .78; }
  66%      { opacity: .42; }
  84%      { opacity: .18; }
}

/* Bring ember particles visually in front of the phoenix image. */
.prs-embers {
  z-index: 12 !important;
}

.prs-hero-art {
  z-index: 5 !important;
}

.prs-hero-copy,
.prs-header {
  z-index: 20 !important;
}

/* Keep the particles non-interactive. */
.prs-embers,
.prs-ember {
  pointer-events: none !important;
}


/* v1.0.9 JS-driven chest pulse */
.prs-glow-chest,
.prs-glow-chest::before {
  animation: none !important;
}

.prs-glow-chest {
  opacity: .10 !important;
  transition: opacity .06s linear !important;
}

.prs-glow-chest::before {
  opacity: .18 !important;
}


/* v1.0.10 slower ember rise with stronger turbulent motion */
.prs-ember {
  animation-name: prs-ember-turbulence-v110 !important;
  animation-duration: var(--dur, 14s) !important;
  animation-timing-function: linear !important;
  animation-iteration-count: infinite !important;
  animation-delay: var(--delay, 0s) !important;
  will-change: transform, opacity;
}

@keyframes prs-ember-turbulence-v110 {
  0% {
    transform: translate3d(0, 18px, 0) rotate(0deg);
    opacity: 0;
  }
  8% {
    opacity: .75;
  }
  22% {
    transform: translate3d(var(--turb1, 20px), -28px, 0) rotate(18deg);
  }
  38% {
    transform: translate3d(var(--turb2, -28px), -72px, 0) rotate(-14deg);
    opacity: .95;
  }
  55% {
    transform: translate3d(var(--turb3, 24px), -118px, 0) rotate(24deg);
  }
  70% {
    transform: translate3d(calc(var(--turb1, 20px) * -0.65), -165px, 0) rotate(-20deg);
    opacity: .72;
  }
  84% {
    transform: translate3d(calc(var(--turb2, -28px) * -0.45), -210px, 0) rotate(12deg);
    opacity: .45;
  }
  100% {
    transform: translate3d(var(--drift, 0px), -255px, 0) rotate(var(--rot, 45deg));
    opacity: 0;
  }
}


/* v1.0.11 fully independent embers, slightly reduced turbulence */
.prs-ember {
  animation-name: prs-ember-independent-v111 !important;
  animation-duration: var(--dur, 14s) !important;
  animation-delay: var(--delay, 0s) !important;
  animation-timing-function: linear !important;
  animation-iteration-count: infinite !important;
}

@keyframes prs-ember-independent-v111 {
  0% {
    transform: translate3d(0, 15px, 0) rotate(0deg);
    opacity: 0;
  }
  9% {
    opacity: .72;
  }
  24% {
    transform: translate3d(var(--turb1, 10px), -38px, 0) rotate(8deg);
  }
  43% {
    transform: translate3d(var(--turb2, -14px), -92px, 0) rotate(-7deg);
    opacity: .92;
  }
  61% {
    transform: translate3d(var(--turb3, 12px), -145px, 0) rotate(10deg);
  }
  78% {
    transform: translate3d(calc(var(--turb1, 10px) * -0.55), -198px, 0) rotate(-8deg);
    opacity: .58;
  }
  100% {
    transform: translate3d(var(--drift, 0px), -270px, 0) rotate(var(--rot, 30deg));
    opacity: 0;
  }
}


/* v1.0.13 fix duplicated right-side image strip */
.prs-hero-art {
  position: relative;
  overflow: hidden !important;
  background: #050709 !important;
}

/* Use the image's own alpha fade. Keep it inside the art container so
   no uncovered oversize strip can appear on the right. */
.prs-hero-art img {
  left: 0 !important;
  right: auto !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center right !important;
}

/* Remove the old pseudo-element fade completely. */
.prs-hero-art::after,
.prs-hero-art::before {
  content: none !important;
  display: none !important;
}






/* v1.0.14 restore phoenix scale + true right-edge fade */
.prs-hero-art {
  position: relative;
  overflow: hidden !important;
  background: #050709 !important;
}

/* Restore the larger visual scale while anchoring the bird to the right.
   The fade is applied directly to the image, so no duplicate strip can appear. */
.prs-hero-art img {
  left: auto !important;
  right: -1.5% !important;
  width: 112% !important;
  max-width: none !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center right !important;

  -webkit-mask-image: linear-gradient(
    to right,
    rgba(0,0,0,1) 0%,
    rgba(0,0,0,1) 80%,
    rgba(0,0,0,.92) 85%,
    rgba(0,0,0,.58) 91%,
    rgba(0,0,0,.18) 97%,
    rgba(0,0,0,0) 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    rgba(0,0,0,1) 0%,
    rgba(0,0,0,1) 80%,
    rgba(0,0,0,.92) 85%,
    rgba(0,0,0,.58) 91%,
    rgba(0,0,0,.18) 97%,
    rgba(0,0,0,0) 100%
  ) !important;

  -webkit-mask-repeat: no-repeat !important;
  mask-repeat: no-repeat !important;
  -webkit-mask-size: 100% 100% !important;
  mask-size: 100% 100% !important;
}

/* Make sure no old pseudo-element fade returns. */
.prs-hero-art::before,
.prs-hero-art::after {
  content: none !important;
  display: none !important;
}






/* v1.0.15 fade both left and right edges of the phoenix image */
.prs-hero-art img {
  -webkit-mask-image: linear-gradient(
    to right,
    rgba(0,0,0,0) 0%,
    rgba(0,0,0,.18) 4%,
    rgba(0,0,0,.58) 9%,
    rgba(0,0,0,.92) 15%,
    rgba(0,0,0,1) 21%,
    rgba(0,0,0,1) 80%,
    rgba(0,0,0,.92) 85%,
    rgba(0,0,0,.58) 91%,
    rgba(0,0,0,.18) 97%,
    rgba(0,0,0,0) 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    rgba(0,0,0,0) 0%,
    rgba(0,0,0,.18) 4%,
    rgba(0,0,0,.58) 9%,
    rgba(0,0,0,.92) 15%,
    rgba(0,0,0,1) 21%,
    rgba(0,0,0,1) 80%,
    rgba(0,0,0,.92) 85%,
    rgba(0,0,0,.58) 91%,
    rgba(0,0,0,.18) 97%,
    rgba(0,0,0,0) 100%
  ) !important;
}


/* v1.0.16 restore phoenix positioning, stronger left fade, realign chest glow */

/* Keep the same large scale, but push the image back to the right. */
.prs-hero-art img {
  width: 112% !important;
  max-width: none !important;
  left: auto !important;
  right: -6% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center right !important;

  /* Stronger, smoother fade on the left. Keep the successful right fade. */
  -webkit-mask-image: linear-gradient(
    to right,
    rgba(0,0,0,0) 0%,
    rgba(0,0,0,.08) 3%,
    rgba(0,0,0,.28) 7%,
    rgba(0,0,0,.58) 12%,
    rgba(0,0,0,.84) 17%,
    rgba(0,0,0,1) 23%,
    rgba(0,0,0,1) 80%,
    rgba(0,0,0,.92) 85%,
    rgba(0,0,0,.58) 91%,
    rgba(0,0,0,.18) 97%,
    rgba(0,0,0,0) 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    rgba(0,0,0,0) 0%,
    rgba(0,0,0,.08) 3%,
    rgba(0,0,0,.28) 7%,
    rgba(0,0,0,.58) 12%,
    rgba(0,0,0,.84) 17%,
    rgba(0,0,0,1) 23%,
    rgba(0,0,0,1) 80%,
    rgba(0,0,0,.92) 85%,
    rgba(0,0,0,.58) 91%,
    rgba(0,0,0,.18) 97%,
    rgba(0,0,0,0) 100%
  ) !important;
}

/* Re-align the animated glow to the phoenix chest after shifting the artwork right. */
.prs-glow-chest {
  left: 25.0% !important;
  top: 36.8% !important;
  width: 17% !important;
}

/* Keep the art container fixed and clipped. */
.prs-hero-art {
  overflow: hidden !important;
  background: #050709 !important;
}






/* v1.0.17 chest-glow position refinement */
.prs-glow-chest {
  left: 23.6% !important;
  top: 37.4% !important;
}


/* v1.0.22 Phoenix Rising logo emblem */
.prs-brand-mark {
  width: 42px !important;
  height: 42px !important;
  display: grid !important;
  place-items: center !important;
  font-size: 0 !important;
  transform: none !important;
  color: var(--orange) !important;
  text-shadow: none !important;
}

.prs-brand-phoenix {
  width: 40px;
  height: 40px;
  overflow: visible;
  fill: currentColor;
  filter:
    drop-shadow(0 0 5px rgba(255,105,0,.55))
    drop-shadow(0 0 12px rgba(255,105,0,.20));
}

.prs-brand-phoenix-wing {
  opacity: .96;
}

.prs-brand-phoenix-body,
.prs-brand-phoenix-head {
  fill: var(--orange2);
}

.prs-brand-phoenix-tail {
  fill: var(--orange);
  opacity: .95;
}

/* Keep the emblem crisp and still. */
.prs-brand-phoenix,
.prs-brand-phoenix * {
  animation: none !important;
  transform: none !important;
  transition: none !important;
}

.prs-brand:hover .prs-brand-phoenix {
  filter:
    drop-shadow(0 0 6px rgba(255,135,24,.70))
    drop-shadow(0 0 14px rgba(255,105,0,.28));
}


/* v1.0.23 logo refinement based on supplied reference */
.prs-brand-mark {
  width: 44px !important;
  height: 48px !important;
  margin-right: 9px !important;
}

.prs-brand-phoenix {
  width: 44px !important;
  height: 48px !important;
  fill: var(--orange) !important;
  filter: drop-shadow(0 0 4px rgba(255,105,0,.35)) !important;
}

.prs-phoenix-neck,
.prs-phoenix-head {
  fill: var(--orange2) !important;
}

.prs-phoenix-detail {
  fill: #ffb04a !important;
}

/* Make RISING more prominent while retaining the existing two-line wordmark. */
.prs-brand-text small {
  font-size: 11px !important;
  letter-spacing: .34em !important;
  line-height: 1.05 !important;
  font-weight: 800 !important;
}


/* v1.0.24 use the approved phoenix logo concept */
.prs-brand {
  gap: 10px !important;
}

.prs-brand-mark {
  width: 38px !important;
  height: 40px !important;
  display: grid !important;
  place-items: center !important;
  margin-right: 0 !important;
}

.prs-brand-phoenix-img {
  width: 36px !important;
  height: 40px !important;
  object-fit: contain !important;
  display: block !important;
  filter: drop-shadow(0 0 4px rgba(255,105,0,.24));
}

.prs-brand-text strong {
  font-size: 17px !important;
  letter-spacing: .16em !important;
  line-height: .92 !important;
  font-weight: 700 !important;
}

.prs-brand-text small {
  margin-top: 5px !important;
  color: var(--orange) !important;
  font-size: 10.5px !important;
  line-height: 1 !important;
  letter-spacing: .28em !important;
  font-weight: 800 !important;
}

/* Remove styling that belonged to the discarded SVG version. */
.prs-brand-phoenix,
.prs-brand-phoenix *,
.prs-phoenix-wings,
.prs-phoenix-neck,
.prs-phoenix-head,
.prs-phoenix-tail,
.prs-phoenix-detail {
  display: none !important;
}


/* v1.0.26 approved logo wordmark refinement */
.prs-brand-text {
  min-width: 112px !important;
}

.prs-brand-text strong {
  font-size: 17px !important;
  letter-spacing: .15em !important;
  line-height: .92 !important;
  font-weight: 700 !important;
  white-space: nowrap !important;
}

.prs-brand-text small {
  margin-top: 5px !important;
  color: var(--orange) !important;
  font-size: 12px !important;
  line-height: 1 !important;
  letter-spacing: .44em !important;
  font-weight: 800 !important;
  white-space: nowrap !important;
  display: block !important;
  width: 100% !important;
}


/* v1.0.27 exact approved Phoenix Rising logo */
.prs-brand-approved {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0 !important;
  line-height: 1 !important;
}

.prs-brand-approved-img {
  display: block !important;
  width: 160px !important;
  height: auto !important;
  max-width: none !important;
  object-fit: contain !important;
  filter: none !important;
}

/* Hide the old split mark/text structure if any cached markup remains. */
.prs-brand-approved .prs-brand-mark,
.prs-brand-approved .prs-brand-text {
  display: none !important;
}

@media (max-width: 700px) {
  .prs-brand-approved-img {
    width: 142px !important;
  }
}


/* v1.0.28: temporarily hide View My Work CTA */
.prs-btn-primary[href="#work"] {
    display: none !important;
}


/* v1.0.29: View My Work CTA removed from markup. Fallback for stale/cached markup. */
.prs-hero-actions .prs-btn-primary:first-child {
    display: none !important;
}

/* v1.0.31: one phoenix asset on desktop, iPad and iPhone.
   Responsive rules may resize/reposition the same artwork, but may not swap it. */
.prs-hero-art img {
    content: normal !important;
}


/* v1.1.0 Homepage control-panel driven hero */
.prs-hero-art img {
  width: var(--prs-hero-scale, 112%) !important;
  max-width: none !important;
  height: 100% !important;
  object-fit: contain !important;

  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  -webkit-mask-repeat: no-repeat !important;
  mask-repeat: no-repeat !important;
  -webkit-mask-size: 100% 100% !important;
  mask-size: 100% 100% !important;
}

/* Mobile and tablet use the same selected Media Library image.
   Only the container dimensions adapt. */





/* v1.1.1: hero artwork reaches the top and sits behind header/nav */
.prs-hero {
  position: relative !important;
  overflow: hidden !important;
}

.prs-header {
  position: relative !important;
  z-index: 30 !important;
}

.prs-hero-grid {
  position: relative !important;
  z-index: 10 !important;
}

/* Extend the artwork upward behind the header. */
.prs-hero-art {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 64% !important;
  height: 100% !important;
  z-index: 4 !important;
  pointer-events: none !important;
  overflow: visible !important;
  margin: 0 !important;
}

/* Keep selected media image behind the header and allow the upper wings
   to reach into the navigation area. */
.prs-hero-art img {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  height: 100% !important;
  min-height: 100% !important;
  object-fit: cover !important;
  object-position: center right !important;
}

/* Ensure hero copy stays above the artwork. */
.prs-hero-copy {
  position: relative !important;
  z-index: 20 !important;
}

/* Embers stay above artwork but below text/navigation. */
.prs-embers {
  z-index: 12 !important;
}

/* Contact link still looks/behaves as a button. */
.prs-home-cta {
  text-decoration: none !important;
}






/* v1.1.2: artwork overlaps header, text stays safely below it */

/* Critical change:
   make the hero GRID non-positioned so the absolutely positioned
   .prs-hero-art uses .prs-hero as its containing block instead.
   This allows the image to begin at the true top of the hero/page. */
.prs-hero-grid {
  position: static !important;
}

/* The image now spans from the very top of the hero, behind the header/nav. */
.prs-hero-art {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 64% !important;
  height: 100% !important;
  z-index: 4 !important;
  margin: 0 !important;
  overflow: visible !important;
  pointer-events: none !important;
}

/* Keep image pinned to top-right and covering the full hero height. */
.prs-hero-art img {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  height: 100% !important;
  min-height: 100% !important;
  width: var(--prs-hero-scale, 112%) !important;
  max-width: none !important;
  object-fit: cover !important;
}

/* Header remains visually above the phoenix. */
.prs-header {
  position: relative !important;
  z-index: 30 !important;
}

/* Text remains in normal flow after the header, safely below the logo. */
.prs-hero-copy {
  position: relative !important;
  z-index: 20 !important;
  padding-top: 24px !important;
}

/* Ember layer remains over image, under header/text. */
.prs-embers {
  z-index: 12 !important;
}

/* Tablet/mobile return to stacked layout while keeping the same chosen image. */





/* v1.1.3: configurable hero text panel and typography */
.prs-hero-grid {
  grid-template-columns: var(--prs-text-panel-width, 46%) 1fr !important;
}

.prs-hero-copy {
  width: 100% !important;
  max-width: none !important;
}

.prs-hero h1 {
  font-size: var(--prs-headline-size, 88px) !important;
  max-width: none !important;
}

.prs-headline-white,
.prs-headline-orange,
.prs-headline-line {
  display: block !important;
}

.prs-headline-line {
  white-space: nowrap !important;
}

.prs-headline-orange {
  color: var(--orange) !important;
}

.prs-hero-lead {
  font-size: var(--prs-subheading-size, 21px) !important;
}

.prs-hero-body {
  font-size: var(--prs-body-size, 16px) !important;
}

/* On smaller screens allow normal responsive wrapping so text remains usable. */





/* v1.1.4: fix headline colours + make text panel width truly functional */

/* The text width control now applies directly to the actual copy panel. */
.prs-hero-copy {
  width: var(--prs-text-panel-width, 46%) !important;
  max-width: var(--prs-text-panel-width, 46%) !important;
  box-sizing: border-box !important;
}

/* Explicitly override legacy "h1 span = orange" styling. */
.prs-hero h1 .prs-headline-white {
  color: #f7f5f1 !important;
}

.prs-hero h1 .prs-headline-orange,
.prs-hero h1 .prs-headline-orange .prs-headline-line {
  color: var(--orange) !important;
}

/* Let panel width and font size determine wrapping naturally. */
.prs-headline-line {
  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}

/* Keep each admin-entered orange line as a separate block,
   but allow that line itself to wrap if the panel is too narrow. */
.prs-headline-orange > .prs-headline-line {
  display: block !important;
}

/* Grid width is no longer responsible for copy width because the artwork
   is absolutely positioned behind the hero. */
.prs-hero-grid {
  grid-template-columns: 1fr !important;
}

/* Keep paragraphs constrained to the same panel width. */
.prs-hero-lead,
.prs-hero-body,
.prs-actions {
  max-width: 100% !important;
}

/* Tablet/mobile use full available width. */



/* v1.1.5: configurable chest glow position and size */
.prs-glow-chest {
  left: var(--prs-glow-x, 24%) !important;
  top: var(--prs-glow-y, 37%) !important;
  width: var(--prs-glow-size, 17%) !important;
  height: auto !important;
  aspect-ratio: 1 / 1 !important;
  transform: translate(-50%, -50%) !important;
  transform-origin: center center !important;
}


/* Ember emitter covers the full phoenix image area and begins at its bottom edge. */
.prs-embers {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: auto !important;
  width: 64% !important;
  height: 100% !important;
  overflow: hidden !important;
  pointer-events: none !important;
}

/* On tablet/mobile, embers follow the full stacked image area. */
@media (max-width: 1020px) {
  .prs-embers {
    left: 0 !important;
    right: auto !important;
    width: 100% !important;
  }
}


/* Local breathing illusion uses the same anchor and size as the chest glow.
   It never scales the phoenix image or page itself. */
.prs-breathing-pulse {
  position: absolute;
  left: var(--prs-glow-x, 24%);
  top: var(--prs-glow-y, 37%);
  width: var(--prs-glow-size, 17%);
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 9;
  mix-blend-mode: screen;
  background:
    radial-gradient(circle,
      rgba(255,220,150,.18) 0 16%,
      rgba(255,128,30,.10) 32%,
      rgba(255,72,0,.04) 52%,
      transparent 74%);
  filter: blur(10px);
  animation: prs-local-breathing 4.2s ease-in-out infinite;
}

@keyframes prs-local-breathing {
  0%, 100% {
    opacity: .16;
    transform: translate(-50%, -50%) scale(0.96);
  }
  50% {
    opacity: calc(.16 + (var(--prs-breathing-strength, 18) / 100));
    transform: translate(-50%, -50%) scale(calc(1 + (var(--prs-breathing-strength, 18) / 500)));
  }
}

/* Custom ember-emitter box. Centered on configurable X/Y point. */
.prs-embers {
  left: var(--prs-emitter-x, 50%) !important;
  top: var(--prs-emitter-y, 92%) !important;
  right: auto !important;
  bottom: auto !important;
  width: var(--prs-emitter-width, 64%) !important;
  height: var(--prs-emitter-height, 100%) !important;
  transform: translate(-50%, -100%) !important;
  overflow: visible !important;
}

/* On smaller screens keep same user-defined emitter geometry. */
@media (max-width: 1020px) {
  .prs-embers {
    left: var(--prs-emitter-x, 50%) !important;
    top: var(--prs-emitter-y, 92%) !important;
    width: var(--prs-emitter-width, 64%) !important;
    height: var(--prs-emitter-height, 100%) !important;
    transform: translate(-50%, -100%) !important;
  }
}


/* v1.1.7: true local chest breathing illusion.
   This duplicates only the selected phoenix image within a clipped chest patch,
   then scales that patch subtly. The rest of the image stays fixed. */
.prs-breathing-patch {
  position: absolute !important;
  left: var(--prs-glow-x, 24%) !important;
  top: var(--prs-glow-y, 37%) !important;
  width: var(--prs-glow-size, 17%) !important;
  aspect-ratio: 1 / 1 !important;
  transform: translate(-50%, -50%) !important;
  overflow: hidden !important;
  border-radius: 50% !important;
  pointer-events: none !important;
  z-index: 8 !important;
  opacity: .82 !important;

  -webkit-mask-image: radial-gradient(
    circle,
    rgba(0,0,0,1) 0 48%,
    rgba(0,0,0,.82) 62%,
    rgba(0,0,0,.35) 78%,
    rgba(0,0,0,0) 100%
  ) !important;
  mask-image: radial-gradient(
    circle,
    rgba(0,0,0,1) 0 48%,
    rgba(0,0,0,.82) 62%,
    rgba(0,0,0,.35) 78%,
    rgba(0,0,0,0) 100%
  ) !important;

  animation: prs-chest-breathe-patch 4.2s ease-in-out infinite !important;
}

.prs-breathing-patch img {
  position: absolute !important;

  /* Reconstruct the full hero-image geometry inside the clipped patch. */
  width: calc((100 / var(--prs-glow-size, 17)) * var(--prs-hero-scale, 112%)) !important;
  max-width: none !important;
  height: calc(100% * (100 / var(--prs-glow-size, 17))) !important;
  object-fit: cover !important;

  /* Shift the duplicate so the same source area aligns beneath the patch. */
  left: calc(-1 * var(--prs-glow-x, 24%) * (100 / var(--prs-glow-size, 17))) !important;
  top: calc(-1 * var(--prs-glow-y, 37%) * (100 / var(--prs-glow-size, 17))) !important;

  transform-origin: center center !important;
  pointer-events: none !important;
}

@keyframes prs-chest-breathe-patch {
  0%, 100% {
    transform: translate(-50%, -50%) scale(1);
    opacity: .74;
  }
  50% {
    transform:
      translate(-50%, -50%)
      scale(calc(1 + (var(--prs-breathing-strength, 18) / 450)));
    opacity: .92;
  }
}

/* Retire the older light-only breathing layer. */
.prs-breathing-pulse {
  display: none !important;
}

/* Extended emitter geometry. Values may intentionally exceed image bounds. */
.prs-embers {
  left: var(--prs-emitter-x, 50%) !important;
  top: var(--prs-emitter-y, 100%) !important;
  width: var(--prs-emitter-width, 100%) !important;
  height: var(--prs-emitter-height, 120%) !important;
  overflow: visible !important;
}

/* Keep the emitter's bottom edge anchored at its configured Y coordinate. */
.prs-embers {
  transform: translate(-50%, -100%) !important;
}

@media (max-width: 1020px) {
  .prs-embers {
    left: var(--prs-emitter-x, 50%) !important;
    top: var(--prs-emitter-y, 100%) !important;
    width: var(--prs-emitter-width, 100%) !important;
    height: var(--prs-emitter-height, 120%) !important;
    transform: translate(-50%, -100%) !important;
  }
}


/* v1.1.8
   Glow and local zoom are now anchored to the actual rendered image element.
   JS writes pixel coordinates/sizes derived from getBoundingClientRect(), so
   changing viewport width or hero layout no longer shifts the effect relative
   to the phoenix artwork. */

.prs-glow-chest,
.prs-local-zoom {
  left: var(--prs-effect-x-px, 0px) !important;
  top: var(--prs-effect-y-px, 0px) !important;
  width: var(--prs-effect-size-px, 120px) !important;
  height: var(--prs-effect-size-px, 120px) !important;
}

/* Soft circular zoom lens. The edge is progressively feathered so there is
   no visible hard circle. */
.prs-local-zoom {
  position: absolute !important;
  transform: translate(-50%, -50%) !important;
  border-radius: 50% !important;
  overflow: hidden !important;
  pointer-events: none !important;
  z-index: 8 !important;
  opacity: 1 !important;

  -webkit-mask-image: radial-gradient(
    circle at center,
    #000 0%,
    rgba(0,0,0,.98) 30%,
    rgba(0,0,0,.78) 52%,
    rgba(0,0,0,.38) 72%,
    rgba(0,0,0,.10) 88%,
    transparent 100%
  ) !important;
  mask-image: radial-gradient(
    circle at center,
    #000 0%,
    rgba(0,0,0,.98) 30%,
    rgba(0,0,0,.78) 52%,
    rgba(0,0,0,.38) 72%,
    rgba(0,0,0,.10) 88%,
    transparent 100%
  ) !important;
}

.prs-local-zoom-inner {
  position: absolute !important;
  inset: 0 !important;
  transform-origin: center center !important;
  animation: prs-soft-local-zoom 4.4s ease-in-out infinite !important;
}

.prs-local-zoom img {
  position: absolute !important;
  max-width: none !important;
  width: var(--prs-source-image-width-px, 1000px) !important;
  height: var(--prs-source-image-height-px, 700px) !important;
  left: var(--prs-source-image-left-px, -200px) !important;
  top: var(--prs-source-image-top-px, -150px) !important;
  object-fit: fill !important;
  pointer-events: none !important;
}

@keyframes prs-soft-local-zoom {
  0%, 100% {
    transform: scale(1);
    opacity: .72;
  }
  50% {
    transform: scale(calc(1 + (var(--prs-breathing-strength, 18) / 350)));
    opacity: 1;
  }
}

/* Disable the previous experimental breathing implementations. */
.prs-breathing-patch,
.prs-breathing-pulse {
  display: none !important;
}


/* v1.2.0: single-surface canvas breathing effect */
.prs-hero-canvas {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: block !important;
  z-index: 6 !important;
  pointer-events: none !important;

  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;
  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;
}

/* When breathing canvas is active, the source img remains in the DOM only
   as the source/geometry reference but is visually hidden. */
/* Single-image fallback only.
   Layered mode manages background and phoenix visibility separately. */
.prs-hero-art:not(.prs-layered-hero)[data-prs-breathing="1"] > .prs-single-source,
.prs-hero-art:not(.prs-layered-hero)[data-prs-wing-motion="1"] > .prs-single-source,
.prs-hero-art:not(.prs-layered-hero)[data-prs-head-motion="1"] > .prs-single-source {
  opacity: 0 !important;
}

/* Glow must always sit above the breathing surface. */
.prs-glow-chest {
  z-index: 12 !important;
}

/* Retire all previous duplicate/lens implementations. */
.prs-local-zoom,
.prs-local-zoom-inner,
.prs-breathing-patch,
.prs-breathing-pulse {
  display: none !important;
}


/* v1.2.2: glow/zoom synchronization
   JS drives both from the same phase. */
.prs-glow-chest {
  animation: none !important;
}


/* v1.2.3: animation is entirely JS-driven from one master clock. */
.prs-glow-chest,
.prs-local-zoom-inner,
.prs-breathing-patch,
.prs-breathing-pulse {
  animation: none !important;
}


/* v1.2.4: glow opacity is controlled ONLY by the shared JS master clock. */
.prs-glow-chest {
  animation: none !important;
  opacity: 0;
}


/* v1.2.5: restore the larger GET IN TOUCH hero button. */
.prs-hero .prs-btn,
.prs-hero .prs-hero-button,
.prs-hero a.prs-btn {
  min-width: 190px;
  min-height: 58px;
  padding: 16px 28px;
  font-size: 18px;
  line-height: 1.2;
  letter-spacing: 0.04em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}




/* v1.3.2: Hero GET IN TOUCH button.
   Match its typography to the hero subheading and restore a larger CTA footprint. */
.prs-hero-copy .prs-button,
.prs-hero-copy .prs-button-outline {
    font-family: inherit;
    font-size: var(--prs-subheading-size, 21px);
    font-weight: 400;
    line-height: 1.35;
    letter-spacing: 0;
    min-height: 64px;
    padding: 16px 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}


/* v1.3.3: more organic ember lifecycle.
   Embers are slightly larger at birth, vary more in size,
   shrink as they rise, and accelerate gently near the end. */
.prs-ember {
  animation-name: prs-ember-lifecycle-v133 !important;
  animation-duration: var(--dur, 12s) !important;
  animation-timing-function: linear !important;
  animation-iteration-count: infinite !important;
  animation-delay: var(--delay, 0s) !important;
  transform-origin: center center !important;
}

@keyframes prs-ember-lifecycle-v133 {
  0% {
    transform:
      translate3d(0, 10px, 0)
      rotate(0deg)
      scale(1.15);
    opacity: 0;
  }

  7% {
    transform:
      translate3d(calc(var(--turb1, 8px) * .25), -4px, 0)
      rotate(3deg)
      scale(1.08);
    opacity: .82;
  }

  24% {
    transform:
      translate3d(var(--turb1, 10px), -34px, 0)
      rotate(8deg)
      scale(.96);
    opacity: .92;
  }

  46% {
    transform:
      translate3d(var(--turb2, -14px), -86px, 0)
      rotate(-7deg)
      scale(.78);
    opacity: .86;
  }

  66% {
    transform:
      translate3d(var(--turb3, 12px), -142px, 0)
      rotate(10deg)
      scale(.60);
    opacity: .72;
  }

  /* From here the same amount of time covers increasingly more distance,
     creating a mild upward acceleration. */
  82% {
    transform:
      translate3d(calc(var(--turb1, 10px) * -.45), -194px, 0)
      rotate(-8deg)
      scale(.46);
    opacity: .52;
  }

  92% {
    transform:
      translate3d(calc(var(--drift, 0px) * .60), -242px, 0)
      rotate(calc(var(--rot, 30deg) * .65))
      scale(.34);
    opacity: .28;
  }

  100% {
    transform:
      translate3d(var(--drift, 0px), -302px, 0)
      rotate(var(--rot, 30deg))
      scale(var(--end-scale, .22));
    opacity: 0;
  }
}


/* v1.3.4: ember speed profile
   Fast initial lift, slower drifting middle, faster final ascent. */
.prs-ember {
  animation-name: prs-ember-lifecycle-v134 !important;
  animation-duration: var(--dur, 12s) !important;
  animation-timing-function: linear !important;
  animation-iteration-count: infinite !important;
  animation-delay: var(--delay, 0s) !important;
}

@keyframes prs-ember-lifecycle-v134 {
  0% {
    transform:
      translate3d(0, 12px, 0)
      rotate(0deg)
      scale(1.15);
    opacity: 0;
  }

  /* Fast launch: meaningful distance covered very early. */
  6% {
    transform:
      translate3d(calc(var(--turb1, 8px) * .20), -16px, 0)
      rotate(2deg)
      scale(1.09);
    opacity: .82;
  }

  14% {
    transform:
      translate3d(calc(var(--turb1, 10px) * .55), -38px, 0)
      rotate(5deg)
      scale(1.00);
    opacity: .94;
  }

  /* Slower mid-life drift. */
  34% {
    transform:
      translate3d(var(--turb1, 10px), -68px, 0)
      rotate(8deg)
      scale(.88);
    opacity: .92;
  }

  56% {
    transform:
      translate3d(var(--turb2, -14px), -106px, 0)
      rotate(-7deg)
      scale(.72);
    opacity: .82;
  }

  74% {
    transform:
      translate3d(var(--turb3, 12px), -145px, 0)
      rotate(10deg)
      scale(.58);
    opacity: .66;
  }

  /* Speed builds again as the ember shrinks/fades. */
  87% {
    transform:
      translate3d(calc(var(--drift, 0px) * .42), -205px, 0)
      rotate(calc(var(--rot, 30deg) * .45))
      scale(.43);
    opacity: .44;
  }

  95% {
    transform:
      translate3d(calc(var(--drift, 0px) * .72), -258px, 0)
      rotate(calc(var(--rot, 30deg) * .72))
      scale(.31);
    opacity: .22;
  }

  100% {
    transform:
      translate3d(var(--drift, 0px), -318px, 0)
      rotate(var(--rot, 30deg))
      scale(var(--end-scale, .22));
    opacity: 0;
  }
}


/* v1.3.5: more realistic ember rendering.
   Each ember gets a crisp hot core, softer halo, slight colour-temperature variation,
   individual brightness, and restrained flicker. */
.prs-ember {
  position: absolute;
  border-radius: 50%;
  background:
    radial-gradient(
      circle at 45% 42%,
      hsl(var(--ember-hue, 26) 100% var(--ember-core-light, 80%)) 0 24%,
      hsl(var(--ember-hue, 26) 100% 58%) 34%,
      hsl(calc(var(--ember-hue, 26) - 4) 100% 42%) 62%,
      rgba(255,80,0,.18) 78%,
      rgba(255,70,0,0) 100%
    ) !important;
  box-shadow:
    0 0 var(--ember-halo, 2px) rgba(255,118,24,.82),
    0 0 calc(var(--ember-halo, 2px) * 2.2) rgba(255,84,0,.28) !important;
  filter:
    brightness(var(--ember-brightness, 1))
    saturate(1.12) !important;
}

/* Inner white-hot pinprick on the hottest part of the ember. */
.prs-ember::before {
  content: "";
  position: absolute;
  left: 29%;
  top: 26%;
  width: 32%;
  height: 32%;
  border-radius: 50%;
  background: rgba(255,244,203,.86);
  filter: blur(.25px);
  opacity: .72;
  pointer-events: none;
}

/* Soft outer halo, kept subtle so particles do not become orange blobs. */
.prs-ember::after {
  content: "";
  position: absolute;
  inset: -55%;
  border-radius: 50%;
  background: radial-gradient(
    circle,
    rgba(255,154,52,.24) 0%,
    rgba(255,86,10,.10) 44%,
    transparent 74%
  );
  filter: blur(1.2px);
  opacity: .72;
  pointer-events: none;
}

/* Independent restrained flicker, layered on top of the existing lifecycle motion. */
.prs-ember {
  --flicker-min: .82;
}

.prs-ember::before,
.prs-ember::after {
  animation: prs-ember-flicker-v135 var(--flicker-dur, 1s) ease-in-out infinite;
  animation-delay: var(--flicker-delay, 0s);
}

@keyframes prs-ember-flicker-v135 {
  0%, 100% {
    opacity: .62;
    transform: scale(.96);
  }
  22% {
    opacity: .86;
    transform: scale(1.05);
  }
  47% {
    opacity: .70;
    transform: scale(.99);
  }
  71% {
    opacity: .94;
    transform: scale(1.08);
  }
}

/* A small subset of embers will visually read hotter due to their hue/light variables,
   without globally increasing blur or bloom. */


/* v1.3.8: faster embers with subtle directional motion blur.
   Blur is represented by a short upward/downward luminous trail rather than
   simply blurring the entire particle. */
.prs-ember {
  animation-duration: var(--dur, 10s) !important;
}

/* Extend the existing outer halo into a tiny directional trail. */
.prs-ember::after {
  inset: auto !important;
  left: 50% !important;
  top: 50% !important;
  width: max(2px, 72%) !important;
  height: calc(100% + var(--trail-length, 4px)) !important;
  border-radius: 60% !important;
  transform: translate(-50%, -36%) !important;
  transform-origin: 50% 50% !important;

  background:
    linear-gradient(
      to bottom,
      rgba(255,214,135,.05) 0%,
      rgba(255,146,43,.22) 28%,
      rgba(255,94,10,.34) 52%,
      rgba(255,71,0,.12) 76%,
      rgba(255,65,0,0) 100%
    ) !important;

  filter: blur(var(--motion-blur, 1.6px)) !important;
  opacity: .60;
  pointer-events: none;
}

/* The trail flickers with the particle but remains softer than the hot core. */
@keyframes prs-ember-flicker-v138 {
  0%, 100% {
    opacity: .42;
  }
  25% {
    opacity: .62;
  }
  53% {
    opacity: .48;
  }
  76% {
    opacity: .70;
  }
}

.prs-ember::after {
  animation: prs-ember-flicker-v138 var(--flicker-dur, 1s) ease-in-out infinite !important;
  animation-delay: var(--flicker-delay, 0s) !important;
}

/* Slightly stronger trail during the fast beginning/end is conveyed by
   the existing lifecycle speed changes plus the elongated glow; the core
   itself remains crisp enough to still read as an ember. */


/* v1.4.0 canvas motion zones share the existing hero canvas.
   All deformations are softly feathered and intentionally subtle. */
.prs-hero-canvas {
  z-index: 6 !important;
}


/* v1.4.5: keep the phoenix and text connected on tablet/mobile.
   Do NOT stack the hero image beneath the text. */







/* v1.4.6: deterministic split hero for iPhone/iPad.
   These rules deliberately override all older stacked-layout experiments. */

.prs-hero {
  position: relative !important;
}

.prs-embers {
  left: var(--prs-emitter-left-px, 75%) !important;
  top: var(--prs-emitter-top-px, 100%) !important;
  width: var(--prs-emitter-width-px, 50%) !important;
  height: var(--prs-emitter-height-px, 100%) !important;
  right: auto !important;
  bottom: auto !important;
  transform: translate(-50%, -100%) !important;
}

/* Tablet */


/* iPhone / small phones */


/* iPhone SE class widths */


/* Very narrow legacy SE width */



/* v1.4.7 STRUCTURAL MOBILE FIX
   Effects are now physically inside .prs-hero-art.
   Phone/tablet hero is a genuine two-column layout, not an absolute-position simulation. */

.prs-hero-art {
  isolation: isolate !important;
}

/* Ember field now belongs to the phoenix container itself. */
.prs-hero-art > .prs-embers {
  position: absolute !important;
  left: var(--prs-emitter-x, 50%) !important;
  top: var(--prs-emitter-y, 100%) !important;
  width: var(--prs-emitter-width, 100%) !important;
  height: var(--prs-emitter-height, 120%) !important;
  right: auto !important;
  bottom: auto !important;
  transform: translate(-50%, -100%) !important;
  z-index: 11 !important;
  overflow: visible !important;
  pointer-events: none !important;
}

/* Tablet and phones: real side-by-side grid. */


/* iPhone size */


/* iPhone SE portrait class */


/* Original 320px iPhone SE width */


/* Landscape iPhone SE: keep the same two columns rather than reverting to stacking. */



/* v1.4.8 fallback while JS initializes */


:root { --prs-css-build:1.10.32-mobile-sitewide-centering-audit; }


/* =========================================================
   v1.8.0 CLEAN HERO AUTHORITY
   One desktop rule set. One touch rule set. No legacy conflicts.
   ========================================================= */

/* ---------- Desktop/laptop layered hero ---------- */

.prs-hero-art {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  overflow: visible;
  isolation: isolate;
}

.prs-hero-art > .prs-hero-bg,
.prs-hero-art > .prs-phoenix-source {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: auto !important;
  width: var(--prs-hero-scale, 112%) !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: contain !important;
  object-position: center right !important;
  display: block !important;
  visibility: visible !important;
  filter: none !important;
  mix-blend-mode: normal !important;
  clip-path: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  pointer-events: none !important;
}

.prs-hero-art > .prs-hero-bg {
  z-index: 1 !important;
  opacity: 1 !important;
  transform: none !important;
}

.prs-hero-art > .prs-phoenix-source {
  z-index: 3 !important;
  opacity: 1 !important;
  transform-origin: center right !important;
  transform:
    translate(var(--prs-phoenix-layer-x, 0%), var(--prs-phoenix-layer-y, 0%))
    scale(var(--prs-phoenix-layer-scale, 100%)) !important;
}

.prs-hero-art > .prs-hero-canvas {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  z-index: 5 !important;
  pointer-events: none !important;
  display: block !important;
  visibility: visible !important;
}

/* Effects above desktop artwork */
.prs-hero-art .prs-glow-chest {
  z-index: 6 !important;
}
.prs-hero-art .prs-embers,
.prs-hero-art .prs-ember-canvas {
  z-index: 7 !important;
}


/* =========================================================
   v1.8.2 UNIVERSAL HERO
   One layered hero path for every viewport and input type.
   ========================================================= */

.prs-hero {
  position: relative !important;
  min-height: 700px !important;
  overflow: hidden !important;
}

.prs-header {
  position: relative !important;
  z-index: 30 !important;
}

.prs-hero-grid {
  width: min(calc(100% - 24px), var(--max)) !important;
  margin: 0 auto !important;
  min-height: 700px !important;
  display: grid !important;
  grid-template-columns: minmax(0, 50%) minmax(0, 50%) !important;
  align-items: stretch !important;
  gap: 0 !important;
  position: relative !important;
  z-index: 10 !important;
}

.prs-hero-copy {
  grid-column: 1 !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  position: relative !important;
  z-index: 20 !important;
  padding-top: clamp(92px, 14vh, 190px) !important;
  padding-right: clamp(6px, 2vw, 28px) !important;
}

.prs-hero-art {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 60% !important;
  height: 100% !important;
  min-height: 700px !important;
  margin: 0 !important;
  overflow: visible !important;
  z-index: 4 !important;
  pointer-events: none !important;
  isolation: isolate !important;
}

.prs-hero-art > .prs-hero-bg,
.prs-hero-art > .prs-phoenix-source {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: auto !important;
  width: var(--prs-hero-scale, 112%) !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  min-width: 0 !important;
  min-height: 0 !important;
  object-fit: contain !important;
  object-position: center right !important;
  display: block !important;
  visibility: visible !important;
  filter: none !important;
  mix-blend-mode: normal !important;
  clip-path: none !important;
  -webkit-mask: none !important;
  mask: none !important;
}

.prs-hero-art > .prs-hero-bg {
  opacity: 1 !important;
  z-index: 1 !important;
  transform: none !important;
}

.prs-hero-art > .prs-phoenix-source {
  opacity: 1 !important;
  z-index: 3 !important;
  transform-origin: center right !important;
  transform:
    translate(var(--prs-phoenix-layer-x, 0%), var(--prs-phoenix-layer-y, 0%))
    scale(var(--prs-phoenix-layer-scale, 100%)) !important;
}

.prs-hero-art > .prs-hero-canvas {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  display: block !important;
  visibility: visible !important;
  z-index: 5 !important;
  pointer-events: none !important;
}

.prs-hero-art .prs-glow-chest {
  z-index: 6 !important;
}

.prs-hero-art .prs-embers,
.prs-hero-art .prs-ember-canvas {
  z-index: 7 !important;
}

/* Same side-by-side layout everywhere; typography scales fluidly. */
.prs-hero h1 {
  font-size: clamp(32px, 6vw, var(--prs-headline-size, 88px)) !important;
}
.prs-hero-lead {
  font-size: clamp(14px, 2.1vw, var(--prs-subheading-size, 21px)) !important;
}
.prs-hero-body {
  font-size: clamp(12px, 1.8vw, var(--prs-body-size, 16px)) !important;
}


/* =========================================================
   v1.8.3 SHARED LAYER BOX
   Background and phoenix must always have identical geometry.
   ========================================================= */

.prs-hero-art > .prs-hero-bg,
.prs-hero-art > .prs-phoenix-source {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: auto !important;

  width: var(--prs-hero-scale, 112%) !important;
  height: 100% !important;

  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;

  box-sizing: border-box !important;

  object-fit: contain !important;
  object-position: center right !important;

  display: block !important;
  visibility: visible !important;
}

.prs-hero-art > .prs-hero-bg {
  opacity: 1 !important;
}

.prs-hero-art > .prs-phoenix-source {
  opacity: 1 !important;
}


/* =========================================================
   v1.8.4 PHOENIX SCALE FIX
   --prs-phoenix-layer-scale is already a percentage (e.g. 100%).
   Do NOT divide it by 100 inside scale().
   ========================================================= */
.prs-hero-art > .prs-phoenix-source {
  transform:
    translate(var(--prs-phoenix-layer-x, 0%), var(--prs-phoenix-layer-y, 0%))
    scale(var(--prs-phoenix-layer-scale, 100%)) !important;
}




/* =========================================================
   v1.8.7 PHONE STATIC FALLBACK
   Pure PHP + CSS. No JS detection.
   ========================================================= */

.prs-hero > .prs-phone-static-fallback {
  display: none !important;
}

@media screen and (max-width: 600px) {
  .prs-hero {
    position: relative !important;
    overflow: hidden !important;
  }

  /* Kill the ENTIRE layered/effects host on phones.
     This removes background, phoenix, canvas, glow and embers in one step. */
  .prs-hero > .prs-hero-art {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  .prs-hero > .prs-phone-static-fallback {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;

    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;

    max-width: none !important;
    max-height: none !important;

    object-fit: cover !important;
    object-position: center center !important;

    transform: none !important;
    filter: none !important;
    mix-blend-mode: normal !important;

    z-index: 1 !important;
    pointer-events: none !important;
  }

  /* Everything interactive/textual stays above the plain image. */
  .prs-hero > .prs-header,
  .prs-hero > .prs-hero-grid,
  .prs-hero .prs-hero-copy {
    position: relative !important;
    z-index: 5 !important;
  }
}


/* v1.8.8 repaired phone fallback markup */
@media screen and (max-width: 600px) {
  .prs-hero > .prs-hero-art {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
  }

  .prs-hero > .prs-phone-static-fallback {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    object-position: center center !important;
    z-index: 1 !important;
    pointer-events: none !important;
  }

  .prs-hero > .prs-header,
  .prs-hero > .prs-hero-grid {
    position: relative !important;
    z-index: 5 !important;
  }
}


/* =========================================================
   v1.8.9 DESKTOP HERO TOP-ANCHOR RESTORATION
   The art must be positioned against .prs-hero, not .prs-hero-grid,
   so it begins at the true top behind the navigation.
   ========================================================= */

.prs-hero {
  position: relative !important;
}

/* Critical: do not let the grid become the containing block for absolute art. */
.prs-hero > .prs-hero-grid {
  position: static !important;
}

.prs-hero .prs-hero-art {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 64% !important;
  height: 100% !important;
  min-height: 100% !important;
  margin: 0 !important;
  z-index: 4 !important;
  overflow: visible !important;
  pointer-events: none !important;
}

/* Header/menu deliberately remains above the hero artwork. */
.prs-hero .prs-header {
  position: relative !important;
  z-index: 30 !important;
}

.prs-hero .prs-hero-copy {
  position: relative !important;
  z-index: 20 !important;
}

/* =========================================================
   v1.8.9 PHONE STATIC FALLBACK SELECTOR FIX
   .prs-hero-art is inside .prs-hero-grid, NOT a direct child of .prs-hero.
   ========================================================= */

@media screen and (max-width: 600px) {
  /* Hide the actual nested artwork/effects host. */
  .prs-hero .prs-hero-art {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  /* The plain manually-selected fallback is a direct hero child. */
  .prs-hero > .prs-phone-static-fallback {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    max-height: none !important;
    object-fit: cover !important;
    object-position: center center !important;
    transform: none !important;
    filter: none !important;
    z-index: 1 !important;
    pointer-events: none !important;
  }

  /* Keep the text/header above the fallback. */
  .prs-hero > .prs-header,
  .prs-hero > .prs-hero-grid,
  .prs-hero .prs-hero-copy {
    z-index: 5 !important;
  }

  /* Grid can remain positioned for content on phone because hero art is hidden. */
  .prs-hero > .prs-hero-grid {
    position: relative !important;
  }
}


/* =========================================================
   v1.9.0 DESKTOP CANVAS HANDOFF
   Once the deformation canvas has drawn successfully, hide the static
   phoenix source so only one phoenix is visible.
   ========================================================= */
.prs-hero-art[data-prs-canvas-ready="1"] > .prs-phoenix-source {
  opacity: 0 !important;
}

/* If the canvas is not ready, static phoenix remains the fallback. */
.prs-hero-art:not([data-prs-canvas-ready="1"]) > .prs-phoenix-source,
.prs-hero-art[data-prs-canvas-ready="0"] > .prs-phoenix-source {
  opacity: 1 !important;
}

/* =========================================================
   v1.9.0 PHONE PLAIN FALLBACK
   Only the explicitly selected Media Library fallback image is shown.
   ========================================================= */
@media screen and (max-width: 600px) {
  .prs-hero .prs-hero-art {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
  }

  .prs-hero > .prs-phone-static-fallback {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;

    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;

    max-width: none !important;
    max-height: none !important;

    object-fit: contain !important;
    object-position: center center !important;

    background: #020506 !important;
    transform: none !important;
    filter: none !important;
    z-index: 1 !important;
    pointer-events: none !important;
  }

  .prs-hero > .prs-header,
  .prs-hero > .prs-hero-grid,
  .prs-hero .prs-hero-copy {
    position: relative !important;
    z-index: 5 !important;
  }
}


/* =========================================================
   v1.9.1 SINGLE-PHOENIX AUTHORITY
   ========================================================= */

/* Desktop/tablet: phone fallback is never rendered visually. */
@media screen and (min-width: 601px) {
  .prs-hero > .prs-phone-static-fallback {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
  }
}

/* Canvas ready: canvas owns the phoenix, static source is off. */
.prs-hero-art[data-prs-canvas-ready="1"] > .prs-phoenix-source {
  opacity: 0 !important;
}

/* Canvas not ready: static phoenix is the fallback. */
.prs-hero-art:not([data-prs-canvas-ready="1"]) > .prs-phoenix-source,
.prs-hero-art[data-prs-canvas-ready="0"] > .prs-phoenix-source {
  opacity: 1 !important;
}


/* =========================================================
   v1.9.3-browser-stable
   Browser consistency only. Preserve v1.9.1 visual model.
   ========================================================= */

html,
body.prs-body {
  width:100%;
  min-width:0;
}

.prs-site {
  width:100%;
  min-width:0;
}

.prs-hero {
  width:100% !important;
  min-width:0 !important;
  contain:layout paint;
}

/* Avoid browser-specific intrinsic minimum widths in the hero grid. */
.prs-hero-grid,
.prs-hero-copy,
.prs-hero-art {
  min-width:0 !important;
}

/* Keep transform interpolation predictable across Blink/WebKit/Gecko. */
.prs-phoenix-source,
.prs-hero-canvas,
.prs-embers {
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}


/* =========================================================
   v1.9.4-position-fixed
   Keep original art size; stop wide-screen drift.
   ========================================================= */

@media screen and (min-width:701px) {
  .prs-hero-art {
    /*
     * Preserve original v1.9.1 size:
     * width remains 60% of viewport and height remains full hero.
     * Only move the whole art region inward on wide displays.
     */
    width:60% !important;
    max-width:none !important;
    height:100% !important;
    top:0 !important;
    bottom:0 !important;

    right:max(0px, calc((100% - var(--max)) / 2)) !important;
    left:auto !important;
  }
}


/* =========================================================
   v1.9.5 NARROW VIEWPORT ART FIX
   Legacy v1.8.x/v1.9.0 rules hid .prs-hero-art below 600px.
   Restore the normal layered hero at narrow viewport widths.
   ========================================================= */
@media screen and (max-width:600px) {

  /* Never hide the actual layered artwork merely because viewport is narrow. */
  .prs-hero .prs-hero-art,
  .prs-hero > .prs-hero-grid .prs-hero-art {
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;

    position:absolute !important;
    top:0 !important;
    right:0 !important;
    bottom:0 !important;
    left:auto !important;

    width:64% !important;
    height:100% !important;
    min-width:0 !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;

    margin:0 !important;
    overflow:visible !important;
    pointer-events:none !important;
    z-index:4 !important;
  }

  /* Keep both actual registered layers alive. */
  .prs-hero .prs-hero-art > .prs-hero-bg,
  .prs-hero .prs-hero-art > .prs-phoenix-source {
    display:block !important;
    visibility:visible !important;

    position:absolute !important;
    top:0 !important;
    right:0 !important;
    bottom:0 !important;
    left:auto !important;

    width:var(--prs-hero-scale,112%) !important;
    height:100% !important;
    min-width:0 !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;

    object-fit:contain !important;
    object-position:center right !important;
  }

  .prs-hero .prs-hero-art > .prs-hero-bg {
    opacity:1 !important;
    z-index:1 !important;
  }

  /* Let the existing canvas-ready handoff control phoenix opacity. */
  .prs-hero .prs-hero-art:not([data-prs-canvas-ready="1"]) > .prs-phoenix-source,
  .prs-hero .prs-hero-art[data-prs-canvas-ready="0"] > .prs-phoenix-source {
    opacity:1 !important;
  }

  /* The obsolete phone-static fallback must not replace the live composition. */
  .prs-hero > .prs-phone-static-fallback,
  .prs-hero > .prs-touch-fallback {
    display:none !important;
    visibility:hidden !important;
    opacity:0 !important;
  }
}


/* =========================================================
   v1.9.6 UNIFIED NARROW VIEWPORT LAYOUT
   Device-agnostic. Same layout for narrow desktop and phones.
   ========================================================= */

.prs-mobile-menu-toggle {
  display:none;
}

/* ---------------------------------------------------------
   Narrow portrait/tall viewport layout
   Applies by WIDTH ONLY, not device type.
   --------------------------------------------------------- */
@media screen and (max-width:760px) {

  .prs-header {
    width:100% !important;
    min-height:84px !important;
    margin:0 !important;
    padding:14px 18px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    position:relative !important;
    z-index:10000 !important;
    isolation:isolate !important;
    overflow:visible !important;
  }

  .prs-brand-approved-img {
    width:min(46vw,180px) !important;
    max-width:180px !important;
    height:auto !important;
  }

  .prs-mobile-menu-toggle {
    display:flex !important;
    flex:0 0 48px !important;
    width:48px !important;
    height:46px !important;
    padding:8px !important;
    margin:0 !important;

    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;
    gap:5px !important;

    border:1px solid var(--orange) !important;
    border-radius:7px !important;
    background:#050709 !important;

    cursor:pointer !important;
    pointer-events:auto !important;
    z-index:10002 !important;
  }

  .prs-mobile-menu-toggle span {
    display:block !important;
    width:24px !important;
    height:3px !important;
    background:var(--orange2) !important;
    border-radius:3px !important;
    pointer-events:none !important;
  }

  .prs-mobile-menu-open .prs-mobile-menu-toggle span:nth-child(1) {
    transform:translateY(8px) rotate(45deg) !important;
  }
  .prs-mobile-menu-open .prs-mobile-menu-toggle span:nth-child(2) {
    opacity:0 !important;
  }
  .prs-mobile-menu-open .prs-mobile-menu-toggle span:nth-child(3) {
    transform:translateY(-8px) rotate(-45deg) !important;
  }

  .prs-header .prs-nav {
    display:none !important;
  }

  .prs-header.prs-mobile-menu-open .prs-nav {
    display:flex !important;
    position:fixed !important;
    top:84px !important;
    left:0 !important;
    right:0 !important;
    width:100vw !important;
    max-width:none !important;
    margin:0 !important;
    padding:12px 18px 18px !important;

    flex-direction:column !important;
    align-items:stretch !important;
    gap:4px !important;

    background:#050709 !important;
    opacity:1 !important;
    border:0 !important;
    border-top:1px solid rgba(255,105,0,.4) !important;
    border-bottom:1px solid var(--orange) !important;
    border-radius:0 !important;
    box-shadow:0 18px 40px rgba(0,0,0,.9) !important;

    z-index:10001 !important;
    pointer-events:auto !important;
  }

  .prs-header.prs-mobile-menu-open .prs-nav,
  .prs-header.prs-mobile-menu-open .prs-nav * {
    pointer-events:auto !important;
  }

  .prs-header.prs-mobile-menu-open .prs-nav a,
  .prs-header.prs-mobile-menu-open .prs-nav .prs-nav-cta {
    display:block !important;
    width:100% !important;
    min-height:46px !important;
    margin:0 !important;
    padding:12px 13px !important;
    text-align:left !important;
    background:#050709 !important;
    color:var(--text) !important;
    border:0 !important;
    border-bottom:1px solid rgba(255,105,0,.22) !important;
    border-radius:0 !important;
    font:inherit !important;
    font-weight:700 !important;
  }

  .prs-header.prs-mobile-menu-open .prs-nav a[aria-current="page"] {
    color:var(--orange2) !important;
  }

  .prs-header.prs-mobile-menu-open .prs-nav .prs-nav-cta {
    color:var(--orange2) !important;
    border:1px solid var(--orange) !important;
    border-radius:7px !important;
    margin-top:8px !important;
  }

  .prs-hero {
    min-height:0 !important;
    height:auto !important;
    overflow:hidden !important;
  }

  .prs-hero-grid {
    width:100% !important;
    min-height:0 !important;
    height:auto !important;
    margin:0 !important;
    padding:0 18px 30px !important;

    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    gap:0 !important;

    position:relative !important;
    z-index:1 !important;
  }

  .prs-hero-copy {
    display:contents !important;
  }

  .prs-hero-copy h1 {
    order:1 !important;
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    max-width:none !important;
    height:auto !important;
    margin:24px 0 20px !important;
    padding:0 !important;
    font-size:clamp(46px,13vw,70px) !important;
    line-height:.92 !important;
    z-index:2 !important;
  }

  .prs-hero-art {
    order:2 !important;

    display:block !important;
    visibility:visible !important;
    opacity:1 !important;

    position:relative !important;
    inset:auto !important;

    width:calc(100% + 36px) !important;
    max-width:none !important;
    min-width:0 !important;

    height:auto !important;
    min-height:280px !important;
    aspect-ratio:1402 / 1122 !important;

    margin:0 -18px 22px !important;
    overflow:hidden !important;

    z-index:1 !important;
  }

  .prs-hero-art > .prs-hero-bg,
  .prs-hero-art > .prs-phoenix-source {
    display:block !important;
    visibility:visible !important;

    position:absolute !important;
    inset:0 !important;

    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;

    object-fit:contain !important;
    object-position:center center !important;
  }

  .prs-hero-art > .prs-hero-bg {
    opacity:1 !important;
    z-index:1 !important;
  }

  .prs-hero-art:not([data-prs-canvas-ready="1"]) > .prs-phoenix-source,
  .prs-hero-art[data-prs-canvas-ready="0"] > .prs-phoenix-source {
    opacity:1 !important;
  }

  .prs-hero-lead {
    order:3 !important;
    margin:0 0 14px !important;
    padding:0 !important;
    font-size:clamp(20px,5.5vw,26px) !important;
    line-height:1.35 !important;
    position:relative !important;
    z-index:2 !important;
  }

  .prs-hero-body {
    order:4 !important;
    margin:0 0 22px !important;
    padding:0 !important;
    font-size:clamp(16px,4.4vw,19px) !important;
    line-height:1.55 !important;
    position:relative !important;
    z-index:2 !important;
  }

  .prs-actions {
    order:5 !important;
    margin:0 !important;
    padding:0 !important;
    position:relative !important;
    z-index:2 !important;
  }
}


/* ---------------------------------------------------------
   Short landscape layout
   Main heading across top, text left, image right.
   Also device-agnostic.
   --------------------------------------------------------- */
@media screen and (max-width:950px) and (max-height:500px) and (orientation:landscape) {

  .prs-mobile-menu-toggle {
    display:none !important;
  }

  .prs-header .prs-nav {
    display:flex !important;
    position:static !important;
    width:auto !important;
    padding:0 !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
    flex-direction:row !important;
    align-items:center !important;
    gap:16px !important;
  }

  .prs-header .prs-nav a,
  .prs-header .prs-nav-cta {
    width:auto !important;
    padding:7px 10px !important;
    font-size:12px !important;
    text-align:center !important;
  }

  .prs-hero-grid {
    display:grid !important;
    grid-template-columns:minmax(0,42%) minmax(0,58%) !important;
    grid-template-rows:auto auto auto auto !important;
    width:calc(100% - 32px) !important;
    min-height:0 !important;
    height:auto !important;
    margin:0 auto !important;
    padding:0 0 20px !important;
    column-gap:18px !important;
    row-gap:0 !important;
    align-items:start !important;
  }

  .prs-hero-copy {
    display:contents !important;
  }

  .prs-hero-copy h1 {
    grid-column:1 / -1 !important;
    grid-row:1 !important;
    margin:8px 0 18px !important;
    padding:0 !important;
    font-size:clamp(34px,6.5vw,56px) !important;
    line-height:.9 !important;
    position:relative !important;
    z-index:2 !important;
  }

  .prs-hero-lead {
    grid-column:1 !important;
    grid-row:2 !important;
    margin:0 0 9px !important;
    font-size:17px !important;
    line-height:1.3 !important;
  }

  .prs-hero-body {
    grid-column:1 !important;
    grid-row:3 !important;
    margin:0 0 12px !important;
    font-size:13px !important;
    line-height:1.45 !important;
  }

  .prs-actions {
    grid-column:1 !important;
    grid-row:4 !important;
    margin:0 !important;
  }

  .prs-hero-art {
    grid-column:2 !important;
    grid-row:2 / 5 !important;

    position:relative !important;
    inset:auto !important;

    width:100% !important;
    max-width:none !important;
    min-width:0 !important;

    height:100% !important;
    min-height:230px !important;

    margin:0 !important;
    overflow:hidden !important;
    z-index:1 !important;
  }

  .prs-hero-art > .prs-hero-bg,
  .prs-hero-art > .prs-phoenix-source {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;
    object-fit:contain !important;
    object-position:center center !important;
  }
}


/* =========================================================
   v1.9.7 NARROW SPECIFICITY FIX
   Defeats legacy desktop !important selectors below 760px.
   ========================================================= */
@media screen and (max-width:760px) {

  .prs-hero > .prs-hero-grid {
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;

    position:relative !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    min-height:0 !important;
    height:auto !important;

    margin:0 !important;
    padding:0 18px 30px !important;
    gap:0 !important;
    overflow:visible !important;
    z-index:1 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    display:contents !important;
    width:auto !important;
    max-width:none !important;
    min-width:0 !important;
    padding:0 !important;
    margin:0 !important;
  }

  /* headline */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    order:1 !important;

    position:relative !important;
    inset:auto !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;

    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    height:auto !important;

    margin:24px 0 20px !important;
    padding:0 !important;

    overflow:visible !important;
    white-space:normal !important;
    transform:none !important;

    font-size:clamp(46px,13vw,70px) !important;
    line-height:.92 !important;
    z-index:2 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 .prs-headline-line {
    white-space:normal !important;
    max-width:none !important;
  }

  /* artwork: real normal-flow block, not desktop absolute composition */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    order:2 !important;

    display:block !important;
    visibility:visible !important;
    opacity:1 !important;

    position:relative !important;
    inset:auto !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;

    width:calc(100% + 36px) !important;
    min-width:0 !important;
    max-width:none !important;

    height:auto !important;
    min-height:280px !important;
    aspect-ratio:1402 / 1122 !important;

    margin:0 -18px 22px !important;
    padding:0 !important;

    overflow:hidden !important;
    transform:none !important;
    z-index:1 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-phoenix-source {
    display:block !important;
    visibility:visible !important;

    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    right:auto !important;
    top:0 !important;
    bottom:auto !important;

    width:100% !important;
    min-width:100% !important;
    max-width:none !important;

    height:100% !important;
    min-height:100% !important;
    max-height:none !important;

    margin:0 !important;
    padding:0 !important;

    object-fit:contain !important;
    object-position:center center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-bg {
    opacity:1 !important;
    transform:none !important;
    z-index:1 !important;
  }

  /* supporting copy */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead {
    order:3 !important;
    position:relative !important;
    inset:auto !important;

    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;

    margin:0 0 14px !important;
    padding:0 !important;

    overflow:visible !important;
    white-space:normal !important;

    font-size:clamp(20px,5.5vw,26px) !important;
    line-height:1.35 !important;
    z-index:2 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    order:4 !important;
    position:relative !important;
    inset:auto !important;

    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;

    margin:0 0 22px !important;
    padding:0 !important;

    overflow:visible !important;
    white-space:normal !important;

    font-size:clamp(16px,4.4vw,19px) !important;
    line-height:1.55 !important;
    z-index:2 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    order:5 !important;
    position:relative !important;
    inset:auto !important;

    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;

    margin:0 !important;
    padding:0 !important;
    z-index:2 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions .prs-button {
    max-width:100% !important;
    white-space:normal !important;
  }
}

/* Short landscape keeps its own two-column layout and wins over the
   stacked rule above because it comes later. */
@media screen and (max-width:950px) and (max-height:500px) and (orientation:landscape) {

  .prs-hero > .prs-hero-grid {
    display:grid !important;
    grid-template-columns:minmax(0,42%) minmax(0,58%) !important;
    grid-template-rows:auto auto auto auto !important;
    width:calc(100% - 32px) !important;
    min-height:0 !important;
    height:auto !important;
    margin:0 auto !important;
    padding:0 0 20px !important;
    column-gap:18px !important;
    row-gap:0 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    display:contents !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    grid-column:1 / -1 !important;
    grid-row:1 !important;
    order:unset !important;
    margin:8px 0 18px !important;
    font-size:clamp(34px,6.5vw,56px) !important;
    line-height:.9 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead {
    grid-column:1 !important;
    grid-row:2 !important;
    order:unset !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    grid-column:1 !important;
    grid-row:3 !important;
    order:unset !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    grid-column:1 !important;
    grid-row:4 !important;
    order:unset !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    grid-column:2 !important;
    grid-row:2 / 5 !important;
    order:unset !important;

    position:relative !important;
    inset:auto !important;

    width:100% !important;
    height:100% !important;
    min-height:230px !important;

    margin:0 !important;
    overflow:hidden !important;
  }
}


/* =========================================================
   v1.9.8 NARROW JS GEOMETRY AUTHORITY
   JavaScript no longer rewrites narrow artwork using desktop geometry.
   ========================================================= */
@media screen and (max-width:760px) {
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-canvas {
    display:none !important;
    visibility:hidden !important;
    opacity:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-phoenix-source {
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    transform:none !important;
  }
}


/* =========================================================
   v1.9.12 CONTACT MODAL - SINGLE SIZING AUTHORITY
   65% of visible browser height on every platform.
   ========================================================= */

#prs-contact-modal {
  position:fixed !important;
  inset:0 !important;
  width:100vw !important;
  height:100dvh !important;
  min-height:100dvh !important;
  max-height:100dvh !important;

  display:none !important;
  align-items:center !important;
  justify-content:center !important;

  margin:0 !important;
  padding:clamp(10px,2vw,20px) !important;
  box-sizing:border-box !important;

  overflow:hidden !important;
}

#prs-contact-modal.is-open {
  display:flex !important;
}

/* Backdrop fills overlay only. */
#prs-contact-modal > .prs-modal-backdrop {
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  margin:0 !important;
  padding:0 !important;
}

/* The real popup card. */
#prs-contact-modal > .prs-modal-dialog {
  position:relative !important;

  display:block !important;

  width:min(620px, calc(100vw - 28px)) !important;
  max-width:min(620px, calc(100vw - 28px)) !important;

  height:65dvh !important;
  min-height:0 !important;
  max-height:65dvh !important;

  margin:0 !important;
  padding:clamp(18px,2.4vw,30px) !important;

  box-sizing:border-box !important;

  overflow-y:auto !important;
  overflow-x:hidden !important;
  overscroll-behavior:contain !important;
  -webkit-overflow-scrolling:touch !important;

  align-content:start !important;
  justify-content:start !important;
}

/* Nothing inside is allowed to stretch to fill the card. */
#prs-contact-modal > .prs-modal-dialog > * {
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  flex:none !important;
}

#prs-contact-modal .prs-kicker {
  margin:0 0 6px !important;
}

#prs-contact-modal .prs-modal-dialog h2 {
  margin:0 0 8px !important;
}

#prs-contact-modal .prs-modal-intro {
  margin:0 0 14px !important;
}

#prs-contact-modal .prs-contact-form {
  display:block !important;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  margin:0 !important;
  padding:0 !important;
  overflow:visible !important;
}

#prs-contact-modal .prs-form-grid {
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:12px !important;
  align-items:start !important;
  align-content:start !important;
  margin:0 !important;
}

#prs-contact-modal .prs-contact-form label {
  display:grid !important;
  gap:6px !important;
  margin:0 0 12px !important;
}

#prs-contact-modal .prs-contact-form input,
#prs-contact-modal .prs-contact-form select,
#prs-contact-modal .prs-contact-form textarea {
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  margin:0 !important;
}

#prs-contact-modal .prs-contact-form textarea {
  min-height:90px !important;
}

#prs-contact-modal .prs-button-full {
  margin-top:4px !important;
}

#prs-contact-modal .prs-form-status {
  min-height:0 !important;
  margin-top:8px !important;
}

/* Phones use one compact column inside the same 65% high card. */
@media screen and (max-width:600px) {
  #prs-contact-modal {
    padding:10px !important;
  }

  #prs-contact-modal > .prs-modal-dialog {
    width:calc(100vw - 20px) !important;
    max-width:calc(100vw - 20px) !important;
    height:65dvh !important;
    max-height:65dvh !important;
    padding:18px !important;
  }

  #prs-contact-modal .prs-form-grid {
    grid-template-columns:1fr !important;
    gap:0 !important;
  }

  #prs-contact-modal .prs-modal-dialog h2 {
    font-size:clamp(28px,8vw,34px) !important;
    line-height:1.05 !important;
  }

  #prs-contact-modal .prs-modal-intro {
    font-size:14px !important;
    line-height:1.4 !important;
    margin-bottom:12px !important;
  }

  #prs-contact-modal .prs-contact-form label {
    margin-bottom:10px !important;
  }

  #prs-contact-modal .prs-contact-form input,
  #prs-contact-modal .prs-contact-form select,
  #prs-contact-modal .prs-contact-form textarea {
    padding:10px 12px !important;
  }

  #prs-contact-modal .prs-contact-form textarea {
    min-height:76px !important;
  }
}

/* vh fallback. */
@supports not (height:65dvh) {
  #prs-contact-modal {
    height:100vh !important;
    min-height:100vh !important;
    max-height:100vh !important;
  }

  #prs-contact-modal > .prs-modal-dialog {
    height:65vh !important;
    max-height:65vh !important;
  }

  @media screen and (max-width:600px) {
    #prs-contact-modal > .prs-modal-dialog {
      height:65vh !important;
      max-height:65vh !important;
    }
  }
}


/* v1.9.13 runtime modal backup */
@media screen and (max-width:600px) {
  #prs-contact-modal > .prs-modal-dialog .prs-form-grid {
    grid-template-columns:1fr !important;
    gap:0 !important;
  }

  #prs-contact-modal > .prs-modal-dialog .prs-contact-form label {
    margin-bottom:10px !important;
  }

  #prs-contact-modal > .prs-modal-dialog .prs-contact-form textarea {
    min-height:76px !important;
  }
}


/* =========================================================
   v1.9.18 CONTACT PAGE
   ========================================================= */
.prs-contact-page {
  min-height:100vh;
  background:#050709;
}

.prs-contact-page-inner {
  width:min(calc(100% - 32px), 760px);
  margin:0 auto;
  padding:clamp(56px,8vw,110px) 0 72px;
}

.prs-contact-page-inner h1 {
  margin:8px 0 12px;
  font-size:clamp(44px,7vw,72px);
  line-height:.98;
}

.prs-contact-page-intro {
  margin:0 0 28px;
  color:var(--muted);
  font-size:clamp(17px,2.5vw,21px);
  line-height:1.5;
}

.prs-contact-page-inner .prs-contact-form {
  width:100%;
}

.prs-contact-page-inner .prs-form-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}

@media screen and (max-width:700px) {
  .prs-contact-page-inner {
    width:calc(100% - 28px);
    padding:36px 0 54px;
  }

  .prs-contact-page-inner .prs-form-grid {
    grid-template-columns:1fr;
    gap:0;
  }

  .prs-contact-page-inner h1 {
    font-size:clamp(40px,12vw,58px);
  }
}


/* =========================================================
   v1.9.19 REAL WORDPRESS CONTACT PAGE
   ========================================================= */

body.page-slug-contact,
body.page-id-contact {
  background:#050709;
}

.prs-contact-page-inner {
  width:min(calc(100% - 32px),760px);
  margin:0 auto;
  padding:clamp(52px,8vw,100px) 0 72px;
}

.prs-contact-page-inner h1 {
  margin:8px 0 12px;
  font-size:clamp(44px,7vw,72px);
  line-height:.98;
}

.prs-contact-page-intro {
  margin:0 0 28px;
  color:var(--muted);
  font-size:clamp(17px,2.5vw,21px);
  line-height:1.5;
}

.prs-contact-page-inner .prs-contact-form {
  width:100%;
}

.prs-contact-page-inner .prs-form-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}

@media screen and (max-width:700px) {
  .prs-contact-page-inner {
    width:calc(100% - 28px);
    padding:34px 0 54px;
  }

  .prs-contact-page-inner .prs-form-grid {
    grid-template-columns:1fr;
    gap:0;
  }

  .prs-contact-page-inner h1 {
    font-size:clamp(40px,12vw,58px);
  }
}


/* =========================================================
   v1.9.21 STYLED CONTACT PAGE
   ========================================================= */

.prs-contact-page-shell {
  min-height:calc(100vh - 90px);
  background:
    radial-gradient(circle at 78% 18%, rgba(255,92,0,.10), transparent 26%),
    linear-gradient(180deg,#0a0d10 0%,#07090b 100%);
  border-top:1px solid rgba(255,255,255,.03);
}

.prs-contact-page-hero {
  width:min(calc(100% - 40px),1100px);
  margin:0 auto;
  padding:clamp(70px,9vw,120px) 0 clamp(72px,8vw,110px);
  display:grid;
  grid-template-columns:minmax(0,.85fr) minmax(420px,1.15fr);
  gap:clamp(42px,6vw,88px);
  align-items:start;
}

.prs-contact-page-heading {
  position:sticky;
  top:120px;
}

.prs-contact-page-heading .prs-kicker {
  margin:0 0 14px;
}

.prs-contact-page-heading h1 {
  margin:0 0 20px;
  max-width:9ch;
  color:#f5f5f5;
  font-size:clamp(52px,6.7vw,88px);
  line-height:.94;
  letter-spacing:-.045em;
  font-weight:500;
}

.prs-contact-page-intro {
  max-width:520px;
  margin:0;
  color:var(--muted);
  font-size:clamp(20px,2.1vw,28px);
  line-height:1.45;
}

.prs-contact-page-card {
  position:relative;
  padding:clamp(26px,3.2vw,42px);
  background:
    linear-gradient(180deg,rgba(21,26,32,.98),rgba(13,16,19,.98));
  border:1px solid rgba(255,122,22,.34);
  border-radius:16px;
  box-shadow:
    0 26px 70px rgba(0,0,0,.42),
    inset 0 1px 0 rgba(255,255,255,.025);
}

.prs-contact-page-card::before {
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  pointer-events:none;
  background:
    linear-gradient(135deg,rgba(255,120,0,.055),transparent 34%);
}

.prs-contact-page-card .prs-contact-form {
  position:relative;
  z-index:1;
  width:100%;
}

.prs-contact-page-card .prs-form-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}

.prs-contact-page-card .prs-contact-form label {
  display:grid;
  gap:9px;
  margin:0 0 20px;
}

.prs-contact-page-card .prs-contact-form label span {
  color:#fff;
  font-size:14px;
  font-weight:800;
  letter-spacing:.01em;
}

.prs-contact-page-card .prs-contact-form input,
.prs-contact-page-card .prs-contact-form select,
.prs-contact-page-card .prs-contact-form textarea {
  width:100%;
  padding:14px 15px;
  box-sizing:border-box;
  background:#090c0f;
  border:1px solid rgba(255,255,255,.13);
  border-radius:8px;
  color:#fff;
  outline:none;
  font:inherit;
  transition:border-color .18s ease, box-shadow .18s ease;
}

.prs-contact-page-card .prs-contact-form input:focus,
.prs-contact-page-card .prs-contact-form select:focus,
.prs-contact-page-card .prs-contact-form textarea:focus {
  border-color:rgba(255,122,22,.72);
  box-shadow:0 0 0 3px rgba(255,105,0,.09);
}

.prs-contact-page-card .prs-contact-form textarea {
  min-height:180px;
  resize:vertical;
}

.prs-contact-page-card .prs-button-full {
  width:100%;
  margin-top:2px;
  min-height:54px;
  font-size:15px;
}

.prs-contact-page-card .prs-form-status {
  margin-top:12px;
}

@media screen and (max-width:900px) {
  .prs-contact-page-hero {
    grid-template-columns:1fr;
    gap:34px;
    padding-top:52px;
  }

  .prs-contact-page-heading {
    position:static;
  }

  .prs-contact-page-heading h1 {
    max-width:12ch;
  }
}

@media screen and (max-width:700px) {
  .prs-contact-page-shell {
    min-height:100vh;
  }

  .prs-contact-page-hero {
    width:calc(100% - 28px);
    padding:36px 0 46px;
    gap:26px;
  }

  .prs-contact-page-heading h1 {
    max-width:none;
    margin-bottom:14px;
    font-size:clamp(44px,12vw,64px);
    line-height:.98;
  }

  .prs-contact-page-intro {
    font-size:20px;
    line-height:1.42;
  }

  .prs-contact-page-card {
    padding:20px 18px 22px;
    border-radius:12px;
  }

  .prs-contact-page-card .prs-form-grid {
    grid-template-columns:1fr;
    gap:0;
  }

  .prs-contact-page-card .prs-contact-form label {
    margin-bottom:16px;
  }

  .prs-contact-page-card .prs-contact-form input,
  .prs-contact-page-card .prs-contact-form select,
  .prs-contact-page-card .prs-contact-form textarea {
    padding:13px 14px;
  }

  .prs-contact-page-card .prs-contact-form textarea {
    min-height:150px;
  }
}


/* =========================================================
   v1.9.22 CONTACT TEMPLATE FIX
   Existing WordPress Contact page, rendered by plugin template.
   ========================================================= */

body.prs-contact-template-body {
  margin:0 !important;
  background:#050709 !important;
  color:var(--text) !important;
}

.prs-contact-site,
.prs-contact-template {
  width:100% !important;
  min-height:100vh !important;
  margin:0 !important;
  background:#050709 !important;
}

.prs-contact-template > .prs-header {
  width:min(calc(100% - 40px),1100px) !important;
  margin:0 auto !important;
}

.prs-contact-template .prs-contact-page-shell {
  width:100% !important;
}

/* Contact page footer follows the site language rather than theme footer. */
.prs-contact-template > .prs-footer {
  width:min(calc(100% - 40px),1100px) !important;
  margin:0 auto !important;
}

@media screen and (max-width:700px) {
  .prs-contact-template > .prs-header {
    width:100% !important;
    margin:0 !important;
  }

  .prs-contact-template > .prs-footer {
    width:calc(100% - 28px) !important;
  }
}


/* =========================================================
   v1.9.24 FORCED CONTACT VIEW
   ========================================================= */
body.prs-contact-template-body {
  margin:0 !important;
  background:#050709 !important;
  color:var(--text) !important;
}

body.prs-contact-template-body .prs-contact-site {
  min-height:100vh !important;
  background:#050709 !important;
}


/* =========================================================
   v1.9.27 NARROW COMPOSITION SYNC
   One frame for background, phoenix, fallback, canvas, glow and embers.
   ========================================================= */
@media screen and (max-width:760px) {

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    position:relative !important;
    isolation:isolate !important;
    overflow:hidden !important;
  }

  /* Registered image layers and fallback use the identical composition box. */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-touch-fallback {
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    right:auto !important;
    top:0 !important;
    bottom:auto !important;

    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;

    margin:0 !important;
    padding:0 !important;

    object-fit:contain !important;
    object-position:var(--prs-mobile-composition-position, center center) !important;
  }

  /* Canvas now travels with the artwork frame instead of being disabled. */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-canvas {
    position:absolute !important;
    inset:0 !important;
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    width:100% !important;
    height:100% !important;
    z-index:5 !important;
    pointer-events:none !important;
  }

  /*
   * Glow coordinates are percentages of the same composition frame.
   * JS will overwrite these with pixel coordinates derived from this frame
   * as soon as syncState runs, but these values are a correct fallback.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-glow-chest {
    position:absolute !important;
    left:var(--prs-effect-x-px, var(--prs-glow-x,24%)) !important;
    top:var(--prs-effect-y-px, var(--prs-glow-y,37%)) !important;
    width:var(--prs-effect-size-px, var(--prs-glow-size,17%)) !important;
    height:var(--prs-effect-size-px, auto) !important;
    transform:translate(-50%,-50%) !important;
    transform-origin:center center !important;
    z-index:6 !important;
    pointer-events:none !important;
  }

  /* Emitter coordinates are percentages of that SAME art frame. */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-embers,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-ember-canvas {
    position:absolute !important;
    z-index:7 !important;
    pointer-events:none !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-embers {
    left:var(--prs-emitter-x,50%) !important;
    top:var(--prs-emitter-y,100%) !important;
    width:var(--prs-emitter-width,100%) !important;
    height:var(--prs-emitter-height,120%) !important;
    transform:translate(-50%,-100%) !important;
    overflow:visible !important;
  }

  /*
   * Static foreground stays visible until a valid canvas draw. This is the
   * safety path that previously made the phoenix reliable on iPhone.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art:not([data-prs-canvas-ready="1"]) > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art[data-prs-canvas-ready="0"] > .prs-phoenix-source {
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    z-index:3 !important;
  }
}


/* =========================================================
   v1.9.28 MOBILE EFFECT TRANSFORM SYNC
   Effect math follows the same Phoenix translate/scale settings.
   ========================================================= */
@media screen and (max-width:760px) {
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-touch-fallback {
    transform-origin:var(--prs-composition-position, center center) !important;
    transform:
      translate(var(--prs-phoenix-layer-x,0%), var(--prs-phoenix-layer-y,0%))
      scale(var(--prs-phoenix-layer-scale,100%)) !important;
  }

  /*
   * Canvas itself remains fixed to the composition frame because its pixels
   * are now drawn at already-transformed coordinates.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-canvas {
    transform:none !important;
    transform-origin:center center !important;
  }
}


/* =========================================================
   v1.9.29 MOBILE COMPOSITION WRAPPER
   One transform parent for every hero visual and effect.
   ========================================================= */

/* Desktop remains effectively unchanged. */
.prs-hero-composition {
  display:contents;
}

@media screen and (max-width:760px) {

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    display:block !important;
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    margin:0 !important;
    padding:0 !important;

    transform-origin:var(--prs-composition-position, center center) !important;
    transform:
      translate(var(--prs-phoenix-layer-x,0%), var(--prs-phoenix-layer-y,0%))
      scale(var(--prs-phoenix-layer-scale,100%)) !important;

    pointer-events:none !important;
    z-index:1 !important;
  }

  /*
   * Every visual/effect layer fills or positions itself relative to the same
   * transformed wrapper. No child receives the Phoenix transform separately.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-touch-fallback {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;
    margin:0 !important;
    padding:0 !important;

    object-fit:contain !important;
    object-position:var(--prs-mobile-composition-position, center center) !important;

    transform:none !important;
    transform-origin:center center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-canvas {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    transform:none !important;
    transform-origin:center center !important;
    z-index:5 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-glow-chest {
    position:absolute !important;
    left:var(--prs-effect-x-px,24%) !important;
    top:var(--prs-effect-y-px,37%) !important;
    width:var(--prs-effect-size-px,17%) !important;
    transform:translate(-50%,-50%) !important;
    transform-origin:center center !important;
    z-index:6 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-embers,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-ember-canvas {
    position:absolute !important;
    pointer-events:none !important;
    z-index:7 !important;
  }

  /*
   * Neutralize v1.9.28's individual transform authority. Wrapper owns it now.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    transform:none !important;
    transform-origin:center center !important;
  }
}


/* =========================================================
   v1.9.30 NATIVE MOBILE EFFECT MAP
   JS writes chest glow position directly from native 1402x1122 mapping.
   ========================================================= */
@media screen and (max-width:760px) {
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-glow-chest {
    position:absolute !important;
    z-index:6 !important;
    pointer-events:none !important;
  }
}


/* =========================================================
   v1.9.31 MOBILE LOCAL EFFECT COORDINATES
   The 375x300-style art box is the only coordinate system.
   ========================================================= */
@media screen and (max-width:760px) {

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    position:relative !important;
    overflow:hidden !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    transform:none !important;
    transform-origin:center center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-touch-fallback,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-canvas {
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    right:auto !important;
    bottom:auto !important;
    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;
    transform:none !important;
    transform-origin:center center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-touch-fallback {
    object-fit:contain !important;
    object-position:center center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-glow-chest {
    position:absolute !important;
    z-index:6 !important;
    pointer-events:none !important;
  }
}


/* =========================================================
   v1.9.32 DESKTOP EMBER EMITTER RESTORE
   v1.9.29 inserted .prs-hero-composition between .prs-hero-art
   and .prs-embers. Restore the pre-wrapper desktop emitter geometry.
   ========================================================= */

@media screen and (min-width:761px) {

  .prs-hero-art > .prs-hero-composition {
    display:contents !important;
  }

  .prs-hero-art > .prs-hero-composition > .prs-embers {
    position:absolute !important;

    left:var(--prs-emitter-x,50%) !important;
    top:var(--prs-emitter-y,100%) !important;

    width:var(--prs-emitter-width,100%) !important;
    height:var(--prs-emitter-height,120%) !important;

    min-width:0 !important;
    max-width:none !important;

    transform:translate(-50%,-100%) !important;
    transform-origin:center bottom !important;

    overflow:visible !important;
    pointer-events:none !important;
    z-index:7 !important;
  }

  .prs-hero-art > .prs-hero-composition > .prs-embers canvas,
  .prs-hero-art > .prs-hero-composition > .prs-ember-canvas {
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    max-width:none !important;
    pointer-events:none !important;
  }
}


/* =========================================================
   v1.9.33 UNIVERSAL WRAPPED EMBER EMITTER
   The composition wrapper exists at every width, so the emitter geometry
   must also be defined against that wrapper at every width.
   ========================================================= */

.prs-hero-art > .prs-hero-composition > .prs-embers {
  position:absolute !important;

  left:var(--prs-emitter-x,50%) !important;
  top:var(--prs-emitter-y,100%) !important;

  width:var(--prs-emitter-width,100%) !important;
  height:var(--prs-emitter-height,120%) !important;

  min-width:0 !important;
  min-height:0 !important;
  max-width:none !important;
  max-height:none !important;

  right:auto !important;
  bottom:auto !important;

  transform:translate(-50%,-100%) !important;
  transform-origin:center bottom !important;

  overflow:visible !important;
  pointer-events:none !important;
  z-index:11 !important;
}

.prs-hero-art > .prs-hero-composition > .prs-embers canvas,
.prs-hero-art > .prs-hero-composition > .prs-ember-canvas {
  position:absolute !important;
  inset:0 !important;

  width:100% !important;
  height:100% !important;

  min-width:100% !important;
  min-height:100% !important;
  max-width:none !important;
  max-height:none !important;

  margin:0 !important;
  padding:0 !important;

  pointer-events:none !important;
}

/*
 * When the hero stacks below the heading, keep the emitter referenced
 * to the local Phoenix art box, not the old desktop hero geometry.
 */
@media screen and (max-width:760px) {
  .prs-hero-art > .prs-hero-composition > .prs-embers {
    left:var(--prs-emitter-x,50%) !important;
    top:var(--prs-emitter-y,100%) !important;

    width:var(--prs-emitter-width,100%) !important;
    height:var(--prs-emitter-height,120%) !important;

    transform:translate(-50%,-100%) !important;
  }
}


/* =========================================================
   v1.9.34 DESKTOP EFFECTS RESTORE
   Wrapper-compatible selectors for glow / local zoom / canvas.
   ========================================================= */

@media screen and (min-width:761px) {

  /* Chest glow once again uses the desktop effect variables. */
  .prs-hero-art > .prs-hero-composition > .prs-glow-chest {
    position:absolute !important;
    left:var(--prs-effect-x-px, 0px) !important;
    top:var(--prs-effect-y-px, 0px) !important;
    width:var(--prs-effect-size-px, 120px) !important;
    height:var(--prs-effect-size-px, 120px) !important;

    transform:translate(-50%,-50%) !important;
    transform-origin:center center !important;

    pointer-events:none !important;
    z-index:12 !important;
  }

  /* If the legacy local zoom lens exists, keep it on the same anchor. */
  .prs-hero-art > .prs-hero-composition > .prs-local-zoom {
    position:absolute !important;
    left:var(--prs-effect-x-px, 0px) !important;
    top:var(--prs-effect-y-px, 0px) !important;
    width:var(--prs-effect-size-px, 120px) !important;
    height:var(--prs-effect-size-px, 120px) !important;

    transform:translate(-50%,-50%) !important;
    transform-origin:center center !important;

    pointer-events:none !important;
    z-index:8 !important;
  }

  /*
   * Deformation canvas is again exactly the art box on desktop.
   * It is not positioned from the wrapper's own transformed geometry.
   */
  .prs-hero-art > .prs-hero-composition > .prs-hero-canvas {
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    right:auto !important;
    bottom:auto !important;

    width:100% !important;
    height:100% !important;
    max-width:none !important;
    max-height:none !important;

    margin:0 !important;
    padding:0 !important;

    transform:none !important;
    transform-origin:center center !important;

    pointer-events:none !important;
    z-index:10 !important;
  }
}

/* =========================================================
   STACKED HERO EMITTER ALIGNMENT
   The emitter was sitting slightly high in the stacked layout.
   Move its origin a small amount downward without changing width.
   ========================================================= */
@media screen and (max-width:760px) {
  .prs-hero-art > .prs-hero-composition > .prs-embers {
    top:calc(var(--prs-emitter-y,100%) + 4%) !important;
  }
}


/* =========================================================
   v1.9.35 MOBILE EFFECTS RESTORE
   Mirror the successful desktop wrapper repair.
   Saved percentage settings are the mobile positioning authority.
   ========================================================= */
@media screen and (max-width:760px) {

  /*
   * Chest glow: use the saved percentages directly.
   * This intentionally ignores --prs-effect-*-px on mobile.
   */
  .prs-hero-art > .prs-hero-composition > .prs-glow-chest {
    position:absolute !important;

    left:var(--prs-glow-x,50%) !important;
    top:var(--prs-glow-y,50%) !important;

    width:var(--prs-glow-size,17%) !important;
    height:auto !important;
    aspect-ratio:1 / 1 !important;

    transform:translate(-50%,-50%) !important;
    transform-origin:center center !important;

    pointer-events:none !important;
    z-index:12 !important;
  }

  /* Legacy local zoom lens, if present, follows the same saved chest anchor. */
  .prs-hero-art > .prs-hero-composition > .prs-local-zoom {
    position:absolute !important;

    left:var(--prs-glow-x,50%) !important;
    top:var(--prs-glow-y,50%) !important;

    width:var(--prs-glow-size,17%) !important;
    height:auto !important;
    aspect-ratio:1 / 1 !important;

    transform:translate(-50%,-50%) !important;
    transform-origin:center center !important;

    pointer-events:none !important;
    z-index:8 !important;
  }

  /*
   * The deformation canvas itself is exactly the local artwork box.
   * JS deformation zones use the same saved percentage values against
   * this 0..width / 0..height coordinate space.
   */
  .prs-hero-art > .prs-hero-composition > .prs-hero-canvas {
    position:absolute !important;
    inset:0 !important;
    left:0 !important;
    top:0 !important;
    right:auto !important;
    bottom:auto !important;

    display:block !important;
    visibility:visible !important;
    opacity:1 !important;

    width:100% !important;
    height:100% !important;
    min-width:100% !important;
    min-height:100% !important;
    max-width:none !important;
    max-height:none !important;

    margin:0 !important;
    padding:0 !important;

    transform:none !important;
    transform-origin:center center !important;

    pointer-events:none !important;
    z-index:10 !important;
  }
}


/* =========================================================
   v1.9.36 MOBILE HORIZONTAL OVERFLOW / STACKING FIX
   Home + About pages
   ========================================================= */

html,
body {
  max-width:100%;
  overflow-x:hidden;
}

.prs-site {
  width:100%;
  max-width:100%;
  overflow-x:hidden !important;
}

.prs-site *,
.prs-site *::before,
.prs-site *::after {
  min-width:0;
}

@media screen and (max-width:760px) {

  /* Consistent mobile gutters. */
  .prs-section,
  .prs-about-main,
  .prs-about-hero-inner,
  .prs-about-strip,
  .prs-cta,
  .prs-footer {
    width:100% !important;
    max-width:100% !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }

  .prs-section {
    padding-left:18px !important;
    padding-right:18px !important;
  }

  .prs-section-inner,
  .prs-about-main,
  .prs-about-hero-inner,
  .prs-about-strip,
  .prs-cta,
  .prs-footer {
    padding-left:18px !important;
    padding-right:18px !important;
    box-sizing:border-box !important;
  }

  /* Home services: one card per row on phones/narrow tablets. */
  .prs-card-grid {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:14px !important;
    width:100% !important;
  }

  .prs-card {
    width:100% !important;
    min-width:0 !important;
    min-height:0 !important;
    padding:24px 22px !important;
  }

  .prs-card p,
  .prs-card h3 {
    overflow-wrap:anywhere !important;
    word-break:normal !important;
  }

  /* About-page cards also stack vertically. */
  .prs-about-grid {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:14px !important;
    width:100% !important;
  }

  .prs-about-grid article {
    width:100% !important;
    min-width:0 !important;
    padding:24px 22px !important;
  }

  /* Home/about explanatory strip stacks instead of squeezing button beside text. */
  .prs-about-strip {
    display:flex !important;
    flex-direction:column !important;
    align-items:flex-start !important;
    justify-content:flex-start !important;
    gap:22px !important;
    padding-top:54px !important;
    padding-bottom:54px !important;
  }

  .prs-about-strip > * {
    width:100% !important;
    max-width:100% !important;
  }

  /* CTA row stacks vertically. */
  .prs-cta {
    display:flex !important;
    flex-direction:column !important;
    align-items:flex-start !important;
    justify-content:flex-start !important;
    gap:22px !important;
    padding-top:38px !important;
    padding-bottom:38px !important;
  }

  .prs-cta > * {
    min-width:0 !important;
    max-width:100% !important;
  }

  .prs-cta h2 {
    max-width:100% !important;
  }

  /* Keep CTA buttons comfortably inside the screen. */
  .prs-cta .prs-button,
  .prs-about-strip .prs-button,
  .prs-cta-about .prs-button {
    width:auto !important;
    max-width:100% !important;
    min-width:0 !important;
    min-height:52px !important;
    padding:12px 20px !important;
    font-size:15px !important;
    line-height:1.25 !important;
    white-space:normal !important;
    text-align:center !important;
  }

  /* Footer becomes a single safe column. */
  .prs-footer {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:30px !important;
    padding-top:38px !important;
    padding-bottom:46px !important;
  }

  .prs-footer > div {
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
  }

  .prs-footer a,
  .prs-footer span,
  .prs-footer p,
  .prs-footer strong {
    max-width:100% !important;
    overflow-wrap:anywhere !important;
    word-break:normal !important;
  }

  /* About page hero/copy cannot force a wider canvas. */
  .prs-about-hero,
  .prs-about-main,
  .prs-about-grid,
  .prs-cta-about {
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  .prs-about-hero h1,
  .prs-about-hero p,
  .prs-about-grid h2,
  .prs-about-grid p {
    max-width:100% !important;
    overflow-wrap:anywhere !important;
  }
}

/*
 * Small phones get slightly tighter controls so no fixed CTA footprint
 * can reintroduce horizontal scrolling.
 */
@media screen and (max-width:430px) {
  .prs-section,
  .prs-section-inner,
  .prs-about-main,
  .prs-about-hero-inner,
  .prs-about-strip,
  .prs-cta,
  .prs-footer {
    padding-left:16px !important;
    padding-right:16px !important;
  }

  .prs-cta .prs-button,
  .prs-about-strip .prs-button,
  .prs-cta-about .prs-button {
    font-size:14px !important;
    padding-left:16px !important;
    padding-right:16px !important;
  }
}


/* =========================================================
   v1.9.37 RUNTIME MOBILE LAYOUT AUTHORITY
   Applies whenever JS marks the document .prs-mobile-layout.
   ========================================================= */

html.prs-mobile-layout,
html.prs-mobile-layout body {
  width:100% !important;
  max-width:100% !important;
  overflow-x:hidden !important;
}

html.prs-mobile-layout .prs-site {
  width:100% !important;
  max-width:100% !important;
  overflow-x:hidden !important;
}

html.prs-mobile-layout .prs-section,
html.prs-mobile-layout .prs-section-inner,
html.prs-mobile-layout .prs-about-main,
html.prs-mobile-layout .prs-about-hero-inner,
html.prs-mobile-layout .prs-about-strip,
html.prs-mobile-layout .prs-cta,
html.prs-mobile-layout .prs-footer {
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin-left:0 !important;
  margin-right:0 !important;
  box-sizing:border-box !important;
}

/* Home service cards: one column. */
html.prs-mobile-layout .prs-services .prs-section-inner .prs-card-grid {
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  grid-auto-columns:minmax(0,1fr) !important;
  gap:16px !important;
  width:100% !important;
  max-width:100% !important;
}

html.prs-mobile-layout .prs-services .prs-card-grid > .prs-card {
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:auto !important;
  min-height:0 !important;
  padding:24px 22px !important;
  box-sizing:border-box !important;
}

/* About page: one card per row. */
html.prs-mobile-layout .prs-about-main > .prs-about-grid {
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  grid-auto-columns:minmax(0,1fr) !important;
  gap:16px !important;
  width:100% !important;
  max-width:100% !important;
}

html.prs-mobile-layout .prs-about-main > .prs-about-grid > article {
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:auto !important;
  padding:24px 22px !important;
  box-sizing:border-box !important;
}

/* About strip on home: stack text and button. */
html.prs-mobile-layout .prs-site main > .prs-about-strip {
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  justify-content:flex-start !important;
  gap:22px !important;
  padding:48px 18px !important;
}

html.prs-mobile-layout .prs-site main > .prs-about-strip > div {
  width:100% !important;
  max-width:100% !important;
}

html.prs-mobile-layout .prs-site main > .prs-about-strip > .prs-button {
  width:auto !important;
  max-width:calc(100vw - 36px) !important;
  min-width:0 !important;
  padding:12px 18px !important;
  box-sizing:border-box !important;
  white-space:normal !important;
}

/* About CTA: text then button below, never side-by-side. */
html.prs-mobile-layout .prs-about-main > .prs-cta-about {
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  justify-content:flex-start !important;
  gap:24px !important;
  width:100% !important;
  padding:42px 0 !important;
}

html.prs-mobile-layout .prs-about-main > .prs-cta-about > div {
  width:100% !important;
  max-width:100% !important;
}

html.prs-mobile-layout .prs-about-main > .prs-cta-about > .prs-button {
  display:inline-flex !important;
  width:auto !important;
  max-width:calc(100vw - 36px) !important;
  min-width:0 !important;
  padding:12px 18px !important;
  font-size:15px !important;
  line-height:1.25 !important;
  white-space:normal !important;
  box-sizing:border-box !important;
}

/* Home footer: brand first, contact details underneath. */
html.prs-mobile-layout .prs-site > .prs-footer {
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  grid-template-rows:auto auto !important;
  gap:28px !important;
  width:100% !important;
  max-width:100% !important;
  padding:38px 18px 46px !important;
  box-sizing:border-box !important;
}

html.prs-mobile-layout .prs-site > .prs-footer > div {
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
}

html.prs-mobile-layout .prs-site > .prs-footer a,
html.prs-mobile-layout .prs-site > .prs-footer span,
html.prs-mobile-layout .prs-site > .prs-footer p {
  display:block !important;
  max-width:100% !important;
  overflow-wrap:anywhere !important;
  word-break:break-word !important;
}

/* Prevent large headings/body copy from creating accidental intrinsic width. */
html.prs-mobile-layout .prs-card *,
html.prs-mobile-layout .prs-about-grid article *,
html.prs-mobile-layout .prs-about-strip *,
html.prs-mobile-layout .prs-cta-about *,
html.prs-mobile-layout .prs-footer * {
  min-width:0 !important;
  max-width:100% !important;
  box-sizing:border-box !important;
}

@media screen and (max-width:430px) {
  html.prs-mobile-layout .prs-services .prs-section-inner,
  html.prs-mobile-layout .prs-about-main,
  html.prs-mobile-layout .prs-about-hero-inner {
    padding-left:16px !important;
    padding-right:16px !important;
  }

  html.prs-mobile-layout .prs-site main > .prs-about-strip,
  html.prs-mobile-layout .prs-site > .prs-footer {
    padding-left:16px !important;
    padding-right:16px !important;
  }
}


/* =========================================================
   v1.9.46 IPAD = FULL DESKTOP + CONTENT-FIT CONTACT MODAL
   ========================================================= */

/* Contact dialog should fit its content, with viewport height only as a safety cap. */
#prs-contact-modal > .prs-modal-dialog {
  height:auto !important;
  min-height:0 !important;
  max-height:calc(100dvh - 40px) !important;
  overflow-y:auto !important;
}

/* Phones remain compact/single-column, but the card still fits its contents. */
@media screen and (max-width:760px) {
  #prs-contact-modal > .prs-modal-dialog {
    height:auto !important;
    min-height:0 !important;
    max-height:calc(100dvh - 20px) !important;
  }
}

/*
 * iPad/tablet widths use the desktop presentation in portrait and landscape.
 * This explicitly neutralises any leftover mobile-layout class should a stale
 * class briefly survive during resize/orientation changes.
 */
@media screen and (min-width:761px) {
  html.prs-mobile-layout .prs-site {
    width:auto !important;
    max-width:none !important;
  }

  /* Keep the contact popup in desktop two-column form on iPad. */
  #prs-contact-modal .prs-form-grid {
    grid-template-columns:1fr 1fr !important;
    gap:12px !important;
  }
}

@supports not (height:100dvh) {
  #prs-contact-modal > .prs-modal-dialog {
    height:auto !important;
    max-height:calc(100vh - 40px) !important;
  }
  @media screen and (max-width:760px) {
    #prs-contact-modal > .prs-modal-dialog {
      max-height:calc(100vh - 20px) !important;
    }
  }
}


/* =========================================================
   v1.9.47 IPAD DESKTOP POPUP + PHOENIX SAFETY
   ========================================================= */

/* iPad/tablet follows desktop popup presentation. */
@media screen and (min-width:761px) {
  #prs-contact-modal {
    align-items:center !important;
    justify-content:center !important;
  }

  #prs-contact-modal > .prs-modal-dialog {
    width:min(860px, calc(100vw - 48px)) !important;
    height:auto !important;
    min-height:0 !important;
    max-height:calc(100dvh - 48px) !important;
    overflow-y:auto !important;
    margin:auto !important;
  }

  #prs-contact-modal .prs-form-grid {
    grid-template-columns:1fr 1fr !important;
  }

}

@supports not (height:100dvh) {
  @media screen and (min-width:761px) {
    #prs-contact-modal > .prs-modal-dialog {
      max-height:calc(100vh - 48px) !important;
    }
  }
}




/* =========================================================
   v1.9.50 IPAD LITE DEFORMATION
   Same desktop presentation, lower internal animation workload.
   ========================================================= */
@media screen and (min-width:761px) and (pointer:coarse) {
  .prs-hero-canvas {
    image-rendering:auto;
    backface-visibility:hidden;
  }
}




/* =========================================================
   v1.9.52 IPAD CHEST + HEAD LITE TEST
   Desktop-style layout, wings disabled in JS, reduced mesh/DPR.
   ========================================================= */
@media screen and (min-width:761px) and (pointer:coarse) {
  .prs-hero-art .prs-hero-canvas {
    image-rendering:auto;
    backface-visibility:hidden;
  }
}

/* v1.9.54 iPad capability selector: JS selects full deformation or safe glow-only mode. */

/* v1.9.55 universal FULL / LITE / GLOW-ONLY capability selection. */

/* v1.9.59 capability state fail-safe */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-phoenix-source {
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;
}
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-hero-canvas {
  display:none !important;
  visibility:hidden !important;
  opacity:0 !important;
}

/* v1.9.60 capability thresholds calibrated for high-end desktop, older high-DPI tablet, and smaller phone workloads. */

/* v1.9.61 production diagnostic hidden unless URL contains ?prsdebug=1. */




/* v1.9.65: repurpose the known-visible chest glow as a whole-scene backlight. */
html[data-prs-animation-mode="glow-only"] .prs-hero-art {
  isolation:isolate;
}
html[data-prs-animation-mode="glow-only"] .prs-hero-bg {
  z-index:0 !important;
}
html[data-prs-animation-mode="glow-only"] .prs-glow-chest {
  display:block !important;
  z-index:1 !important;
  height:auto !important;
  aspect-ratio:1/1 !important;
  margin:0 !important;
  border-radius:50% !important;
  mix-blend-mode:screen !important;
  background:radial-gradient(circle,
    rgba(255,247,205,.98) 0%,
    rgba(255,187,72,.88) 20%,
    rgba(255,93,17,.62) 43%,
    rgba(200,44,5,.34) 64%,
    rgba(80,10,0,0) 82%) !important;
  transform-origin:center !important;
  pointer-events:none !important;
}
html[data-prs-animation-mode="glow-only"] .prs-phoenix-source {
  z-index:2 !important;
}
html[data-prs-animation-mode="glow-only"] .prs-glow-chest::before {
  display:none !important;
}

/* v1.9.66 glow-only controls and stacking correction */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow-chest {
  z-index:0 !important;
  mix-blend-mode:normal !important;
}
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-phoenix-source {
  position:relative !important;
  z-index:5 !important;
}

/* v1.9.67: glow-only layer order must be background < ambient glow < Phoenix.
   Previous z-index:0 put the glow behind the background image itself. */
html[data-prs-animation-mode="glow-only"] .prs-hero-art,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition {
  isolation:isolate !important;
}
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-hero-bg,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition .prs-hero-bg {
  position:absolute !important;
  z-index:1 !important;
}
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition .prs-glow-chest {
  position:absolute !important;
  z-index:2 !important;
  mix-blend-mode:screen !important;
}
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-phoenix-source,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition .prs-phoenix-source {
  position:absolute !important;
  z-index:3 !important;
}

/* v1.9.68: fallback glow stays centred on the original chest-glow anchor.
   Do not stretch/recentre it across the full Phoenix artwork. */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition .prs-glow-chest {
  left:var(--prs-glow-x, 50%) !important;
  top:var(--prs-glow-y, 46%) !important;
  width:var(--prs-glow-size, 24%) !important;
  height:auto !important;
  max-width:none !important;
  border-radius:50% !important;
}

/* v1.9.69: expanded fallback glow controls, chest-centred anchor retained. */

/* v1.9.70: glow-only controls normalized to 0–100; old maxima map to ~15. */

/* v1.9.75: v1.9.70 proven-visible glow renderer retained; controls recalibrated only. */

/* v1.9.77: known-good v1.9.75 renderer, balanced 2x radius/intensity range. */

/* v1.9.78: glow pulse floor is 76% of selected maximum; radius breathing reduced. */


/* =========================================================
   v1.9.80 GLOW-ONLY ORANGE RADIUS BREATH
   Intensity is steady. Only radius breathes 76% -> 100%.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition .prs-glow-chest {
  animation:none !important;
  transition:none !important;
  mix-blend-mode:screen !important;

  /* Warm amber/orange rather than the previous yellow/green impression. */
  background:radial-gradient(circle,
    rgba(255, 238, 180, .94) 0%,
    rgba(255, 181, 64, .86) 18%,
    rgba(255, 112, 24, .66) 38%,
    rgba(238, 66, 10, .42) 58%,
    rgba(176, 38, 4, .20) 72%,
    rgba(94, 18, 0, 0) 86%) !important;
}

html[data-prs-animation-mode="glow-only"] .prs-glow-chest::before {
  background:radial-gradient(circle,
    rgba(255, 196, 82, .62) 0%,
    rgba(255, 98, 18, .36) 42%,
    rgba(210, 44, 5, 0) 78%) !important;
}

/* Warm the halo/drop-shadow without changing its chosen intensity. */
html[data-prs-animation-mode="glow-only"] .prs-glow-chest {
  box-shadow:
    0 0 28px rgba(255, 132, 28, .44),
    0 0 58px rgba(234, 68, 8, .25) !important;
}

/* =========================================================
   v1.9.81 LARGE HEADING BREATHING ROOM
   Slightly open the white/orange display headings on every platform.
   ========================================================= */
.prs-hero h1,
.prs-about-hero h1,
.prs-contact-page-heading h1,
.prs-contact-page-inner h1,
.prs-section h2,
.prs-about-strip h2,
.prs-cta h2,
.prs-feature-copy h3,
#prs-contact-modal .prs-modal-dialog h2 {
  letter-spacing: .012em !important;
}

/* Preserve the colour split while giving each hero line the same tracking. */
.prs-hero h1 .prs-headline-white,
.prs-hero h1 .prs-headline-orange,
.prs-hero h1 .prs-headline-line {
  letter-spacing: inherit !important;
}

/* =========================================================
   v1.9.82 LARGE HEADING SPACING REFINEMENT
   Pull individual letters back slightly, while retaining the current
   breathing room between words.
   ========================================================= */
.prs-hero h1,
.prs-about-hero h1,
.prs-contact-page-heading h1,
.prs-contact-page-inner h1,
.prs-section h2,
.prs-about-strip h2,
.prs-cta h2,
.prs-feature-copy h3,
#prs-contact-modal .prs-modal-dialog h2 {
  letter-spacing: .004em !important;
  word-spacing: .045em !important;
}

.prs-hero h1 .prs-headline-white,
.prs-hero h1 .prs-headline-orange,
.prs-hero h1 .prs-headline-line {
  letter-spacing: inherit !important;
  word-spacing: inherit !important;
}

/* =========================================================
   v1.9.83 WARMER GLOW-ONLY COLOUR
   Shift fallback/iPad glow further toward orange.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition .prs-glow-chest {
  background:radial-gradient(circle,
    rgba(255, 224, 150, .94) 0%,
    rgba(255, 158, 42, .88) 18%,
    rgba(255, 92, 12, .70) 38%,
    rgba(242, 55, 5, .46) 58%,
    rgba(184, 31, 2, .22) 72%,
    rgba(90, 12, 0, 0) 86%) !important;
  box-shadow:
    0 0 28px rgba(255, 105, 18, .48),
    0 0 58px rgba(238, 54, 5, .28) !important;
}
html[data-prs-animation-mode="glow-only"] .prs-glow-chest::before {
  background:radial-gradient(circle,
    rgba(255, 165, 50, .66) 0%,
    rgba(255, 78, 10, .40) 42%,
    rgba(205, 34, 3, 0) 78%) !important;
}

/* v1.9.84: stronger radius-only breath, 45% to 100%; intensity remains steady. */

/* v1.9.85: restore 66-100% radius breathing; radius control expanded to 0-200%. */

/* =========================================================
   v1.9.86 FINAL GLOW-ONLY VISUAL OVERRIDE
   200% radius is allowed through the active renderer.
   Palette is deliberately saturated orange, not yellow/green.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-composition .prs-glow-chest {
  background: radial-gradient(circle,
    rgba(255, 184, 72, .96) 0%,
    rgba(255, 126, 24, .92) 16%,
    rgba(255, 82, 8, .78) 34%,
    rgba(242, 55, 4, .56) 52%,
    rgba(198, 36, 2, .34) 68%,
    rgba(122, 19, 0, .14) 80%,
    rgba(70, 8, 0, 0) 91%) !important;
  box-shadow:
    0 0 30px rgba(255, 104, 12, .58),
    0 0 72px rgba(245, 63, 4, .36),
    0 0 120px rgba(207, 37, 2, .18) !important;
  mix-blend-mode: screen !important;
}
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-glow-chest::before {
  background: radial-gradient(circle,
    rgba(255, 139, 30, .78) 0%,
    rgba(255, 72, 7, .50) 40%,
    rgba(204, 35, 2, .18) 65%,
    rgba(130, 16, 0, 0) 82%) !important;
}

/* v1.9.87: independent GLOW-ONLY position controls. */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-composition .prs-glow-chest {
  left:var(--prs-fallback-glow-x, 50%) !important;
  top:var(--prs-fallback-glow-y, 46%) !important;
}

/* v1.9.88: Lite glow radius expanded to 400%, intensity to 200%; independent position controls retained. */

/* v1.9.89: logo media is user-managed; plugin auto-import disabled. */

/* v1.9.91: Lite glow intensity breathes 20% -> 100% of selected maximum. */

/* =========================================================
   v1.9.92 CLEAN LITE GLOW
   Radial gradient only: no drop-shadow / box-shadow halo.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-composition .prs-glow-chest {
  box-shadow:none !important;
}

/* v1.9.93: larger, more saturated orange Lite glow. No shadow. */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-composition .prs-glow-chest {
  background:radial-gradient(circle,
    rgba(255,126,20,1) 0%,
    rgba(255,92,7,.98) 20%,
    rgba(255,62,2,.90) 40%,
    rgba(240,43,0,.72) 58%,
    rgba(205,28,0,.48) 73%,
    rgba(150,16,0,.24) 86%,
    rgba(80,6,0,0) 100%) !important;
  box-shadow:none !important;
}
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-glow-chest::before {
  background:radial-gradient(circle,
    rgba(255,105,8,.96) 0%,
    rgba(255,62,2,.72) 42%,
    rgba(215,30,0,.34) 68%,
    rgba(120,10,0,0) 92%) !important;
}

/* =========================================================
   v1.9.94 LITE GLOW BOUNDED TO THE HERO BACKGROUND
   The glow layer itself never grows beyond the background.
   Only the elliptical radial light inside it expands/contracts.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-composition .prs-glow-chest {
  left:0 !important;
  top:0 !important;
  right:0 !important;
  bottom:0 !important;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  aspect-ratio:auto !important;
  border-radius:0 !important;
  transform:none !important;
  box-shadow:none !important;
  overflow:hidden !important;
  pointer-events:none !important;

  background:radial-gradient(
    ellipse at var(--prs-fallback-glow-x, 50%) var(--prs-fallback-glow-y, 46%),
    rgba(255,126,20,.98) 0%,
    rgba(255,92,7,.92) 14%,
    rgba(255,62,2,.80) 28%,
    rgba(242,46,1,.60) 42%,
    rgba(214,32,0,.40) 56%,
    rgba(169,20,0,.22) 70%,
    rgba(110,10,0,.08) 84%,
    rgba(70,5,0,0) 100%
  ) !important;

  background-size:
    calc(var(--prs-lite-glow-spread, .35) * 200%)
    calc(var(--prs-lite-glow-spread, .35) * 160%) !important;
  background-repeat:no-repeat !important;
  background-position:
    var(--prs-fallback-glow-x, 50%)
    var(--prs-fallback-glow-y, 46%) !important;
}

html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-glow-chest::before {
  display:none !important;
}

/* Clip the glow to the same artwork/background area. */
html[data-prs-animation-mode="glow-only"] .prs-hero-art,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition {
  overflow:hidden !important;
}

/* v1.9.95: Lite glow is bounded to the actual right-side hero artwork. */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art {
  overflow:hidden !important;
}
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art > .prs-glow-chest,
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-composition > .prs-glow-chest {
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  max-width:none !important;
  max-height:none !important;
  margin:0 !important;
  border:0 !important;
  border-radius:0 !important;
  transform:none !important;
  overflow:hidden !important;
  pointer-events:none !important;
  box-shadow:none !important;
  background:radial-gradient(
    ellipse var(--prs-lite-glow-rx,45%) var(--prs-lite-glow-ry,38%)
    at var(--prs-fallback-glow-x,50%) var(--prs-fallback-glow-y,46%),
    rgba(255,126,20,1) 0%,
    rgba(255,92,7,.96) 18%,
    rgba(255,62,2,.84) 36%,
    rgba(241,44,0,.62) 54%,
    rgba(205,28,0,.40) 69%,
    rgba(160,18,0,.20) 82%,
    rgba(100,8,0,.07) 91%,
    rgba(70,5,0,0) 100%
  ) !important;
  background-size:100% 100% !important;
  background-position:0 0 !important;
  background-repeat:no-repeat !important;
}
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-glow-chest::before {
  display:none !important;
}

/* v1.9.96: allow ellipse radii above 100%; clipping is handled by hero-art. */
html[data-prs-animation-mode="glow-only"] body .prs-hero .prs-hero-art {
  overflow:hidden !important;
}


/* =========================================================
   v1.10.3 — LITE MODE
   No ambient/background glow at all.
   Use only the normal desktop chest glow, above the Phoenix.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] .prs-lite-ambient-glow,
html[data-prs-animation-mode="glow-only"] .prs-glow-only-ambient {
  display:none !important;
  opacity:0 !important;
  background:none !important;
  box-shadow:none !important;
}

html[data-prs-animation-mode="glow-only"] .prs-phoenix-source {
  z-index:2 !important;
}

html[data-prs-animation-mode="glow-only"] .prs-glow-chest {
  z-index:4 !important;
  pointer-events:none !important;
}

/* =========================================================
   v1.10.4 STRICT LITE MODE
   Kill every glow/effect layer, then restore ONLY the normal chest glow.
   ========================================================= */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow,
html[data-prs-animation-mode="glow-only"] .prs-hero-art [class*="ambient-glow"],
html[data-prs-animation-mode="glow-only"] .prs-hero-art [class*="fallback-glow"],
html[data-prs-animation-mode="glow-only"] .prs-hero-art [class*="glow-only"] {
  display:none !important;
  opacity:0 !important;
  background:none !important;
  background-image:none !important;
  box-shadow:none !important;
  filter:none !important;
}

html[data-prs-animation-mode="glow-only"] .prs-hero-art::before,
html[data-prs-animation-mode="glow-only"] .prs-hero-art::after,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition::before,
html[data-prs-animation-mode="glow-only"] .prs-hero-composition::after {
  content:none !important;
  display:none !important;
  opacity:0 !important;
  background:none !important;
  box-shadow:none !important;
  filter:none !important;
}

/* Restore ONLY the original chest glow and force it above the Phoenix. */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-glow.prs-glow-chest {
  display:block !important;
  z-index:999 !important;
  background:radial-gradient(circle,
    rgba(255,236,194,.95) 0%,
    rgba(255,169,61,.80) 18%,
    rgba(255,91,0,.46) 43%,
    rgba(255,61,0,.18) 67%,
    rgba(255,61,0,0) 100%) !important;
  filter:none !important;
  box-shadow:none !important;
  pointer-events:none !important;
}

/* Phoenix remains below chest glow. No size/position changes. */
html[data-prs-animation-mode="glow-only"] .prs-hero-art .prs-phoenix-source {
  z-index:10 !important;
}

/* =========================================================
   v1.10.7 BALANCED DESKTOP HERO COMPOSITION

   Goal:
   - Text and Phoenix stay visually connected as browser width changes.
   - Extra viewport width goes OUTSIDE the combined composition instead of
     creating a growing gap between text and artwork.
   - Slight intentional overlap is preserved.
   - Image position controls (center left / center center / etc.) continue to
     position the artwork inside its own stable container.
   ========================================================= */
@media screen and (min-width:951px) {

  .prs-hero > .prs-hero-grid {
    /*
     * Wider than the old site max on large displays, but capped so the two
     * hero halves remain one composition instead of drifting apart.
     */
    width:min(calc(100% - 72px), 1680px) !important;
    max-width:1680px !important;
    margin-left:auto !important;
    margin-right:auto !important;

    display:grid !important;
    grid-template-columns:minmax(500px, 46%) minmax(0, 54%) !important;
    column-gap:0 !important;
    align-items:center !important;
    position:relative !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    z-index:20 !important;
    min-width:0 !important;
    width:100% !important;
    max-width:none !important;
    /*
     * Allow copy to reach slightly into the artwork region, matching the
     * connected/overlapping look in the preferred screenshots.
     */
    padding-right:clamp(28px, 3vw, 58px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    /*
     * The artwork remains a normal grid item. Pull it toward the copy by a
     * controlled amount instead of allowing the right column to drift away.
     */
    position:relative !important;
    grid-column:2 !important;
    width:calc(100% + clamp(42px, 4.2vw, 86px)) !important;
    max-width:none !important;
    height:100% !important;
    margin-left:calc(-1 * clamp(42px, 4.2vw, 86px)) !important;
    margin-right:0 !important;
    inset:auto !important;
    overflow:visible !important;
    z-index:10 !important;
  }

  /*
   * Keep the artwork's own position control authoritative.
   * Do not add any extra horizontal translation to the Phoenix/source image.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    max-width:none !important;
  }
}

/* On very wide displays, do not let the visual separation grow further. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 120px), 1760px) !important;
    max-width:1760px !important;
    grid-template-columns:minmax(560px, 47%) minmax(0, 53%) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    width:calc(100% + 92px) !important;
    margin-left:-92px !important;
  }
}

/* =========================================================
   v1.10.8 OVERLAPPING HERO FRAME

   Desktop hero is treated as one visual composition rather than two
   expanding columns. The artwork frame gets a stable aspect-driven width,
   remains transparent, and is allowed to overlap the copy and header.
   ========================================================= */
@media screen and (min-width:951px) {

  .prs-hero {
    background:#050709 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 72px), 1720px) !important;
    max-width:1720px !important;
    margin:0 auto !important;

    display:grid !important;
    grid-template-columns:minmax(520px, 48%) minmax(0, 52%) !important;
    column-gap:0 !important;
    align-items:center !important;
    position:relative !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    z-index:20 !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    padding-right:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    /*
     * Stable artwork frame, sized from viewport but capped.
     * It is deliberately narrower than the old grid column so it can
     * overlap the text instead of drifting away on ultra-wide screens.
     */
    position:absolute !important;
    top:0 !important;
    bottom:0 !important;
    right:0 !important;

    width:clamp(760px, 52vw, 980px) !important;
    max-width:none !important;
    height:100% !important;

    margin:0 !important;
    background:transparent !important;
    overflow:visible !important;
    z-index:10 !important;

    /*
     * Pull artwork into the text region by a controlled amount.
     * This keeps the slight overlap consistent across desktop widths.
     */
    transform:translateX(clamp(-110px, -5vw, -58px)) !important;
  }

  /* Ensure no rectangular art-container tone shows through. */
  .prs-hero > .prs-hero-grid > .prs-hero-art,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    background:transparent !important;
  }

  /*
   * Artwork can extend upward behind nav/buttons and leftward toward the copy.
   * Do not clip it at the artwork frame boundary.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    overflow:visible !important;
  }

  /*
   * Keep the actual Phoenix/background content constrained by the artwork
   * frame itself, not by an oversized right-hand grid column.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    max-width:none !important;
  }

  /*
   * Text stays above the left overlap region, while the Phoenix composition
   * can still visually extend underneath where appropriate.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-actions {
    position:relative !important;
    z-index:25 !important;
  }

  /* Header/nav remain above the artwork even when wings extend upward. */
  .prs-header,
  .prs-nav,
  .prs-nav-cta {
    position:relative !important;
    z-index:40 !important;
  }
}

/* Slightly tighter frame on very wide displays so distance does not expand. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 120px), 1780px) !important;
    max-width:1780px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    width:960px !important;
    transform:translateX(-96px) !important;
  }
}

/* =========================================================
   v1.10.9 CENTERED OVERLAP + HEADER EXTENSION

   Desktop only:
   1) Centre the VISIBLE combined hero composition, not merely the grid box.
   2) Let artwork extend upward behind the navigation.
   3) Keep the navigation above the artwork.
   4) Preserve controlled text/art overlap across widths.
   ========================================================= */
@media screen and (min-width:951px) {

  .prs-hero {
    position:relative !important;
    overflow:visible !important;
    background:#050709 !important;
  }

  .prs-hero > .prs-hero-grid {
    /*
     * The underlying grid is shifted slightly right so that the actual
     * visible footprint (copy + left-shifted artwork) is horizontally centred.
     */
    width:min(calc(100% - 72px), 1720px) !important;
    max-width:1720px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    left:clamp(22px, 2.3vw, 54px) !important;

    position:relative !important;
    overflow:visible !important;
    grid-template-columns:minmax(520px, 48%) minmax(0, 52%) !important;
    column-gap:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    z-index:20 !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    padding-right:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    /*
     * Artwork frame remains stable in width, but extends above the hero-grid
     * into the header/navigation zone.
     */
    position:absolute !important;
    right:0 !important;
    top:clamp(-118px, -7vw, -72px) !important;
    bottom:-2px !important;

    width:clamp(760px, 52vw, 980px) !important;
    height:auto !important;
    min-height:calc(100% + clamp(72px, 7vw, 118px)) !important;

    margin:0 !important;
    background:transparent !important;
    overflow:visible !important;
    z-index:10 !important;

    /*
     * Controlled overlap. Slightly stronger on ordinary desktops,
     * never allowed to drift away on very wide displays.
     */
    transform:translateX(clamp(-118px, -5.6vw, -64px)) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    background:transparent !important;
    overflow:visible !important;
  }

  /*
   * Make the art layers fill the extended frame so wings/background can
   * actually rise behind the nav rather than being trapped lower down.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-touch-fallback,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-canvas {
    top:0 !important;
    bottom:0 !important;
    height:100% !important;
  }

  /* Keep hero copy readable above overlap. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-actions {
    position:relative !important;
    z-index:25 !important;
  }

  /* Artwork can pass behind the header/nav, but never cover controls. */
  .prs-header {
    position:relative !important;
    z-index:50 !important;
    background:transparent !important;
  }

  .prs-header .prs-nav,
  .prs-header .prs-nav a,
  .prs-header .prs-nav-cta {
    position:relative !important;
    z-index:55 !important;
  }
}

/* Very wide desktop: keep the composition centred and prevent spacing drift. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 120px), 1780px) !important;
    max-width:1780px !important;
    left:58px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    width:960px !important;
    transform:translateX(-104px) !important;
    top:-110px !important;
    min-height:calc(100% + 110px) !important;
  }
}

/* Near-desktop range: preserve stronger intentional overlap without changing mobile rules. */
@media screen and (min-width:951px) and (max-width:1250px) {
  .prs-hero > .prs-hero-grid {
    left:20px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-122px) !important;
    top:-78px !important;
    min-height:calc(100% + 78px) !important;
  }
}

/* =========================================================
   v1.10.10 LATE-STACK HERO

   - Keep the Phoenix large for longer as desktop narrows.
   - Keep artwork reaching into the header/nav zone.
   - Switch to centred stacked layout only below 1180px.
   - Shorten the body-copy line length beside the artwork.
   ========================================================= */

/* Desktop / wide tablet composition stays side by side through 1181px. */
@media screen and (min-width:1181px) {

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    /*
     * Do not let the Phoenix begin shrinking too early.
     * At 1270-1450px browser widths the frame stays at least 820px wide.
     */
    width:clamp(820px, 56vw, 1020px) !important;
    top:-132px !important;
    bottom:-2px !important;
    min-height:calc(100% + 132px) !important;
    overflow:visible !important;
  }

  /* Keep the visual image connected to the copy. */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(clamp(-128px, -5.8vw, -70px)) !important;
  }

  /*
   * The supporting paragraph was becoming too long beside the artwork.
   * Keep both text blocks comfortably readable and visually separate.
   */
  .prs-hero .prs-hero-lead {
    max-width:560px !important;
  }

  .prs-hero .prs-hero-body {
    max-width:520px !important;
  }

  /* Artwork is explicitly allowed to continue behind the header buttons. */
  .prs-hero,
  .prs-hero > .prs-hero-grid,
  .prs-hero > .prs-hero-grid > .prs-hero-art,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    overflow:visible !important;
  }

  .prs-header {
    position:relative !important;
    z-index:50 !important;
    background:transparent !important;
  }

  .prs-header .prs-nav,
  .prs-header .prs-nav a,
  .prs-header .prs-nav-cta {
    position:relative !important;
    z-index:55 !important;
  }
}

/* Slightly wider screens get the full-size Phoenix before the cap. */
@media screen and (min-width:1500px) {
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    width:clamp(900px, 54vw, 1040px) !important;
    top:-142px !important;
    min-height:calc(100% + 142px) !important;
  }
}

/* =========================================================
   STACK ONLY AFTER THE SIDE-BY-SIDE DESIGN HAS RUN OUT OF ROOM
   ========================================================= */
@media screen and (min-width:761px) and (max-width:1180px) {

  .prs-hero {
    min-height:0 !important;
    height:auto !important;
    overflow:hidden !important;
  }

  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 48px), 980px) !important;
    max-width:980px !important;
    margin:0 auto !important;
    left:auto !important;

    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:flex-start !important;
    gap:18px !important;

    min-height:0 !important;
    height:auto !important;
    padding:34px 0 42px !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    order:1 !important;
    display:block !important;
    width:min(100%, 760px) !important;
    max-width:760px !important;
    margin:0 auto !important;
    padding:0 !important;
    text-align:center !important;
    z-index:20 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-body {
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-lead {
    max-width:620px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-hero-body {
    max-width:600px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy .prs-actions {
    justify-content:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    order:2 !important;
    position:relative !important;
    inset:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;

    width:min(100%, 880px) !important;
    max-width:880px !important;
    height:clamp(430px, 62vw, 610px) !important;
    min-height:0 !important;

    margin:-26px auto 0 !important;
    transform:none !important;
    background:transparent !important;
    overflow:visible !important;
    z-index:10 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    width:100% !important;
    height:100% !important;
    background:transparent !important;
    overflow:visible !important;
  }

  /*
   * In stacked mode centre the selected artwork horizontally. Vertical
   * alignment continues to follow the user's chosen image-position setting.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    object-position:center var(--prs-mobile-composition-position-y, center) !important;
  }
}

/* =========================================================
   v1.10.11 MOBILE-STYLE STACK

   - Start stacked layout immediately below 1281px.
   - Match the mobile content order:
       1. headline
       2. Phoenix artwork
       3. sub-heading / lead
       4. body copy
       5. CTA
   - Centre everything horizontally in stacked mode.
   ========================================================= */

/* Keep side-by-side only on genuinely wide desktops. */
@media screen and (min-width:1281px) {
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    width:clamp(820px, 56vw, 1020px) !important;
    top:-132px !important;
    bottom:-2px !important;
    min-height:calc(100% + 132px) !important;
    transform:translateX(clamp(-128px, -5.8vw, -70px)) !important;
  }

  .prs-hero .prs-hero-body {
    max-width:520px !important;
  }
}

/* Mobile-style stack from 761px through 1280px. */
@media screen and (min-width:761px) and (max-width:1280px) {

  .prs-hero {
    min-height:0 !important;
    height:auto !important;
    overflow:hidden !important;
  }

  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 44px), 980px) !important;
    max-width:980px !important;
    margin:0 auto !important;
    left:auto !important;

    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:auto auto auto auto auto !important;
    row-gap:18px !important;
    column-gap:0 !important;

    min-height:0 !important;
    height:auto !important;
    padding:32px 0 42px !important;
    overflow:visible !important;
    align-items:start !important;
  }

  /* Let children participate directly in the grid. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    display:contents !important;
  }

  /* 1. Headline */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    grid-column:1 !important;
    grid-row:1 !important;
    width:min(100%, 760px) !important;
    max-width:760px !important;
    margin:0 auto !important;
    text-align:center !important;
    z-index:25 !important;
  }

  /* 2. Phoenix artwork */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    grid-column:1 !important;
    grid-row:2 !important;

    position:relative !important;
    inset:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;

    width:min(100%, 900px) !important;
    max-width:900px !important;
    height:clamp(420px, 62vw, 610px) !important;
    min-height:0 !important;

    margin:-10px auto -6px !important;
    transform:none !important;
    background:transparent !important;
    overflow:visible !important;
    z-index:10 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    width:100% !important;
    height:100% !important;
    background:transparent !important;
    overflow:visible !important;
  }

  /* Centre artwork horizontally in stacked mode. */
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    object-position:center center !important;
  }

  /* 3. Sub-heading / lead */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead {
    grid-column:1 !important;
    grid-row:3 !important;
    width:min(100%, 650px) !important;
    max-width:650px !important;
    margin:0 auto !important;
    text-align:center !important;
  }

  /* 4. Body */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    grid-column:1 !important;
    grid-row:4 !important;
    width:min(100%, 600px) !important;
    max-width:600px !important;
    margin:0 auto !important;
    text-align:center !important;
  }

  /* 5. CTA */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    grid-column:1 !important;
    grid-row:5 !important;
    justify-content:center !important;
    margin:4px auto 0 !important;
    text-align:center !important;
  }
}

/* =========================================================
   v1.10.12 UNIFIED CENTRED STACK
   Applies to both desktop/tablet stacked mode and mobile.
   Order remains:
     headline -> artwork -> lead -> body -> CTA
   ========================================================= */
@media screen and (max-width:1280px) {

  .prs-hero > .prs-hero-grid {
    justify-items:center !important;
  }

  /* Headline */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    width:min(100%, 760px) !important;
    max-width:760px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  /* Artwork */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    margin-left:auto !important;
    margin-right:auto !important;
    left:auto !important;
    right:auto !important;
    transform:none !important;
    justify-self:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    object-position:center center !important;
  }

  /* Lead/sub-heading */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead {
    width:min(100%, 650px) !important;
    max-width:650px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  /* Body copy */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    width:min(100%, 600px) !important;
    max-width:600px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  /* CTA */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    width:100% !important;
    justify-content:center !important;
    align-items:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions .prs-button {
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* Mobile uses exactly the same centre alignment and ordering. */
@media screen and (max-width:760px) {

  .prs-hero > .prs-hero-grid {
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    justify-self:center !important;
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    justify-self:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* =========================================================
   v1.10.13 DESKTOP HERO ALIGNMENT TWEAK
   Side-by-side only. Stacked/tablet/mobile layout is unchanged.
   ========================================================= */
@media screen and (min-width:1281px) {

  /* Lift the complete copy block, including the CTA, as one unit. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateY(clamp(-72px, -4.2vw, -48px)) !important;
    transform-origin:left center !important;
  }

  /* Move the artwork farther right without changing its size. */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:
      translateX(clamp(-52px, -2.6vw, -24px))
      !important;
  }

  /* Preserve header/nav position. */
  .prs-header,
  .prs-header .prs-nav,
  .prs-header .prs-nav-cta {
    transform:none !important;
  }
}

/* On very wide screens, keep the image close to the right/nav edge. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateY(-68px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-28px) !important;
  }
}

/* =========================================================
   v1.10.14 CENTRED MOBILE / STACKED LAYOUT
   Applies to actual mobile and desktop browser widths using the mobile stack.
   Also centres footer content.
   ========================================================= */
@media screen and (max-width:1280px) {

  /* Hero / stacked content */
  .prs-hero,
  .prs-hero > .prs-hero-grid,
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid {
    justify-items:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
    justify-self:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    justify-content:center !important;
    align-items:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    margin-left:auto !important;
    margin-right:auto !important;
    justify-self:center !important;
  }

  /* Main section content/cards */
  .prs-section,
  .prs-section-inner,
  .prs-section-header,
  .prs-section-title,
  .prs-section-kicker {
    text-align:center !important;
  }

  .prs-section-header,
  .prs-section-title,
  .prs-section-kicker {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-cards,
  .prs-card-grid,
  .prs-services-grid {
    justify-content:center !important;
  }

  .prs-card,
  .prs-service-card {
    text-align:center !important;
  }

  .prs-card > *,
  .prs-service-card > * {
    margin-left:auto;
    margin-right:auto;
  }

  /* Footer */
  .prs-footer,
  .prs-footer-inner,
  .prs-footer-content,
  .prs-footer-brand,
  .prs-footer-copy,
  .prs-footer-nav,
  .prs-footer-links,
  .prs-footer-contact,
  .prs-footer-bottom {
    text-align:center !important;
  }

  .prs-footer-inner,
  .prs-footer-content,
  .prs-footer-nav,
  .prs-footer-links,
  .prs-footer-bottom {
    justify-content:center !important;
    align-items:center !important;
  }

  .prs-footer nav ul,
  .prs-footer ul {
    justify-content:center !important;
    padding-left:0 !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-footer img,
  .prs-footer-logo {
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* =========================================================
   v1.10.15 DESKTOP HERO POSITIONING
   Push artwork farther right and lift copy as high as practical.
   Stacked/mobile layouts remain unchanged.
   ========================================================= */
@media screen and (min-width:1281px) {

  /* Move the whole copy block upward significantly. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateY(clamp(-118px, -7vw, -82px)) !important;
    transform-origin:left center !important;
  }

  /*
   * Move artwork farther right than v1.10.13.
   * This keeps it closer to the nav/right edge while retaining overlap.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(clamp(8px, 1.6vw, 34px)) !important;
  }

  /*
   * Give the copy slightly more vertical breathing room above its own block
   * without altering font sizes or line spacing.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy h1 {
    margin-top:0 !important;
  }
}

/* Wide screens: a touch farther right and slightly higher. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateY(-112px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(38px) !important;
  }
}

/* =========================================================
   v1.10.16 SITEWIDE CENTRED MOBILE / STACKED TREATMENT
   Applies to actual mobile devices and desktop browsers narrowed
   into the mobile-style layout. Wide desktop layouts are untouched.
   ========================================================= */
@media screen and (max-width:1280px) {

  /* General page wrappers / sections */
  main,
  .prs-main,
  .prs-page,
  .prs-page-content,
  .prs-content,
  .prs-content-inner,
  .prs-section,
  .prs-section-inner,
  .prs-container,
  .prs-wrap,
  .prs-about,
  .prs-about-inner,
  .prs-contact,
  .prs-contact-inner,
  .prs-services,
  .prs-services-inner {
    text-align:center !important;
  }

  /* Headings, kickers and descriptive copy on every page */
  main h1,
  main h2,
  main h3,
  main h4,
  main p,
  .prs-page h1,
  .prs-page h2,
  .prs-page h3,
  .prs-page h4,
  .prs-page p,
  .prs-kicker,
  .prs-section-kicker,
  .prs-section-title,
  .prs-page-title,
  .prs-page-subtitle,
  .prs-lead,
  .prs-intro {
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  /* Actions and button groups */
  .prs-actions,
  .prs-buttons,
  .prs-button-row,
  .prs-cta,
  .prs-cta-actions,
  .wp-block-buttons {
    justify-content:center !important;
    align-items:center !important;
    text-align:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-button,
  .prs-nav-cta,
  .wp-block-button {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* Cards / feature blocks */
  .prs-card,
  .prs-service-card,
  .prs-feature,
  .prs-feature-card,
  .prs-contact-card {
    text-align:center !important;
  }

  .prs-card > *,
  .prs-service-card > *,
  .prs-feature > *,
  .prs-feature-card > *,
  .prs-contact-card > * {
    margin-left:auto;
    margin-right:auto;
  }

  /* Lists that are part of page presentation, without affecting form controls */
  .prs-links,
  .prs-social-links,
  .prs-contact-links {
    justify-content:center !important;
    text-align:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:0 !important;
  }

  /* Images / logos in page content */
  main img,
  .prs-page img,
  .prs-about img,
  .prs-contact img {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* Forms remain usable, but labels/help text are centred in stacked mode. */
  .prs-form,
  .prs-contact-form {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-form label,
  .prs-form .description,
  .prs-contact-form label,
  .prs-contact-form .description {
    text-align:center !important;
  }

  /*
   * Footer: centre every visible footer element sitewide in stacked/mobile
   * mode, regardless of which page/template is being viewed.
   */
  .prs-footer,
  .prs-footer *,
  footer,
  footer * {
    text-align:center !important;
  }

  .prs-footer-inner,
  .prs-footer-content,
  .prs-footer-brand,
  .prs-footer-nav,
  .prs-footer-links,
  .prs-footer-contact,
  .prs-footer-bottom,
  footer nav,
  footer ul {
    justify-content:center !important;
    align-items:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-footer ul,
  footer ul {
    padding-left:0 !important;
  }

  .prs-footer img,
  .prs-footer-logo,
  footer img {
    display:block;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* =========================================================
   v1.10.17 TOP-ALIGNED DESKTOP COPY
   Replace the old "move it upward with translateY" approach with
   real top alignment inside the desktop hero composition.
   Stacked/mobile layouts are unchanged.
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero > .prs-hero-grid {
    align-items:stretch !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    /*
     * Real top alignment rather than fighting a vertically-centred grid
     * item with larger and larger transforms.
     */
    align-self:start !important;
    justify-self:start !important;
    margin-top:clamp(118px, 8.2vw, 170px) !important;
    transform:none !important;
    position:relative !important;
    z-index:20 !important;
  }

  /*
   * Keep the whole copy block together and let the CTA follow naturally.
   * No extra vertical transforms on individual children.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    transform:none !important;
  }

  /* Keep readable body width beside the artwork. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }
}

/* Very wide screens: keep the heading near the upper wing rather than sinking. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    margin-top:132px !important;
  }
}

/* =========================================================
   v1.10.18 TRUE TOP-ALIGNED DESKTOP COPY

   Fixes v1.10.17: the positive margin-top was pushing the copy DOWN.
   The copy now begins close to the top of the hero grid.
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero > .prs-hero-grid {
    align-items:stretch !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    align-self:start !important;
    justify-self:start !important;

    /* Start near the top, just below the header/navigation zone. */
    margin-top:clamp(18px, 1.8vw, 34px) !important;
    margin-bottom:0 !important;

    transform:none !important;
    position:relative !important;
    z-index:20 !important;
  }

  /* Keep all copy elements together with no additional vertical offset. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    transform:none !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    margin-top:0 !important;
  }

  /* Preserve the shorter readable paragraph width beside the Phoenix. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }
}

/* On ultra-wide screens keep it equally high rather than letting it drift down. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    margin-top:24px !important;
  }
}

/* =========================================================
   v1.10.19 COPY FOLLOWS VISIBLE ART BOTTOM

   Wide desktop only:
   the bottom of the copy block (CTA) is anchored to the actual rendered
   bottom of the hero artwork. JS measures the rendered image on resize and
   supplies --prs-copy-bottom-offset.
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero > .prs-hero-grid {
    position:relative !important;
    align-items:stretch !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:absolute !important;
    left:0 !important;
    top:auto !important;
    bottom:var(--prs-copy-bottom-offset, 28px) !important;

    width:48% !important;
    max-width:700px !important;

    margin:0 !important;
    transform:none !important;
    align-self:auto !important;
    justify-self:auto !important;
    z-index:20 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    margin-top:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }
}

/* =========================================================
   v1.10.20 RESPONSIVE HERO HEIGHT

   Wide desktop:
   - hero height now shrinks with browser width instead of staying at 820px
   - artwork is flush with the hero bottom
   - copy is anchored to the same hero bottom, so it rises as hero shrinks
   - CTA keeps a deliberate inset above the hero bottom edge
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero {
    min-height:0 !important;
    height:clamp(640px, 50vw, 820px) !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid {
    min-height:0 !important;
    height:100% !important;
    align-items:stretch !important;
    overflow:visible !important;
  }

  /*
   * Artwork reaches the actual hero bottom. The upper negative top remains
   * available so the wings/background can continue behind navigation.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    top:clamp(-142px, -8vw, -92px) !important;
    bottom:0 !important;
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    top:0 !important;
    bottom:0 !important;
    height:100% !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-touch-fallback,
  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition > .prs-hero-canvas {
    top:0 !important;
    bottom:0 !important;
    height:100% !important;
  }

  /*
   * Copy follows the shrinking hero because it is bottom-anchored to the
   * hero grid itself. This naturally moves the whole copy upward as the
   * browser narrows and the hero becomes shorter.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:absolute !important;
    left:0 !important;
    top:auto !important;
    bottom:34px !important;

    width:48% !important;
    max-width:700px !important;

    margin:0 !important;
    transform:none !important;
    z-index:20 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    margin-top:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }

  /*
   * The button is no longer allowed to kiss the bottom edge of the hero.
   * The 34px copy inset above does this for the entire copy block.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    margin-bottom:0 !important;
  }
}

/* Wider displays can use a taller cap without reintroducing dead space below art. */
@media screen and (min-width:1800px) {
  .prs-hero {
    height:clamp(700px, 42vw, 840px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    bottom:40px !important;
  }
}

/* =========================================================
   v1.10.21 FLOW-BASED RESPONSIVE HERO

   Fixes the clipped CTA / unstable vertical positioning from v1.10.20.
   The copy is no longer absolutely positioned. It stays in normal grid flow
   and is bottom-aligned inside the same responsive hero frame as the artwork.
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero {
    min-height:680px !important;
    height:clamp(680px, 50vw, 820px) !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid {
    height:100% !important;
    min-height:0 !important;
    align-items:stretch !important;
    overflow:visible !important;
  }

  /*
   * Keep the artwork flush with the hero bottom.
   * It can still extend upward behind the navigation.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    top:clamp(-142px, -8vw, -92px) !important;
    bottom:0 !important;
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    top:0 !important;
    bottom:0 !important;
    height:100% !important;
  }

  /*
   * Copy is back in normal grid flow.
   * align-self:end makes it rise naturally as the hero gets shorter.
   * Padding-bottom gives the CTA a deliberate inset from the hero edge.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;

    width:100% !important;
    max-width:700px !important;

    align-self:end !important;
    justify-self:start !important;

    margin:0 !important;
    padding:0 0 38px 0 !important;
    transform:none !important;

    z-index:20 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    margin-top:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    margin-bottom:0 !important;
  }
}

/* Very wide screens can be slightly taller, but keep the same bottom anchoring. */
@media screen and (min-width:1800px) {
  .prs-hero {
    min-height:720px !important;
    height:clamp(720px, 42vw, 840px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    padding-bottom:42px !important;
  }
}

/* =========================================================
   v1.10.22 TRUE TOP-ANCHORED DESKTOP COPY

   The desktop copy is now explicitly anchored to the top of the
   responsive hero grid. It is no longer bottom-aligned.
   Artwork remains bottom-flush and responsive.
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero > .prs-hero-grid {
    align-items:stretch !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    left:auto !important;
    right:auto !important;
    top:auto !important;
    bottom:auto !important;

    align-self:start !important;
    justify-self:start !important;

    width:100% !important;
    max-width:700px !important;

    margin:0 !important;
    padding:
      clamp(92px, 7vw, 126px)
      0
      0
      0 !important;

    transform:none !important;
    z-index:20 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    margin-top:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    margin-bottom:0 !important;
  }
}

/* On very wide screens keep the copy close to the header instead of drifting down. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    padding-top:100px !important;
  }
}

/* =========================================================
   v1.10.23 DESKTOP HERO HEIGHT = ARTWORK HEIGHT
   Fixes:
   - no large empty black extension below the artwork
   - CTA cannot be clipped by the next section
   - copy is top-anchored inside the same height as the artwork
   ========================================================= */
@media screen and (min-width:1281px) {
  .prs-hero {
    /* Override the old 720px minimum that was creating the empty lower area. */
    height:clamp(590px, 39vw, 760px) !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid {
    height:100% !important;
    min-height:0 !important;
    overflow:visible !important;
    align-items:stretch !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    top:clamp(-118px, -6.4vw, -82px) !important;
    bottom:0 !important;
    height:auto !important;
    min-height:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    top:0 !important;
    bottom:0 !important;
    height:100% !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    align-self:start !important;
    top:auto !important;
    bottom:auto !important;
    margin:0 !important;

    /* Header clearance only. Copy then starts at the top, not vertically centred. */
    padding:clamp(76px, 5.5vw, 100px) 0 34px 0 !important;

    width:100% !important;
    max-width:700px !important;
    box-sizing:border-box !important;
    transform:none !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    max-width:500px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    margin-bottom:0 !important;
  }
}

/* Before stacked mode, reduce the header clearance and preserve the CTA. */
@media screen and (min-width:1281px) and (max-width:1500px) {
  .prs-hero {
    height:clamp(610px, 47vw, 700px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    padding-top:68px !important;
    padding-bottom:30px !important;
  }
}

/* =========================================================
   v1.10.24 EARLIER SAFE STACK
   Prevents the desktop copy block from being cropped as the browser narrows.

   Side-by-side: 1441px+
   Centered stacked layout: 1440px and below
   ========================================================= */

/* Keep the current wide desktop layout only where there is enough room. */
@media screen and (min-width:1441px) {
  .prs-hero {
    min-height:0 !important;
    height:clamp(590px, 39vw, 760px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    overflow:visible !important;
  }
}

/* Switch earlier to the same mobile-style stack before the copy can crop. */
@media screen and (min-width:761px) and (max-width:1440px) {

  .prs-hero {
    min-height:0 !important;
    height:auto !important;
    overflow:hidden !important;
  }

  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 44px), 1040px) !important;
    max-width:1040px !important;
    height:auto !important;
    min-height:0 !important;
    margin:0 auto !important;
    left:auto !important;

    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:auto auto auto auto auto !important;
    row-gap:18px !important;
    column-gap:0 !important;
    justify-items:center !important;
    align-items:start !important;

    padding:30px 0 44px !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    display:contents !important;
    position:static !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    transform:none !important;
  }

  /* 1. Headline */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1 {
    grid-column:1 !important;
    grid-row:1 !important;
    width:min(100%, 800px) !important;
    max-width:800px !important;
    margin:0 auto !important;
    text-align:center !important;
    justify-self:center !important;
    transform:none !important;
    z-index:25 !important;
  }

  /* 2. Artwork */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    grid-column:1 !important;
    grid-row:2 !important;

    position:relative !important;
    inset:auto !important;
    top:auto !important;
    right:auto !important;
    bottom:auto !important;
    left:auto !important;

    width:min(100%, 940px) !important;
    max-width:940px !important;
    height:clamp(430px, 60vw, 620px) !important;
    min-height:0 !important;

    margin:-8px auto -4px !important;
    transform:none !important;
    background:transparent !important;
    overflow:visible !important;
    justify-self:center !important;
    z-index:10 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    width:100% !important;
    height:100% !important;
    background:transparent !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-hero-bg,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-phoenix-source,
  .prs-hero > .prs-hero-grid > .prs-hero-art .prs-touch-fallback {
    object-position:center center !important;
  }

  /* 3. Sub-heading */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead {
    grid-column:1 !important;
    grid-row:3 !important;
    width:min(100%, 650px) !important;
    max-width:650px !important;
    margin:0 auto !important;
    text-align:center !important;
    justify-self:center !important;
  }

  /* 4. Body */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    grid-column:1 !important;
    grid-row:4 !important;
    width:min(100%, 600px) !important;
    max-width:600px !important;
    margin:0 auto !important;
    text-align:center !important;
    justify-self:center !important;
  }

  /* 5. CTA */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    grid-column:1 !important;
    grid-row:5 !important;
    width:100% !important;
    margin:4px auto 0 !important;
    justify-content:center !important;
    align-items:center !important;
    text-align:center !important;
    justify-self:center !important;
  }
}

/* =========================================================
   v1.10.25 COMPACT HEADER + LATER STACK

   Instead of stacking early:
   - make the desktop header shorter
   - allow hero/artwork to sit higher
   - slightly reduce the large white/orange hero heading
   - keep side-by-side down to 1281px again
   ========================================================= */

/* Cancel v1.10.24's earlier 1440px stack. */
@media screen and (min-width:1281px) and (max-width:1440px) {

  .prs-hero {
    min-height:0 !important;
    height:clamp(600px, 46vw, 690px) !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 56px), 1720px) !important;
    max-width:1720px !important;
    height:100% !important;
    min-height:0 !important;
    margin:0 auto !important;
    left:clamp(12px, 1vw, 20px) !important;

    display:grid !important;
    grid-template-columns:minmax(500px, 47%) minmax(0, 53%) !important;
    grid-template-rows:1fr !important;
    column-gap:0 !important;
    row-gap:0 !important;
    align-items:stretch !important;
    justify-items:stretch !important;

    padding:0 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    display:block !important;
    position:relative !important;
    grid-column:1 !important;
    grid-row:1 !important;

    align-self:start !important;
    justify-self:start !important;

    width:100% !important;
    max-width:660px !important;

    margin:0 !important;
    padding:clamp(54px, 4.6vw, 70px) 0 30px 0 !important;
    transform:none !important;
    text-align:left !important;
    z-index:20 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    grid-column:auto !important;
    grid-row:auto !important;
    width:auto !important;
    justify-self:auto !important;
    text-align:left !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    position:absolute !important;
    grid-column:auto !important;
    grid-row:auto !important;

    right:0 !important;
    left:auto !important;
    top:clamp(-112px, -7vw, -82px) !important;
    bottom:0 !important;

    width:clamp(760px, 56vw, 940px) !important;
    max-width:none !important;
    height:auto !important;
    min-height:0 !important;

    margin:0 !important;
    transform:translateX(clamp(6px, 1.2vw, 22px)) !important;
    overflow:visible !important;
    z-index:10 !important;
  }
}

/* Compact desktop header so the hero can visually sit closer to the top. */
@media screen and (min-width:1281px) {

  .prs-header {
    min-height:56px !important;
    height:56px !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
  }

  .prs-header-inner,
  .prs-header .prs-container {
    min-height:56px !important;
    height:56px !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
    align-items:center !important;
  }

  .prs-logo,
  .prs-header-logo {
    max-height:40px !important;
    height:auto !important;
  }

  .prs-nav {
    min-height:56px !important;
    align-items:center !important;
  }

  .prs-nav a:not(.prs-nav-cta) {
    padding-top:6px !important;
    padding-bottom:6px !important;
  }

  .prs-nav-cta {
    min-height:40px !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
  }

  /* Slightly smaller large hero heading on desktop. */
  .prs-hero h1 {
    font-size:clamp(54px, 5.7vw, 86px) !important;
    line-height:.92 !important;
  }

  /* Keep support copy compact enough to fit above CTA. */
  .prs-hero .prs-hero-lead {
    max-width:540px !important;
  }

  .prs-hero .prs-hero-body {
    max-width:480px !important;
  }
}

/* Return to the intended stacked breakpoint. */
@media screen and (max-width:1280px) {
  /* v1.10.11+ stacked/mobile rules remain authoritative here. */
}

/* =========================================================
   v1.10.26 STABLE BUTTONS + TIGHTER WIDE HERO
   Fixes:
   - Get In Touch no longer shifts sideways at different desktop widths.
   - Let's Talk text is vertically centred in its outline.
   - Text and Phoenix stay closer together on wide screens.
   ========================================================= */

/* -------------------------
   Desktop side-by-side hero
   ------------------------- */
@media screen and (min-width:1281px) {

  /*
   * Keep the combined text + artwork composition tighter.
   * Extra browser width now falls outside the hero, not between the two sides.
   */
  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 64px), 1500px) !important;
    max-width:1500px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    left:0 !important;
    grid-template-columns:minmax(500px, 46%) minmax(0, 54%) !important;
    column-gap:0 !important;
  }

  /*
   * Pull artwork gently toward the text on wide displays.
   * This is deliberately modest so the existing overlap remains natural.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    right:0 !important;
    transform:translateX(clamp(-62px, -3.2vw, -28px)) !important;
  }

  /* Lock CTA group to the left edge of the copy block. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    display:flex !important;
    width:auto !important;
    max-width:none !important;
    justify-content:flex-start !important;
    align-items:center !important;

    margin-top:28px !important;
    margin-right:0 !important;
    margin-bottom:0 !important;
    margin-left:0 !important;

    padding:0 !important;
    text-align:left !important;
  }

  /* Prevent previous auto-margin/mobile centering rules from moving the CTA. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions .prs-button,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions a {
    margin:0 !important;
    align-self:center !important;
  }

  /*
   * Header CTA: use true flex centring and remove line-height/padding effects
   * that were making the label sit too high/low inside the outline.
   */
  .prs-header .prs-nav-cta,
  .prs-nav .prs-nav-cta {
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;

    height:40px !important;
    min-height:40px !important;
    line-height:1 !important;

    padding:0 18px !important;
    box-sizing:border-box !important;
    vertical-align:middle !important;
  }
}

/* Very wide screens: keep the same visual relationship instead of opening up. */
@media screen and (min-width:1800px) {
  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 120px), 1540px) !important;
    max-width:1540px !important;
    grid-template-columns:minmax(520px, 46%) minmax(0, 54%) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-72px) !important;
  }
}

/* =========================================================
   v1.10.27 EARLIER TEXT GROWTH + RIGHT-SHIFTED ART
   Mid-desktop widths:
   - text column starts gaining width sooner
   - CTA stays fully visible
   - artwork shifts farther right to make room
   ========================================================= */

/* Wide desktop remains close to v1.10.26. */
@media screen and (min-width:1661px) {
  .prs-hero > .prs-hero-grid {
    grid-template-columns:minmax(520px, 46%) minmax(0, 54%) !important;
  }
}

/* Start reallocating width to the copy earlier as the browser narrows. */
@media screen and (min-width:1441px) and (max-width:1660px) {
  .prs-hero > .prs-hero-grid {
    grid-template-columns:minmax(560px, 49%) minmax(0, 51%) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    max-width:720px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    right:-34px !important;
    transform:translateX(6px) !important;
  }
}

/* Stronger reallocation before the stacked breakpoint. */
@media screen and (min-width:1281px) and (max-width:1440px) {
  .prs-hero > .prs-hero-grid {
    width:min(calc(100% - 42px), 1480px) !important;
    max-width:1480px !important;
    grid-template-columns:minmax(570px, 52%) minmax(0, 48%) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    max-width:740px !important;
    padding-right:18px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    right:-58px !important;
    transform:translateX(18px) !important;
  }

  /* Keep the CTA pinned to the copy edge and fully inside the hero. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    width:100% !important;
    max-width:100% !important;
    overflow:visible !important;
  }
}

/* =========================================================
   v1.10.29 TEST: HERO HEIGHT FOLLOWS COPY SIDE

   Based on v1.10.27.
   Desktop hero height is now determined by the left copy + CTA,
   not by the Phoenix artwork frame.
   Artwork is absolute and can overflow vertically without increasing
   the hero section height.
   ========================================================= */
@media screen and (min-width:1281px) {

  .prs-hero {
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  .prs-hero > .prs-hero-grid {
    height:auto !important;
    min-height:0 !important;
    align-items:start !important;
    overflow:visible !important;
  }

  /*
   * The left side is the only in-flow height reference.
   * Its padding provides the top/header clearance and the desired
   * bottom breathing room below the CTA.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    position:relative !important;
    display:block !important;

    align-self:start !important;
    justify-self:start !important;

    margin:0 !important;
    padding:
      clamp(58px, 4.8vw, 76px)
      0
      clamp(34px, 2.6vw, 46px)
      0 !important;

    transform:none !important;
    box-sizing:border-box !important;
    z-index:20 !important;
  }

  /*
   * The artwork is removed from document-flow height calculation.
   * It still anchors to the bottom of the hero and can extend upward
   * behind the compact header/navigation.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    position:absolute !important;
    top:clamp(-118px, -7vw, -84px) !important;
    bottom:0 !important;
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
    z-index:10 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art > .prs-hero-composition {
    top:0 !important;
    bottom:0 !important;
    height:100% !important;
  }

  /* Keep the CTA in normal flow so it can never be cut off by hero height. */
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    position:relative !important;
    margin-bottom:0 !important;
  }
}

/* =========================================================
   v1.10.30 LEFT / RIGHT FADE APPLIES TO BOTH HERO LAYERS

   Home Settings:
     --prs-left-fade
     --prs-right-fade

   These controls now mask:
   - the background layer
   - the static Phoenix foreground layer
   - the animated/deformation canvas, so the animated Phoenix matches
   - the single-image fallback where used
   ========================================================= */

.prs-hero-art > .prs-hero-bg,
.prs-hero-art > .prs-phoenix-source,
.prs-hero-art > .prs-hero-canvas,
.prs-hero-art > .prs-single-source {
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  -webkit-mask-repeat:no-repeat !important;
  mask-repeat:no-repeat !important;
  -webkit-mask-size:100% 100% !important;
  mask-size:100% 100% !important;
  -webkit-mask-position:center center !important;
  mask-position:center center !important;
}

/*
 * Some older layered-hero rules explicitly reset masks to none.
 * Keep this final override more specific so Home Settings remains authoritative.
 */
.prs-hero .prs-hero-art.prs-layered-hero > .prs-hero-bg,
.prs-hero .prs-hero-art.prs-layered-hero > .prs-phoenix-source,
.prs-hero .prs-hero-art.prs-layered-hero > .prs-hero-canvas {
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;
}

/* =========================================================
   v1.10.31 FADE THE ACTUAL LAYERED BACKGROUND ELEMENT

   In layered mode the real .prs-hero-bg and .prs-phoenix-source
   live inside .prs-hero-composition, not directly under .prs-hero-art.
   Apply the Home Settings fade to those real elements.
   ========================================================= */

.prs-hero .prs-hero-art .prs-hero-composition > .prs-hero-bg,
.prs-hero .prs-hero-art .prs-hero-composition > .prs-phoenix-source,
.prs-hero .prs-hero-art .prs-hero-composition > .prs-hero-canvas,
.prs-hero .prs-hero-art .prs-hero-composition > .prs-single-source,
.prs-hero .prs-hero-art > .prs-hero-bg,
.prs-hero .prs-hero-art > .prs-phoenix-source,
.prs-hero .prs-hero-art > .prs-hero-canvas,
.prs-hero .prs-hero-art > .prs-single-source {
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  mask-image: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  -webkit-mask-repeat:no-repeat !important;
  mask-repeat:no-repeat !important;
  -webkit-mask-size:100% 100% !important;
  mask-size:100% 100% !important;
  -webkit-mask-position:center center !important;
  mask-position:center center !important;
}

/* Defeat any older mask:none resets with an even more specific final rule. */
.prs-hero .prs-hero-art.prs-layered-hero .prs-hero-composition > img.prs-hero-bg,
.prs-hero .prs-hero-art.prs-layered-hero .prs-hero-composition > img.prs-phoenix-source {
  -webkit-mask: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;

  mask: linear-gradient(
    to right,
    transparent 0%,
    #000 var(--prs-left-fade, 23%),
    #000 calc(100% - var(--prs-right-fade, 20%)),
    transparent 100%
  ) !important;
}

/* =========================================================
   v1.10.32 MOBILE / STACKED SITEWIDE CENTRING AUDIT

   Applies at the site's mobile/stacked width to ALL pages:
   - Home
   - About
   - Contact
   - footer
   - contact option/choice items and their internal text
   Wide desktop is unchanged.
   ========================================================= */
@media screen and (max-width:1280px) {

  /* ---------- Global page typography ---------- */
  main,
  .prs-main,
  .prs-page,
  .prs-page-content,
  .prs-content,
  .prs-content-inner,
  .prs-container,
  .prs-wrap,
  .prs-section,
  .prs-section-inner,
  .prs-section-header,
  .prs-about,
  .prs-about-inner,
  .prs-contact,
  .prs-contact-inner,
  .prs-contact-content {
    text-align:center !important;
  }

  main h1,
  main h2,
  main h3,
  main h4,
  main h5,
  main h6,
  main p,
  main .prs-kicker,
  main .prs-section-kicker,
  main .prs-page-title,
  main .prs-page-subtitle,
  main .prs-section-title,
  main .prs-lead,
  main .prs-intro,
  main .prs-description,
  .prs-about h1,
  .prs-about h2,
  .prs-about h3,
  .prs-about h4,
  .prs-about p,
  .prs-contact h1,
  .prs-contact h2,
  .prs-contact h3,
  .prs-contact h4,
  .prs-contact p {
    text-align:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* ---------- Flex/grid wrappers ---------- */
  .prs-section-header,
  .prs-actions,
  .prs-buttons,
  .prs-button-row,
  .prs-cta,
  .prs-cta-actions,
  .prs-contact-actions,
  .prs-contact-options,
  .prs-contact-methods,
  .prs-contact-grid,
  .prs-about-grid,
  .prs-card-grid,
  .prs-services-grid,
  .prs-feature-grid,
  .wp-block-buttons {
    justify-content:center !important;
    justify-items:center !important;
    align-items:center !important;
    text-align:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* ---------- Cards / About blocks ---------- */
  .prs-card,
  .prs-service-card,
  .prs-feature,
  .prs-feature-card,
  .prs-about-card,
  .prs-about-block,
  .prs-contact-card,
  .prs-contact-option,
  .prs-contact-method {
    text-align:center !important;
  }

  .prs-card > *,
  .prs-service-card > *,
  .prs-feature > *,
  .prs-feature-card > *,
  .prs-about-card > *,
  .prs-about-block > *,
  .prs-contact-card > *,
  .prs-contact-option > *,
  .prs-contact-method > * {
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  /* ---------- Contact page options / selectable items ---------- */
  .prs-contact-options label,
  .prs-contact-option label,
  .prs-contact-choice,
  .prs-contact-choice label,
  .prs-option,
  .prs-option label,
  .prs-choice,
  .prs-choice label,
  .prs-radio-option,
  .prs-radio-option label,
  .prs-checkbox-option,
  .prs-checkbox-option label,
  .prs-form-option,
  .prs-form-option label {
    text-align:center !important;
    justify-content:center !important;
    align-items:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-contact-options span,
  .prs-contact-option span,
  .prs-contact-choice span,
  .prs-option span,
  .prs-choice span,
  .prs-radio-option span,
  .prs-checkbox-option span,
  .prs-form-option span {
    text-align:center !important;
  }

  /* Native form groups and field captions */
  .prs-form,
  .prs-contact-form,
  .prs-form-row,
  .prs-form-group,
  .prs-field,
  .prs-contact-field {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-form label,
  .prs-contact-form label,
  .prs-form legend,
  .prs-contact-form legend,
  .prs-form .description,
  .prs-contact-form .description,
  .prs-form .help,
  .prs-contact-form .help {
    text-align:center !important;
  }

  fieldset {
    text-align:center !important;
  }

  legend {
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  /* Keep text-entry controls usable; centre their placeholder/entered text too. */
  .prs-contact-form input:not([type="checkbox"]):not([type="radio"]),
  .prs-contact-form textarea,
  .prs-contact-form select,
  .prs-form input:not([type="checkbox"]):not([type="radio"]),
  .prs-form textarea,
  .prs-form select {
    text-align:center !important;
    text-align-last:center !important;
  }

  /* Checkboxes/radios stay beside their centered captions. */
  .prs-contact-form input[type="checkbox"],
  .prs-contact-form input[type="radio"],
  .prs-form input[type="checkbox"],
  .prs-form input[type="radio"] {
    flex:0 0 auto !important;
  }

  /* ---------- Buttons ---------- */
  .prs-button,
  .prs-contact-form button,
  .prs-form button,
  .wp-block-button,
  .wp-block-button__link {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* ---------- Images / icons ---------- */
  main img,
  .prs-page img,
  .prs-about img,
  .prs-contact img,
  main svg,
  .prs-about svg,
  .prs-contact svg {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* ---------- Lists and contact links ---------- */
  .prs-links,
  .prs-social-links,
  .prs-contact-links,
  .prs-about-links {
    justify-content:center !important;
    text-align:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:0 !important;
  }

  /* ---------- Footer, every page ---------- */
  footer,
  footer *,
  .prs-footer,
  .prs-footer * {
    text-align:center !important;
  }

  .prs-footer-inner,
  .prs-footer-content,
  .prs-footer-brand,
  .prs-footer-nav,
  .prs-footer-links,
  .prs-footer-contact,
  .prs-footer-bottom,
  footer nav,
  footer ul {
    justify-content:center !important;
    justify-items:center !important;
    align-items:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  footer ul,
  .prs-footer ul {
    padding-left:0 !important;
  }

  footer img,
  .prs-footer img,
  .prs-footer-logo {
    display:block !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* Actual small phones get the same centring, with no inherited left-align rule. */
@media screen and (max-width:760px) {
  body main,
  body main *,
  .prs-about,
  .prs-about *,
  .prs-contact,
  .prs-contact * {
    text-align:center;
  }

  /* Do not let generic centring alter the actual control glyph itself. */
  input[type="checkbox"],
  input[type="radio"] {
    text-align:initial !important;
  }
}

/* Exact About + Contact template classes confirmed in plugin markup. */
@media screen and (max-width:1280px) {

  .prs-about-hero,
  .prs-about-hero-inner,
  .prs-about-main,
  .prs-about-grid,
  .prs-about-strip,
  .prs-contact-page,
  .prs-contact-page-inner,
  .prs-contact-page-shell,
  .prs-contact-page-hero,
  .prs-contact-page-heading,
  .prs-contact-page-card,
  .prs-contact-page-intro,
  .prs-contact-template,
  .prs-contact-site,
  .prs-form-grid,
  .prs-form-status {
    text-align:center !important;
  }

  .prs-about-hero h1,
  .prs-about-hero h2,
  .prs-about-hero h3,
  .prs-about-main h1,
  .prs-about-main h2,
  .prs-about-main h3,
  .prs-about-main h4,
  .prs-about-main p,
  .prs-about-strip h1,
  .prs-about-strip h2,
  .prs-about-strip h3,
  .prs-about-strip p,
  .prs-contact-page h1,
  .prs-contact-page h2,
  .prs-contact-page h3,
  .prs-contact-page h4,
  .prs-contact-page p,
  .prs-contact-page-heading h1,
  .prs-contact-page-heading h2,
  .prs-contact-page-heading p,
  .prs-contact-page-intro,
  .prs-form-status {
    text-align:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .prs-about-grid,
  .prs-form-grid,
  .prs-contact-page-inner,
  .prs-contact-page-hero,
  .prs-contact-page-card {
    justify-items:center !important;
    justify-content:center !important;
    align-items:center !important;
  }

  .prs-contact-form label {
    display:block !important;
    width:100% !important;
    text-align:center !important;
  }

  .prs-contact-form input,
  .prs-contact-form textarea,
  .prs-contact-form select {
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /*
   * Contact-page dropdown: centre both the selected value and the menu
   * option text where the browser permits option text alignment.
   */
  .prs-contact-form select,
  .prs-contact-form select option,
  #prs-contact-page-form select,
  #prs-contact-page-form select option {
    text-align:center !important;
    text-align-last:center !important;
  }

  #prs-contact-page-form button,
  #prs-contact-page-form .prs-button {
    display:flex !important;
    justify-content:center !important;
    align-items:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}


/* =========================================================
   v1.10.33 CONSISTENT PHONE HERO + WIDE DESKTOP COMPOSITION CENTRING

   1. Phones in landscape no longer revert to the old two-column hero.
      They use the same stacked composition as portrait/mobile.
   2. On genuinely wide desktop displays, the complete hero composition
      is shifted slightly right so its visual centre better matches the
      centred content sections above/below it.
   ========================================================= */

/* Kill the legacy short-landscape two-column exception. */
@media screen and (max-width:950px) and (max-height:500px) and (orientation:landscape) {
  .prs-hero > .prs-hero-grid {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    grid-template-rows:auto auto !important;
    width:100% !important;
    max-width:100% !important;
    column-gap:0 !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    grid-column:1 !important;
    grid-row:1 !important;
    width:100% !important;
    max-width:100% !important;
    padding-left:clamp(18px,5vw,34px) !important;
    padding-right:clamp(18px,5vw,34px) !important;
    text-align:center !important;
    justify-self:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    grid-column:1 !important;
    grid-row:2 !important;
    position:relative !important;
    inset:auto !important;
    right:auto !important;
    transform:none !important;
    width:100% !important;
    max-width:100% !important;
    justify-self:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > h1,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-lead,
  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-hero-body {
    margin-left:auto !important;
    margin-right:auto !important;
    text-align:center !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy > .prs-actions {
    justify-content:center !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/*
 * Wide desktop only.
 * Move the WHOLE hero grid, not just the Phoenix, so the relationship
 * between copy and artwork remains unchanged.
 */
@media screen and (min-width:1661px) {
  .prs-hero > .prs-hero-grid {
    position:relative !important;
    left:clamp(18px, 1.7vw, 34px) !important;
  }
}

/* Slightly stronger correction on very wide displays. */
@media screen and (min-width:1900px) {
  .prs-hero > .prs-hero-grid {
    left:clamp(28px, 2vw, 44px) !important;
  }
}

/* =========================================================
   v1.10.34 TIGHTER WIDE HERO + FURTHER RIGHT COMPOSITION

   Wide desktop only:
   - Pull artwork slightly LEFT toward the copy to reduce the gap.
   - Shift the WHOLE hero composition farther RIGHT so the copy aligns
     more closely with the centred content sections below.
   - Mid/narrow desktop and stacked/mobile layouts remain unchanged.
   ========================================================= */

@media screen and (min-width:1661px) {

  /* Shift the complete text + artwork composition right. */
  .prs-hero > .prs-hero-grid {
    position:relative !important;
    left:clamp(42px, 2.7vw, 68px) !important;
  }

  /*
   * Bring the Phoenix/background slightly back toward the copy.
   * This alters only the relationship inside the composition,
   * not the copy's own alignment.
   */
  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(clamp(-92px, -4.8vw, -62px)) !important;
  }
}

/* On very wide displays keep the composition visually tied together. */
@media screen and (min-width:1900px) {
  .prs-hero > .prs-hero-grid {
    left:clamp(58px, 3.2vw, 86px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-104px) !important;
  }
}

/* =========================================================
   v1.10.35 WIDE DESKTOP COPY ALIGNMENT

   Keep the v1.10.34 overall hero position and Phoenix relationship.
   Move only the complete copy block to the right so:
   - its left edge aligns more closely with the content sections below
   - the copy sits closer to the Phoenix
   - CTA remains attached to the same copy alignment
   ========================================================= */

@media screen and (min-width:1661px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(clamp(46px, 3.1vw, 72px)) !important;
  }
}

/* Very wide screens need a little more correction. */
@media screen and (min-width:1900px) {
  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(clamp(62px, 3.6vw, 88px)) !important;
  }
}

/* =========================================================
   v1.10.36 BALANCED ULTRA-WIDE HERO

   v1.10.35 worked well at ordinary wide desktop widths, but its
   1900px+ correction was too aggressive.

   Keep the 1661px+ alignment improvement, but cap the movement on
   ultra-wide displays so the copy/image relationship stops drifting.
   ========================================================= */

/* Normal wide desktop: keep the useful v1.10.35 correction, slightly capped. */
@media screen and (min-width:1661px) and (max-width:1899px) {
  .prs-hero > .prs-hero-grid {
    left:clamp(38px, 2.4vw, 58px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(clamp(38px, 2.7vw, 58px)) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(clamp(-88px, -4.5vw, -60px)) !important;
  }
}

/* Ultra-wide: stop increasing the rightward drift. */
@media screen and (min-width:1900px) {
  .prs-hero > .prs-hero-grid {
    left:54px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(54px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-82px) !important;
  }
}

/* Extremely wide displays: hold the same visual geometry. */
@media screen and (min-width:2400px) {
  .prs-hero > .prs-hero-grid {
    left:54px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(54px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-82px) !important;
  }
}

/* =========================================================
   v1.10.37 SMOOTH MID-WIDTH HERO TRANSITION

   Fixes the "split apart" stage by keeping copy and artwork movement
   coordinated from narrow desktop through wide desktop.
   ========================================================= */

/* Narrow desktop: already compact, keep artwork reasonably close. */
@media screen and (min-width:1281px) and (max-width:1450px) {
  .prs-hero > .prs-hero-grid {
    left:10px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(16px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-34px) !important;
  }
}

/* Mid desktop: bridge smoothly between narrow and wide states. */
@media screen and (min-width:1451px) and (max-width:1660px) {
  .prs-hero > .prs-hero-grid {
    left:clamp(16px, 1.4vw, 30px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(clamp(22px, 1.8vw, 36px)) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(clamp(-56px, -3.2vw, -42px)) !important;
  }
}

/* Wide desktop: continue the same coordinated movement. */
@media screen and (min-width:1661px) and (max-width:1899px) {
  .prs-hero > .prs-hero-grid {
    left:clamp(30px, 2vw, 48px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(clamp(32px, 2.2vw, 46px)) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(clamp(-72px, -4vw, -56px)) !important;
  }
}

/* Ultra-wide: cap the relationship so it does not spread again. */
@media screen and (min-width:1900px) {
  .prs-hero > .prs-hero-grid {
    left:46px !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-copy {
    transform:translateX(44px) !important;
  }

  .prs-hero > .prs-hero-grid > .prs-hero-art {
    transform:translateX(-70px) !important;
  }
}
