/* =========================
   SHARED MAIN SITE BASE
   Used by: Homepage + Redeem
========================= */

:root{
  --brand: #f4184c;
  --brand2: rgba(244, 24, 76, 0.12);
  --bg: #ffffff;
  --card: rgba(255,255,255,0.88);
  --border: rgba(20,20,20,0.10);
  --text: #1b1b1b;
  --muted: rgba(27,27,27,0.70);
  --radius: 16px;
  --shadow: 0 10px 28px rgba(0,0,0,.10);
  --scrollTrack: #226cbb;
  --scrollThumb: #56a7fe;
}

*{ box-sizing: border-box; }

html{
  scroll-behavior: smooth;
  scrollbar-color: var(--scrollThumb) var(--scrollTrack);
  scrollbar-width: auto;
}

body{
  margin: 0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color: var(--text);
  background: var(--bg);
  font-size: 17px;
  line-height: 1.6;
  overflow-x: hidden;
}

a{ color: inherit; text-decoration: none; }
a:hover{ text-decoration: underline; text-underline-offset: 4px; }

:focus-visible{
  outline: 3px solid rgba(244,24,76,0.35);
  outline-offset: 3px;
  border-radius: 12px;
}

button{
  font: inherit;
}

button:not(.btn):not(.menuBtn){
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--border);
  cursor: pointer;
  background: #fff;
  font-weight: 900;
  font-size: 14px;
  line-height: 1.2;
  color: var(--text);
}

button, .navlink, a{
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}

button:active, .navlink:active{
  transform: translateY(1px) scale(0.99);
}

.linkBrand{
  color: var(--brand);
  font-weight: 900;
  text-decoration: none;
}

.linkBrand:hover{
  text-decoration: none;
  background: var(--brand2);
  border-radius: 10px;
  padding: 2px 6px;
  margin: -2px -6px;
}

.wrap{
  max-width: 1100px;
  margin: 0 auto;
  padding: 16px;
  overflow-x: clip;
}

body::before{
  content:"";
  position: fixed;
  inset: 0;
  z-index: -2;
  opacity: 1;
  transform: translateZ(0);
  will-change: background-position;
  background:
    radial-gradient(circle, rgba(244,24,76,0.15) 2px, transparent 3.5px),
    radial-gradient(circle, rgba(86,167,254,0.12) 2px, transparent 3.5px);
  background-size: 42px 42px, 42px 42px;
  background-position: 0 0, 21px 21px;
  background-repeat: repeat, repeat;
  animation: dotsFloat 22s linear infinite;
}

@keyframes dotsFloat{
  from{ background-position: 0 0, 21px 21px; }
  to{ background-position: -168px -84px, -147px -63px; }
}

/* TOP BAR */
.topbar{
  position: sticky;
  top: 0;
  z-index: 10;
  backdrop-filter: blur(10px);
  background: rgba(255,255,255,0.72);
  border-bottom: 1px solid var(--border);
}

.topbarInner{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
}

.brand{
  display:flex;
  align-items:center;
  gap: 10px;
  white-space: nowrap;
}

.badge{
  font-size: 14px;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.85);
  color: var(--muted);
  font-weight: 900;
}

/* NAV */
.nav{
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: flex-end;
}

.navPrimary,
.navSecondary{
  display: flex;
  align-items: center;
  gap: 10px;
}

.navlink{
  display:inline-flex;
  align-items:center;
  padding: 9px 12px;
  border-radius: 999px;
  font-weight: 900;
  font-size: 15px;
  color: rgba(27,27,27,0.88);
  border: 1px solid transparent;
  background: transparent;
  text-decoration: none;
}

.navlink:hover{
  text-decoration: none;
  background: rgba(0,0,0,0.06);
  transform: translateY(-1px);
}

.navlinkExternal::after{
  content: "↗";
  font-size: 12px;
  font-weight: 900;
  margin-left: 6px;
  opacity: 0.65;
  transform: translateY(-1px);
}

.topbar .navlink[aria-current="page"]{
  background: var(--brand2);
  color: var(--brand);
  border-color: rgba(244,24,76,0.25);
}

/* HAMBURGER */
.menuBtn{
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 40px;
  border-radius: 999px;
  border: 1px solid rgba(20,20,20,0.12);
  background: rgba(255,255,255,0.90);
  box-shadow: 0 10px 22px rgba(0,0,0,.06);
  cursor: pointer;
}

