/* ==========================================================================
   Simplicity Passerelle — enhancement layer
   --------------------------------------------------------------------------
   Additive only. Every value is derived from the existing Salient theme
   (navy #004372, blue #0076bd, Josefin Sans) so new sections read as the same
   site. Nothing overrides theme selectors — all rules are namespaced .pp-*.

   Motion policy: everything animated here is driven by a single
   IntersectionObserver-backed reveal system with per-element stagger, plus a
   rAF scroll loop for parallax and progress. Every effect has a
   prefers-reduced-motion off-switch at the bottom of this file, and every
   animated element is legible with JavaScript disabled (no opacity:0 without
   a .pp-js guard on <html>).
   ========================================================================== */

:root {
  --pp-navy: #004372;
  --pp-navy-deep: #00273f;
  --pp-navy-mid: #013a63;
  --pp-blue: #0076bd;
  --pp-blue-lift: #2f97d8;
  --pp-ink: #16283a;
  --pp-slate: #5d7183;
  --pp-line: #dde5ec;
  --pp-cloud: #f4f7fa;
  --pp-shell: 1200px;
  --pp-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --pp-ease-io: cubic-bezier(0.65, 0, 0.35, 1);
}

.pp {
  font-family: "Josefin Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--pp-ink);
  -webkit-font-smoothing: antialiased;
  position: relative;
}

.pp * { box-sizing: border-box; }

.pp-shell {
  max-width: var(--pp-shell);
  margin: 0 auto;
  padding: 0 28px;
  position: relative;
  z-index: 2;
}

.pp-section { padding: clamp(64px, 8vw, 116px) 0; position: relative; overflow: hidden; }
.pp-section--tight { padding: clamp(48px, 5vw, 72px) 0; }
.pp-section--cloud { background: var(--pp-cloud); }

.pp-section--navy {
  background: var(--pp-navy-deep);
  color: #fff;
}

/* Slow-drifting aurora behind navy sections. Two offset radial gradients on
   long, prime-ish durations so the loop never visibly repeats. */
.pp-section--navy::before {
  content: "";
  position: absolute;
  inset: -40%;
  background:
    radial-gradient(38% 44% at 18% 26%, rgba(0, 118, 189, 0.42) 0%, transparent 62%),
    radial-gradient(34% 40% at 82% 72%, rgba(47, 151, 216, 0.28) 0%, transparent 60%);
  animation: pp-aurora 31s ease-in-out infinite alternate;
  pointer-events: none;
  z-index: 0;
}

/* Fine grain over the navy so large flat fields don't band on wide displays. */
.pp-section--navy::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.32'/%3E%3C/svg%3E");
  opacity: 0.05;
  pointer-events: none;
  z-index: 1;
}

@keyframes pp-aurora {
  0%   { transform: translate3d(-3%, -2%, 0) scale(1); }
  50%  { transform: translate3d(2%, 3%, 0) scale(1.09); }
  100% { transform: translate3d(4%, -3%, 0) scale(1.03); }
}

.pp-section--navy .pp-eyebrow { color: var(--pp-blue-lift); }
.pp-section--navy .pp-lede,
.pp-section--navy .pp-body { color: rgba(255, 255, 255, 0.8); }
.pp-section--navy .pp-h2 { color: #fff; }
.pp-section--navy .pp-rule { background: var(--pp-blue-lift); }

/* ---- Scroll progress ------------------------------------------------------ */

.pp-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 100%;
  transform: scaleX(0);
  transform-origin: 0 50%;
  background: linear-gradient(90deg, var(--pp-blue), var(--pp-navy));
  z-index: 9999;
  pointer-events: none;
}

/* ---- Type ----------------------------------------------------------------- */

.pp-eyebrow {
  margin: 0 0 18px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--pp-blue);
}

.pp-h2 {
  margin: 0;
  font-size: clamp(27px, 3.4vw, 44px);
  font-weight: 300;
  line-height: 1.16;
  letter-spacing: 0.015em;
  text-transform: uppercase;
  color: var(--pp-navy);
}

