:root {
  --fond-e1523912: #FBFDFE;
  --voile-e1523912: #F1F7FA;
  --encre-e1523912: #0F1720;
  --gris-e1523912: #5E6B76;
  --filet-e1523912: #DCE4EA;
  --outremer-e1523912: #2743C6;
  --glace-e1523912: #5FA8C9;
  --ultraviolet-e1523912: #6E2ECF;
  --miel-e1523912: #C9962E;
  --grenat-e1523912: #9C2F44;
  --sapin-e1523912: #1F7A52;
  --halo-glace-e1523912: #BFE3F2;
  --halo-violet-e1523912: #E2D2FA;
  --halo-miel-e1523912: #F7E7C3;
}

body {
  background: linear-gradient(180deg, #FBFDFE 0%, #F3F8FB 100%) !important;
  color: var(--encre-e1523912);
  position: relative;
}

/* ---------- grain overlay ---------- */
body::after {
  content: "";
  position: fixed;
  inset: -50%;
  z-index: 9999;
  pointer-events: none;
  opacity: .035;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: grain-e1523912 9s steps(6) infinite;
}

@keyframes grain-e1523912 {
  0%, 100% { transform: translate(0,0) }
  20% { transform: translate(-6%,4%) }
  40% { transform: translate(4%,-7%) }
  60% { transform: translate(-3%,-4%) }
  80% { transform: translate(6%,5%) }
}

/* ---------- dynamic auras ---------- */
.auras-e1523912 {
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  overflow: hidden;
}

.aura-e1523912 {
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
}

.a1-e1523912 {
  width: 760px;
  height: 760px;
  background: var(--halo-glace-e1523912);
  opacity: .65;
  top: -220px;
  right: -180px;
  animation: derive1-e1523912 46s ease-in-out infinite alternate;
}

.a2-e1523912 {
  width: 640px;
  height: 640px;
  background: var(--halo-violet-e1523912);
  opacity: .5;
  top: 34%;
  left: -260px;
  animation: derive2-e1523912 58s ease-in-out infinite alternate;
}

.a3-e1523912 {
  width: 560px;
  height: 560px;
  background: var(--halo-miel-e1523912);
  opacity: .42;
  bottom: -200px;
  right: 14%;
  animation: derive3-e1523912 52s ease-in-out infinite alternate;
}

@keyframes derive1-e1523912 { to { transform: translate(-90px,70px) scale(1.08) } }
@keyframes derive2-e1523912 { to { transform: translate(110px,-60px) scale(1.05) } }
@keyframes derive3-e1523912 { to { transform: translate(-70px,-90px) scale(1.1) } }

/* ---------- custom fluid cursor ---------- */
html.has-cursor-e1523912, html.has-cursor-e1523912 a, html.has-cursor-e1523912 button {
  cursor: none !important;
}

.cur-e1523912 {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 10000;
  pointer-events: none;
  border-radius: 50%;
  will-change: transform;
  transform: translate(-50%, -50%);
}

#cur-dot-e1523912 {
  width: 6px;
  height: 6px;
  background: var(--encre-e1523912);
}

#cur-ring-e1523912 {
  width: 32px;
  height: 32px;
  border: 1px solid rgba(15, 23, 32, 0.35);
  transition: width .25s, height .25s, border-color .25s;
}

html.cur-hover-e1523912 #cur-ring-e1523912 {
  width: 52px;
  height: 52px;
  border-color: var(--outremer-e1523912);
}

@media(prefers-reduced-motion:reduce) {
  body::after, .aura-e1523912 {
    animation: none !important;
  }
}
