/* Doguard atmosphere backgrounds + motion effects (palette tokens) */

:root {
  --fx-hero-bg: url("/static/img/bg/hero-cinematic.jpg"), url("/static/img/hero-factory.svg");
  --fx-page-bg: url("/static/img/bg/page-atmosphere.jpg"), url("/static/img/hero-factory.svg");
  --fx-cta-bg: url("/static/img/bg/cta-workshop.jpg"), url("/static/img/hero-factory.svg");
  --fx-section-bg: url("/static/img/bg/section-steel.jpg"), url("/static/img/hero-factory.svg");
}

/* ---------- Global ambient plate ---------- */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  background:
    linear-gradient(
      180deg,
      rgba(var(--rgb-surface), 0.94),
      rgba(var(--rgb-surface), 0.9)
    ),
    var(--fx-section-bg) center / cover no-repeat fixed;
  opacity: 0.45;
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background-image:
    radial-gradient(ellipse 50% 40% at 15% 10%, rgba(var(--rgb-steel), 0.05), transparent 55%),
    radial-gradient(ellipse 40% 35% at 90% 20%, rgba(var(--rgb-amber), 0.04), transparent 50%);
  animation: fxAmbientDrift 18s ease-in-out infinite alternate;
}
@keyframes fxAmbientDrift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(-1.5%, 1%, 0) scale(1.04); }
}

/* floating dust / spark particles */
.fx-ambient {
  position: fixed;
  inset: 0;
  z-index: 5;
  pointer-events: none;
  overflow: hidden;
  mix-blend-mode: screen;
  opacity: 0.28;
}
.fx-ambient span {
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(var(--rgb-copper), 0.65);
  box-shadow: 0 0 8px rgba(var(--rgb-amber), 0.35);
  animation: fxFloat linear infinite;
}
.fx-ambient span:nth-child(1) { left: 8%; top: 70%; animation-duration: 14s; animation-delay: 0s; }
.fx-ambient span:nth-child(2) { left: 22%; top: 85%; width: 2px; height: 2px; animation-duration: 18s; animation-delay: -3s; }
.fx-ambient span:nth-child(3) { left: 48%; top: 78%; animation-duration: 16s; animation-delay: -6s; }
.fx-ambient span:nth-child(4) { left: 66%; top: 90%; width: 2px; height: 2px; animation-duration: 20s; animation-delay: -2s; }
.fx-ambient span:nth-child(5) { left: 82%; top: 72%; animation-duration: 15s; animation-delay: -8s; }
.fx-ambient span:nth-child(6) { left: 35%; top: 95%; width: 2px; height: 2px; animation-duration: 22s; animation-delay: -5s; }
@keyframes fxFloat {
  0% { transform: translate3d(0, 0, 0); opacity: 0; }
  15% { opacity: 0.8; }
  100% { transform: translate3d(12px, -110vh, 0); opacity: 0; }
}

/* ---------- Home hero cinematic layers ---------- */
.hero {
  isolation: isolate;
}
.hero-media {
  background-size: cover;
  background-position: center;
  will-change: transform;
}
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(90deg, transparent 0%, rgba(var(--rgb-steel), 0.06) 48%, transparent 100%),
    linear-gradient(180deg, rgba(var(--rgb-ink), 0.12), transparent 40%);
  mix-blend-mode: soft-light;
  animation: fxScan 9s linear infinite;
}
@keyframes fxScan {
  0% { transform: translateX(-18%); opacity: 0.35; }
  50% { opacity: 0.7; }
  100% { transform: translateX(18%); opacity: 0.35; }
}
.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  opacity: 0.14;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
  background-size: 180px 180px;
  mix-blend-mode: overlay;
}
.hero-overlay {
  z-index: 1;
}
.hero-content {
  z-index: 3;
}
.brand-mark {
  text-shadow: 0 10px 40px rgba(0, 0, 0, 0.45);
}