.pp-h3 {
  margin: 0 0 10px;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pp-navy);
}

.pp-lede {
  margin: 22px 0 0;
  max-width: 66ch;
  font-size: clamp(16px, 1.35vw, 19px);
  font-weight: 300;
  line-height: 1.72;
  color: var(--pp-slate);
}

.pp-body {
  margin: 0;
  font-size: 15px;
  font-weight: 300;
  line-height: 1.75;
  color: var(--pp-slate);
}

.pp-rule {
  width: 0;
  height: 2px;
  margin: 0 0 26px;
  background: var(--pp-blue);
  border: 0;
  transition: width 0.9s var(--pp-ease) 0.1s;
}

.pp-is-visible .pp-rule,
.pp-rule.pp-is-visible { width: 54px; }

/* ---- Word-level headline reveal ------------------------------------------- */
/* Split by pp-next.js. Words rise behind a clipping mask, staggered, so the
   headline assembles rather than fading in as one block. */

.pp-word {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
}

.pp-word > span {
  display: inline-block;
  transform: translateY(105%);
  transition: transform 0.82s var(--pp-ease);
  transition-delay: var(--pp-d, 0ms);
  will-change: transform;
}

.pp-is-visible .pp-word > span { transform: none; }

/* ---- Credibility strip ---------------------------------------------------- */

.pp-marks {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(255, 255, 255, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.14);
}

.pp-mark {
  padding: 34px 24px;
  background: rgba(0, 39, 63, 0.72);
  text-align: center;
  position: relative;
  overflow: hidden;
}

.pp-mark::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0, 118, 189, 0.16), transparent 70%);
  opacity: 0;
  transition: opacity 0.45s var(--pp-ease);
}

.pp-mark:hover::after { opacity: 1; }

.pp-mark__value {
  display: block;
  /* Values are words, not figures, so they need room to wrap rather than the
     tight single-line treatment a number would get. */
  font-size: clamp(20px, 2.1vw, 27px);
  font-weight: 200;
  line-height: 1.22;
  letter-spacing: 0.01em;
  color: #fff;
  text-wrap: balance;
}

.pp-mark__label {
  display: block;
  margin-top: 12px;
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.62);
}

/* ---- Capability ticker ----------------------------------------------------- */

.pp-ticker {
  overflow: hidden;
  border-top: 1px solid var(--pp-line);
  border-bottom: 1px solid var(--pp-line);
  padding: 20px 0;
  background: #fff;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}

.pp-ticker__track {
  display: flex;
  width: max-content;
  animation: pp-marquee 46s linear infinite;
}

.pp-ticker:hover .pp-ticker__track { animation-play-state: paused; }

.pp-ticker__item {
  display: inline-flex;
  align-items: center;
  gap: 26px;
  padding: 0 26px;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--pp-slate);
  white-space: nowrap;
}

.pp-ticker__item::after {
  content: "";
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--pp-blue);
  opacity: 0.55;
}

@keyframes pp-marquee {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}

/* ---- Doors ----------------------------------------------------------------- */

.pp-doors {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px;
  margin-top: 48px;
}

.pp-door {
  display: flex;
  flex-direction: column;
  padding: 40px 36px;
  background: #fff;
  border: 1px solid var(--pp-line);
  position: relative;
  overflow: hidden;
  transition: transform 0.5s var(--pp-ease), box-shadow 0.5s var(--pp-ease), border-color 0.4s ease;
}

/* Top accent draws in on hover rather than sitting there statically. */
.pp-door::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: 3px;
  width: 100%;
  background: linear-gradient(90deg, var(--pp-blue), var(--pp-navy));
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform 0.62s var(--pp-ease);
}

