/* ================================
   QweeClin Launch Ribbon Overlay
   Delete this file after launch.
================================= */

:root{
  --ribbon-red: #e11d48;
  --ribbon-red-dark: #be123c;
  --ribbon-shadow: rgba(0,0,0,.25);
}

/* Fullscreen overlay */
.ribbon-overlay{
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: none; /* JS turns it on */
  align-items: center;
  justify-content: center;
  background: rgba(15, 23, 42, 0.28); /* subtle dim */
  backdrop-filter: blur(3px);
}

/* Keep the content centered and premium */
.ribbon-card{
  position: relative;
  width: min(720px, 92vw);
  padding: 28px 18px 22px;
  border-radius: 18px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 20px 60px rgba(0,0,0,.18);
  text-align: center;
  overflow: hidden;
}

/* Title + subtext */
.ribbon-title{
  margin: 2px 0 6px;
  font-weight: 800;
  letter-spacing: -0.4px;
  color: #0f172a;
  font-size: clamp(1.15rem, 2.4vw, 1.55rem);
}

.ribbon-sub{
  margin: 0 0 14px;
  color: rgba(15,23,42,.75);
  font-weight: 600;
  font-size: 0.95rem;
}

/* Button */
.ribbon-btn{
  border: 0;
  cursor: pointer;
  padding: 12px 16px;
  border-radius: 12px;
  font-weight: 800;
  letter-spacing: .2px;
  background: linear-gradient(180deg, var(--ribbon-red), var(--ribbon-red-dark));
  color: #fff;
  box-shadow: 0 10px 22px rgba(225,29,72,.25);
  transition: transform .15s ease, filter .15s ease;
}

.ribbon-btn:hover{ transform: translateY(-1px); }
.ribbon-btn:active{ transform: translateY(1px) scale(.99); }

/* Ribbon wrap */
.ribbon-wrap{
  position: relative;
  height: 94px;
  margin: 10px auto 16px;
}

/* Two halves of ribbon */
.ribbon-half{
  position: absolute;
  top: 18px;
  width: 52%;
  height: 50px;
  border-radius: 14px;
  background: linear-gradient(180deg, #fb7185, var(--ribbon-red));
  box-shadow: 0 10px 22px var(--ribbon-shadow);
  border: 1px solid rgba(255,255,255,.18);
}

.ribbon-left{ left: -2%; }
.ribbon-right{ right: -2%; }

/* Center knot */
.ribbon-knot{
  position: absolute;
  left: 50%;
  top: 6px;
  transform: translateX(-50%);
  width: 82px;
  height: 82px;
  border-radius: 18px;
  background: linear-gradient(180deg, #fb7185, var(--ribbon-red-dark));
  box-shadow: 0 14px 30px var(--ribbon-shadow);
  border: 1px solid rgba(255,255,255,.2);
}

/* Small “shine” */
.ribbon-knot::after{
  content:"";
  position:absolute;
  inset: 10px 12px auto auto;
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: rgba(255,255,255,.45);
  filter: blur(0.2px);
}

/* Cut animation */
.ribbon-overlay.is-cut .ribbon-left{
  animation: ribbonLeftOut .85s ease forwards;
}
.ribbon-overlay.is-cut .ribbon-right{
  animation: ribbonRightOut .85s ease forwards;
}
.ribbon-overlay.is-cut .ribbon-knot{
  animation: ribbonKnotPop .85s ease forwards;
}

@keyframes ribbonLeftOut{
  to{ transform: translateX(-120%) rotate(-8deg); opacity: 0; }
}
@keyframes ribbonRightOut{
  to{ transform: translateX(120%) rotate(8deg); opacity: 0; }
}
@keyframes ribbonKnotPop{
  50%{ transform: translateX(-50%) scale(1.05) rotate(2deg); }
  to{ transform: translateX(-50%) scale(.9); opacity: 0; }
}

/* Celebration layer */
.celebrate{
  pointer-events: none;
  position: absolute;
  inset: 0;
  overflow: hidden;
}

/* Confetti/petals */
.petal{
  position: absolute;
  top: -20px;
  width: 10px;
  height: 14px;
  border-radius: 999px;
  opacity: 0;
  transform: translateY(-10px) rotate(0deg);
}

/* When active */
.ribbon-overlay.is-celebrating .petal{
  opacity: 1;
  animation: fall 1.8s ease forwards;
}

@keyframes fall{
  to{
    transform: translateY(520px) rotate(220deg);
    opacity: 0;
  }
}

/* Fade overlay out after cut */
.ribbon-overlay.is-fading{
  animation: overlayFadeOut .55s ease forwards;
}
@keyframes overlayFadeOut{
  to{ opacity: 0; }
}

/* Mobile polish */
@media (max-width: 520px){
  .ribbon-card{ padding: 22px 14px 18px; border-radius: 16px; }
  .ribbon-wrap{ height: 86px; }
  .ribbon-half{ height: 46px; top: 18px; }
  .ribbon-knot{ width: 76px; height: 76px; }
}
