:root{
  --accent:#b794f6;
  --font-display:"Helvetica Neue","Arial Black",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
html{background:#04030c}
body{
  position:fixed;inset:0;background:#04030c;color:#f5f3ff;
  font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overscroll-behavior:none;-webkit-user-select:none;user-select:none;
  -webkit-tap-highlight-color:transparent;
}

/* layered cosmic background */
#bg-a,#bg-b{position:fixed;inset:0;z-index:-3;transition:opacity 1.1s ease}
#bg-a{opacity:1}#bg-b{opacity:0}
#stars{position:fixed;inset:0;z-index:-2;pointer-events:none}
.star{position:absolute;border-radius:50%;background:#fff;transform:translate(-50%,-50%);
  animation-name:twinkle;animation-timing-function:ease-in-out;animation-iteration-count:infinite;will-change:opacity}
@keyframes twinkle{0%,100%{opacity:.12}50%{opacity:.8}}
#vignette{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(125% 108% at 50% 44%,transparent 54%,rgba(0,0,0,.52) 100%)}

/* progress */
#progress-wrap{position:fixed;top:0;left:0;right:0;height:3px;z-index:6;background:rgba(255,255,255,.06)}
#progress{height:100%;width:0;background:var(--accent);box-shadow:0 0 14px var(--accent);
  transition:width .55s cubic-bezier(.22,.61,.36,1),background .9s ease}

/* deck */
#deck{position:fixed;inset:0;z-index:1;overflow:hidden;touch-action:none}
#track{display:flex;height:100%;width:calc(var(--n,1) * 100%);will-change:transform;
  transform:translate3d(calc(var(--current,0) * -100% / var(--n,1) + var(--drag,0px)),0,0);
  transition:transform .58s cubic-bezier(.22,.61,.36,1)}
#track.dragging{transition:none}
.card{flex:0 0 calc(100% / var(--n,1));height:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;overflow:hidden;
  padding:0 clamp(22px,6vw,64px);
  padding-top:calc(env(safe-area-inset-top) + 88px);
  padding-bottom:calc(env(safe-area-inset-bottom) + 100px)}
.wrap{max-width:760px;width:100%}

/* typography */
.tag{display:inline-flex;align-items:center;gap:.6em;flex-wrap:wrap;justify-content:center}
.dot{width:8px;height:8px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 12px var(--accent);flex:none}
.cat{font-size:clamp(.66rem,1.5vw,.8rem);letter-spacing:.22em;text-transform:uppercase;
  color:var(--accent);font-weight:700}
.sep{color:rgba(255,255,255,.3)}
.era{font-size:clamp(.72rem,1.7vw,.86rem);color:rgba(232,230,245,.62);font-weight:500}
.headline{font-family:var(--font-display);font-weight:900;letter-spacing:-.028em;line-height:1.02;
  font-size:clamp(2.1rem,7.4vw,4.6rem);margin:.42em 0 .36em;color:#fff;
  filter:drop-shadow(0 6px 38px color-mix(in srgb,var(--accent) 24%,transparent))}
.body{font-size:clamp(1.04rem,2.6vw,1.42rem);line-height:1.52;font-weight:400;
  color:rgba(236,234,251,.93);max-width:46ch;margin:0 auto}
@supports (background-clip:text){
  .headline{
    background:linear-gradient(176deg,#ffffff 28%,color-mix(in srgb,var(--accent) 42%,#ffffff) 74%,color-mix(in srgb,var(--accent) 78%,#cfd0e6));
    -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
}

/* entrance animation */
.wrap>*{opacity:0;transform:translateY(24px);
  transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1)}
.card.is-active .wrap>*{opacity:1;transform:none}
.card.is-active .wrap>*:nth-child(1){transition-delay:.14s}
.card.is-active .wrap>*:nth-child(2){transition-delay:.22s}
.card.is-active .wrap>*:nth-child(3){transition-delay:.32s}

/* nav */
.nav{position:fixed;top:50%;transform:translateY(-50%);z-index:6;
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.09);
  color:rgba(236,234,251,.7);font-size:1.35rem;line-height:1;cursor:pointer;
  opacity:.5;transition:opacity .3s,color .3s,background .3s,border-color .3s;
  backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.nav:hover{opacity:1;color:var(--accent);border-color:var(--accent);background:rgba(255,255,255,.07)}
.nav:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.nav:disabled{opacity:.16;cursor:default}
#prev{left:clamp(6px,2vw,18px)}#next{right:clamp(6px,2vw,18px)}

/* hud */
#hud{position:fixed;left:0;right:0;bottom:0;z-index:5;pointer-events:none;
  display:flex;align-items:center;justify-content:flex-start;
  padding:12px clamp(18px,5vw,42px) calc(12px + env(safe-area-inset-bottom));
  font-size:.74rem;color:rgba(236,234,251,.5);letter-spacing:.06em}
#counter{font-variant-numeric:tabular-nums;font-weight:600}
#title-mini{position:absolute;left:50%;transform:translateX(-50%);
  text-transform:uppercase;letter-spacing:.24em;font-size:.6rem;font-weight:600;
  opacity:0;transition:opacity .6s;white-space:nowrap;color:rgba(236,234,251,.4)}

/* onboarding arrow */
#swipe-hint{position:fixed;left:50%;bottom:calc(20% + env(safe-area-inset-bottom));
  transform:translateX(-50%);z-index:5;color:var(--accent);font-size:2.1rem;
  opacity:0;transition:opacity .6s;pointer-events:none}
#swipe-hint.show{opacity:.85}
#swipe-hint span{display:inline-block;animation:nudge 1.7s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translateX(0);opacity:.55}50%{transform:translateX(12px);opacity:1}}

@media(max-width:380px){.nav{width:38px;height:38px;font-size:1.15rem}}
@media(prefers-reduced-motion:reduce){
  #track,.wrap>*,#progress,#swipe-hint span{transition:none!important;animation:none!important}
}
