/* Atmospheric layers use the DaviusCode palette defined in main.css. */
.has-atmosphere { position: relative; isolation: isolate; overflow: hidden; }
.has-atmosphere > :not(.atmosphere-canvas) { position: relative; z-index: 1; }
.atmosphere-canvas { position: absolute; inset: 0; z-index: 0; display: block; width: 100%; height: 100%; pointer-events: none; }
.ecosystem.atmosphere-ready .ecosystem-map { background-image: none; }
.ecosystem.atmosphere-ready .ecosystem-top,
.ecosystem.atmosphere-ready .ecosystem-bottom { background: #102e3a9c; }
.ecosystem { transition: border-color .4s, box-shadow .4s; }
.ecosystem:hover { border-color: var(--c-primary); box-shadow: 0 24px 54px #102e3a14, 0 0 35px #229ebd12; }
.hero-visual.has-atmosphere { background: #f1f6f7; }
.hero-visual.has-atmosphere .lottie-inline { pointer-events: none; }
.process-section.has-atmosphere::before,
.future-cta::before { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(ellipse at 80% 110%, #229ebd26, transparent 56%), radial-gradient(ellipse at 0% 0%, #fb86000b, transparent 48%); }
.process-section.has-atmosphere .process-step p,
.process-section.has-atmosphere .process-intro { color: #c6d8de; }
.future-cta { background: var(--c-deep); border-color: #229ebd38; }
.future-cta h2 { color: #fff; }
.future-cta p:not(.section-kicker) { color: #c6d8de; }
.future-cta .section-kicker { color: var(--c-accent); }
.future-cta .btn.ghost { background: #102e3a; color: white; border-color: #81a6b4; }
.future-cta .btn.ghost:hover { border-color: var(--c-primary); }
.future-cta > .btn { z-index: 2; }

/* A quiet orbital motion reinforces the architecture illustration. */
.ecosystem .orbit-outer,
.ecosystem .orbit-inner { animation: orbital-drift 48s linear infinite paused; }
.ecosystem .orbit-inner { animation-direction: reverse; animation-duration: 34s; }
.ecosystem .map-orbit::after { content: ""; position: absolute; width: 5px; height: 5px; border-radius: 50%; top: 13%; left: 13%; background: var(--c-primary); box-shadow: 0 0 10px #229ebd70; }
.ecosystem .orbit-inner::after { top: 84%; left: 16%; width: 4px; height: 4px; background: var(--c-accent); box-shadow: 0 0 9px #fb860070; }
.ecosystem .map-node { animation: node-drift 7s ease-in-out infinite paused; }
.ecosystem .node-cloud { animation-delay: -2.4s; animation-duration: 8s; }
.ecosystem .node-security { animation-delay: -4.2s; animation-duration: 9s; }
.ecosystem .map-core::before { content: ""; position: absolute; inset: -7px; border: 1px solid #fb860054; border-radius: 25px; opacity: .6; animation: core-signal 5s ease-out infinite paused; pointer-events: none; }
.atmosphere-active .map-orbit,
.atmosphere-active .map-node,
.atmosphere-active .map-core::before { animation-play-state: running; }
@keyframes orbital-drift { from { transform: translate(-50%, -50%) rotate(0); } to { transform: translate(-50%, -50%) rotate(360deg); } }
@keyframes node-drift { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
@keyframes core-signal { 0% { transform: scale(.97); opacity: .55; } 70%, 100% { transform: scale(1.24); opacity: 0; } }

/* Interaction accents stay on the component instead of following the page. */
.btn.primary { position: relative; overflow: hidden; }
.btn.primary::after { content: ""; position: absolute; top: -70%; left: -70%; width: 42%; height: 240%; background: linear-gradient(90deg, transparent, #ffffff45, transparent); transform: translateX(-150%) rotate(24deg); pointer-events: none; transition: transform .65s ease; }
.btn.primary:hover::after,
.btn.primary:focus-visible::after { transform: translateX(680%) rotate(24deg); }
.btn.primary span[aria-hidden], .link span[aria-hidden], .text-link span[aria-hidden] { display: inline-block; transition: transform .25s ease; }
.btn.primary:hover span[aria-hidden], .link:hover span[aria-hidden], .text-link:hover span[aria-hidden] { transform: translate(2px, -2px); }
.service-card { position: relative; overflow: hidden; }
.service-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--c-accent), var(--c-primary)); transform: scaleX(0); transform-origin: left; transition: transform .4s ease; }
.service-card:hover::before, .service-card:focus-within::before { transform: scaleX(1); }
.service-card .link:focus-visible { outline-offset: -3px; }
.service-card .card-icon { transition: transform .3s ease, background .3s ease; }
.service-card:hover .card-icon { transform: translateY(-2px) rotate(-5deg); background: #fb860026; }
.site-header::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: linear-gradient(90deg, var(--c-accent), var(--c-primary)); transform: scaleX(var(--reading-progress, 0)); transform-origin: left; pointer-events: none; }

.effects-toggle { position: fixed; left: 20px; bottom: 22px; z-index: 24; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 36px; padding: 8px 12px; color: var(--c-deep); background: #ffffffed; border: 1px solid #102e3a20; border-radius: 5px; box-shadow: 0 3px 14px #102e3a08; backdrop-filter: blur(8px); font-size: 10px; font-weight: 650; line-height: 1.4; transition: border-color .2s; }
.effects-toggle:hover { border-color: var(--c-primary); }
.effects-toggle svg { width: 13px; height: 13px; flex: 0 0 auto; }
.effects-toggle[data-paused="true"] { border-color: #fb860070; }
.effects-toggle[hidden] { display: none; }
.effects-paused *, .effects-paused *::before, .effects-paused *::after { animation-play-state: paused !important; transition: none !important; }
@media(max-width: 640px) {
  .effects-toggle { left: 16px; bottom: 19px; min-height: 35px; padding: 8px 10px; font-size: 9px; gap: 6px; }
  .effects-toggle svg { width: 12px; height: 12px; }
  .future-cta { padding-bottom: 34px; }
}
@media(prefers-reduced-motion: reduce) {
  .has-atmosphere *, .has-atmosphere *::before, .has-atmosphere *::after { animation: none !important; }
  .effects-toggle { display: none; }
  .btn.primary::after { display: none; }
}
