/* The ce-net.com homepage motion layer for pages that keep their own layout (compute, solutions, for-factories, ...).
   Load after the page's own CSS, with /assets/home-obs.js, and mark headings .obs-decode and crumbs .obs-type.
   The same rules as home-obs.css (ce-design §9), without its homepage layout, so it never fights a page's .hero.
   Always dark. Goal leif-console-10271820-1. Signed: foreman/leif-console */
:root{--glow:0 0 18px rgba(245,165,36,.45),0 0 2px rgba(245,165,36,.8)}
html,body{background:#000}

/* scanlines over everything, and one slow sweep */
.scan{position:fixed;inset:0;z-index:50;pointer-events:none;
  background:repeating-linear-gradient(to bottom,rgba(255,255,255,.022) 0 1px,transparent 1px 3px)}
.scan::after{content:"";position:absolute;left:0;right:0;top:-20vh;height:20vh;
  background:linear-gradient(to bottom,transparent,rgba(245,165,36,.035) 70%,rgba(245,165,36,.07) 99%,transparent);
  animation:sweep 9s linear infinite}
@keyframes sweep{to{transform:translateY(140vh)}}

/* typed crumb above a heading */
:root .obs-crumb.obs-crumb{display:flex;align-items:center;gap:8px;margin:0 0 14px;font:500 10.5px/1.4 var(--mono,var(--font-mono,'JetBrains Mono',monospace));
  letter-spacing:var(--track-crumb,.14em);text-transform:uppercase;color:var(--ink-2)}
.live-dot{width:6px;height:6px;border-radius:50%;background:var(--live);box-shadow:0 0 8px var(--live);animation:blink 1.6s steps(2) infinite;flex:none}
@keyframes blink{50%{opacity:.25}}
.obs-type.typing::after{content:"";display:inline-block;width:6px;height:1em;background:var(--acc);margin-left:3px;vertical-align:-2px}

/* headings decode in: Michroma caps like the homepage */
h1.obs-decode,h2.obs-decode{font-family:var(--disp,var(--font-display));text-transform:uppercase;letter-spacing:.04em;font-weight:400}
/* split heroes: the text column is half the page, so the wide caps stay inside it */
:root h1.obs-decode.obs-decode{font-size:clamp(26px,3.4vw,50px);line-height:1.08;max-width:100%;text-wrap:balance}
.obs-decode .gl{color:var(--acc);text-shadow:var(--glow);opacity:.9}
.js .obs-decode:not(.done){visibility:hidden;animation:shown 0s 2.5s forwards}
.js .obs-decode.run{visibility:visible}
@keyframes shown{to{visibility:visible}}

@media (prefers-reduced-motion:reduce){
  .scan::after,.live-dot{animation:none}
  .js .obs-decode:not(.done){visibility:visible}
}
