/* Chime landing page — extracted from the Claude-Design artifact
   (Chime-Landing-Animated.dc.html). Keyframes are verbatim from the design's
   <style> block; the rest is the small amount of glue (hover states, the
   keyboard-key utility, responsive stage scaling, reduced-motion) that the
   dc-runtime used to apply inline. No build step — plain CSS. */

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { margin: 0; padding: 0; background: #ffffff; }
a { text-decoration: none; color: inherit; }

/* Anchored sections clear the sticky nav (~84px) when jumped to. */
#how, #security { scroll-margin-top: 84px; }

/* ---- Animations (verbatim from the design) ---- */
@keyframes cm-blink { 0%,90%,100% { transform: scaleY(1); } 95% { transform: scaleY(.1); } }
@keyframes caret { 0%,50% { opacity: 1; } 51%,100% { opacity: 0; } }
@keyframes ring { 0% { transform: scale(.5); opacity: .55; } 100% { transform: scale(2.3); opacity: 0; } }
@keyframes cm-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-15px); } }
@keyframes cm-spin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
@keyframes cm-typing { 0%,80%,100% { opacity: .3; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
@keyframes cm-pulse { 0%,100% { transform: scale(1); opacity: .55; } 50% { transform: scale(1.55); opacity: .12; } }
@keyframes cm-keypress { 0% { transform: scale(1); background: #fff; box-shadow: 0 1px 0 rgba(0,0,0,.3); } 22% { transform: scale(.9); background: #9aa1ad; box-shadow: 0 0 0 rgba(0,0,0,.3); } 100% { transform: scale(1); background: #fff; box-shadow: 0 1px 0 rgba(0,0,0,.3); } }
@keyframes cm-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes cm-marquee-r { from { transform: translateX(-50%); } to { transform: translateX(0); } }

/* ---- Button hover states (design used style-hover attrs the runtime applied) ---- */
.cm-btn-primary { transition: background .2s ease; }
.cm-btn-primary:hover { background: #C23E2A !important; }
.cm-btn-ghost { transition: background .2s ease; }
.cm-btn-ghost:hover { background: #ffffff !important; }

/* ---- iOS keyboard key (was repeated inline in the design) ---- */
.cm-key {
  flex: 1;
  height: 40px;
  background: #fff;
  border-radius: 5px;
  box-shadow: 0 1px 0 rgba(0,0,0,.3);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: -apple-system, system-ui, sans-serif;
  font-size: 17px;
  color: #1d1d1f;
}
.cm-key-mod { background: #aeb3bd; }

/* ---- Nav links: collapse on mobile, leaving the logo + Get started ---- */
.cm-nav-links { display: flex; align-items: center; gap: 30px; }
@media (max-width: 719px) {
  .cm-nav-links { display: none; }
}

/* ---- Beta-access modal (open/close/submit driven by app.js) ---- */
/* The overlay is hidden until app.js shows it; with JS off it never appears,
   so the page stays fully usable (the Get started button degrades to a link). */
.cm-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(20, 18, 16, .5);
  backdrop-filter: blur(6px);
}
.cm-modal-close { transition: background .2s ease; }
.cm-modal-close:hover { background: #e4e4e9 !important; }
.cm-beta-input { transition: border-color .2s ease; }
.cm-beta-input:focus { border-color: #E2503A; }
.cm-btn-dark { transition: background .2s ease; }
.cm-btn-dark:hover { background: #000 !important; }

/* ---- Reduced motion: keep the page fully legible, drop looping motion ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
  }
}
