
:root {
  --pink: #FF50E8;
  --black: #000;
  --card: #111;
  --white: #fff;
  --gold: #FFD700;
  --pink-glow: 0 0 40px rgba(255,80,232,0.45);
}

* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }

body {
  background: var(--black);
  color: var(--white);
  font-family: 'Space Grotesk', sans-serif;
  overflow-x: hidden;
}

/* ── HERO ── */
#hero {
  min-height: 100vh;
  background: #000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
  text-align: center;
  padding: 60px 24px 80px;
}

.floating-hearts-bg { position:absolute; inset:0; pointer-events:none; overflow:hidden; }

.fheart {
  position:absolute; bottom:-60px;
  color:var(--pink); opacity:0; pointer-events:none;
  animation: floatUp var(--dur,9s) ease-in var(--delay,0s) forwards;
}
@keyframes floatUp {
  0%   { transform:translateY(0) rotate(calc(var(--rot,0)*1deg)); opacity:.65; }
  80%  { opacity:.3; }
  100% { transform:translateY(-110vh) rotate(calc(var(--rot,0)*3deg)); opacity:0; }
}

.hero-inner { position:relative; z-index:2; }
.hero-brand-img-wrap {
  position: relative;
  max-width: 460px;
  margin: 0 auto 32px;
  display: block;
}
.hero-brand-img-wrap::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 14%;
  background: linear-gradient(to bottom, transparent 0%, #000 100%);
  pointer-events: none;
}
.hero-brand-img {
  display: block;
  width: 100%;
  height: auto;
}
.btn-primary {
  display:inline-block; margin-top:36px; padding:16px 44px;
  background:var(--pink); color:#000; font-family:'Space Grotesk',sans-serif;
  font-weight:700; font-size:1.05rem; text-decoration:none;
  border-radius:60px; border:none; cursor:pointer;
  transition:transform .2s, box-shadow .2s; letter-spacing:.04em;
}
.btn-primary:hover { transform:scale(1.06); box-shadow:0 0 50px rgba(255,80,232,.7); }
.hero-scroll {
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  color:rgba(255,255,255,.2); font-size:1.2rem;
  animation:bounce 2.2s infinite;
}
@keyframes bounce {
  0%,100% { transform:translateX(-50%) translateY(0); }
  50%     { transform:translateX(-50%) translateY(8px); }
}

/* ── SHARED ── */
.section-inner { max-width:1100px; margin:0 auto; padding:0 24px; }
.section-title {
  font-family:'Bebas Neue',sans-serif;
  font-size:clamp(2rem,8vw,3.8rem);
  color:var(--white); text-align:center; margin-bottom:12px; line-height:1;
}
.section-sub { text-align:center; color:rgba(255,255,255,.4); margin-bottom:48px; font-size:1rem; }

/* ── ABOUT ── */
#about { background:var(--pink); color:#000; padding:90px 24px; text-align:center; }
.about-inner { max-width:700px; margin:0 auto; }
.about-overline {
  font-size:.72rem; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; opacity:.6; margin-bottom:12px;
}
.about-title {
  font-family:'Bebas Neue',sans-serif;
  font-size:clamp(2.2rem,9vw,4.5rem); line-height:1; margin-bottom:36px;
}
#about p { margin:0 auto 18px; font-size:clamp(.9rem,2.4vw,1.08rem); line-height:1.78; color:#000; }
.about-note { margin-top:32px !important; font-size:.82rem !important; opacity:.6; font-weight:600; }

