/* The fight's light (atmos.ts). Owner 04.10 («2А»): nothing lies over the screen any more — no candle pool, mood grade,
   vignette, motes, fog or shafts («ощущается как сплошные фильтры»). What stays is light ON objects: the acting
   seat's glow under the UI, and the one-off moments of my turn (a sweep to my plate, a brass glint over it).
   #atmos makes no stacking context (no z-index / opacity / transform on it), so its children blend with the screen.
   html[data-fx]: full = everything; soft = no breathing; off = none of it. */
.atm { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.atm > * { position: absolute; inset: 0; pointer-events: none; }
.atm[data-scene="none"] > * { display: none; }

/* one-off moments: my turn's sweep, the brass glint over my plate, a line opening under it */
.atm-fx > * { position: absolute; z-index: 21; will-change: transform, opacity; }
.atm-sweep { width: 560px; height: 280px; mix-blend-mode: screen; border-radius: var(--r-round); background: radial-gradient(ellipse at center, rgba(var(--t-g-warn-3-rgb), .34), rgba(var(--t-g-warn-6-rgb), .12) 45%, transparent 70%); }
.atm-glint { overflow: hidden; mix-blend-mode: screen; border-radius: calc(var(--r-md) * 4 / 5); }
.atm-glint .bar { position: absolute; top: -50%; left: 0; width: 70px; height: 200%; background: linear-gradient(90deg, transparent, rgba(var(--t-paper-15-rgb), .55), transparent); }
.atm-underline { height: 2px; transform-origin: 50% 50%; background: linear-gradient(90deg, transparent, var(--c-accent-2) 20%, var(--t-ink-9) 50%, var(--c-accent-2) 80%, transparent); box-shadow: 0 0 12px rgba(var(--c-accent-2-rgb), .8); }

/* ---------- under the fight's UI: the acting seat's glow */
.amb { position: absolute; inset: 0; pointer-events: none; }
.amb > div { position: absolute; inset: 0; transition: opacity 2.4s ease; }
/* the turn light rests on the acting seat's machine and slides to the next one */
.amb .amb-seat { inset: auto; left: -380px; top: -170px; width: 760px; height: 340px; opacity: 0; border-radius: var(--r-round);
  background: radial-gradient(ellipse at center, rgba(var(--t-c-ink-rgb), .09), transparent 68%);
  transition: opacity .6s ease, transform .9s cubic-bezier(.45,0,.25,1); }
.amb .amb-seat.on { opacity: 1; }
.amb .amb-seat.me { background: radial-gradient(ellipse at center, rgba(var(--t-g-warn-7-rgb), .26), rgba(var(--t-g-accent-7-rgb), .08) 50%, transparent 70%); }
.amb .amb-seat.me::after { content: ""; position: absolute; inset: 18% 22%; border-radius: var(--r-round); background: radial-gradient(ellipse at center, rgba(var(--t-g-warn-3-rgb), .16), transparent 70%);
  animation: amb-breathe 3.4s ease-in-out infinite; }
@keyframes amb-breathe { 0%, 100% { opacity: .45; transform: scale(.96); } 50% { opacity: 1; transform: scale(1.04); } }

/* v14: the owner's turn light is the screen's own warm glow behind the mover's machine (.mturnlit, style.css),
   so the shared seat glow stays off there; the glow keeps showing whose turn it is at every effects level — soft / off /
   reduced motion only stop its breathing (and reduced motion its slide) */
.mfx.v14 .amb .amb-seat { display: none; }
html[data-fx="soft"] .mfx.v14 .mturnlit, html[data-fx="off"] .mfx.v14 .mturnlit { animation: none; }

/* ---------- effects levels and reduced motion */
html[data-fx="off"] .atm, html[data-fx="off"] .amb { display: none; }
html[data-fx="soft"] .amb .amb-seat.me::after { animation: none; }
