/* Sentinel v2 - fx-places.css: what each place of the owner's two effects (v2/fx-places.js) replaces while the effect is there -
   the spinner, the sliding bar or the blinking dot goes, the effect says it. Nothing here moves on its own. */
.sfx-place-orb { display: inline-flex; flex: none; line-height: 0; vertical-align: middle; }

/* Ask (SNT-149): the hero's orb is the page's own (fx-places.js); the live step's orb stands in for its pulsing icon. While a
   question is answered a ring of light runs round the box's border and a soft halo follows it OUTSIDE the box - never inside,
   where the old light read as a blob cut by the edge. Pure CSS on the page's own class: a redraw cannot break it. */
.dx .ask-comp { position: relative; }
.dx .ask-step.sfx-on > svg.ic { display: none; }
.dx .ask-step.sfx-on > .sfx-place-orb { align-self: center; margin: -2px 0; }
@property --ask-a { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
.dx .pg-ask .ask-comp::before, .dx .pg-ask .ask-comp::after {
  content: ""; position: absolute; pointer-events: none; border-radius: inherit; opacity: 0; transition: opacity .4s ease;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
}
.dx .pg-ask .ask-comp::before {
  inset: -1px; padding: 1.5px;
  background: conic-gradient(from var(--ask-a), transparent 0deg, color-mix(in srgb, var(--hm-brand) 25%, transparent) 70deg, var(--hm-brand) 125deg, color-mix(in srgb, var(--hm-brand) 25%, transparent) 180deg, transparent 240deg 360deg);
}
.dx .pg-ask .ask-comp::after {
  inset: -18px; padding: 17px; border-radius: 30px; filter: blur(9px);
  background: conic-gradient(from var(--ask-a), transparent 30deg, color-mix(in srgb, var(--hm-brand) 34%, transparent) 125deg, transparent 220deg 360deg);
}
.dx .pg-ask.is-busy .ask-comp { border-color: color-mix(in srgb, var(--hm-brand) 22%, var(--line-2)); box-shadow: none; }
.dx .pg-ask.is-busy .ask-comp::before { opacity: 1; animation: ask-ring 2.8s linear infinite; }
.dx .pg-ask.is-busy .ask-comp::after { opacity: .75; animation: ask-ring 2.8s linear infinite; }
@keyframes ask-ring { to { --ask-a: 360deg; } }
.dx .ask-status.sfx-on > svg.ic { display: none; }
.dx .pg-ask.is-busy #askQ, .dx .pg-ask.is-busy #askQ:focus { border-color: transparent; box-shadow: none; outline: none; }

/* What if: one orb for the wait, no ring spinner, no sliding bar */
.stress-run .sr-spin.sfx-on { display: inline-flex; align-items: center; justify-content: center; width: auto; height: auto; border: 0 !important; background: none !important; animation: none !important; }
.stress-run:has(.sr-spin.sfx-on) .sr-bar.is-indeterminate { display: none; }

/* the run ladder: the current step's orb; every other loop of the ladder at rest */
.v2-loom .lm-tick.sfx-on { display: inline-flex; align-items: center; justify-content: center; overflow: visible; border-color: transparent !important; background: transparent !important; animation: none !important; }
.v2-loom.is-live .lm-mark path, .v2-loom.is-live .dr-doc { animation: none !important; }
.v2-loom.is-live .dr-sec-fill, .v2-loom.is-live.is-finishing .lm-fill { animation: none !important; background-image: none !important; }
.v2-loom .dr-beam { display: none !important; }
.v2-rundock.is-finishing .rd-fill { animation: none !important; background-image: none !important; }

/* a file being read: the Being read card's orb in place of its document icon; an upload row's orb, its sliding bar gone */
.fx-empty.sfx-reading > svg { display: none !important; }
.dx .dx-up-r.sfx-orb-row .dx-up-bar { display: none; }
.dx .dx-up-s.sfx-on { display: inline-flex; align-items: center; gap: 6px; }

/* the Report: the wording's orb in place of its spinner; the Export button's orb */
.rpt-explainer-loading.sfx-on .rp-spin { display: none; }
[data-act="rpt-export-menu"].sfx-on { display: inline-flex; align-items: center; gap: 6px; }

/* the Document: a landed clause keeps its own bar and tint (the drawn rule gives way to the one lap); the place found in the
   original is a quiet brand tint, not yellow */
.app .parsed-doc .pb.is-v2-landed::after { display: none; }
.pv .pv-text .pv-hit, .pv .pv-mark { background-color: color-mix(in srgb, var(--brand, #1a2fe6) 14%, transparent) !important; box-shadow: none !important; animation: none !important; }
.parse-progress-stage.sfx-on .pps-dot { display: none; }
.lib-upload-pill.sfx-on .lup-spinner { display: none; }

/* the shell: the drawer's button and Refresh show the orb in place of their icon */
#libToggle.sfx-on > svg, [data-act="dx-reload"].sfx-on > svg { display: none; }
[data-act="dx-reload"].sfx-on:disabled { opacity: 1; }

/* a pressed primary button keeps its colour while it works */
.auth-submit.sfx-busy:disabled, [data-act="v2p-sample"].sfx-busy:disabled { opacity: 1; cursor: progress; }
.auth-submit.sfx-busy, [data-act="v2p-sample"].sfx-busy { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }

/* a contract being analysed: its status says "Analysing…" with the orb in place of the dot */
.dx .st.st-live, .dx .c-s.st-live { display: inline-flex; align-items: center; gap: 7px; color: var(--ink-2); }
.dx .st.st-live::before, .dx .c-s.st-live::before { display: none; }

/* Activity's running rows; the engine's restart; the admin console's re-check */
.dx .v2p-live-dot.sfx-live-orb { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin: 0 -7px; border-radius: 0; background: none; box-shadow: none; animation: none; }
#backendSettingsStatus.sfx-on, .adm-muted.sfx-on { display: inline-flex; align-items: center; gap: 8px; }
