/* Lancering: een nieuwe release gaat live. */

.celebration[data-mode="rocket"] { --c1: #0b1026; --c2: #6366f1; --c3: #fde68a; --glow: rgb(255 160 60 / .9); }

.cel-rkt-scene { position: absolute; inset: 0; --rx: 58vw; }
.cel-rkt-sky { position: absolute; inset: -4vh; overflow: hidden; background: linear-gradient(180deg, #020617, #1e1b4b 55%, #4c1d95 85%, #7c2d12); }
.cel-rkt-stars { position: absolute; left: 0; right: 0; top: -40vh; bottom: 0; transition: translate 2.6s cubic-bezier(.55, 0, .85, .45); }
.cel-rkt-scene:not(.is-flying) .cel-rkt-stars i { transition-timing-function: ease-out; transition-duration: .6s; }
.cel-rkt-stars i {
  position: absolute; width: var(--s); height: var(--s); border-radius: 99px; background: #fff;
  box-shadow: 0 0 .6vh #fff; animation: cel-rkt-twinkle 1.6s ease-in-out infinite alternate;
  transition: height 1.4s cubic-bezier(.55, 0, .85, .45);
}
@keyframes cel-rkt-twinkle { to { opacity: .3; } }
.cel-rkt-scene.is-flying .cel-rkt-stars { translate: 0 40vh; }
.cel-rkt-scene.is-flying .cel-rkt-stars i { height: calc(var(--s) * 18); }

.cel-rkt-beam {
  position: absolute; bottom: 12vh; width: 16vh; height: 120vh; margin-left: -8vh; transform-origin: 50% 100%;
  background: linear-gradient(0deg, rgb(255 255 255 / .35), rgb(199 210 254 / .12) 50%, transparent 90%);
  clip-path: polygon(42% 100%, 58% 100%, 100% 0, 0 0); filter: blur(.6vh);
  animation: cel-rkt-sweep 4s ease-in-out infinite alternate;
}
.cel-rkt-beam.is-left { left: 38vw; rotate: -25deg; }
.cel-rkt-beam.is-right { left: 80vw; rotate: 25deg; animation-direction: alternate-reverse; }
@keyframes cel-rkt-sweep { from { rotate: -28deg; } to { rotate: 22deg; } }

.cel-rkt-tower {
  position: absolute; left: calc(var(--rx) - 23vh); bottom: 14vh; width: 8vh; height: 62vh;
  background:
    repeating-linear-gradient(45deg, transparent 0 2.2vh, #64748b 2.2vh 2.7vh),
    repeating-linear-gradient(-45deg, transparent 0 2.2vh, #64748b 2.2vh 2.7vh);
  border-inline: .9vh solid #94a3b8;
}
.cel-rkt-tower::before { content: ""; position: absolute; left: -2vh; right: -2vh; top: -1.4vh; height: 1.4vh; background: #94a3b8; }
.cel-rkt-tower::after { content: ""; position: absolute; left: 50%; top: -5vh; width: 1.4vh; height: 1.4vh; margin-left: -.7vh; border-radius: 50%; background: #ef4444; box-shadow: 0 0 1.6vh #ef4444; animation: cel-rkt-blink 1s steps(2) infinite; }
@keyframes cel-rkt-blink { 50% { opacity: .2; } }
.cel-rkt-arm { position: absolute; left: 100%; top: 24vh; width: 8vh; height: 2.2vh; transform-origin: 0 50%; background: linear-gradient(180deg, #cbd5e1, #64748b); border-radius: 0 .6vh .6vh 0; }

.cel-rkt-rocket { position: absolute; left: var(--rx); bottom: 14vh; width: 16vh; height: 50vh; margin-left: -8vh; z-index: 2; }
.cel-rkt-nose {
  position: absolute; left: 0; right: 0; top: 0; height: 13.2vh; border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  background: linear-gradient(90deg, #7f1d1d, #ef4444 35%, #fca5a5 48%, #dc2626 65%, #7f1d1d);
}
.cel-rkt-body {
  position: absolute; left: 0; right: 0; top: 13vh; bottom: 4vh; border-radius: 0 0 1.2vh 1.2vh;
  background:
    linear-gradient(180deg, transparent 84%, #dc2626 84% 90%, transparent 90%),
    linear-gradient(90deg, #94a3b8, #f8fafc 35%, #ffffff 48%, #e2e8f0 65%, #94a3b8);
}
.cel-rkt-window {
  position: absolute; left: 50%; top: 2.6vh; width: 8.6vh; height: 8.6vh; margin-left: -4.3vh; border-radius: 50%;
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  background: radial-gradient(circle at 35% 30%, #e0f2fe, #38bdf8 45%, #0c4a6e); border: .8vh solid #cbd5e1;
}
.cel-rkt-logo { width: 82%; height: 82%; object-fit: contain; }
.cel-rkt-name {
  position: absolute; left: 50%; top: 13.4vh; translate: -50% 0; max-height: 15vh; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  writing-mode: vertical-rl; font-size: 2.8vh; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: #1e293b;
}
.cel-rkt-fin { position: absolute; bottom: 2vh; width: 7vh; height: 16vh; background: linear-gradient(180deg, #ef4444, #991b1b); }
.cel-rkt-fin.is-left { left: -6vh; clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 62%); }
.cel-rkt-fin.is-right { right: -6vh; clip-path: polygon(0 0, 100% 62%, 100% 100%, 0 100%); }
.cel-rkt-nozzle {
  position: absolute; left: 50%; bottom: -.5vh; width: 9vh; height: 5vh; margin-left: -4.5vh;
  clip-path: polygon(18% 0, 82% 0, 100% 100%, 0 100%); background: linear-gradient(90deg, #334155, #94a3b8 45%, #334155);
}
.cel-rkt-flame {
  position: absolute; left: 50%; top: calc(100% - 1vh); width: 10vh; height: 20vh; margin-left: -5vh; transform-origin: 50% 0;
  scale: 1 0; transition: scale .35s cubic-bezier(.3, 1.5, .5, 1);
}
.cel-rkt-flame.is-lit { scale: 1 1; }
.cel-rkt-flame.is-full { scale: 1.2 2.1; transition-duration: 1.2s; }
.cel-rkt-flame i {
  position: absolute; left: 50%; top: 0; translate: -50% 0; border-radius: 45% 45% 50% 50% / 25% 25% 75% 75%;
  animation: cel-rkt-flicker .08s ease-in-out infinite alternate;
}
.cel-rkt-flame i:first-child { width: 100%; height: 100%; background: radial-gradient(ellipse at 50% 15%, #fde047, #f97316 45%, rgb(239 68 68 / .7) 70%, transparent 85%); filter: blur(.4vh); }
.cel-rkt-flame i:last-child { width: 50%; height: 60%; background: radial-gradient(ellipse at 50% 10%, #ffffff, #fef9c3 45%, transparent 80%); animation-delay: .04s; }
@keyframes cel-rkt-flicker { to { scale: .9 1.08; } }

.cel-rkt-pad {
  position: absolute; left: -4vh; right: -4vh; bottom: -4vh; height: 18vh;
  background:
    linear-gradient(180deg, #facc15 0 .8vh, #111 .8vh 1.6vh, transparent 1.6vh),
    linear-gradient(180deg, #57534e, #292524);
  box-shadow: 0 -1vh 3vh rgb(0 0 0 / .4);
}

.cel-rkt-hud { position: absolute; right: 3vw; top: 6vh; width: 30vw; text-align: right; opacity: 0; }
.cel-rkt-kicker { font-size: 2.4vh; font-weight: 700; letter-spacing: .35em; text-transform: uppercase; color: #fde68a; }
.cel-rkt-app { margin-top: .6vh; font-size: 6.4vh; font-weight: 700; line-height: 1.05; color: #fff; text-shadow: 0 0 3vh rgb(99 102 241 / .8); overflow-wrap: anywhere; }
.cel-rkt-rev {
  display: inline-block; margin-top: 1.2vh; padding: .5vh 1.6vh; border-radius: .8vh; background: rgb(255 255 255 / .1); border: .25vh solid rgb(255 255 255 / .3);
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; font-size: 2.6vh; color: #c7d2fe;
}

.cel-rkt-count { position: absolute; right: 7vw; top: 34vh; width: 32vh; height: 32vh; visibility: hidden; }
.cel-rkt-count svg { width: 100%; height: 100%; rotate: -90deg; }
.cel-rkt-ring-track { fill: rgb(2 6 23 / .7); stroke: rgb(255 255 255 / .12); stroke-width: 5; }
.cel-rkt-ring {
  fill: none; stroke: #fde047; stroke-width: 5; stroke-linecap: round; stroke-dasharray: 276; stroke-dashoffset: 276;
  filter: drop-shadow(0 0 1.2vh #facc15); transition: stroke-dashoffset .8s cubic-bezier(.2, .8, .3, 1);
}
.cel-rkt-digit {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; font-size: 17vh; font-weight: 700; color: #fff; text-shadow: 0 0 3vh #fde047;
}
.cel-rkt-digit.is-go { color: #fde047; }
.cel-rkt-tminus { position: absolute; left: 0; right: 0; bottom: 4.6vh; text-align: center; font-size: 2.2vh; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: #fde68a; }

.cel-rkt-payoff {
  position: absolute; left: 26vw; right: 3vw; top: 10vh; visibility: hidden; z-index: 3;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.cel-rkt-title {
  font-family: var(--font-brand); font-size: 24vh; line-height: 1; opacity: 0; padding: 0 3vh;
  background: linear-gradient(100deg, #fde047, #fff7c2 30%, #fb923c 50%, #fff7c2 70%, #fde047);
  background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 1vh 0 #7c2d12) drop-shadow(0 0 4vh rgb(251 146 60 / .8));
}
.cel-rkt-title.is-shining { animation: cel-rkt-shine 2s linear infinite; }
@keyframes cel-rkt-shine { to { background-position: -200% 0; } }
.cel-rkt-pname { font-size: 7vh; font-weight: 700; line-height: 1.1; color: #fff; opacity: 0; text-shadow: 0 .5vh 0 #1e1b4b, 0 0 3vh rgb(99 102 241 / .8); }
.cel-rkt-facts { margin-top: 2.4vh; display: flex; flex-wrap: wrap; justify-content: center; gap: 2vh; }
.cel-rkt-fact {
  padding: 1vh 2.6vh; border-radius: 1.4vh; opacity: 0; font-size: 3.4vh; font-weight: 700;
  background: rgb(2 6 23 / .75); border: .3vh solid #fde047; box-shadow: 0 0 3vh rgb(250 204 21 / .35);
}
.cel-rkt-fact.is-rev { font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; color: #c7d2fe; border-color: #818cf8; box-shadow: 0 0 3vh rgb(129 140 248 / .4); }
.cel-rkt-merges { display: inline-block; color: #fde047; font-variant-numeric: tabular-nums; }
.cel-rkt-by { margin-top: 2.4vh; display: flex; align-items: center; gap: 1.6vh; opacity: 0; font-size: 3.2vh; font-weight: 700; color: #e0e7ff; }
.cel-rkt-by:empty { display: none; }
.cel-rkt-face { width: 7vh; height: 7vh; font-size: 2.8vh; box-shadow: 0 0 0 .4vh #fde047, 0 0 2vh rgb(250 204 21 / .6); }

/* Vrachtlijst: welke merges en tickets er live gingen. */
.cel-rkt-payoff { transform-origin: 50% 0; }
.cel-rkt-manifest {
  position: absolute; left: 28vw; right: 4vw; top: 38vh; bottom: 4vh; visibility: hidden; z-index: 3;
  display: flex; flex-direction: column; padding: 2vh 2.6vh; border-radius: 2vh;
  background: rgb(2 6 23 / .82); border: .3vh solid #a5b4fc; box-shadow: 0 0 4vh rgb(99 102 241 / .45);
}
.cel-rkt-manifest-head { display: flex; align-items: baseline; justify-content: space-between; gap: 2vh; }
.cel-rkt-manifest-title { font-size: 2.6vh; font-weight: 700; letter-spacing: .3em; text-transform: uppercase; color: #fde047; }
.cel-rkt-manifest-sum { font-size: 2.4vh; font-weight: 700; color: #c7d2fe; }
.cel-rkt-list { flex: 1; margin-top: 1.4vh; overflow: hidden; mask: linear-gradient(180deg, #000 85%, transparent); }
.cel-rkt-rows { display: flex; flex-direction: column; gap: 1.2vh; }
.cel-rkt-row {
  display: flex; align-items: flex-start; gap: 1.6vh; padding: 1.2vh 1.4vh; border-radius: 1.2vh;
  background: rgb(255 255 255 / .06); opacity: 0; translate: 4vh 0; transition: opacity .3s, translate .3s;
}
.cel-rkt-row.is-in { opacity: 1; translate: 0 0; }
.cel-rkt-row.is-more { justify-content: center; font-size: 2.2vh; font-weight: 700; color: #c7d2fe; }
.cel-rkt-row-face { width: 5.4vh; height: 5.4vh; font-size: 2vh; box-shadow: 0 0 0 .3vh #a5b4fc; }
.cel-rkt-row-text { flex: 1; min-width: 0; }
.cel-rkt-row-title { font-size: 2.6vh; font-weight: 700; line-height: 1.2; color: #fff; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cel-rkt-row-meta { margin-top: .3vh; font-size: 1.8vh; color: #a5b4fc; }
.cel-rkt-row-issues { margin-top: .8vh; display: flex; flex-wrap: wrap; gap: .8vh; }
.cel-rkt-issue {
  max-width: 100%; padding: .4vh 1.2vh; border-radius: 999px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font-size: 1.8vh; font-weight: 700; color: #1e1b4b; background: #fde047;
}