/* Cursor-tracked spotlight; --pp-mx/--pp-my are written by pp-next.js. */
.pp-door::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(420px circle at var(--pp-mx, 50%) var(--pp-my, 0%), rgba(0, 118, 189, 0.09), transparent 62%);
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}

.pp-door:hover {
  transform: translateY(-6px);
  border-color: rgba(0, 118, 189, 0.35);
  box-shadow: 0 26px 60px rgba(0, 67, 114, 0.14);
}

.pp-door:hover::before { transform: none; }
.pp-door:hover::after { opacity: 1; }

.pp-door__for {
  margin: 0 0 14px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--pp-slate);
}

.pp-door__list { margin: 22px 0 30px; padding: 0; list-style: none; }

.pp-door__list li {
  position: relative;
  padding: 0 0 0 22px;
  margin-bottom: 11px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--pp-slate);
}

.pp-door__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 9px;
  width: 0;
  height: 1px;
  background: var(--pp-blue);
  transition: width 0.5s var(--pp-ease);
  transition-delay: var(--pp-d, 0ms);
}

.pp-is-visible .pp-door__list li::before { width: 10px; }

.pp-door__cta { margin-top: auto; }

/* ---- Pillars ---------------------------------------------------------------- */

.pp-pillars {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 30px;
  margin-top: 52px;
}

.pp-pillar {
  border-top: 1px solid var(--pp-line);
  padding-top: 24px;
  position: relative;
}

.pp-pillar::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  height: 2px;
  width: 0;
  background: var(--pp-blue);
  transition: width 0.85s var(--pp-ease);
  transition-delay: var(--pp-d, 0ms);
}

.pp-is-visible .pp-pillar::before { width: 100%; }

.pp-section--navy .pp-pillar { border-top-color: rgba(255, 255, 255, 0.2); }

.pp-pillar__num {
  display: block;
  margin-bottom: 14px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.2em;
  color: var(--pp-blue);
}

.pp-section--navy .pp-pillar__num { color: var(--pp-blue-lift); }

/* ---- Pinned process --------------------------------------------------------- */
/* The stage list sticks while the reader scrolls the descriptions past it, so
   the four stages read as one continuous process rather than four cards. */

.pp-process { display: grid; grid-template-columns: 340px 1fr; gap: 64px; margin-top: 56px; }

.pp-process__rail { position: sticky; top: 130px; align-self: start; }

.pp-process__nav { margin: 0; padding: 0; list-style: none; }

.pp-process__nav li {
  padding: 15px 0 15px 22px;
  border-left: 2px solid rgba(255, 255, 255, 0.16);
  font-size: 15px;
  font-weight: 300;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.42);
  transition: color 0.4s ease, border-color 0.4s ease, padding-left 0.4s var(--pp-ease);
}

.pp-process__nav li.pp-active {
  color: #fff;
  border-left-color: var(--pp-blue-lift);
  padding-left: 30px;
}

.pp-stage { padding: 8px 0 76px; }
.pp-stage:last-child { padding-bottom: 0; }

.pp-stage__num {
  display: block;
  margin-bottom: 14px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.24em;
  color: var(--pp-blue-lift);
}

.pp-stage .pp-h3 { color: #fff; font-size: 20px; }
.pp-stage .pp-body { max-width: 56ch; }

/* ---- Split + report preview -------------------------------------------------- */

.pp-split { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }

.pp-preview {
  border: 1px solid var(--pp-line);
  background: #fff;
  box-shadow: 0 30px 70px rgba(0, 67, 114, 0.13);
  transform: perspective(1400px) rotateY(-7deg) rotateX(2deg);
  transition: transform 0.8s var(--pp-ease);
}

.pp-preview:hover { transform: perspective(1400px) rotateY(0deg) rotateX(0deg); }

.pp-preview__bar { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: var(--pp-navy); }
.pp-preview__dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255, 255, 255, 0.35); }

.pp-preview__title {
  margin-left: 10px;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.8);
}

.pp-preview__body { padding: 26px 24px 30px; }

