/* ERR-571 public launch: official store badges and account call-to-action.
   Loaded only while launch.config.json "publicLaunch" is true.
   Badge artwork is never recoloured or redrawn (Apple/Google guidelines): the
   App Store badge is shown first at the same visible height as the Google Play
   badge, at least 40px high, with at least a quarter of its height clear around it.
   The Google Play PNGs carry transparent padding (English: 41px of 250; the
   localized files: 29px top/bottom of 250), which the negative margins below
   absorb so both badges share one visible height. */
.store-badges{--store-badge-h:52px;display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:0;padding:0;list-style:none}
.store-badges li{display:flex}
.store-badge{display:inline-flex;align-items:center;line-height:0;border-radius:10px;transition:transform .2s ease}
.store-badge:hover{transform:translateY(-2px)}
.store-badge:focus-visible{outline:2px solid #55d9ff;outline-offset:5px}
.store-badge img{display:block;width:auto;max-width:none;border:0}
.store-badge-apple img{height:var(--store-badge-h)}
.store-badge-google img{height:calc(var(--store-badge-h) * 250 / 192);margin:calc(var(--store-badge-h) * -29 / 192) 0}
.store-badge-google img[src*="google-play-badge-en"]{height:calc(var(--store-badge-h) * 250 / 168);margin:calc(var(--store-badge-h) * -41 / 168)}
.store-badges-large{--store-badge-h:60px;gap:18px}
.store-badges-small{--store-badge-h:44px;gap:12px}
.store-account-link{display:inline-flex;align-items:center;min-height:48px;color:#55d9ff;font-weight:600;text-decoration:none}
.store-account-link:hover{color:#73f1b5;text-decoration:underline}
.store-note{margin:14px 0 0;color:#9fb3b9;font-size:14px;line-height:1.6}
.store-note a{color:#55d9ff}
.launch-download{display:grid;gap:18px}
/* Homepage placements */
.hero-stores{margin-top:34px}
.hero-stores + .cta-row{margin-top:22px}
.download-section::before{content:"ERROR SOLIS // 01"}
.anchor-alias{position:absolute;top:0;left:0;width:1px;height:1px;overflow:hidden}
.launch-download{align-content:start}
.launch-download .btn{justify-self:start}
.tester-point a{color:#55d9ff}
.footer-stores{justify-content:flex-end;margin-top:18px}
.store-legal{margin:14px 0 0 auto;max-width:440px;color:#6f858c;font-size:11px;line-height:1.5}
/* Content-page placements (guides, press, devlog, story, account) */
.cta-band .store-badges{margin-top:4px}
.launch-actions{display:grid;justify-items:start;gap:14px}
.prose .store-badges{padding:0;margin:20px 0 8px;list-style:none}
.prose .store-badges li{margin:0;padding:0}
.prose .store-badges li::before{content:none}
/* /download/ (launch-only page): both badges always visible; assets/launch.js
   adds .is-recommended to the store that matches the visitor's device. */
.download-hero-inner{position:relative;padding:84px 0 76px}
.download-hero h1{max-width:none}
.download-options{display:grid;grid-template-columns:repeat(2,minmax(0,300px));gap:18px;margin:38px 0 0;padding:0;list-style:none}
.download-option{--store-badge-h:56px;position:relative;display:grid;gap:16px;justify-items:start;align-content:start;padding:20px 22px 24px;border:1px solid var(--line-soft);background:rgba(8,23,32,.72);transition:border-color .2s ease,background .2s ease}
.download-option-label{color:var(--muted);font-family:var(--display);font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.download-recommended{display:none;position:absolute;top:19px;right:20px;color:var(--green);font-family:var(--display);font-size:9px;letter-spacing:.14em;text-transform:uppercase}
.download-recommended::before{content:"● "}
.download-option.is-recommended{border-color:var(--cyan);background:rgba(85,217,255,.08);box-shadow:0 0 0 1px rgba(85,217,255,.22),0 18px 50px rgba(0,0,0,.4)}
.download-option.is-recommended .download-recommended{display:block}
.download-note{max-width:62ch;margin-top:24px;color:var(--muted);font-size:15px;line-height:1.6}
.download-note[hidden]{display:none}
.download-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:34px 0 0;padding:0;list-style:none}
.download-step{display:grid;grid-template-columns:auto 1fr;gap:14px;padding:22px;border:1px solid var(--line-soft);background:rgba(8,23,32,.5)}
.download-step .index{color:var(--cyan);font-family:var(--display);font-size:12px;letter-spacing:.12em}
.download-step h3{margin:0 0 8px;font-size:15px;letter-spacing:.04em}
.download-step p{margin:0;color:var(--muted);font-size:15px;line-height:1.55}
.download-links{margin-top:26px}
.download-legal{margin:18px 0 0;max-width:640px}
@media (max-width:860px){.download-steps{grid-template-columns:1fr}}
@media (max-width:700px){
  .hero > .wrap{padding-top:88px;padding-bottom:200px}
  .hero-kicker{margin-bottom:22px}
  .tagline{margin-top:24px}
  .hero-stores{margin-top:26px}
  .hero.download-hero > .wrap{padding-bottom:0}
  .download-hero-inner{padding:46px 0 44px}
  .download-options{grid-template-columns:1fr;gap:14px;margin-top:28px}
  .download-option{--store-badge-h:52px;padding:18px 18px 20px}
  /* Homepage analytics banner: compact on phones so the hero store badges stay
     visible on a first visit (the full text is unchanged). */
  .analytics-consent{right:8px;bottom:8px;width:calc(100% - 16px);padding:12px 14px 4px}
  .analytics-consent::before{display:none}
  .analytics-consent h2{font-size:12px;line-height:1.35}
  .analytics-consent p{margin-top:5px;font-size:12px;line-height:1.4}
  .analytics-consent-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:9px}
  .analytics-consent-actions .btn{min-width:0;padding:4px 8px;font-size:9px;line-height:1.25;white-space:normal}
  .analytics-details{margin-top:0}
  .footer-stores{justify-content:flex-start}
  .store-legal{margin-left:0}
  .launch-download .btn{justify-self:stretch}
  .store-badges,.store-badges-large{--store-badge-h:48px;gap:14px}
  .store-badges-small{--store-badge-h:44px;gap:12px}
}
@media (max-width:380px){.store-badges,.store-badges-large{--store-badge-h:46px;gap:12px}}
/* Short phones (iPhone SE class): the banner sits at the top so the hero store
   badges below it stay visible. */
@media (max-width:700px) and (max-height:720px){.analytics-consent{top:8px;bottom:auto}}
@media (prefers-reduced-motion:reduce){.store-badge,.download-option{transition:none}.store-badge:hover{transform:none}}
