/* ==========================================================================
   Swift Traders INC — Animations
   ========================================================================== */

@keyframes loaderPulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.08); opacity: 0.85; }
}

@keyframes loaderSlide {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(350%); }
}

@keyframes flowMove {
  0% { offset-distance: 0%; opacity: 0; }
  8% { opacity: 1; }
  92% { opacity: 1; }
  100% { offset-distance: 100%; opacity: 0; }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes slideRight {
  from { opacity: 0; transform: translateX(-28px); }
  to { opacity: 1; transform: translateX(0); }
}

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

/* ---------- Scroll-reveal system ----------
   Elements start hidden via [data-reveal] and are flipped to
   .is-visible by IntersectionObserver in js/animations.js */
[data-reveal] {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 700ms var(--ease-out), transform 700ms var(--ease-out);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal="fade"] { transform: none; }
[data-reveal="left"] { transform: translateX(-32px); }
[data-reveal="left"].is-visible { transform: translateX(0); }

/* Stagger children helper */
[data-reveal-group] > * { transition-delay: calc(var(--stagger-index, 0) * 90ms); }

.page-enter { animation: fadeIn 420ms var(--ease-out); }

.hero-copy { animation: slideUp 800ms var(--ease-out) both; }
.hero-media { animation: slideRight 900ms 150ms var(--ease-out) both; }

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1 !important; transform: none !important; }
  .hero-media { animation: none !important; }
  .hero-slide { transform: none !important; transition: none !important; }
}

/* DLNYC storefront slider */
.dlnyc-slider-band{ padding:36px 0; overflow:hidden; }
.dlnyc-slider-label{
  text-align:center;
  font-size:0.95rem;
  font-weight:600;
  letter-spacing:0.04em;
  text-transform:uppercase;
  color:var(--blue-400, #4a8fe0);
  margin:0 0 20px;
}
.dlnyc-slider-track-wrap{
  overflow:hidden;
  width:100%;
  mask-image:linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}
.dlnyc-slider-track{
  display:flex;
  align-items:center;
  gap:56px;
  width:max-content;
  animation:dlnyc-slide 22s linear infinite;
}
.dlnyc-slide{
  display:flex;
  align-items:center;
  gap:10px;
  flex-shrink:0;
  opacity:0.85;
}
.dlnyc-slide img{
  height:32px;
  width:auto;
  object-fit:contain;
}
.dlnyc-slide span{
  font-size:0.95rem;
  font-weight:500;
  white-space:nowrap;
  color:rgba(255,255,255,0.94);
  text-shadow:0 1px 8px rgba(0,0,0,0.42);
}
@keyframes dlnyc-slide{
  from{ transform:translateX(0); }
  to{ transform:translateX(-50%); }
}
@media (prefers-reduced-motion: reduce){
  .dlnyc-slider-track{ animation:none; }
}

/* Full-background inner-page heroes */
.page-hero-background{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  z-index:0;
  object-fit:cover;
  object-position:center;
  pointer-events:none;
}
.page-hero--image::before,
.page-hero--image::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
}
.page-hero--image::before{
  z-index:1;
  background:linear-gradient(90deg, rgba(5, 14, 28, 0.9) 0%, rgba(7, 21, 40, 0.72) 47%, rgba(7, 21, 40, 0.26) 100%);
}
.page-hero--image::after{
  z-index:2;
  background:linear-gradient(180deg, rgba(5, 14, 28, 0.24) 0%, transparent 45%, rgba(5, 14, 28, 0.44) 100%);
}
.page-hero--image .container{ position:relative; z-index:3; }
.page-hero--about .page-hero-background{ object-position:center 40%; }
.page-hero--services .page-hero-background{ object-position:center; }
.page-hero--brands .page-hero-background{ object-position:center 54%; }
.page-hero--contact .page-hero-background{ object-position:center; }
.page-hero--privacy .page-hero-background{ object-position:center; }

@media (max-width: 768px){
  .page-hero--image{
    min-height:0;
    padding:calc(var(--header-height) + 32px) 0 32px;
  }
  .page-hero--image::before{
    background:linear-gradient(90deg, rgba(5, 14, 28, 0.9) 0%, rgba(7, 21, 40, 0.76) 68%, rgba(7, 21, 40, 0.5) 100%);
  }
  .page-hero--about .page-hero-background{ object-position:62% center; }
  .page-hero--services .page-hero-background{ object-position:58% center; }
  .page-hero--brands .page-hero-background{ object-position:58% center; }
  .page-hero--contact .page-hero-background{ object-position:63% center; }
  .page-hero--privacy .page-hero-background{ object-position:68% center; }
}

/* Case-study generated visual sequence */
.case-study-card{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  color:#fff;
  border-color:rgba(217,184,118,0.42);
  background:
    linear-gradient(90deg, rgba(6,17,32,0.93), rgba(9,27,50,0.82), rgba(6,17,32,0.93)),
    url('../images/generated/section-art/case-study-background.jpg') center/cover no-repeat;
  box-shadow:0 24px 54px rgba(8,23,43,0.3);
}
.case-study-card::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(180deg, rgba(8,23,43,0.08), rgba(8,23,43,0.34));
  pointer-events:none;
}
.case-study-card p{ color:rgba(255,255,255,0.88); text-shadow:0 1px 12px rgba(0,0,0,0.32); }
.case-study-card p strong{ color:var(--gold-400); }
.case-study-art{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  margin-bottom:28px;
}
.case-study-step{
  margin:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,0.24);
  border-radius:16px;
  background:rgba(10,22,40,0.72);
  box-shadow:0 14px 28px rgba(0,0,0,0.24);
}
.case-study-step img{ width:100%; aspect-ratio:1; object-fit:cover; display:block; }
.case-study-step figcaption{
  padding:10px 12px 12px;
  color:#fff;
  font-family:var(--font-display);
  font-size:0.78rem;
  font-weight:700;
  letter-spacing:0.04em;
  text-align:center;
  text-transform:uppercase;
}

@media (max-width:640px){
  .case-study-art{ grid-template-columns:1fr; }
  .case-study-step{ display:grid; grid-template-columns:96px 1fr; align-items:center; }
  .case-study-step img{ width:96px; height:96px; }
  .case-study-step figcaption{ text-align:left; }
}

/* Overview stat icons */
.overview-stat{ display:flex; align-items:flex-start; gap:12px; }
.overview-stat-icon{
  flex-shrink:0;
  width:38px; height:38px;
  border-radius:10px;
  background:var(--accent-soft, #e7f0fb);
  display:flex; align-items:center; justify-content:center;
  color:var(--accent-strong, #123a6b);
}
.overview-stat-icon svg{ width:20px; height:20px; }
.overview-stat-icon.generated-art { width:64px; height:64px; border-radius:16px; }