/* ── HOW ── */
#how { background:#000; padding:90px 24px; }
.steps {
  display:flex; flex-direction:column; align-items:center;
  gap:24px; max-width:800px; margin:48px auto 0;
}
@media(min-width:640px){ .steps{ flex-direction:row; align-items:flex-start; } }
.step { flex:1; display:flex; flex-direction:column; align-items:center; text-align:center; gap:14px; }
.step-num {
  width:56px; height:56px; border-radius:50%; background:var(--pink);
  color:#000; font-family:'Bebas Neue',sans-serif; font-size:2rem;
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.step h3 { font-weight:700; font-size:1.1rem; color:var(--white); }
.step p { font-size:.88rem; color:rgba(255,255,255,.5); line-height:1.6; max-width:200px; }
.step-arrow { font-size:2rem; color:var(--pink); opacity:.4; padding-top:12px; display:none; }
@media(min-width:640px){ .step-arrow{ display:block; } }

/* ── TIERS ── */
#tiers { background:var(--pink); padding:90px 24px; text-align:center; }
.tiers-title { color:#000 !important; }
.tiers-stack { display:flex; flex-direction:column; align-items:center; gap:20px; margin-top:56px; }
.tier-item {
  display:flex; align-items:center; gap:24px; cursor:pointer;
  transition:transform .2s; text-align:left; width:340px;
}
.tier-item:hover { transform:translateX(8px); }
.tier-heart-col { width:140px; display:flex; justify-content:center; align-items:center; flex-shrink:0; }
.tier-name { font-family:'Bebas Neue',sans-serif; font-size:1.6rem; font-style:italic; color:#000; line-height:1; }
.tier-amount { font-size:.95rem; font-weight:600; color:rgba(0,0,0,.7); }
.tier-tag {
  font-size:.68rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  background:#000; color:var(--pink); padding:2px 8px; border-radius:20px;
  display:inline-block; margin-top:2px;
}

/* ── DOGS GRID ── */
#dogs { background:#050505; padding:90px 24px; }
.dogs-grid {
  display:grid; grid-template-columns:1fr; gap:28px;
  max-width:1100px; margin:0 auto;
}
@media(min-width:580px){ .dogs-grid{ grid-template-columns:repeat(2,1fr); } }
@media(min-width:900px){ .dogs-grid{ grid-template-columns:repeat(3,1fr); } }

.dog-card {
  background:var(--card); border:1.5px solid rgba(255,80,232,.18);
  border-radius:28px; padding:36px 24px 28px;
  display:flex; flex-direction:column; align-items:center; gap:14px;
  transition:border-color .3s, transform .3s, box-shadow .3s;
  position:relative; overflow:hidden;
}
.dog-card:hover { border-color:rgba(255,80,232,.6); transform:translateY(-5px); box-shadow:0 20px 60px rgba(255,80,232,.12); }
.dog-card.funded { border-color:var(--gold) !important; box-shadow:0 0 50px rgba(255,215,0,.25) !important; }

/* Heart fill SVG */
.heart-wrap { position:relative; width:168px; height:160px; flex-shrink:0; }
.heart-svg { width:100%; height:100%; overflow:visible; }
.h-bg    { fill:#1c1c1c; }
.h-fill  { fill:var(--pink); }
.h-stroke { fill:none; stroke:var(--pink); stroke-width:4; }
.h-stroke-gold { fill:none; stroke:var(--gold); stroke-width:4; }
.heart-photo-raw {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
}
.heart-svg-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* heart-pct-text removed — percentage shown as text label below heart */
.dog-name { font-family:'Bebas Neue',sans-serif; font-size:2.2rem; color:var(--white); letter-spacing:.04em; line-height:1; }
.dog-breed { font-size:.72rem; color:var(--pink); text-transform:uppercase; letter-spacing:.14em; font-weight:600; margin-top:-8px; }
.dog-bio { font-size:.82rem; color:rgba(255,255,255,.52); line-height:1.65; text-align:center; }
.dog-progress-row { display:flex; justify-content:space-between; align-items:baseline; width:100%; padding:0 4px; }
.dog-raised-num { font-family:'Bebas Neue',sans-serif; font-size:1.8rem; color:var(--white); transition:color .4s; }
.dog-raised-num.funded { color:var(--gold); }
.dog-goal-label { font-size:.82rem; color:rgba(255,255,255,.35); }
.dog-supporters { font-size:.78rem; color:rgba(255,80,232,.75); font-weight:600; width:100%; text-align:left; padding-left:4px; }
.donor-hearts { display:flex; flex-wrap:wrap; gap:5px; justify-content:center; min-height:28px; width:100%; }
.donor-chip {
  background:rgba(255,80,232,.1); border:1px solid rgba(255,80,232,.3);
  border-radius:20px; padding:3px 9px; font-size:.68rem; color:var(--pink);
  display:flex; align-items:center; gap:4px;
  animation:chipPop .4s cubic-bezier(.34,1.56,.64,1);
}
.donor-chip.gold-chip { background:rgba(255,215,0,.1); border-color:rgba(255,215,0,.4); color:var(--gold); }
@keyframes chipPop { from{transform:scale(0) rotate(-10deg);opacity:0} to{transform:scale(1) rotate(0);opacity:1} }

.btn-give {
  width:100%; padding:15px; background:var(--pink); color:#000;
  font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:1rem;
  border:none; border-radius:14px; cursor:pointer;
  transition:transform .2s, box-shadow .2s; letter-spacing:.03em;
}
.btn-give:hover:not(:disabled) { transform:scale(1.02); box-shadow:0 0 28px rgba(255,80,232,.55); }
.btn-give:disabled { background:var(--gold); cursor:default; color:#000; }
.funded-badge {
  position:absolute; top:14px; right:14px;
  background:var(--gold); color:#000; font-weight:800;
  font-size:.62rem; padding:4px 10px; border-radius:20px;
  letter-spacing:.06em; text-transform:uppercase;
}

/* ── TOTAL ── */
#total { background:#000; padding:70px 24px; text-align:center; border-top:1px solid rgba(255,80,232,.15); }
.total-label { font-size:.72rem; color:rgba(255,255,255,.35); text-transform:uppercase; letter-spacing:.2em; margin-bottom:8px; }
.total-numbers { font-family:'Bebas Neue',sans-serif; font-size:clamp(3rem,12vw,6rem); color:var(--pink); text-shadow:var(--pink-glow); line-height:1; }
.total-of { font-size:.9rem; color:rgba(255,255,255,.35); margin:8px 0 20px; }
.total-bar-wrap { max-width:600px; margin:0 auto 16px; background:#1a1a1a; border-radius:30px; height:16px; overflow:hidden; }
.total-bar {
  height:100%; border-radius:30px; width:0%;
  transition:width 1.2s cubic-bezier(.4,0,.2,1);
  background:linear-gradient(90deg,var(--pink),#ff8ef5,var(--pink));
  background-size:200%;
  animation:shimmer 2.5s linear infinite;
}
@keyframes shimmer { 0%{background-position:200% center} 100%{background-position:-200% center} }
.total-funded { font-size:.85rem; color:rgba(255,80,232,.7); font-weight:600; }

/* ── FOOTER ── */
footer { background:#000; border-top:1px solid #111; padding:48px 24px; text-align:center; color:rgba(255,255,255,.35); font-size:.82rem; }
.footer-handle { display:block; font-family:'Bebas Neue',sans-serif; font-size:1.8rem; color:var(--pink); margin-bottom:10px; }

/* ── MODALS ── */
.modal {
  position:fixed; inset:0; background:rgba(0,0,0,.88);
  display:flex; align-items:center; justify-content:center;
  z-index:1000; padding:20px; backdrop-filter:blur(10px);
}
.modal.hidden { display:none; }
.modal-box {
  background:#0f0f0f; border:1.5px solid rgba(255,80,232,.35);
  border-radius:28px; padding:40px 32px 32px;
  max-width:520px; width:100%; position:relative;
  max-height:90vh; overflow-y:auto;
}
.modal-close {
  position:absolute; top:16px; right:20px;
  background:none; border:none; color:rgba(255,255,255,.4);
  font-size:1.3rem; cursor:pointer; transition:color .2s; padding:4px;
}
.modal-close:hover { color:var(--white); }
.modal-dog-name { font-family:'Bebas Neue',sans-serif; font-size:2.8rem; color:var(--pink); line-height:1; margin-bottom:4px; }
.modal-sub { font-size:.88rem; color:rgba(255,255,255,.45); margin-bottom:24px; }
.step-label { font-size:.8rem; font-weight:700; color:rgba(255,255,255,.5); text-transform:uppercase; letter-spacing:.1em; margin-bottom:12px; }
.optional { font-weight:400; text-transform:none; opacity:.7; }

.tier-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin-bottom:20px; }
.tier-btn {
  background:#1a1a1a; border:2px solid rgba(255,80,232,.18);
  border-radius:18px; padding:14px 10px; cursor:pointer;
  transition:all .18s; display:flex; flex-direction:column;
  align-items:center; gap:6px; color:var(--white);
  font-family:'Space Grotesk',sans-serif;
}
.tier-btn:hover, .tier-btn.selected { border-color:var(--pink); background:rgba(255,80,232,.1); transform:scale(1.02); }
.tier-btn.gold-tier { grid-column:1/-1; border-color:rgba(255,215,0,.25); }
.tier-btn.gold-tier:hover, .tier-btn.gold-tier.selected { border-color:var(--gold); background:rgba(255,215,0,.08); }
.tier-btn-name { font-size:.7rem; font-weight:700; color:var(--pink); letter-spacing:.04em; }
.tier-btn.gold-tier .tier-btn-name { color:var(--gold); }
.tier-btn-amt  { font-family:'Bebas Neue',sans-serif; font-size:1.7rem; }

.modal-input {
  background:#1a1a1a; border:1.5px solid rgba(255,80,232,.25);
  border-radius:12px; padding:12px 16px; color:var(--white);
  font-family:'Space Grotesk',sans-serif; font-size:.95rem;
  outline:none; transition:border-color .2s; width:100%; margin-bottom:18px;
}
.modal-input:focus { border-color:var(--pink); }
.btn-donate {
  width:100%; padding:17px; background:var(--pink); color:#000;
  font-weight:700; font-size:1.05rem; border:none; border-radius:14px;
  cursor:pointer; transition:all .2s; font-family:'Space Grotesk',sans-serif; letter-spacing:.03em;
}
.btn-donate:hover:not(:disabled) { transform:scale(1.02); box-shadow:0 0 36px rgba(255,80,232,.6); }
.btn-donate:disabled { opacity:.38; cursor:not-allowed; transform:none; }
.btn-secondary {
  width:100%; padding:13px; background:transparent;
  color:rgba(255,255,255,.5); font-weight:600; font-size:.9rem;
  border:1.5px solid rgba(255,255,255,.1); border-radius:14px;
  cursor:pointer; transition:all .2s; font-family:'Space Grotesk',sans-serif;
  margin-top:10px;
}
.btn-secondary:hover { border-color:rgba(255,255,255,.3); color:var(--white); }
.modal-disclaimer { margin-top:12px; font-size:.7rem; color:rgba(255,255,255,.22); text-align:center; }
.hidden { display:none !important; }

/* Waiting card */
.waiting-card {
  background:#1a1a1a; border:1px solid rgba(255,80,232,.2);
  border-radius:20px; padding:28px 24px; text-align:center; margin-bottom:20px;
}
.waiting-icon { font-size:3rem; color:var(--pink); margin-bottom:12px; animation:pulse 1.5s ease-in-out infinite; }
@keyframes pulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.15)} }
.waiting-card h3 { font-size:1.3rem; font-weight:700; color:var(--white); margin-bottom:10px; }
.waiting-card p { font-size:.88rem; color:rgba(255,255,255,.55); line-height:1.6; }

/* Story modal */
.story-modal-box { max-width:400px; padding:28px 24px; }
.story-modal-title { font-family:'Bebas Neue',sans-serif; font-size:2rem; color:var(--white); margin-bottom:6px; }
.story-modal-sub { font-size:.85rem; color:rgba(255,255,255,.5); margin-bottom:16px; }
.btn-download {
  width:100%; padding:13px; background:#1a1a1a;
  color:var(--pink); font-weight:700; font-size:.9rem;
  border:1.5px solid rgba(255,80,232,.3); border-radius:14px;
  cursor:pointer; transition:all .2s; font-family:'Space Grotesk',sans-serif;
  margin-top:12px; margin-bottom:8px; letter-spacing:.03em;
}
.btn-download:hover { border-color:var(--pink); background:rgba(255,80,232,.08); }

/* Burst hearts */
.burst-heart {
  position:fixed; pointer-events:none; z-index:9999;
  font-size:var(--bsz,28px); color:var(--pink);
  animation:burstFloat var(--bdur,1.4s) ease-out forwards;
}
@keyframes burstFloat {
  0%   { transform:translate(0,0) scale(1) rotate(var(--brot,0deg)); opacity:1; }
  100% { transform:translate(var(--bx,0px),var(--by,-80px)) scale(.4) rotate(calc(var(--brot,0deg)+40deg)); opacity:0; }
}
.cel-overlay {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:3rem; pointer-events:none; z-index:10;
  animation:celFade 3s ease forwards;
}
@keyframes celFade { 0%{opacity:1} 60%{opacity:1} 100%{opacity:0} }

/* ── FUTURE DOGS CARD ── */
.future-card {
  border-style: dashed !important;
  border-color: rgba(255,80,232,0.5) !important;
  background: #0f0f0f !important;
}
.future-card:hover {
  border-color: var(--pink) !important;
  transform: translateY(-3px);
}
.future-card .dog-name { color: rgba(255,80,232,0.6) !important; }
.future-card .dog-bio  { color: rgba(255,255,255,0.4) !important; }
.future-card .dog-raised-num { color: rgba(255,255,255,0.3) !important; }
.future-card .dog-goal-label { color: rgba(255,255,255,0.2) !important; }
.future-card .dog-supporters  { opacity: 0.3 !important; }
.btn-give-future {
  background: transparent !important;
  border: 1.5px solid rgba(255,80,232,0.4) !important;
  color: rgba(255,80,232,0.7) !important;
}
.btn-give-future:hover {
  background: rgba(255,80,232,0.08) !important;
  border-color: var(--pink) !important;
  color: var(--pink) !important;
}

/* ── STORY HTML PREVIEW ── */
.story-preview-html {
  width: auto;
  aspect-ratio: 9/16;
  background: #000;
  border-radius: 16px;
  position: relative;
  overflow: hidden;
  margin: 0 auto 14px;
  /* Cap height so it fits on phone screens */
  max-height: 55vh;
  font-family: 'Space Grotesk', sans-serif;
}

.sp-title {
  position: absolute;
  top: 14px;
  left: 50%;
  transform: translateX(-50%);
  font-size: clamp(7px, 2vw, 11px);
  font-weight: 800;
  letter-spacing: 0.14em;
  color: rgba(255,80,232,0.8);
  white-space: nowrap;
  z-index: 6;
  text-shadow: 0 0 12px rgba(255,80,232,0.5);
}

.sp-handle {
  position: absolute;
  bottom: 10px;
  right: 14px;
  font-size: clamp(6px, 1.6vw, 10px);
  font-weight: 600;
  color: rgba(255,255,255,0.4);
  z-index: 6;
}

.sp-progress-wrap {
  position: absolute;
  bottom: 18px;
  left: 8%;
  right: 8%;
  z-index: 6;
}
.sp-amounts {
  display: flex;
  justify-content: space-between;
  font-size: clamp(8px, 2vw, 12px);
  font-weight: 900;
  color: #fff;
  margin-bottom: 4px;
}
.sp-goal { font-weight: 500; color: rgba(255,255,255,0.4); }
.sp-bar-track {
  background: rgba(255,255,255,0.12);
  border-radius: 20px;
  height: clamp(4px,1vw,8px);
  overflow: hidden;
}
.sp-bar-fill {
  height: 100%;
  background: #FF50E8;
  border-radius: 20px;
  transition: width 1.2s ease;
  box-shadow: 0 0 8px rgba(255,80,232,0.6);
}

.sp-center-heart {
  position: absolute;
  width: 60%;
  left: 50%;
  top: 43%;
  transform: translate(-50%, -50%);
  z-index: 5;
  animation: centerPulse 2.5s ease-in-out 1.5s infinite;
}
.sp-center-photo {
  width: 100%;
  height: auto;
  display: block;
}
.sp-dog-name {
  position: absolute;
  bottom: 22%;
  left: 50%;
  transform: translateX(-50%);
  color: #fff;
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 900;
  font-size: clamp(11px, 3.5vw, 20px);
  text-shadow: 0 2px 10px rgba(0,0,0,0.9), 0 0 20px rgba(0,0,0,0.6);
  white-space: nowrap;
  letter-spacing: 0.05em;
  z-index: 4;
}

/* Donor heart bubbles */
.sdh-wrap {
  position: absolute;
  z-index: 5;
}
.sdh-wrap svg { width: 100%; display: block; }
.sdh-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #000;
  font-weight: 800;
  font-size: clamp(6px, 1.6vw, 11px);
  text-align: center;
  line-height: 1.2;
  padding: 22% 12%;
  word-break: break-all;
}
.sdh-wrap.gold-tier .sdh-text { color: #000; }

  65%  { transform: translateX(var(--tx,0)) scale(1.1) rotate(4deg); opacity: 1; }
  100% { transform: translateX(var(--tx,0)) scale(1) rotate(0deg); opacity: 1; }
}

/* Spin-in for gold tier */

  75%  { transform: translateX(var(--tx,0)) rotate(12deg) scale(1.08); opacity: 1; }
  100% { transform: translateX(var(--tx,0)) rotate(0deg) scale(1); opacity: 1; }
}





/* Story dog icon */
.sp-dog-icon {
  position: absolute;
  top: 8px;
  left: 50%;
  transform: translateX(-50%);
  width: 11%;
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  border: 1.5px solid rgba(255,80,232,0.6);
  z-index: 10;
}
.sp-dog-icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 65%;
}

/* ── GSD CORNER ICON (shows on every section) ── */
.gsd-corner-icon {
  position: fixed;
  bottom: 24px;
  right: 20px;
  width: 56px;
  height: 72px;
  overflow: hidden;
  z-index: 200;
  opacity: 0.22;
  pointer-events: none;
  transition: opacity 0.3s;
}
.gsd-corner-icon:hover { opacity: 0.5; }
.gsd-corner-icon img {
  width: 100%;
  object-fit: contain;
}

/* GSD icon removed from story */
.sp-gsd-icon { display: none; }

/* Story bottom branding */
.sp-hero-bottom {
  position: absolute;
  bottom: 60px;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  white-space: normal;
  z-index: 6;
  line-height: 1.05;
  pointer-events: none;
  width: 90%;
}
.sp-hero-bottom .sp-brand-italic {
  display: block;
  font-family: Georgia, serif;
  font-style: italic;
  font-size: clamp(8px, 2.2vw, 13px);
  color: rgba(255,80,232,0.7);
  letter-spacing: 0.04em;
}
.sp-hero-bottom .sp-brand-name {
  display: block;
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(12px, 3vw, 18px);
  color: #FF50E8;
  letter-spacing: 0.03em;
  text-shadow: 0 0 16px rgba(255,80,232,0.4);
}

/* story-confetti removed */

  50%  { transform: translateY(50%) rotate(calc(var(--crot,0deg) + 360deg)) scaleX(0.5); opacity: 1; }
  100% { transform: translateY(120%) rotate(calc(var(--crot,0deg) + 720deg)) scaleX(1); opacity: 0.3; }
}

