/* Academiq v4 - Bombe intro loader (js/bombe.js). Tokens only, no layout impact. */
.bombe{
  position:fixed;inset:0;z-index:9999;display:grid;place-items:center;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  background-color:var(--s0,#121830);
  background-image:radial-gradient(circle at 1px 1px,var(--rule-soft,rgba(150,165,230,.16)) 1px,transparent 1.2px);
  background-size:8px 8px;
  touch-action:none;overscroll-behavior:contain;cursor:pointer;
  transition:opacity .28s var(--ease,ease),transform .28s var(--ease,ease);
}
.bombe canvas{grid-area:1/1;display:block;transition:opacity .16s linear}
.bombe-logo{grid-area:1/1;display:flex;flex-direction:column;align-items:center;gap:clamp(16px,3vh,28px)}
.bombe img{
  display:block;height:auto;
  opacity:0;transform:scale(.98);transition:opacity .22s linear,transform .3s var(--ease,ease);
}
.bombe .bombe-mark{width:min(36vw,150px);transform:scale(.9) translateY(8px)}
.bombe .bombe-word{width:min(70vw,300px)}
.bombe.go canvas{opacity:0}
.bombe.go img{opacity:1;transform:none;transition-delay:.12s}
.bombe.go .bombe-word{transition-delay:.26s}
.bombe.out{opacity:0;transform:translateY(-14px);pointer-events:none}
.bombe.fast,.bombe.fast *{transition-duration:.12s}
/* optional pre-paint cover; added by the 1-line head snippet, removed by bombe.js */
html.bm-pre::before{
  content:"";position:fixed;inset:0;z-index:9998;background:#121830;
  animation:bm-fail 0s 2.5s forwards;
}
@keyframes bm-fail{to{visibility:hidden}}
@media (prefers-reduced-motion:reduce){html.bm-pre::before{display:none}}