.pp-preview__row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  padding: 13px 0;
  border-bottom: 1px solid var(--pp-line);
  font-size: 13px;
  font-weight: 300;
  color: var(--pp-slate);
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity 0.55s var(--pp-ease), transform 0.55s var(--pp-ease);
  transition-delay: var(--pp-d, 0ms);
}

.pp-is-visible .pp-preview__row { opacity: 1; transform: none; }
.pp-preview__row:last-of-type { border-bottom: 0; }
.pp-preview__row strong { font-weight: 600; color: var(--pp-navy); }

.pp-preview__meter { height: 4px; margin-top: 18px; background: var(--pp-cloud); overflow: hidden; }

.pp-preview__meter span {
  display: block;
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, var(--pp-blue), var(--pp-navy));
  transition: width 1.7s var(--pp-ease) 0.5s;
}

.pp-is-visible .pp-preview__meter span { width: 78%; }

/* ---- Buttons ------------------------------------------------------------------ */

.pp-btn {
  display: inline-block;
  position: relative;
  padding: 15px 32px;
  border: 1px solid var(--pp-navy);
  background: transparent;
  color: #fff !important;
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-decoration: none !important;
  cursor: pointer;
  overflow: hidden;
  isolation: isolate;
  transition: color 0.35s var(--pp-ease), border-color 0.35s ease, transform 0.35s var(--pp-ease);
}

/* Fill wipes in from the bottom on hover instead of a flat colour swap. */
.pp-btn::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--pp-navy);
  transform: translateY(0);
  transition: transform 0.45s var(--pp-ease), background 0.35s ease;
  z-index: -1;
}

.pp-btn:hover { border-color: var(--pp-blue); transform: translateY(-2px); }
.pp-btn:hover::before { background: var(--pp-blue); }
.pp-btn:active { transform: translateY(0); }

.pp-btn--ghost { color: var(--pp-navy) !important; }
.pp-btn--ghost::before { transform: translateY(101%); }
.pp-btn--ghost:hover { color: #fff !important; }
.pp-btn--ghost:hover::before { transform: translateY(0); background: var(--pp-navy); }

.pp-btn--light { border-color: #fff; color: var(--pp-navy) !important; }
.pp-btn--light::before { background: #fff; }
.pp-btn--light:hover { color: #fff !important; border-color: #fff; }
.pp-btn--light:hover::before { transform: translateY(101%); }

.pp-btn[disabled] { opacity: 0.55; cursor: not-allowed; transform: none; }

/* ---- Form ---------------------------------------------------------------------- */

.pp-form { margin-top: 42px; }
.pp-form__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px 26px; }

.pp-field { display: flex; flex-direction: column; }
.pp-field--full { grid-column: 1 / -1; }

.pp-field > label {
  margin-bottom: 8px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--pp-slate);
}

.pp-field > label .pp-req { color: var(--pp-blue); }

.pp-field input,
.pp-field select,
.pp-field textarea {
  width: 100%;
  padding: 14px;
  border: 1px solid var(--pp-line);
  border-radius: 0;
  background: #fff;
  color: var(--pp-ink);
  font-family: inherit;
  /* 16px minimum on touch — anything smaller makes iOS Safari zoom the page
     on focus, which throws the layout and feels broken on a phone. */
  font-size: 16px;
  font-weight: 300;
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
  appearance: none;
}

.pp-field select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%235d7183' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 38px;
}

.pp-field input:focus,
.pp-field select:focus,
.pp-field textarea:focus {
  outline: none;
  border-color: var(--pp-blue);
  box-shadow: 0 0 0 3px rgba(0, 118, 189, 0.13);
}

.pp-field textarea { min-height: 132px; resize: vertical; line-height: 1.6; }
.pp-field__hint { margin: 7px 0 0; font-size: 12px; font-weight: 300; color: var(--pp-slate); }

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

.pp-form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; margin-top: 30px; }
.pp-form__note { margin: 0; max-width: 46ch; font-size: 12px; font-weight: 300; line-height: 1.6; color: var(--pp-slate); }

