/* Фон как на /club (site-club.css + site-fx.js) для страниц со встроенным CSS главной: index, kosultacii, podpiska_osvk (29.09.2026).
   Копия блока «фон в стиле ИИ» из site-club.css: при его правке обновить и здесь. Элементы создаёт /assets/site-fx.js. */
:root { --glow-a:rgba(28,198,217,.10); --glow-b:rgba(95,227,240,.05); }
html[data-theme="light"] { --glow-a:rgba(13,143,158,.08); --glow-b:rgba(13,143,158,.04); }
body { background:radial-gradient(900px 600px at 85% -10%,var(--glow-a),transparent 60%),
                  radial-gradient(700px 500px at -10% 30%,var(--glow-b),transparent 60%), var(--bg);
       background-attachment:fixed; }
.fx-layer { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.fx-orb { position: absolute; border-radius: 50%; filter: blur(90px); opacity: .65; animation: fxDrift 38s ease-in-out infinite alternate; }
.fx-orb.o1 { width: 520px; height: 520px; top: -160px; left: -140px; background: rgba(28,198,217,.16); }
.fx-orb.o2 { width: 460px; height: 460px; top: 38%; right: -160px; background: rgba(151,135,198,.20); animation-duration: 46s; animation-delay: -12s; }
.fx-orb.o3 { width: 380px; height: 380px; bottom: -140px; left: 30%; background: rgba(28,198,217,.10); animation-duration: 52s; animation-delay: -24s; }
@keyframes fxDrift { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(60px,40px) scale(1.08); } 100% { transform: translate(-40px,70px) scale(.95); } }
.fx-grid { position: absolute; inset: 0; background-image: radial-gradient(rgba(255,255,255,.07) 1px, transparent 1.4px); background-size: 28px 28px;
-webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 30%, #000 20%, transparent 75%); mask-image: radial-gradient(ellipse 70% 60% at 50% 30%, #000 20%, transparent 75%); }
/* разбросанные по странице элементы: слой высотой со страницу, расставляет /assets/site-fx.js */
.fx-scatter { position: absolute; top: 0; left: 0; width: 100%; z-index: -1; overflow: hidden; pointer-events: none; }
.fx-item { position: absolute; pointer-events: none; }
.fx-neural svg, .fx-circuit svg, .fx-chip svg, .fx-wave svg { width: 100%; height: 100%; display: block; overflow: visible; }
.fx-neural { --c: 28,198,217; animation: fxFloat 16s ease-in-out infinite; }
.fx-neural.v, .fx-circuit.v, .fx-chip.v { --c: 151,135,198; }
.fx-neural .ln line { stroke: rgba(var(--c),.10); stroke-width: 1; }
.fx-neural .n { fill: rgba(var(--c),.35); transform-box: fill-box; transform-origin: center; animation: fxPulse 3s ease-in-out infinite; }
.fx-neural .sig { fill: rgba(var(--c),.9); filter: drop-shadow(0 0 4px rgba(var(--c),.9)); }
.fx-circuit { --c: 28,198,217; }
.fx-circuit .tr path { fill: none; stroke: rgba(var(--c),.12); stroke-width: 1.5; }
.fx-circuit .flow { fill: none; stroke: rgba(var(--c),.6); stroke-width: 1.5; stroke-linecap: round; stroke-dasharray: 14 400; animation: fxFlow 4s linear infinite; }
.fx-circuit .pad { fill: none; stroke: rgba(var(--c),.4); stroke-width: 1.5; }
.fx-chip { --c: 28,198,217; animation: fxFloat 14s ease-in-out infinite; animation-delay: -4s; }
.fx-chip .pins line { stroke: rgba(var(--c),.22); stroke-width: 2; stroke-linecap: round; }
.fx-chip .body { fill: rgba(var(--c),.04); stroke: rgba(var(--c),.28); stroke-width: 1.5; }
.fx-chip .core { fill: none; stroke: rgba(var(--c),.15); stroke-width: 1; }
.fx-chip text { font: 700 18px "JetBrains Mono", monospace; fill: rgba(var(--c),.45); letter-spacing: 1px; }
.fx-wave rect { fill: rgba(151,135,198,.22); transform-box: fill-box; transform-origin: center; animation: fxWave 1.2s ease-in-out infinite; }
@keyframes fxPulse { 0%,100% { opacity: .5; transform: scale(1); } 50% { opacity: 1; transform: scale(1.35); } }
@keyframes fxFlow { from { stroke-dashoffset: 0; } to { stroke-dashoffset: -414; } }
@keyframes fxWave { 0%,100% { transform: scaleY(.45); } 50% { transform: scaleY(1); } }
html[data-theme="light"] .fx-neural, html[data-theme="light"] .fx-circuit, html[data-theme="light"] .fx-chip { --c: 13,143,158; }
html[data-theme="light"] .fx-neural.v, html[data-theme="light"] .fx-circuit.v, html[data-theme="light"] .fx-chip.v { --c: 108,92,163; }
.fx-spark { animation: fxTwinkle 4s ease-in-out infinite; }
.fx-spark svg { width: 100%; height: 100%; display: block; }
.fx-spark.v { color: var(--violet); }
.fx-spark.t { color: var(--accent); }
.fx-spark.d2 { animation-delay: -1.4s; } .fx-spark.d3 { animation-delay: -2.6s; }
@keyframes fxFloat { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-18px) rotate(8deg); } }
@keyframes fxTwinkle { 0%,100% { opacity: .25; transform: scale(.8) rotate(0); } 50% { opacity: .9; transform: scale(1.1) rotate(20deg); } }
html[data-theme="light"] .fx-orb { opacity: .35; }
html[data-theme="light"] .fx-grid { background-image: radial-gradient(rgba(23,27,33,.08) 1px, transparent 1.4px); }
@media (max-width: 760px) { .fx-circuit, .fx-wave, .fx-neural.v, .fx-chip.v { display: none; } .fx-neural { opacity: .4; } .fx-orb { filter: blur(70px); } }
@media (prefers-reduced-motion: reduce) { .fx-orb, .fx-neural, .fx-neural .n, .fx-circuit .flow, .fx-chip, .fx-wave rect, .fx-spark { animation: none; } .fx-neural .sig { display: none; } }
@media (max-width: 1360px) { .fx-item { opacity: .55; } }
