/* Isolated decorative folds. Geometry morphs; content and section bounds never move. */

.sithon-public-v2 .ambient-region {
  --ribbon-strength: .30;
  --ember-travel: 3.5%;
  --charcoal-travel: 2.5%;
  --ribbon-travel-factor: 1;
  --ribbon-scale-factor: 1;
  position: relative;
  isolation: isolate;
  overflow: clip;
  background: #090909;
}

.sithon-public-v2 .ambient-home {
  --ribbon-strength: .32;
}

.sithon-public-v2 .ambient-about {
  --ribbon-strength: .24;
}

.sithon-public-v2 .ambient-footer {
  --ribbon-strength: .22;
  --ember-travel: 1.4%;
  --charcoal-travel: 1%;
  --ribbon-scale-factor: .4;
  --ember-animation: sithon-footer-ember-fold;
  --ember-duration: 48s;
  --charcoal-animation: sithon-footer-charcoal-fold;
  --charcoal-duration: 64s;
}

/* Still, understated fallback without JavaScript, also retained on error pages. */

.sithon-public-v2 .ambient-region::before,
.sithon-public-v2 .ambient-region::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  mask-image: linear-gradient(transparent,#000 18%,#000 78%,transparent);
  -webkit-mask-image: linear-gradient(transparent,#000 18%,#000 78%,transparent);
}

.sithon-public-v2 .ambient-region::before {
  background: radial-gradient(ellipse 60% 85% at 70% 60%,#f4863c,transparent 78%);
  opacity: .07;
}

.sithon-public-v2 .ambient-region::after {
  background: radial-gradient(ellipse 68% 70% at 8% 34%,#777,transparent 75%);
  opacity: .05;
}

.sithon-public-v2 .ambient-static::before {
  opacity: .025;
  transform: translate3d(-2%,1%,0) scale(1.03);
}

.sithon-public-v2 .ambient-static::after {
  opacity: .02;
  transform: translate3d(2%,-2%,0) scale(1.02);
}

.sithon-public-v2 .ambient-vector::before,
.sithon-public-v2 .ambient-vector::after {
  display: none;
}

.sithon-public-v2 .ambient-ribbons {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  pointer-events: none;
  opacity: var(--ribbon-strength);
  /* Fixed softness only: the filter itself never animates. */
  filter: blur(10px);
  mask-image: linear-gradient(transparent,#000 16%,#000 78%,transparent);
  -webkit-mask-image: linear-gradient(transparent,#000 16%,#000 78%,transparent);
}

/* Keep the hero composition around the copy, rather than stretching with the demo. */

.sithon-public-v2 .ambient-home .ambient-ribbons {
  height: min(850px,100%);
}

.sithon-public-v2 .ambient-home .ambient-ribbons,
.sithon-public-v2 .ambient-about .ambient-ribbons {
  transform: translateY(64px);
}

.sithon-public-v2 .ambient-home .ambient-ribbons,
.sithon-public-v2 .ambient-about .ambient-ribbons,
.sithon-public-v2 .ambient-closing .ambient-ribbons {
  mask-image: linear-gradient(transparent,#000 16%,#000 78%,transparent),radial-gradient(ellipse 52% 48% at 50% 35%,#0005 35%,#000 100%);
  mask-composite: intersect;
  -webkit-mask-image: linear-gradient(transparent,#000 16%,#000 78%,transparent),radial-gradient(ellipse 52% 48% at 50% 35%,#0005 35%,#000 100%);
  -webkit-mask-composite: source-in;
}

.sithon-public-v2 .ambient-footer .ambient-ribbons {
  mask-image: linear-gradient(transparent,#000 24%,#000 65%,transparent);
  -webkit-mask-image: linear-gradient(transparent,#000 24%,#000 65%,transparent);
}

.sithon-public-v2 .ambient-ready .ambient-ribbon-ember {
  animation: var(--ember-animation,sithon-ember-fold) var(--ember-duration,36s) ease-in-out infinite alternate;
  animation-play-state: paused;
}

.sithon-public-v2 .ambient-ribbon-ember,
.sithon-public-v2 .ambient-ribbon-charcoal {
  transform-box: view-box;
  transform-origin: 50% 50%;
}

.sithon-public-v2 .ambient-ready .ambient-ribbon-charcoal {
  animation: var(--charcoal-animation,sithon-charcoal-fold) var(--charcoal-duration,48s) ease-in-out infinite alternate;
  animation-play-state: paused;
}

.sithon-public-v2 .ambient-footer .ambient-ribbon-ember {
  opacity: .6;
}

.sithon-public-v2 .ambient-running .ambient-ribbon-ember,
.sithon-public-v2 .ambient-running .ambient-ribbon-charcoal {
  animation-play-state: running;
}

/* Reuse only the existing palette. Footer and mobile stops retain their SVG colors. */

@media (min-width:768px) {
  .sithon-public-v2 :is(.ambient-home,.ambient-about,.ambient-closing).ambient-ready .ambient-ribbons stop[style] {
    animation: sithon-palette-exchange 48s ease-in-out infinite alternate;
    animation-play-state: paused;
  }

  .sithon-public-v2 :is(.ambient-home,.ambient-about,.ambient-closing).ambient-running .ambient-ribbons stop[style] {
    animation-play-state: running;
  }
}

/* Open the homepage at its preferred composition, keeping all hero cycles in phase. */

.sithon-public-v2 .ambient-home.ambient-ready .ambient-ribbon-ember,
.sithon-public-v2 .ambient-home.ambient-ready .ambient-ribbon-charcoal,
.sithon-public-v2 .ambient-home.ambient-ready .ambient-ribbons stop[style] {
  animation-delay: -25s;
}

@keyframes sithon-palette-exchange {
  0%,
  50% {
    stop-color: var(--stop-original);
  }

  100% {
    stop-color: var(--stop-exchanged);
  }
}

/* Matching commands allow smooth Bézier interpolation, including changing inflections. */

@keyframes sithon-ember-fold {
  0% {
    transform: translateY(0) scale(1,1);
    d: path("M -160 -160 L 1600 -160 L 1600 210 C 1240 -80 1100 540 700 330 C 360 100 190 650 -160 410 Z");
  }

  50% {
    transform: translateY(calc(var(--ember-travel) * var(--ribbon-travel-factor) * -1)) scale(calc(1 + (0.04 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (-0.06 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 -160 L 1600 -160 L 1600 160 C 1300 120 1120 150 900 330 C 600 670 80 520 -160 440 Z");
  }

  100% {
    transform: translateY(calc(var(--ember-travel) * var(--ribbon-travel-factor) * 1)) scale(calc(1 + (-0.03 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (0.06 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 -160 L 1600 -160 L 1600 460 C 1280 600 1220 160 800 160 C 420 160 120 220 -160 80 Z");
  }
}

@keyframes sithon-charcoal-fold {
  0% {
    transform: translateY(0) scale(1,1);
    d: path("M -160 340 C 200 740 440 90 840 320 C 1110 500 1320 550 1600 310 L 1600 860 L -160 860 Z");
  }

  50% {
    transform: translateY(calc(var(--charcoal-travel) * var(--ribbon-travel-factor) * 1)) scale(calc(1 + (-0.03 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (0.05 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 470 C 160 480 250 250 600 240 C 1000 220 1280 510 1600 520 L 1600 860 L -160 860 Z");
  }

  100% {
    transform: translateY(calc(var(--charcoal-travel) * var(--ribbon-travel-factor) * -1)) scale(calc(1 + (0.03 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (-0.05 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 280 C 240 200 700 260 960 510 C 1160 700 1490 550 1600 430 L 1600 860 L -160 860 Z");
  }
}

/* Footer control points travel 40% of the original distance from the resting shape. */

@keyframes sithon-footer-ember-fold {
  0% {
    transform: translateY(0) scale(1,1);
    d: path("M -160 -160 L 1600 -160 L 1600 210 C 1240 -80 1100 540 700 330 C 360 100 190 650 -160 410 Z");
  }

  50% {
    transform: translateY(calc(var(--ember-travel) * var(--ribbon-travel-factor) * -1)) scale(calc(1 + (0.04 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (-0.06 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 -160 L 1600 -160 L 1600 190 C 1264 0 1108 384 780 330 C 456 328 146 598 -160 422 Z");
  }

  100% {
    transform: translateY(calc(var(--ember-travel) * var(--ribbon-travel-factor) * 1)) scale(calc(1 + (-0.03 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (0.06 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 -160 L 1600 -160 L 1600 310 C 1256 192 1148 388 740 262 C 384 124 162 478 -160 278 Z");
  }
}

@keyframes sithon-footer-charcoal-fold {
  0% {
    transform: translateY(0) scale(1,1);
    d: path("M -160 340 C 200 740 440 90 840 320 C 1110 500 1320 550 1600 310 L 1600 860 L -160 860 Z");
  }

  50% {
    transform: translateY(calc(var(--charcoal-travel) * var(--ribbon-travel-factor) * 1)) scale(calc(1 + (-0.03 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (0.05 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 392 C 184 636 364 154 744 288 C 1066 388 1304 534 1600 394 L 1600 860 L -160 860 Z");
  }

  100% {
    transform: translateY(calc(var(--charcoal-travel) * var(--ribbon-travel-factor) * -1)) scale(calc(1 + (0.03 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))),calc(1 + (-0.05 * var(--ribbon-scale-factor) * var(--ribbon-travel-factor))));
    d: path("M -160 316 C 216 524 544 158 888 396 C 1130 580 1388 550 1600 358 L 1600 860 L -160 860 Z");
  }
}

.sithon-public-v2 .ambient-region .closing-section {
  background: none;
}

.sithon-public-v2 .ambient-region .trial-note span,
.sithon-public-v2 .ambient-footer .footer-brand p,
.sithon-public-v2 .ambient-footer .footer-bottom {
  color: #aaa29a;
}

.sithon-public-v2 .ambient-home .hero-description,
.sithon-public-v2 .ambient-home .trial-note span {
  color: #bfb8af;
}

@media (max-width:767px) {
  .sithon-public-v2 .ambient-region {
    --ribbon-travel-factor: .5;
  }

  .sithon-public-v2 .ambient-ribbons {
    opacity: calc(var(--ribbon-strength) * .75);
  }

  .sithon-public-v2 .ambient-ready .ambient-ribbon-charcoal {
    animation: none;
  }

  .sithon-public-v2 .ambient-home .ambient-ribbons,
  .sithon-public-v2 .ambient-about .ambient-ribbons {
    transform: translateY(32px);
  }

  .sithon-public-v2 .ambient-static::before {
    opacity: .02;
  }

  .sithon-public-v2 .ambient-static::after {
    display: none;
  }
}

@media (prefers-reduced-motion:reduce) {
  .sithon-public-v2 .ambient-region.ambient-ready .ambient-ribbons stop[style] {
    animation: none;
  }

  .sithon-public-v2 .ambient-ready .ambient-ribbon-ember,
  .sithon-public-v2 .ambient-ready .ambient-ribbon-charcoal {
    animation: none;
  }
}

.sithon-public-v2.motion-reduced .ambient-ribbon-ember,
.sithon-public-v2.motion-reduced .ambient-ribbon-charcoal {
  animation: none;
}

.sithon-public-v2.motion-reduced .ambient-region.ambient-ready .ambient-ribbons stop[style] {
  animation: none;
}

@media (forced-colors:active) {
  .sithon-public-v2 .ambient-ribbons,
  .sithon-public-v2 .ambient-region::before,
  .sithon-public-v2 .ambient-region::after {
    display: none;
  }
}