.pp-alert {
  margin-top: 22px;
  padding: 16px 18px;
  border-left: 3px solid var(--pp-blue);
  background: var(--pp-cloud);
  font-size: 14px;
  font-weight: 300;
  color: var(--pp-ink);
}

.pp-alert--error { border-left-color: #a33; background: #fdf4f4; }
.pp-alert[hidden] { display: none; }

.pp-success {
  padding: 46px 40px;
  border: 1px solid var(--pp-line);
  border-top: 3px solid var(--pp-blue);
  background: #fff;
  animation: pp-pop 0.6s var(--pp-ease);
}

@keyframes pp-pop {
  from { opacity: 0; transform: translateY(14px) scale(0.985); }
  to   { opacity: 1; transform: none; }
}

/* ---- Modal ---------------------------------------------------------------------- */

.pp-modal {
  position: fixed;
  inset: 0;
  z-index: 100000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.pp-modal[hidden] { display: none; }

.pp-modal__scrim {
  position: absolute;
  inset: 0;
  background: rgba(8, 24, 38, 0.62);
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
  opacity: 0;
  transition: opacity 0.35s ease;
}

.pp-modal.pp-modal--open .pp-modal__scrim { opacity: 1; }

.pp-modal__panel {
  position: relative;
  width: 100%;
  max-width: 940px;
  max-height: calc(100dvh - 40px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  background: #fff;
  box-shadow: 0 40px 100px rgba(0, 30, 52, 0.4);
  opacity: 0;
  transform: translateY(22px) scale(0.985);
  transition: opacity 0.42s var(--pp-ease), transform 0.42s var(--pp-ease);
}

.pp-modal.pp-modal--open .pp-modal__panel { opacity: 1; transform: none; }
.pp-modal__panel--narrow { max-width: 460px; }

.pp-modal__close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 3;
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border: 0;
  background: transparent;
  color: var(--pp-slate);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  border-radius: 50%;
  transition: background 0.25s ease, color 0.25s ease, transform 0.25s ease;
}

.pp-modal__close:hover { background: var(--pp-cloud); color: var(--pp-navy); transform: rotate(90deg); }
.pp-modal__body { padding: 44px 44px 40px; }
.pp-modal__body .pp-form { margin-top: 26px; }

/* ---- Client sign-in (mirrors the Portal login split) ------------------------------ */

.pp-signin { display: grid; grid-template-columns: 1fr 1fr; min-height: 520px; }

.pp-signin__aside {
  position: relative;
  overflow: hidden;
  padding: 44px 38px;
  background: var(--pp-navy-deep);
  color: #fff;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.pp-signin__aside::before {
  content: "";
  position: absolute;
  inset: -40%;
  background:
    radial-gradient(40% 46% at 22% 24%, rgba(0, 118, 189, 0.5) 0%, transparent 62%),
    radial-gradient(36% 42% at 78% 76%, rgba(47, 151, 216, 0.3) 0%, transparent 60%);
  animation: pp-aurora 29s ease-in-out infinite alternate;
}

.pp-signin__aside > * { position: relative; z-index: 1; }

.pp-signin__brand {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.62);
}

.pp-signin__title {
  margin: 26px 0 12px;
  font-size: clamp(26px, 3vw, 34px);
  font-weight: 300;
  line-height: 1.14;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: #fff;
}

.pp-signin__blurb { margin: 0; font-size: 14px; font-weight: 300; line-height: 1.7; color: rgba(255, 255, 255, 0.76); }

.pp-signin__pill {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: 22px;
  padding: 7px 14px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.14);
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.82);
}

.pp-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #48d597;
  box-shadow: 0 0 0 0 rgba(72, 213, 151, 0.65);
  animation: pp-pulse 2.4s ease-out infinite;
}