.menuBtn:hover{ transform: translateY(-1px); }

.menuIcon{
  width: 18px;
  height: 2px;
  background: rgba(27,27,27,0.80);
  border-radius: 999px;
  position: relative;
  display: block;
}

.menuIcon::before,
.menuIcon::after{
  content:"";
  position: absolute;
  left: 0;
  width: 18px;
  height: 2px;
  background: rgba(27,27,27,0.80);
  border-radius: 999px;
}

.menuIcon::before{ top: -6px; }
.menuIcon::after{ top: 6px; }

.menuPanel{
  display: none;
  position: absolute;
  right: 0;
  top: calc(100% + 10px);
  min-width: 220px;
  padding: 10px;
  border-radius: 16px;
  background: rgba(255,255,255,0.96);
  border: 1px solid rgba(20,20,20,0.12);
  box-shadow: 0 14px 28px rgba(0,0,0,.10);
  backdrop-filter: blur(10px);
  z-index: 20;
}

.menuPanel .navlink{
  width: 100%;
  justify-content: flex-start;
  border-color: rgba(20,20,20,0.10);
  background: rgba(0,0,0,0.04);
  margin-top: 8px;
}

.menuPanel .navlink:first-child{ margin-top: 0; }
.menuPanel.is-open{ display: block; }

/* COMMON SURFACES */
.card{
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  box-shadow: 0 10px 28px rgba(0,0,0,.06);
  transition: box-shadow .15s ease, transform .15s ease;
  will-change: transform;
  transform: translateZ(0);
}

.card:hover{
  box-shadow: 0 14px 28px rgba(0,0,0,.07);
  transform: translateY(-2px);
}

.subcard{
  background: rgba(255,255,255,0.78);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px;
  margin-top: 10px;
}

.btn{
  display:inline-flex;
  align-items:center;
  gap: 8px;
  padding: 12px 16px;
  border-radius: 14px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.95);
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 10px 22px rgba(0,0,0,.06);
  text-decoration:none;
  font-size: 16px;
}

.btn:hover{
  text-decoration:none;
  transform: translateY(-1px);
}

.btnPrimary{
  background: var(--brand);
  color: #fff;
  border-color: rgba(244,24,76,0.35);
}

.btnPrimary:hover{
  box-shadow: 0 14px 30px rgba(244,24,76,.20);
}

.subtitle{
  color: var(--muted);
}

.muted{
  color: rgba(27,27,27,0.62);
  font-weight: 800;
  font-size: 14px;
}

.heroH1{
  position: relative;
  display: block;
  width: fit-content;
  margin: 6px 0 18px;
  font-size: 34px;
  font-weight: 780;
  letter-spacing: -0.3px;
  line-height: 1.2;
  text-align: left;
}

