/* SOMATRO SHARED LIVING CORE — consolidated waiting-state motion.
   Consolidation of the APPROVED Startup living-core treatment (living-core.css
   .lv-rings / .lv-core / .lv-trace + sj-engine.jsx SJ_BEATS / SJ_RING), applied to
   the genuine branded waiting states named in SHARED-AURORA-MOTION-REQUIREMENT.md.
   NOT a redesign: ring gradient, halo falloff, blur-in-ring-space and the
   beat-causes-ripple rule are carried over unchanged. Startup keeps its own frozen
   choreography and does not consume this component. */
/* The stage is centred on its own; the copy hangs beneath it as an absolute layer,
   so the mark sits at the true optical centre and the ripple field has its full
   half-height of headroom. contain is layout ONLY — paint containment would clip
   the halo at the box edge. */
.slc{position:relative;display:grid;place-items:center;isolation:isolate;contain:layout}
.slc-stage{position:relative;display:grid;place-items:center}
/* Ambient — restrained violet/cyan bloom behind the mark, never decorative bloom */
.slc-amb{position:absolute;left:50%;top:50%;width:760px;height:760px;margin:-380px 0 0 -380px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side circle at 50% 50%,rgba(18,181,201,.10) 0%,rgba(124,77,255,.055) 46%,transparent 72%);opacity:.5;will-change:opacity,transform}
/* Ripple field — geometry and colour carried verbatim from the frozen Startup core.
   Each ring is born at the mark's centre, caused by a real beat: tighter and
   stronger near the mark, progressively dimmer, softer and more diffuse outward.
   Aurora atmosphere, never a hard-line concentric circle. */
.slc-rings{position:absolute;left:50%;top:50%;width:0;height:0}
.slc-rings i{position:absolute;left:0;top:0;width:160px;height:160px;margin:-80px 0 0 -80px;border-radius:50%;border:0;opacity:0;will-change:transform,opacity;filter:blur(var(--rb,1px));
  background:radial-gradient(closest-side circle at 50% 50%,
    rgba(163,240,250,0) calc(76% - var(--rt,3px) * 3.2),
    var(--rc2,rgba(176,243,255,.16)) calc(76% - var(--rt,3px) * 1.5),
    var(--rc,rgba(176,243,255,.6)) 76%,
    var(--rc2,rgba(176,243,255,.16)) calc(76% + var(--rt,3px) * 1.7),
    rgba(163,240,250,0) calc(76% + var(--rt,3px) * 3.6))}
/* The exact logo — never redrawn, never recoloured */
.slc-core{position:relative;width:var(--slc-mark,160px);height:var(--slc-mark,160px);will-change:transform}
.slc-core img{width:100%;height:100%;display:block}
.slc-glow{position:absolute;left:50%;top:50%;width:300px;height:300px;margin:-150px 0 0 -150px;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side circle at 50% 50%,rgba(163,240,250,.30) 0%,rgba(124,77,255,.10) 52%,transparent 76%);opacity:0;will-change:opacity,transform}
/* Copy beneath the mark — same relationship the frozen journey uses */
.slc-below{position:absolute;left:0;right:0;top:calc(50% + var(--slc-copy,196px));display:flex;flex-direction:column;align-items:center;gap:var(--space-3,12px);text-align:center;padding:0 44px;box-sizing:border-box;pointer-events:none}
/* Copy tier carried from the frozen Startup treatment: 30px at 1080 (living-core.css
   .lv-greet), dropping to the design system 720 tier at 720p — never two thirds. */
.slc-label{font:var(--weight-semibold) 30px/1.2 var(--font-ui);color:var(--text-primary)}
.slc-sub{font:var(--weight-regular) var(--text-h2)/1.35 var(--font-ui);color:var(--text-secondary);text-wrap:pretty}
/* Context variants — the same treatment at different intensities, no new motion */
.slc[data-variant="verification"] .slc-amb,.slc[data-variant="recovery"] .slc-amb{opacity:.34}
.slc[data-variant="firstframe"]{--slc-mark:112px}
.slc[data-variant="firstframe"] .slc-amb{width:520px;height:520px;margin:-260px 0 0 -260px;opacity:.36}
.slc[data-variant="firstframe"]{--slc-copy:150px}
/* 720p — the mark/ripple GEOMETRY group scales; type sits on the 720 tier and is
   never two thirds of a 1080p size. Same rule the frozen Startup stage uses. */
.slc[data-res="720"] .slc-stage{transform:scale(.66666667)}
.slc[data-res="720"]{--slc-copy:150px}
.slc[data-res="720"] .slc-label{font-size:var(--text-h1)}  /* 26px — the same tier Home's 720 titles use */
.slc[data-res="720"] .slc-sub{font-size:var(--text-body)}
/* REDUCE MOTION — static mark, minimal opacity/halo treatment, same final geometry.
   No choreography, no focus delay, nothing removed from the layout. */
.slc.rm .slc-rings{display:none}
.slc.rm .slc-core{transform:none!important}
.slc.rm .slc-glow{opacity:.20!important;transform:scale(1)!important;transition:none}
.slc.rm .slc-amb{opacity:.32!important;transform:none!important;transition:none}
/* The OS preference reaches the same reduced tier. [data-slc-motion="force"] is a
   proof-board escape only — it exists so the live treatment can be inspected on a
   reduced-motion host, and no product surface sets it. */
@media (prefers-reduced-motion:reduce){
  .slc:not([data-slc-motion="force"]) .slc-rings{display:none}
  .slc:not([data-slc-motion="force"]) .slc-core{transform:none!important}
  .slc:not([data-slc-motion="force"]) .slc-glow{opacity:.20!important;transform:scale(1)!important}
}
