@keyframes rotateSquare {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.intro-pattern-overlay {
    background-image: repeating-linear-gradient(45deg, transparent, transparent 20px, currentColor 20px, currentColor 40px);
    opacity: 0.03;
    top: -20%;
    left: -30%;
    width: 100%;
    height: 100%;
    animation: rotateSquare 20s linear infinite;
}

.intro-pattern-content {
    max-width: 56rem;
}

/* Card hover: scale */
.portfolio-item-hover {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.portfolio-item-hover:hover {
    transform: scale(1.05);
}

/* Overlay: fade in on card hover */
.portfolio-overlay-hover {
    opacity: 0;
    transition: opacity 0.3s ease;
}
.portfolio-item-hover:hover .portfolio-overlay-hover {
    opacity: 1;
}


.prose-bodycopy__bg-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.prose-bodycopy__title-trail { margin-bottom: 2rem; }

.prose-bodycopy__rule-trail { margin-bottom: 3rem; }

.content-heading-gap {
    margin-bottom: 2rem;
}

.content-section-pad {
    padding-top: 6rem;
    padding-bottom: 6rem;
}

.stats-ladder__title { letter-spacing: -0.02em; }
.stats-ladder__medal { width: 5.5rem; height: 5.5rem; flex-shrink: 0; }
.stats-ladder__rank { opacity: 0; transform: scale(.94); transition: opacity 600ms ease, transform 700ms cubic-bezier(.34, 1.56, .64, 1); }
.stats-ladder.is-visible .stats-ladder__rank { opacity: 1; transform: none; }

.stats-ladder__row { transition: transform 900ms cubic-bezier(.65, 0, .35, 1); will-change: transform; }
.stats-ladder__track { height: .75rem; }
.stats-ladder__fill { width: 0; height: 100%; transition: width 1500ms cubic-bezier(.2, .8, .2, 1); }

@media (prefers-reduced-motion: reduce) {
    .stats-ladder__rank { opacity: 1; transform: none; transition: none; }
    .stats-ladder__row, .stats-ladder__fill { transition: none; }
}

/* wpg-hidden: utility classes are renamed in production builds, so hidden states must not rely on .hidden / .d-none alone */
.stats-ladder[hidden], .stats-ladder [hidden], .stats-ladder .hidden.d-none { display: none !important; }

.cta-staircase__step-num {
  width: 3rem;
  height: 3rem;
  min-width: 3rem;
  min-height: 3rem;
  flex-shrink: 0;
}

.cta-staircase__stairs {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}

.cta-staircase__step {
  transform: translateX(calc(var(--step, 0) * 20px));
  animation: cta-staircase__fade 600ms ease both;
  animation-delay: calc(var(--step, 0) * 100ms);
}

@keyframes cta-staircase__fade {
  from { opacity: 0; transform: translateX(-30px); }
  to { opacity: 1; transform: translateX(calc(var(--step, 0) * 20px)); }
}

@media (max-width: 768px) {
  .cta-staircase__step {
    transform: translateX(0);
  }
}