@keyframes pp-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(72, 213, 151, 0.6); }
  70%  { box-shadow: 0 0 0 9px rgba(72, 213, 151, 0); }
  100% { box-shadow: 0 0 0 0 rgba(72, 213, 151, 0); }
}

.pp-signin__list { margin: 26px 0 0; padding: 0; list-style: none; }

.pp-signin__list li {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 13px;
  margin-bottom: 8px;
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  font-size: 13px;
  font-weight: 300;
  color: rgba(255, 255, 255, 0.9);
}

.pp-signin__list svg { flex: 0 0 auto; color: var(--pp-blue-lift); }

.pp-signin__main {
  padding: 52px 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  background: var(--pp-cloud);
}

.pp-signin__heading {
  margin: 0 0 10px;
  font-size: 24px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--pp-navy);
}

.pp-signin__sub { margin: 0 0 26px; font-size: 14px; font-weight: 300; line-height: 1.65; color: var(--pp-slate); }
.pp-signin__main .pp-field > label { text-align: left; }

.pp-signin__lock {
  margin-top: 24px;
  padding: 14px 16px;
  border: 1px solid var(--pp-line);
  background: #fff;
  font-size: 12px;
  font-weight: 300;
  line-height: 1.6;
  color: var(--pp-slate);
}

/* ---- Vault list --------------------------------------------------------------------- */

.pp-vault { margin: 22px 0 30px; padding: 0; list-style: none; }

.pp-vault li {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 11px 0;
  border-bottom: 1px solid var(--pp-line);
  font-size: 14px;
  font-weight: 300;
  color: var(--pp-slate);
  opacity: 0;
  transform: translateX(-8px);
  transition: opacity 0.5s var(--pp-ease), transform 0.5s var(--pp-ease);
  transition-delay: var(--pp-d, 0ms);
}

.pp-is-visible .pp-vault li { opacity: 1; transform: none; }

.pp-vault li span {
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pp-blue);
  white-space: nowrap;
}

.pp-access { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px; margin-top: 48px; }

.pp-access__card {
  display: flex;
  flex-direction: column;
  padding: 38px 34px;
  background: #fff;
  border: 1px solid var(--pp-line);
  position: relative;
  overflow: hidden;
  transition: transform 0.5s var(--pp-ease), box-shadow 0.5s var(--pp-ease), border-color 0.4s ease;
}

.pp-access__card:hover {
  transform: translateY(-5px);
  border-color: rgba(0, 118, 189, 0.32);
  box-shadow: 0 24px 56px rgba(0, 67, 114, 0.13);
}

.pp-access__card--primary { border-top: 3px solid var(--pp-blue); }

/* ---- Reveal ----------------------------------------------------------------------- */
/* .pp-js is set on <html> by the inline head script, so with JS disabled the
   content is simply visible — never a blank page waiting on an observer. */

.pp-js .pp-reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.85s var(--pp-ease), transform 0.85s var(--pp-ease);
  transition-delay: var(--pp-d, 0ms);
}

.pp-js .pp-reveal.pp-is-visible { opacity: 1; transform: none; }

.pp-js .pp-reveal--left { transform: translateX(-30px); }
.pp-js .pp-reveal--right { transform: translateX(30px); }
.pp-js .pp-reveal--scale { transform: scale(0.955); }
.pp-js .pp-reveal--left.pp-is-visible,
.pp-js .pp-reveal--right.pp-is-visible,
.pp-js .pp-reveal--scale.pp-is-visible { transform: none; }

/* Parallax offset written by the rAF scroll loop. */
.pp-parallax { will-change: transform; transform: translate3d(0, var(--pp-py, 0px), 0); }

/* ---- RevSlider spacer correction ----------------------------------------------------
   <rs-fw-forcer> reserves layout space for the absolutely-positioned slider.
   The export ships stale inline heights (1581/1975/1955px against a 577px
   slider) — the tall band of dead whitespace under those heroes. pp-next.js
   measures the real height into --pp-forcer-h; this rule outranks RevSlider's
   inline height so the correction survives its own resize handler.
   ------------------------------------------------------------------------------------ */