/* story-fheart removed */
@keyframes heartRise {
  0%   { transform: translateY(0) scale(1) rotate(var(--fhrot,0deg)); opacity: 0.9; }
  60%  { opacity: 0.7; }
  100% { transform: translateY(-90%) scale(0.4) rotate(calc(var(--fhrot,0deg) + 20deg)); opacity: 0; }
}

/* story-sparkle removed */

  50%  { transform: scale(3); opacity: 0.8; }
  100% { transform: scale(0); opacity: 0; }
}

/* Center heart pulse */

  50%      { transform: translate(-50%,-50%) scale(1.04); }
}



  65%  { transform: translateX(var(--tx,0)) scale(1.15) rotate(5deg); opacity: 1; }
  100% { transform: translateX(var(--tx,0)) scale(1) rotate(0deg); opacity: 1; }
}

  75%  { transform: translateX(var(--tx,0)) rotate(12deg) scale(1.12); opacity: 1; }
  100% { transform: translateX(var(--tx,0)) rotate(0deg) scale(1); opacity: 1; }
}


/* ==============================
   STORY ANIMATIONS — CLEAN
============================== */

/* Donor heart: outer positions, inner animates */
.sdh-outer {
  position: absolute;
  z-index: 6;
  pointer-events: none;
}
.sdh-inner {
  position: relative;
  width: 100%;
}
.sdh-inner svg { width: 100%; display: block; }
.sdh-inner .sdh-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #000;
  font-weight: 800;
  font-size: clamp(6px, 1.6vw, 11px);
  text-align: center;
  line-height: 1.2;
  padding: 22% 12%;
  word-break: break-all;
  font-family: 'Space Grotesk', sans-serif;
}
.sdh-inner.gold-tier .sdh-text { color: #000; }

/* Story confetti/sparkle layer containers */
.story-anim-layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
}

