@import "tailwindcss";

:root {
  --accent: var(--color-emerald-600);
  --accent-hex: #e11d48;
  --fluid-hero: clamp(1.75rem, 4vw + 1rem, 3.75rem);
  --fluid-hero-desc: clamp(1rem, 1.5vw + 0.75rem, 1.25rem);
  --fluid-section-title: clamp(1.5rem, 3vw + 0.75rem, 1.875rem);
  /* Fade-in on load: About starts when hero title animation ends (~2.1s), Services after About. */
  --fade-about-delay: 2.1s;
  --fade-about-duration: 1.2s;
  --fade-services-delay: 2.5s;
  --fade-services-duration: 1.2s;
}

/* Footer link icons: tint to emerald on link hover/focus (icons are img/SVG with fixed fill). */
.group:hover .footer-icon-hover-emerald,
.group:focus-visible .footer-icon-hover-emerald {
  filter: brightness(0) saturate(100%) invert(48%) sepia(79%) saturate(2476%) hue-rotate(130deg) brightness(95%) contrast(101%);
}

@layer base {
  a {
    @apply transition-colors duration-200 ease-out;
  }
}

@keyframes fade-in-up {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes marquee {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

@keyframes float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-4px);
  }
}

.animate-fade-in-up {
  animation: fade-in-up 0.6s ease-out forwards;
}

.animate-fade-in-on-load {
  animation: fade-in var(--fade-about-duration) ease-in-out var(--fade-about-delay) both;
}

.animate-fade-in-on-load-delayed {
  animation: fade-in var(--fade-services-duration) ease-in-out var(--fade-services-delay) both;
}

.animate-delay-100 {
  animation-delay: 100ms;
}

.animate-delay-200 {
  animation-delay: 200ms;
}

.animate-delay-300 {
  animation-delay: 300ms;
}

.animate-marquee {
  animation: marquee 30s linear infinite;
}

.animate-marquee-slow {
  animation: marquee 60s linear infinite;
}

.home-clients-band {
  mask-image: linear-gradient(
    to right,
    transparent 0%,
    black 8%,
    black 92%,
    transparent 100%
  );
  -webkit-mask-image: linear-gradient(
    to right,
    transparent 0%,
    black 8%,
    black 92%,
    transparent 100%
  );
}

.animate-float {
  animation: float 3s ease-in-out infinite;
}

.animate-spin-slow {
  animation: spin 8s linear infinite;
}

.animate-spin-once {
  animation: spin 0.5s ease-in-out 1 forwards;
}

@keyframes coin-spin {
  from {
    transform: rotateY(0deg);
  }
  to {
    transform: rotateY(720deg);
  }
}

.animate-coin-spin {
  animation: coin-spin 0.6s ease-in-out 1 forwards;
}

/* Hero title letter animations. */
@keyframes letter-from-down {
  from {
    opacity: 0;
    transform: translateY(100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes letter-from-up {
  from {
    opacity: 0;
    transform: translateY(-100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes letter-b-exit {
  0% {
    opacity: 0;
    transform: translateY(-100%);
  }
  20% {
    opacity: 1;
    transform: translateY(0);
  }
  50% {
    opacity: 1;
    transform: translateY(0);
  }
  51% {
    opacity: 0;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(0);
  }
}

@keyframes letter-o-in-out {
  0% {
    opacity: 0;
    transform: translateY(-100%);
  }
  20% {
    opacity: 1;
    transform: translateY(0);
  }
  70% {
    opacity: 1;
    transform: translateY(0);
  }
  100% {
    opacity: 0;
    transform: translateY(-100%);
  }
}

@keyframes letter-e-fade-in {
  from {
    opacity: 0;
    transform: translateY(100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* t: appears with o (Robot), stays, then slides right as r appears. */
@keyframes letter-t-slide {
  0% {
    opacity: 0;
    transform: translateY(-100%) translateX(-0.7ch);
  }
  20% {
    opacity: 1;
    transform: translateY(-0.45em) translateX(-0.7ch);
  }
  55% {
    opacity: 1;
    transform: translateY(-0.45em) translateX(-0.7ch);
  }
  100% {
    opacity: 1;
    transform: translateY(-0.45em) translateX(2px);
  }
}

.animate-letter-from-down {
  animation: letter-from-down 0.5s ease-out both;
}

.animate-letter-from-up {
  animation: letter-from-up 0.5s ease-out both;
}

.animate-letter-b-exit {
  animation: letter-b-exit 0.9s ease-out both;
}

.animate-letter-o-in-out {
  animation: letter-o-in-out 1.5s ease-out both;
}

.animate-letter-e-fade-in {
  animation: letter-e-fade-in 0.5s ease-out both;
}

.animate-letter-t-slide {
  animation: letter-t-slide 0.9s ease-out both;
}

.hero-letter-t {
  overflow: visible;
  vertical-align: baseline;
}

.hero-letter-r {
  position: relative;
}

.hero-letter-r::before {
  content: "B";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: letter-b-exit 0.6s ease-out both;
  animation-delay: var(--b-delay, 320ms);
}

.hero-letter-e {
  position: relative;
  padding-right: 1px;
  padding-left: 1px;
}

.hero-letter-e::before {
  content: "o";
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: letter-o-in-out 1.5s ease-out both;
  animation-delay: var(--o-delay, 760ms);
}

.layout-footer-section {
  margin: 0 auto;
}
