/* ==========================================================================
   Reset, page canvas, typographic scale, grid, buttons, links, badges
   ========================================================================== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,ul,ol{margin:0;padding:0}
ul,ol{list-style:none}
img,picture,video,svg{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer;text-align:inherit}
a{color:inherit;text-decoration:none}

html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}

/* Off-canvas carousel slides must not make the page scroll sideways */
main,.site-footer{overflow-x:clip}

body{
  font-family:var(--sv-font);
  font-size:16px;
  line-height:1.4285;
  color:var(--ps-color-neutral-3-900);
  background-color:var(--ps-color-neutral-1-500);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

.skip-to-content{
  position:fixed;top:-48px;left:50%;transform:translateX(-50%);
  z-index:2000;padding:10px 20px;border-radius:0 0 4px 4px;
  background:var(--ps-color-neutral-1-500);color:var(--ps-color-neutral-3-500);
  font:600 14px/16px var(--ps-font);letter-spacing:.5px;
  transition:top .2s ease-out;
}
.skip-to-content:focus{top:0}

:focus-visible{outline:2px solid var(--ps-color-brand-500);outline-offset:2px;border-radius:2px}

/* --------------------------------------------------------------------------
   Grid — 12 columns / 64px margins on desktop, 4 columns / 24px on phone
   -------------------------------------------------------------------------- */
.ps-grid{box-sizing:border-box;margin:0 auto;max-width:var(--ps-grid-max-width)}
.ps-grid__inner{
  display:grid;
  padding-inline:var(--ps-grid-margin);
  column-gap:var(--ps-grid-gutter);
  grid-template-columns:repeat(var(--ps-grid-columns),minmax(0,1fr));
}
.ps-grid__cell{grid-column-end:span var(--ps-grid-columns);min-width:0}
.ps-grid__cell .ps-grid__inner{padding-inline:0}

/* --------------------------------------------------------------------------
   Typography scale
   -------------------------------------------------------------------------- */
.ps-headline-xl{font:500 32px/40px var(--sv-font-display);letter-spacing:normal}
.ps-headline-1{font:500 32px/36px var(--sv-font-display);letter-spacing:normal}
.ps-headline-2{font:500 24px/28px var(--sv-font-display);letter-spacing:normal}
.ps-headline-3{font:500 20px/28px var(--sv-font-display);letter-spacing:.5px}
.ps-headline-4{font:500 20px/28px var(--ps-font);letter-spacing:.5px}
.ps-headline-5{font:500 18px/24px var(--ps-font);letter-spacing:.5px}
.ps-headline-6{font:500 16px/24px var(--ps-font);letter-spacing:.5px}
.ps-headline-7{font:500 14px/20px var(--ps-font);letter-spacing:.5px}
.ps-subtitle-1{font:400 22px/32px var(--ps-font);letter-spacing:normal}
.ps-subtitle-2{font:400 20px/28px var(--ps-font);letter-spacing:.5px}
.ps-subtitle-3{font:400 18px/24px var(--ps-font);letter-spacing:.5px}
.ps-body-1{font:400 14px/24px var(--ps-font);letter-spacing:.5px}
.ps-body-2{font:400 12px/24px var(--ps-font);letter-spacing:.5px}
.ps-body-3{font:400 12px/16px var(--ps-font);letter-spacing:.5px}
.ps-body-4{font:400 11px/16px var(--ps-font);letter-spacing:.5px}
.ps-eyebrow-1{font:700 14px/20px var(--ps-font);letter-spacing:1.82px}
.ps-eyebrow-2{font:800 10px/16px var(--ps-font);letter-spacing:1.3px}
.ps-eyebrow-3{font:700 10px/16px var(--ps-font);letter-spacing:1.3px}
.ps-label{font:700 14px/16px var(--ps-font);letter-spacing:.5px}
.ps-stat-1{font:600 56px/56px var(--sv-font-display);letter-spacing:normal}
.ps-stat-2{font:600 48px/48px var(--sv-font-display);letter-spacing:normal}

@media (min-width:640px){
  .ps-headline-xl{font-size:40px;line-height:44px}
  .ps-headline-2{font-size:30px;line-height:36px}
  .ps-headline-3{font-size:24px;line-height:28px;letter-spacing:normal}
  .ps-headline-4{font-size:20px;line-height:24px}
  .ps-headline-6{line-height:20px}
  .ps-subtitle-1{font-size:32px;line-height:36px}
  .ps-subtitle-2{line-height:24px}
  .ps-body-1{line-height:20px}
  .ps-body-2{line-height:20px}
  .ps-eyebrow-1{font-size:16px;letter-spacing:2.08px}
  .ps-eyebrow-2{font-size:12px;letter-spacing:1.56px}
  .ps-eyebrow-3{font-size:12px;line-height:20px;letter-spacing:1.56px}
  .ps-label{line-height:20px}
}
@media (min-width:1024px){
  .ps-headline-xl{font-size:76px;line-height:76px}
  .ps-headline-1{font-size:43px;line-height:44px}
  .ps-body-1{font-size:16px;line-height:24px}
  .ps-body-2{font-size:14px;line-height:20px}
  .ps-stat-1{font-size:48px;line-height:48px}
}

.ps-headline-xl,.ps-headline-1,.ps-headline-2,.ps-headline-3,
.ps-stat-1,.ps-stat-2{letter-spacing:-.01em}

.ps-highlighted-text{color:var(--ps-accent-color,var(--ps-color-brand-500))}

/* Optical text trimming used throughout the reference design system */
.ps-text-trim{text-box:trim-both cap alphabetic}
[class*="ellipsis-"].ps-text-trim{
  text-box:none;
  margin-block:calc((-1lh + 1cap + 1px) / 1.605) calc((-1lh + 1cap + 1px) / 3.21);
}

.ellipsis-1,.ellipsis-2,.ellipsis-3,.ellipsis-4{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}
.ellipsis-1{-webkit-line-clamp:1}
.ellipsis-2{-webkit-line-clamp:2}
.ellipsis-3{-webkit-line-clamp:3}
.ellipsis-4{-webkit-line-clamp:4}

.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* --------------------------------------------------------------------------
   Buttons — cursor-tracking ripple fill on hover
   -------------------------------------------------------------------------- */
.ps-btn{
  position:relative;display:inline-flex;align-items:center;
  padding:12px 20px;border-radius:4px;overflow:hidden;cursor:pointer;
  font:600 14px/16px var(--ps-font);letter-spacing:.5px;
  transition:color .3s;
}
.ps-btn--large{font:600 16px/20px var(--ps-font);letter-spacing:.5px;padding:18px 24px}
.ps-btn--small{font:600 12px/14px var(--ps-font);letter-spacing:.5px;padding:8px 10px}
.ps-btn::before{content:"";position:absolute;inset:0;border-radius:4px;display:block}
.ps-btn::after{
  content:"";display:block;width:0;height:0;position:absolute;
  top:calc(1px * var(--ps-mouse-y,0));left:calc(1px * var(--ps-mouse-x,0));
  transform:translate(-50%,-50%);border-radius:50%;z-index:0;
  background-color:var(--ps-color-secondary-5-400);
  animation:psButtonUnhover .3s ease-out forwards;
}
.ps-btn > *{position:relative;z-index:1}
.ps-btn:hover::after,.ps-btn:focus-visible::after{animation:psButtonHover .5s ease-in-out forwards;opacity:1}
.ps-btn:focus-visible::after{top:0;left:0}
.ps-btn__icon{width:16px;height:16px;flex:none;z-index:1}
.ps-btn__icon svg{width:100%;height:100%;display:block}
.ps-btn__icon--left{margin-right:10px}
.ps-btn__icon--right{margin-left:10px}
.ps-btn__text{white-space:nowrap}

@keyframes psButtonHover{from{min-width:0;min-height:0}to{width:210%;height:210%;min-width:1000px;min-height:1000px}}
@keyframes psButtonUnhover{from{width:1000px;height:1000px}to{width:0;height:0}}

/* variants
   PRIMARY   Blood Red fill        - the one red button on the page
   SOLID     Charcoal fill         - secondary weight
   OUTLINED  Charcoal / white rule - tertiary weight
   TEXT      charcoal -> red       - inline actions
   Geometry, ripple mechanics and timings are unchanged; only colour differs. */
.ps-btn::after{background-color:var(--ps-color-secondary-5-600)}

.ps-btn--ultimate,.ps-btn--ultimate-alt{color:var(--sv-white)}
.ps-btn--ultimate::before,.ps-btn--ultimate-alt::before{background-color:var(--ps-color-brand-500)}
.ps-btn--ultimate::after,.ps-btn--ultimate-alt::after{background-color:var(--ps-color-brand-600)}
.ps-btn--ultimate:hover,.ps-btn--ultimate-alt:hover,
.ps-btn--ultimate:focus-visible,.ps-btn--ultimate-alt:focus-visible{color:var(--sv-white)}

.ps-btn--primary,.ps-btn--primary-alt{color:var(--sv-white)}
.ps-btn--primary::before,.ps-btn--primary-alt::before{background-color:var(--ps-color-neutral-3-500)}
.ps-btn--primary::after,.ps-btn--primary-alt::after{background-color:var(--ps-color-secondary-5-500)}
.ps-btn--primary:hover,.ps-btn--primary-alt:hover{color:var(--sv-white)}

.ps-btn--secondary{color:var(--ps-color-neutral-3-500)}
.ps-btn--secondary::before{inset:2px;box-shadow:0 0 0 2px var(--ps-color-neutral-3-500)}
.ps-btn--secondary::after{background-color:var(--ps-color-neutral-3-500)}
.ps-btn--secondary:hover,.ps-btn--secondary:focus-visible{color:var(--sv-white)}
.ps-btn--secondary:hover::before,.ps-btn--secondary:focus-visible::before{box-shadow:0 0 0 2px var(--ps-color-neutral-3-500)}

.ps-btn--secondary-alt{color:var(--sv-white)}
.ps-btn--secondary-alt::before{inset:2px;box-shadow:0 0 0 2px rgba(255,255,255,.55)}
.ps-btn--secondary-alt::after{background-color:var(--sv-white)}
.ps-btn--secondary-alt:hover,.ps-btn--secondary-alt:focus-visible{color:var(--ps-color-neutral-3-500)}
.ps-btn--secondary-alt:hover::before,.ps-btn--secondary-alt:focus-visible::before{box-shadow:0 0 0 2px var(--sv-white)}

.ps-btn--tertiary{color:var(--ps-color-neutral-3-500)}
.ps-btn--tertiary .ps-btn__icon{filter:var(--ps-filter-neutral-3-500)}
.ps-btn--tertiary::after{background-color:transparent}
.ps-btn--tertiary:hover,.ps-btn--tertiary:focus-visible{color:var(--ps-color-brand-500)}
.ps-btn--tertiary:hover .ps-btn__icon,
.ps-btn--tertiary:focus-visible .ps-btn__icon{filter:var(--ps-filter-brand-500)}

.ps-btn--tertiary-brand{color:var(--sv-white)}
.ps-btn--tertiary-brand .ps-btn__icon{filter:var(--ps-filter-neutral-1-500)}
.ps-btn--tertiary-brand::after{background-color:transparent}
.ps-btn--tertiary-brand:hover,.ps-btn--tertiary-brand:focus-visible{color:var(--ps-color-brand-200)}
.ps-btn--tertiary-brand:hover .ps-btn__icon,
.ps-btn--tertiary-brand:focus-visible .ps-btn__icon{filter:var(--ps-filter-neutral-1-500)}

/* --------------------------------------------------------------------------
   Links
   -------------------------------------------------------------------------- */
.ps-link{font:700 16px/20px var(--ps-font);letter-spacing:.5px;display:inline}
.ps-link--jump{color:var(--ps-color-neutral-3-400)}
.ps-link--jump .ps-link__arrow{color:var(--ps-color-brand-500);text-align:right;white-space:nowrap}
.ps-link--jump .ps-link__arrow svg{display:inline-block;height:.75em;width:1.5em}
.ps-link__text{
  background-image:linear-gradient(currentColor,currentColor);
  background-position:calc(50% - .75em) 100%;background-size:0 1px;background-repeat:no-repeat;
  transition:background-size .3s cubic-bezier(.55,.01,.25,1);
}
.ps-link:hover .ps-link__text,.ps-link:focus-visible .ps-link__text{background-size:calc(100% - 1.5em) 1px}

.ps-btn-jump{font:500 16px/20px var(--ps-font);letter-spacing:.5px;color:var(--ps-color-neutral-3-500);display:inline;transition:color .3s}
.ps-btn-jump__icon{white-space:nowrap}
.ps-btn-jump__icon svg{display:inline-block;margin-left:3px;height:12px;width:14px}
.ps-btn-jump__text{
  background-image:linear-gradient(currentColor,currentColor);
  background-position:50% 100%;background-size:0 1px;background-repeat:no-repeat;
  transition:background-size .3s cubic-bezier(.55,.01,.25,1);
}
.ps-btn-jump:hover .ps-btn-jump__text,.ps-btn-jump:focus-visible .ps-btn-jump__text{background-size:150% 1px}

/* --------------------------------------------------------------------------
   Badge
   -------------------------------------------------------------------------- */
.ps-badge{
  position:absolute;top:8px;right:8px;padding:10px 12px;border-radius:22.5px;z-index:1;
  font:600 11px/16px var(--ps-font);letter-spacing:.08em;text-transform:uppercase;
  color:var(--sv-white);background-color:var(--ps-color-brand-500);
}

/* --------------------------------------------------------------------------
   Scroll reveal helper (fade + slide up, staggered by child index)
   -------------------------------------------------------------------------- */
.reveal{--reveal-duration:.75s;--reveal-delay-step:.1s;--reveal-offset:40px}
.reveal > .reveal-item,
.reveal.reveal--self{
  opacity:1;transform:translate3d(0,0,0);
  transition:opacity var(--reveal-duration) var(--reveal-item-delay,0s),
             transform var(--reveal-duration) var(--reveal-item-delay,0s);
}
.reveal.is-stealth > .reveal-item,
.reveal.reveal--self.is-stealth{opacity:.001;transform:translate3d(0,var(--reveal-offset),0)}
.reveal > .reveal-item:nth-child(1){--reveal-item-delay:calc(0 * var(--reveal-delay-step))}
.reveal > .reveal-item:nth-child(2){--reveal-item-delay:calc(1 * var(--reveal-delay-step))}
.reveal > .reveal-item:nth-child(3){--reveal-item-delay:calc(2 * var(--reveal-delay-step))}
.reveal > .reveal-item:nth-child(4){--reveal-item-delay:calc(3 * var(--reveal-delay-step))}
.reveal > .reveal-item:nth-child(5){--reveal-item-delay:calc(4 * var(--reveal-delay-step))}
.reveal > .reveal-item:nth-child(6){--reveal-item-delay:calc(5 * var(--reveal-delay-step))}

/* --------------------------------------------------------------------------
   Object-fit helpers
   -------------------------------------------------------------------------- */
.fit-cover{object-fit:cover;object-position:center center;width:100%;height:100%}
.fit-contain{object-fit:contain}
