html { scroll-behavior: smooth; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

[hidden] { display: none !important; }

.preloading { overflow: hidden; }
.preloading .heart-shield { opacity: 0; }
.skip-preloader .preloader,
html:not(.preloading) .preloader { display: none; }
.plate { will-change: transform, opacity; }

h1, h2, h3 { text-wrap: balance; }

a:focus-visible,
button:focus-visible {
  outline: 3px solid #34B6EF;
  outline-offset: 4px;
  border-radius: 6px;
}

.nav-link {
  padding-block: 10px;
  border-bottom: 2px solid transparent;
  text-decoration: none;
}
.nav-link:hover { border-bottom-color: #34B6EF; }

.btn-primary { transition: translate .15s, background-color .15s; }
.btn-primary:hover { translate: 0 -2px; }

.st-msg { --r: -12deg; transform: rotate(var(--r)); }

.intro-done .heart-shield { animation: bpc-float 6s ease-in-out infinite; }
.intro-done .st-lines1 { animation: bpc-bob 4.6s ease-in-out infinite; }
.intro-done .st-msg { animation: bpc-bob 5.2s ease-in-out .6s infinite; }
.intro-done .st-lines2 { animation: bpc-bob 4.8s ease-in-out 1.1s infinite; }
.intro-done .st-spark { animation: bpc-twinkle 3.2s ease-in-out infinite; }
.intro-done .st-flor { animation: bpc-spin 18s linear infinite; }

@keyframes bpc-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }
@keyframes bpc-bob { 0%, 100% { transform: translateY(0) rotate(var(--r, 0deg)); } 50% { transform: translateY(-8px) rotate(var(--r, 0deg)); } }
@keyframes bpc-twinkle { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .55; transform: scale(.9); } }
@keyframes bpc-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .intro-done .heart-shield,
  .intro-done .sticker { animation: none; }
  .btn-primary { transition: none; }
}