/* ---------- Inner page hero with photo plate ---------- */
.page-hero {
  background:
    var(--overlay-page),
    var(--fx-page-bg) center / cover no-repeat !important;
}
.page-hero::before {
  content: "";
  position: absolute;
  inset: -4% -2%;
  z-index: 0;
  background: var(--fx-page-bg) center / cover no-repeat;
  filter: saturate(0.8) contrast(1.04);
  transform: scale(1.08);
  animation: fxKenSlow 22s ease-in-out infinite alternate;
  opacity: 0.32;
  pointer-events: none;
}
@keyframes fxKenSlow {
  from { transform: scale(1.08) translate3d(0, 0, 0); }
  to { transform: scale(1.16) translate3d(-2%, -1%, 0); }
}
.page-hero .container {
  z-index: 2;
}
.page-hero::after {
  z-index: 2;
}

/* ---------- Section plates ---------- */
.section-alt {
  background:
    linear-gradient(
      180deg,
      rgba(var(--rgb-surface-alt), 0.96),
      rgba(var(--rgb-surface-alt), 0.92)
    ),
    var(--fx-section-bg) center / cover no-repeat !important;
  background-attachment: scroll !important;
}
.section-head h2::after {
  box-shadow: 0 0 12px rgba(var(--rgb-amber), 0.35);
}

/* ---------- CTA band cinematic ---------- */
.cta-band {
  position: relative;
  overflow: hidden;
  background:
    linear-gradient(
      100deg,
      rgba(var(--rgb-ink), 0.9) 0%,
      rgba(var(--rgb-ink), 0.76) 55%,
      rgba(var(--rgb-ink), 0.68) 100%
    ),
    var(--fx-cta-bg) center / cover no-repeat !important;
}
.cta-band::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(var(--rgb-amber), 0.2), transparent 45%),
    radial-gradient(ellipse at 90% 40%, rgba(var(--rgb-steel), 0.14), transparent 40%);
  pointer-events: none;
  animation: fxCtaPulse 7s ease-in-out infinite alternate;
}
@keyframes fxCtaPulse {
  from { opacity: 0.55; }
  to { opacity: 1; }
}
.cta-band::after {
  content: "";
  position: absolute;
  left: -20%;
  top: 0;
  bottom: 0;
  width: 40%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.07), transparent);
  transform: skewX(-18deg);
  animation: fxSheen 8s ease-in-out infinite;
  pointer-events: none;
}
@keyframes fxSheen {
  0%, 30% { transform: translateX(0) skewX(-18deg); opacity: 0; }
  45% { opacity: 0.7; }
  70%, 100% { transform: translateX(280%) skewX(-18deg); opacity: 0; }
}

/* ---------- Card / button micro motion ---------- */
.media-card,
.text-card {
  backdrop-filter: blur(2px);
}
.btn-amber {
  position: relative;
  overflow: hidden;
}
.btn-amber::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.22) 48%, transparent 62%);
  transform: translateX(-120%);
  transition: none;
}
.btn-amber:hover::after {
  animation: fxBtnShine 0.7s ease;
}
@keyframes fxBtnShine {
  to { transform: translateX(120%); }
}

/* ---------- Stats strip glow ---------- */
.stats-strip {
  position: relative;
}
.stats-strip::after {
  content: "";
  position: absolute;
  left: 10%;
  right: 10%;
  bottom: 0;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(var(--rgb-amber), 0.5),
    rgba(var(--rgb-steel), 0.35),
    transparent
  );
  animation: fxLineGlow 4.5s ease-in-out infinite alternate;
}
@keyframes fxLineGlow {
  from { opacity: 0.35; filter: blur(0); }
  to { opacity: 1; filter: blur(0.4px); }
}

/* ---------- Reveal polish ---------- */
.fade-up {
  opacity: 0;
  transform: translate3d(0, 22px, 0);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.fade-up.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
  body::after,
  .fx-ambient span,
  .hero::before,
  .page-hero::before,
  .cta-band::before,
  .cta-band::after,
  .btn-amber::after,
  .stats-strip::after,
  .hero-media {
    animation: none !important;
  }
  .fx-ambient { display: none; }
  .fade-up {
    opacity: 1;
    transform: none;
  }
}

@media (max-width: 768px) {
  body::before { opacity: 0.28; background-attachment: scroll; }
  .fx-ambient { opacity: 0.16; }
  .hero::before { animation-duration: 14s; }
}