/* Confetti piece */
.sc-piece {
  position: absolute;
  top: -14px;
  border-radius: 2px;
  pointer-events: none;
}

/* Floating heart */
.sc-heart {
  position: absolute;
  color: #FF50E8;
  pointer-events: none;
  text-shadow: 0 0 8px rgba(255,80,232,0.5);
}

/* Sparkle dot */
.sc-spark {
  position: absolute;
  background: #FF50E8;
  border-radius: 50%;
  pointer-events: none;
  box-shadow: 0 0 6px #FF50E8;
}

/* ── KEYFRAMES ── */
@keyframes heartPopIn {
  0%   { transform: scale(0) rotate(-15deg); opacity: 0; }
  70%  { transform: scale(1.12) rotate(4deg); opacity: 1; }
  100% { transform: scale(1) rotate(0deg);   opacity: 1; }
}
@keyframes goldSpinIn {
  0%   { transform: rotate(-360deg) scale(0); opacity: 0; }
  75%  { transform: rotate(10deg)   scale(1.1); opacity: 1; }
  100% { transform: rotate(0deg)    scale(1);   opacity: 1; }
}
@keyframes confettiFall {
  0%   { opacity: 1; }
  100% { transform: translateY(110%) rotate(var(--cr, 720deg)); opacity: 0.2; }
}
@keyframes heartRise {
  0%   { transform: translateY(0)   scale(1);   opacity: 0.85; }
  100% { transform: translateY(-90%) scale(0.4); opacity: 0; }
}
@keyframes sparklePop {
  0%   { transform: scale(0); opacity: 1; }
  50%  { transform: scale(2.5); opacity: 0.7; }
  100% { transform: scale(0); opacity: 0; }
}
@keyframes centerPulse {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50%       { transform: translate(-50%, -50%) scale(1.05); }
}

/* Story center heart */
.sp-center-heart {
  position: absolute;
  width: 60%;
  left: 50%;
  top: 44%;
  transform: translate(-50%, -50%);
  z-index: 4;
  animation: centerPulse 2.8s ease-in-out 1.2s infinite;
}