.heroH1::after{
  content:"";
  position: absolute;
  left: 0;
  bottom: -6px;
  width: 100%;
  height: 5px;
  border-radius: 6px;
  background: linear-gradient(90deg, #ff2d6f 0%, var(--brand) 35%, #9fdf28 70%, #ff2d6f 100%);
  background-size: 200% 100%;
  animation: titleShimmer 3s linear infinite;
  box-shadow: 0 4px 12px rgba(244,24,76,0.35);
}

@keyframes titleShimmer{
  0%{ background-position: 0% 50%; }
  100%{ background-position: 200% 50%; }
}

.sectionHead{
  margin: 0 0 8px 0;
  text-align: center;
}

.sectionHead h2{
  margin: 0;
}

/* FOOTER */
footer{
  margin-top: 26px;
  padding: 18px 0 34px;
  color: rgba(27,27,27,0.72);
  font-size: 14px;
}

.hangout{
  text-align: center;
  margin: 18px 0 14px;
  font-size: 15px;
  color: rgba(27,27,27,0.78);
}

.footerInner{
  border-top: 1px solid var(--border);
  padding-top: 14px;
  display:grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 12px;
  align-items:center;
}

.socialText{
  display:flex;
  flex-wrap:wrap;
  gap: 8px;
  justify-content:center;
  align-items:center;
  font-weight: 900;
}

.socialText a{
  padding: 2px 6px;
  border-radius: 10px;
  text-decoration: none;
}

.socialText a:hover{
  background: rgba(0,0,0,0.06);
  text-decoration: none;
}

.sepDot{
  width: 6px;
  height: 6px;
  background: var(--brand);
  border-radius: 50%;
  display: inline-block;
  margin: 0 10px;
}

.footerRight{
  display:flex;
  gap: 10px;
  justify-content: flex-end;
  flex-wrap: wrap;
}

.sep{
  color: rgba(20,20,20,0.35);
  font-weight: 800;
  margin: 0 2px;
}

/* REVEAL */
.preReveal{
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .45s ease, transform .45s ease;
}

.reveal{
  opacity: 1;
  transform: translateY(0);
}

/* SCROLLBAR */
::-webkit-scrollbar{ width: 24px; height: 24px; }
::-webkit-scrollbar-track{ background: var(--scrollTrack); }
::-webkit-scrollbar-thumb{
  background: var(--scrollThumb);
  border-radius: 999px;
  border: 6px solid var(--scrollTrack);
}
::-webkit-scrollbar-thumb:hover{ filter: brightness(0.95); }
::-webkit-scrollbar-corner{ background: var(--scrollTrack); }

/* SAFETY */
canvas,
#sparkles,
.sparkles,
.sparkle-canvas,
[class*="sparkle"]{
  pointer-events: none !important;
  touch-action: none !important;
}

/* SHARED RESPONSIVE */
@media (max-width: 900px){
  .topbarInner{
    align-items: flex-start;
    flex-direction: column;
    align-items: center;
  }

  .footerInner{
    grid-template-columns: 1fr;
    text-align:center;
  }

  .footerRight{ justify-content: center !important; }
  .socialText{ justify-content: center !important; }
}

@media (max-width: 600px){
  .badge{ display: none; }

  .nav{
    justify-content: space-between;
    gap: 8px;
  }

  .navSecondary{ display: none; }
  .menuBtn{ display: inline-flex; }

  .navPrimary{
    flex: 1 1 auto;
    gap: 8px;
  }

  .navPrimary .navlink{
    flex: 1 1 0;
    justify-content: center;
    white-space: nowrap;
  }

  .topbarInner{
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }

  nav{
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    overflow: visible;
    padding: 0;
    scroll-snap-type: none;
    -webkit-mask-image: none;
    mask-image: none;
  }

  .navlink{
    flex: 1 1 auto;
    justify-content: center;
    white-space: nowrap;
    background: rgba(255,255,255,0.90);
    border-color: rgba(20,20,20,0.12);
  }
}

/* =========================
   HOMEPAGE ONLY
========================= */

a.pop{ animation: pop .28s ease; }

@keyframes pop{
  0%{ transform: scale(1); }
  45%{ transform: scale(1.04); }
  100%{ transform: scale(1); }
}

.heroStatic{
  margin-right: 8px;
}

.heroText{
  margin: 28px 0 34px;
  font-size: 18px;
  line-height: 1.5;
  color: rgba(27,27,27,0.85);
}

.heroFeatures{
  margin: 10px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}

.heroFeatures li{
  color: rgba(27,27,27,0.78);
  font-weight: 740;
  line-height: 1.35;
}

.heroRotate{
  display: inline-block;
  position: relative;
  min-width: 0;
}

@media (min-width: 901px){
  .heroRotate{ min-width: 420px; }
}

.heroRotateInner{
  display: inline-block;
  color: var(--text);
  transition: opacity .45s ease, transform .45s ease;
  will-change: opacity, transform;
}

.heroRotateInner.is-out{ filter: blur(1.2px); }
.heroRotateInner.is-in{ filter: blur(0); }

.fx-slide-left{
  transition: opacity .45s ease, transform .45s ease;
}

.fx-slide-left.is-out{
  opacity: 0;
  transform: translateX(-18px);
}

.fx-slide-left.is-in{
  opacity: 1;
  transform: translateX(0);
}

@media (prefers-reduced-motion: reduce){
  .heroRotateInner{
    transition: none !important;
    animation: none !important;
  }
}

.heroGrid{
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(340px, 400px);
  gap: 14px;
  margin-top: 14px;
  align-items: stretch;
}

@media (max-width: 900px){
  .heroGrid{ grid-template-columns: 1fr; }
}

.cardFlush{
  padding: 0;
  overflow: hidden;
}

.cardPad{
  padding: 18px;
}

.ctaRow{
  display: flex;
  flex-wrap: wrap;
  margin: 22px 0 30px;
  gap: 10px;
}

@media (max-width: 600px){
  .ctaRow{
    flex-direction: column;
    align-items: stretch;
  }

  .btn{
    justify-content: center;
  }
}

.banner{
  display: block;
  width: 100%;
  height: auto;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  transform: none;
}

.bannerCard{
  padding: 0;
  overflow: hidden;
  will-change: transform;
  transform: translateZ(0);
}

@media (prefers-reduced-motion: no-preference){
  .bannerCard{ animation: floatHint 3.2s ease-in-out infinite; }
}

@media (hover: hover) and (pointer: fine){
  .bannerCard:hover{
    animation-play-state: paused;
    transform: translateY(-2px);
    box-shadow: 0 14px 28px rgba(0,0,0,.07);
  }
}

@media (min-width: 701px){
  .banner{
    height: auto;
    object-fit: contain;
  }
}

@media (max-width: 700px){
  .cardFlush{
    border-radius: 16px;
    overflow: hidden;
  }

  .banner{
    height: 165px;
    object-fit: cover;
    object-position: 20% 50%;
  }
}

.srOnly{
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.aboutRow{
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.avatar{
  width: 78px;
  height: 78px;
  border-radius: 14px;
  border: 1px solid var(--border);
  box-shadow: 0 10px 18px rgba(0,0,0,0.08);
  object-fit: cover;
  background: #fff;
  flex: 0 0 auto;
}

.confettiBurst{
  position: relative;
  overflow: visible;
  isolation: isolate;
}

.confettiBurst .confettiLayer{
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 10;
  overflow: visible;
}

.confettiBurst .confettiPiece{
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--s, 14px);
  height: var(--s, 14px);
  transform: translate(-50%, -50%);
  opacity: 0;
  will-change: transform, opacity;
  filter: drop-shadow(0 6px 10px rgba(0,0,0,0.14));
}

.confettiBurst .confettiPiece svg{
  width: 100%;
  height: 100%;
  display: block;
}

.confettiBurst .confettiPiece path{
  fill: var(--c, rgba(255,255,255,0.95));
}

.confettiBurst.is-exploding .confettiPiece{
  animation: heartPop 780ms cubic-bezier(.2,.7,.2,1) forwards;
}

@keyframes heartPop{
  0%{
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.85) rotate(var(--r, 0deg));
  }
  12%{
    opacity: 1;
  }
  100%{
    opacity: 0;
    transform:
      translate(calc(-50% + var(--dx, 0px)), calc(-50% + var(--dy, 0px)))
      scale(1)
      rotate(calc(var(--r, 0deg) + 260deg));
  }
}

@media (prefers-reduced-motion: reduce){
  .confettiBurst.is-exploding .confettiPiece{ animation: none; }
  .confettiBurst .confettiPiece{ display: none; }
}

.embedWrap{
  position: relative;
  width: 100%;
  max-width: 100%;
  height: 553px;
  padding: 0;
  margin: 0;
  overflow: hidden;
  border: 2px #5aadeb solid;
  border-radius: 2%;
  box-shadow: 0 5px 50px 15px #2E4774;
}

.card > .embedWrap{
  border: 0;
  border-radius: var(--radius);
  box-shadow: none;
}

.embedWrap::after{
  content:"";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    180deg,
    rgba(255,255,255,0.35),
    rgba(255,255,255,0) 18%,
    rgba(255,255,255,0) 82%,
    rgba(255,255,255,0.35)
  );
}