rs-fw-forcer.pp-forcer-synced { height: var(--pp-forcer-h) !important; }

/* ---- Responsive ---------------------------------------------------------------------- */

@media (max-width: 1080px) {
  .pp-process { grid-template-columns: 1fr; gap: 34px; }
  .pp-process__rail { position: static; }
  .pp-process__nav { display: flex; overflow-x: auto; gap: 8px; padding-bottom: 6px; -webkit-overflow-scrolling: touch; }
  .pp-process__nav li { border-left: 0; border-bottom: 2px solid rgba(255, 255, 255, 0.16); padding: 8px 4px; white-space: nowrap; font-size: 12px; }
  .pp-process__nav li.pp-active { padding-left: 4px; border-bottom-color: var(--pp-blue-lift); }
  .pp-stage { padding-bottom: 46px; }
}

@media (max-width: 999px) {
  .pp-marks { grid-template-columns: repeat(2, 1fr); }
  .pp-pillars { grid-template-columns: repeat(2, 1fr); }
  .pp-split { grid-template-columns: 1fr; gap: 44px; }
  .pp-preview { transform: none; }
  .pp-signin { grid-template-columns: 1fr; min-height: 0; }
  .pp-signin__aside { padding: 34px 28px; }
  .pp-signin__list { display: none; }
  .pp-modal__body { padding: 36px 28px 32px; }
}

@media (max-width: 690px) {
  .pp-shell { padding: 0 20px; }
  .pp-marks,
  .pp-pillars,
  .pp-doors,
  .pp-access,
  .pp-form__grid { grid-template-columns: 1fr; }
  .pp-doors, .pp-access { gap: 20px; }
  .pp-door, .pp-access__card { padding: 30px 24px; }
  .pp-modal { padding: 0; align-items: flex-end; }
  .pp-modal__panel { max-width: none; max-height: 92dvh; }
  .pp-modal__panel--narrow { max-width: none; }
  .pp-modal__body { padding: 30px 22px calc(28px + env(safe-area-inset-bottom)); }
  .pp-signin__main { padding: 34px 24px calc(34px + env(safe-area-inset-bottom)); }
  .pp-form__foot { gap: 14px; }
  .pp-form__foot .pp-btn { width: 100%; text-align: center; }
  .pp-btn { padding: 16px 26px; }
  /* Parallax fights momentum scrolling on touch — the browser's compositor and
     our rAF loop disagree during the fling, which reads as jitter. Off. */
  .pp-parallax { transform: none !important; }
  .pp-ticker__track { animation-duration: 30s; }
}

/* ---- Reduced motion ------------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {
  .pp-js .pp-reveal,
  .pp-js .pp-reveal--left,
  .pp-js .pp-reveal--right,
  .pp-js .pp-reveal--scale { opacity: 1; transform: none; transition: none; }
  .pp-word > span { transform: none; transition: none; }
  .pp-rule { width: 54px; transition: none; }
  .pp-is-visible .pp-preview__row,
  .pp-preview__row,
  .pp-vault li { opacity: 1; transform: none; transition: none; }
  .pp-preview__meter span { width: 78%; transition: none; }
  .pp-is-visible .pp-pillar::before { width: 100%; transition: none; }
  .pp-is-visible .pp-door__list li::before { width: 10px; transition: none; }
  .pp-section--navy::before,
  .pp-signin__aside::before,
  .pp-ticker__track,
  .pp-dot { animation: none; }
  .pp-parallax { transform: none !important; }
  .pp-door:hover, .pp-access__card:hover, .pp-btn:hover { transform: none; }
  .pp-preview, .pp-preview:hover { transform: none; }
  .pp-modal__panel, .pp-modal__scrim { transition: none; }
  .pp-success { animation: none; }
}
