/* Base styles — moved verbatim out of the inline <style> block in
   "Axomera Landing.dc.html". No values changed; desktop look is identical. */
html { scroll-behavior: smooth; }
body { margin: 0; background: #0A0A0A; color: #fff; font-family: Manrope, system-ui, sans-serif; -webkit-font-smoothing: antialiased; }
a { color: #00D2FF; text-decoration: none; }
a:hover { color: #BD00FF; }
::selection { background: #BD00FF; color: #fff; }
input, textarea, button { font-family: inherit; }
@keyframes axHalo { 0%,100% { opacity: .5; transform: scale(1); } 50% { opacity: .9; transform: scale(1.07); } }
@keyframes axRise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes axBlink { 0%,100% { opacity: .25; } 50% { opacity: 1; } }
@keyframes axScan { from { transform: translateY(-100%); } to { transform: translateY(900%); } }
@keyframes axGlobe { from { background-position: 0 0; } to { background-position: 360px 0; } }
@keyframes axSpin { to { transform: rotate(360deg); } }

.ax-spinner {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 3px solid rgba(255,255,255,.14);
  border-top-color: #00D2FF;
  animation: axSpin 0.9s linear infinite;
}

/* .ax-case-card's own position/transform/filter are driven by JS every
   scroll frame (see initCaseStack in index.html). They live in this
   stylesheet, not an inline style="..." attribute, on purpose: the dc
   runtime re-applies every inline style attribute from the template on
   every re-render (e.g. the donation counter ticking every 2.6s), which
   would stomp the JS-set values right back to their template defaults.
   A plain CSS class is never touched by that reconciliation. */
.ax-case-card {
  height: calc(100vh - 120px);
  min-height: 480px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 20px;
  background: #141414;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: border-color .6s ease, box-shadow .6s ease;
  will-change: transform;
}