.embed{
  width: 100%;
  height: 100%;
  border: 0;
  transition: opacity .4s ease;
}

@media (max-width: 900px){
  .embedWrap{ height: 550px; }
}

.newsPlaceholder{
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  text-align: center;
  padding: 28px 18px;
  background: rgba(255,255,255,0.82);
  border-radius: inherit;
  transition: opacity .4s ease;
}

.newsAvatar{
  width: 120px;
  height: 120px;
  border-radius: 18px;
  object-fit: cover;
  border: 1px solid rgba(20,20,20,0.10);
  animation: floaty 3.2s ease-in-out infinite;
}

.newsLoading{
  font-weight: 1000;
  font-size: 18px;
  color: rgba(27,27,27,0.90);
}

.newsHint{
  max-width: 420px;
  font-size: 13px;
  color: rgba(27,27,27,0.62);
  line-height: 1.5;
}

.newsBottom{
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  height: 100%;
}

@keyframes floaty{
  0%, 100%{ transform: translateY(0); }
  50%{ transform: translateY(-6px); }
}

.dots::after{
  content: "";
  display: inline-block;
  width: 1.6em;
  text-align: left;
  animation: dotdot 1.2s steps(4, end) infinite;
}

@keyframes dotdot{
  0%{ content: ""; }
  25%{ content: "."; }
  50%{ content: ".."; }
  75%{ content: "..."; }
  100%{ content: ""; }
}

.featuredCard{
  background: rgba(17, 24, 39, 0.92);
  border-color: rgba(255,255,255,0.10);
  box-shadow: 0 18px 50px rgba(0,0,0,0.18);
  padding: 14px;
  min-height: 300px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.featuredMarquee{
  position: relative;
  margin-top: 3px;
  overflow: hidden;
  border-radius: 16px;
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 34px, #000 calc(100% - 34px), transparent 100%);
          mask-image: linear-gradient(to right, transparent 0, #000 34px, #000 calc(100% - 34px), transparent 100%);
}

.featuredTrack{
  display: flex;
  gap: 14px;
  width: max-content;
  padding: 0 6px 10px;
  animation: none !important;
}

@media (hover: none) and (pointer: coarse){
  .featuredMarquee{
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 8px, #000 calc(100% - 8px), transparent 100%);
            mask-image: linear-gradient(to right, transparent 0, #000 8px, #000 calc(100% - 8px), transparent 100%);
  }

  .featuredMarquee::-webkit-scrollbar{ display: none; }
}

.featuredTile{
  flex: 0 0 auto;
  width: clamp(260px, 32vw, 380px);
  background: rgba(255,255,255,0.96);
  border: 1px solid rgba(20,20,20,0.10);
  border-radius: 16px;
  overflow: hidden;
  text-decoration: none;
  box-shadow: 0 14px 34px rgba(0,0,0,0.20);
  transform: translateZ(0);
  transition: transform .15s ease, box-shadow .15s ease;
}

.featuredTile:hover{
  transform: translateY(-2px);
  box-shadow: 0 18px 44px rgba(0,0,0,0.24);
}

.featuredTile img{
  width: 100%;
  height: 300px;
  object-fit: cover;
  object-position: center;
  display: block;
  background: #fff;
}

@media (max-width: 700px){
  .featuredTile{
    width: 82vw;
    max-width: 420px;
  }

  .featuredTile img{
    height: 320px;
    padding: 10px;
    box-sizing: border-box;
  }
}

.featuredMeta{
  padding: 12px 12px 14px;
}

.featuredName{
  font-weight: 1000;
  font-size: 18px;
  letter-spacing: -0.2px;
  margin-bottom: 4px;
}

.featuredDesc{
  font-size: 14px;
  color: rgba(27,27,27,0.72);
  line-height: 1.45;
}

.featuredCta{
  margin-top: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: rgba(255,255,255,0.95);
  text-decoration: none;
  font-weight: 1000;
  font-size: 18px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.12);
  background: rgba(255,255,255,0.06);
}

.featuredCta:hover{
  background: rgba(255,255,255,0.10);
  text-decoration: none;
}

.featuredCtaTitle,
.featuredCtaLink{
  white-space: nowrap;
}

.featuredCtaLink{
  color: rgba(255,255,255,0.90);
  opacity: .95;
}

@media (max-width: 600px){
  .featuredCta{
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 6px;
  }

  .featuredCtaTitle{ font-size: 16px; }
  .featuredCtaLink{ font-size: 14px; opacity: 0.9; }
}

.ytThumbWrap{
  position: relative;
}

.ytPlay{
  position: absolute;
  inset: auto 10px 10px auto;
  width: 42px;
  height: 42px;
  border-radius: 999px;
  background: rgba(0,0,0,0.55);
  display: grid;
  place-items: center;
  box-shadow: 0 10px 18px rgba(0,0,0,.18);
}

.ytPlay svg{
  width: 18px;
  height: 18px;
  fill: #fff;
  margin-left: 2px;
}

.ytGrid{
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

@media (max-width: 900px){
  .ytGrid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px){
  .ytGrid{ grid-template-columns: 1fr; }
}

.ytTile{
  display: block;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(20,20,20,0.10);
  background: rgba(255,255,255,0.96);
  box-shadow: 0 10px 24px rgba(0,0,0,.06);
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease;
}

.ytTile:hover{
  transform: translateY(-2px);
  box-shadow: 0 14px 28px rgba(0,0,0,.08);
  text-decoration: none;
}

.ytThumb{
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
  background: #fff;
}

.ytMeta{
  padding: 12px 12px 14px;
}

.ytTitle{
  font-weight: 1000;
  font-size: 16px;
  line-height: 1.25;
  letter-spacing: -0.2px;
  margin: 0 0 6px;
  color: rgba(27,27,27,0.92);
}

.ytDate{
  font-size: 13px;
  color: rgba(27,27,27,0.62);
  font-weight: 800;
}

.floatHint{
  animation: none;
}

body::before{
  animation-play-state: paused;
}

.is-animating.floatHint{
  animation: floatHint 2.4s ease-in-out infinite;
}

body.is-animating::before{
  animation-play-state: running;
}

@keyframes floatHint{
  0%, 100%{
    transform: translateY(0);
    box-shadow: 0 10px 22px rgba(0,0,0,.06);
  }
  50%{
    transform: translateY(-4px);
    box-shadow: 0 18px 32px rgba(0,0,0,.12);
  }
}

.is-animating.floatHint:hover{
  animation-play-state: paused;
  transform: translateY(-5px);
}

/* =========================
   REDEEM PAGE ONLY
========================= */

code{
  font-size: 14px;
}

.sub{
  margin: 0 0 16px;
  color: var(--muted);
  font-size: 16px;
}

.sectionHead--left{
  text-align: left;
  padding-left: 14px;
}

.sectionHead--left .sub{
  margin: 10px 0 0;
}

.sectionTitle--spaced{
  margin-bottom: 22px;
}

.btnGreen{
  background: #22c55e;
  color: #fff;
  border-color: rgba(34,197,94,0.35);
}

.btnGreen:hover{
  box-shadow: 0 14px 30px rgba(34,197,94,.22);
  transform: translateY(-1px);
}

#connect{
  padding: 14px 18px;
  font-size: 16px;
  line-height: 1.15;
  border-radius: 14px;
}

.row{
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: nowrap;
}

.connectBlock{
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.statusBlock{
  text-align: right;
}

.creditsLine{
  font-size: 14px;
  color: rgba(27,27,27,0.80);
  font-weight: 800;
}

.creditsLine strong{
  font-size: 16px;
  font-weight: 1000;
}

.creditsBox{
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}

.creditsMain{
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 26px;
  font-weight: 1000;
  letter-spacing: -0.5px;
}

.creditsIcon{
  font-size: 22px;
}

.creditsAmount{
  font-size: 30px;
  font-weight: 1000;
}

.creditsLabel{
  font-size: 16px;
  font-weight: 800;
  opacity: .75;
}

.creditsSub{
  font-size: 13px;
  opacity: .6;
}

.patreonRowLeft{
  display: flex;
  align-items: center;
  gap: 8px;
}

.patreonSub{
  font-size: 13px;
  font-weight: 800;
  opacity: .65;
  margin-top: -2px;
  padding-left: 4px;
}

.patreonRow{
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 8px;
}

.pill{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid rgba(20,20,20,0.14);
  background: #fff;
  font-weight: 900;
  font-size: 13px;
  color: #333;
}

.pillDot{
  width: 10px;
  height: 10px;
  border-radius: 999px;
  display: inline-block;
  flex: 0 0 10px;
}

.pill--blue .pillDot{ background:#56a7fe; }
.pill--green .pillDot{ background:#22c55e; }
.pill--amber .pillDot{ background:#f59e0b; }
.pill--red .pillDot{ background:#ef4444; }
.pill--gray .pillDot{ background:#9ca3af; }

body.modalOpen{
  overflow: hidden;
}

.infoBtn{
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: 1px solid rgba(20,20,20,0.14);
  background: #fff;
  font-weight: 900;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  padding-left: 12px;
  gap: 8px;
  overflow: visible;
}

.infoBtn:hover{
  background: rgba(0,0,0,0.06);
}

.infoPop{
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
  z-index: 50;
  background: rgba(0,0,0,0.18);
}

.infoPop.show{
  display: flex;
}

.infoPopInner{
  width: min(520px, 100%);
  background: #fff;
  border: 1px solid rgba(20,20,20,0.14);
  border-radius: 16px;
  padding: 14px;
  box-shadow: 0 18px 40px rgba(0,0,0,0.18);
}

.infoPopTitle{
  font-weight: 1000;
  margin-bottom: 8px;
}

.infoPopBody{
  font-size: 14px;
  color: #333;
  line-height: 1.5;
}

.infoClose{
  margin-top: 12px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(20,20,20,0.14);
  background: #fff;
  font-weight: 900;
  cursor: pointer;
}

.storeGrid{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 12px;
}

.storeImg{
  width: 100%;
  height: 240px;
  object-fit: contain;
  background: #fff;
  border-radius: 14px;
  border: 1px solid rgba(20,20,20,0.08);
}

.storeButton{
  margin-top: 10px;
  width: 100%;
}

.storeMeta{
  margin-top: 12px;
  text-align: center;
}

.storeTitle{
  font-weight: 1000;
  font-size: 18px;
  margin-bottom: 4px;
}

.storeInfo{
  font-size: 16px;
  font-weight: 700;
  display: flex;
  flex-direction: column;
  gap: 2px;
  line-height: 1.25;
}

.storeInfoTop{
  min-height: 22px;
  font-size: 18px;
  font-weight: 900;
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

.storeInfoBottom{
  font-size: 16px;
  font-weight: 700;
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

.storeDot{
  opacity: .75;
  font-weight: 900;
}

.saleBadge{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .6px;
  color: #fff;
  background: rgba(244,24,76,0.92);
  box-shadow: 0 10px 18px rgba(244,24,76,0.18);
  border: 1px solid rgba(255,255,255,0.22);
  transform: translateZ(0);
  animation: salePulse 1.2s ease-in-out infinite;
}

@keyframes salePulse{
  0%, 100% { transform: scale(1); filter: brightness(1); }
  50%      { transform: scale(1.06); filter: brightness(1.12); }
}

.saleLabel{
  color: var(--brand);
  font-weight: 800;
  letter-spacing: .4px;
}

.salePercent{
  color: var(--brand);
  font-weight: 800;
}

.priceNum{
  letter-spacing: -0.3px;
  font-variant-numeric: tabular-nums;
}

.storeMsg{
  margin-top: 8px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(20,20,20,0.12);
  background: rgba(255,255,255,0.9);
  font-size: 13px;
  color: rgba(27,27,27,0.86);
  display: none;
}

.storeMsg.show{
  display: block;
}

.storeMsg--success{
  border-color: rgba(34,197,94,0.30);
  background: rgba(34,197,94,0.10);
}

.storeMsg--error{
  border-color: rgba(239,68,68,0.30);
  background: rgba(239,68,68,0.10);
}

.storeMsg--info{
  border-color: rgba(86,167,254,0.30);
  background: rgba(86,167,254,0.10);
}

.keybox{
  background: #fff;
  padding: 10px;
  border-radius: 12px;
  border: 1px dashed rgba(20,20,20,0.18);
}

.toastWrap{
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.22);
  backdrop-filter: blur(3px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
  z-index: 9999;
}

.toastWrap.show{
  opacity: 1;
  pointer-events: auto;
}

.toast{
  min-width: 280px;
  width: min(500px, 92vw);
  max-width: 500px;
  padding: 20px 28px;
  border-radius: 16px;
  font-size: 20px;
  font-weight: 400;
  text-align: center;
  color: white;
  background: rgba(31, 41, 55, 0.5);
  box-shadow:
    0 20px 40px rgba(0, 0, 0, 0.22),
    0 0 0 1px rgba(255, 255, 255, 0.08) inset;
  transform: scale(0.94);
  transition: opacity 0.2s ease, transform 0.2s ease;
  animation: toastPop 0.18s ease-out forwards;
}

.toast strong{
  font-weight: 1000;
}

.toast.mint{ background: rgba(22, 163, 74, 0.9); }
.toast.blue{ background: rgba(37, 99, 235, 0.9); }
.toast.red{ background: rgba(220, 38, 38, 0.9); }

@keyframes toastPop{
  to{
    transform: scale(1);
  }
}

canvas.confetti-canvas{
  z-index: 100000 !important;
  position: fixed !important;
}

.activityList{
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.activityPillWrap{
  width: 130px;
  flex: 0 0 130px;
}

.activityPill.pill--green{
  background: rgba(34,197,94,0.10);
  border-color: rgba(34,197,94,0.22);
}

.activityPill.pill--red{
  background: rgba(239,68,68,0.10);
  border-color: rgba(239,68,68,0.22);
}

.activityPill.pill--blue{
  background: rgba(86,167,254,0.10);
  border-color: rgba(86,167,254,0.22);
}

.activityItem{
  background: #fff;
  border: 1px solid rgba(20,20,20,0.10);
  border-radius: 14px;
  padding: 12px;
  box-shadow: 0 10px 28px rgba(0,0,0,.04);
  transition: box-shadow .15s ease, transform .15s ease;
}

.activityItem:hover{
  box-shadow: 0 14px 28px rgba(0,0,0,.06);
  transform: translateY(-1px);
}

.activityRow{
  display: flex;
  align-items: center;
  gap: 30px;
  flex-wrap: nowrap;
}

.activityText{
  min-width: 0;
}

.activityText strong,
.activityReason{
  overflow-wrap: anywhere;
  word-break: break-word;
}

.activityAmt{
  width: 130px;
  flex: 0 0 130px;
  font-weight: 1000;
  font-size: 18px;
  line-height: 1.2;
  white-space: nowrap;
}

.activityAmt.plus{ color:#16a34a; }
.activityAmt.minus{ color:#dc2626; }

.activityReason{
  display: block;
  margin-top: 4px;
  font-size: 15px;
  font-style: italic;
  font-family: "Georgia", "Times New Roman", serif;
  opacity: .75;
}

.activityTime{
  font-size: 13px;
  color: rgba(27,27,27,0.65);
  white-space: nowrap;
  margin-left: auto;
}

.activityPill{
  width: 100%;
  font-size: 17px;
  font-weight: 1000;
  padding: 6px 11px;
  justify-content: center;
  border-color: rgba(20,20,20,0.10);
  background: rgba(255,255,255,0.95);
}

#unlocks.muted,
#activity.muted{
  text-align: center;
  font-size: 15px;
  color: rgba(27,27,27,0.78);
  margin-top: 6px;
}

@media (max-width: 600px){
  .row{
    flex-direction: column;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
  }

  .connectBlock{
    width: 100%;
    align-items: center;
  }

  .statusBlock{
    text-align: center;
  }

  #connect{
    width: 95% !important;
    max-width: 360px;
    min-width: 260px;
    padding: 14px 20px;
    font-size: 20px;
    line-height: 1.15;
    border-radius: 14px;
    box-shadow: 0 10px 22px rgba(0,0,0,.06);
  }

  .patreonRowLeft{
    justify-content: center;
    gap: 10px;
    margin-top: 6px;
  }

  #patreonPill{
    font-size: 15px;
    padding: 8px 12px;
    font-weight: 1000;
  }

  .infoBtn{
    width: 32px;
    height: 32px;
    font-size: 15px;
    padding-left: 13px;
  }
}

@media (max-width: 520px){
  .activityRow{
    display: grid;
    grid-template-columns: 120px 1fr;
    grid-template-areas:
      "pill text"
      "pill time";
    column-gap: 12px;
    row-gap: 6px;
    align-items: center;
  }

  .activityPillWrap{
    width: 120px;
    flex: none;
    grid-area: pill;
  }

  .activityText{
    grid-area: text;
    white-space: normal;
  }

  .activityTime{
    grid-area: time;
    margin-left: 0;
    justify-self: start;
  }
}

/* Force disabled store buttons to look inactive */
.storeButton[disabled]{
  background: #e8e8e8 !important;
  color: rgba(27,27,27,0.45) !important;
  border-color: rgba(20,20,20,0.08) !important;
  opacity: 0.65;
  cursor: not-allowed;
  box-shadow: none !important;
  transform: none !important;
}

.storeButton[disabled]:hover{
  background: #e8e8e8 !important;
  transform: none !important;
}


