/* ============================================================
   MOTION — intro buka website + transisi antar halaman
   ============================================================ */

/* ---------- intro / boot ---------- */
#boot{
  position:fixed;inset:0;z-index:9800;background:#070708;
  display:grid;place-items:center;padding:24px;
  transition:transform .9s cubic-bezier(.76,0,.24,1),border-radius .9s cubic-bezier(.76,0,.24,1);
  will-change:transform;
}
#boot.done{transform:translateY(-100%);border-radius:0 0 46px 46px}
body.booting{overflow:hidden}
body.booting main{opacity:0}
body.booted main{opacity:1;transition:opacity .7s ease .05s}

.boot-inner{width:min(580px,88vw)}
.boot-mark{
  display:flex;gap:1px;line-height:1;color:#fff;
  font-family:var(--sans,'Inter',sans-serif);font-weight:600;
  font-size:clamp(52px,10vw,92px);letter-spacing:-.05em;
}
.boot-mark span{display:inline-block;opacity:0;transform:translateY(30px);animation:bootLetter .8s cubic-bezier(.2,.8,.2,1) forwards}
.boot-mark span:nth-child(1){animation-delay:.06s}
.boot-mark span:nth-child(2){animation-delay:.12s}
.boot-mark span:nth-child(3){animation-delay:.18s}
.boot-mark span:nth-child(4){animation-delay:.24s}
.boot-mark .u{color:var(--faint,#6e6e79);animation:bootLetter .8s cubic-bezier(.2,.8,.2,1) .30s forwards,bootBlink 1s steps(2) infinite}
.boot-mark .u::after{content:""}

.boot-rows{margin-top:clamp(26px,5vh,44px)}
.boot-row{
  display:flex;align-items:baseline;justify-content:space-between;gap:16px;
  font-size:8.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--faint,#6e6e79);
}
.boot-row b{font-family:var(--mono,monospace);font-weight:400;font-size:11px;letter-spacing:.08em;color:#fff}
.boot-bar{height:3px;margin-top:12px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden}
.boot-bar i{display:block;height:100%;width:100%;background:#fff;border-radius:999px;transform:scaleX(0);transform-origin:left;transition:transform .14s linear}
.boot-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}
.boot-tags span{
  font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim,#a1a1ab);
  padding:5px 11px;border:1px solid rgba(255,255,255,.1);border-radius:999px;
  opacity:0;animation:riseIn .6s cubic-bezier(.2,.8,.2,1) .55s forwards;
}
.boot-tags span:nth-child(2){animation-delay:.65s}
.boot-tags span:nth-child(3){animation-delay:.75s}
.boot-skip{
  position:absolute;right:22px;bottom:22px;
  border:1px solid rgba(255,255,255,.14);background:transparent;color:var(--dim,#a1a1ab);
  font-family:var(--mono,monospace);font-size:8px;letter-spacing:.22em;
  padding:9px 15px;border-radius:999px;cursor:pointer;transition:.25s;
}
.boot-skip:hover{background:#fff;color:#08080a;border-color:#fff}
@keyframes bootLetter{to{opacity:1;transform:none}}
@keyframes bootBlink{50%{opacity:.25}}

/* ---------- transisi pindah halaman ---------- */
#page-wipe{
  position:fixed;inset:0;z-index:9400;pointer-events:none;
  background:#0a0a0c;transform:translateY(100%);
  border-radius:44px 44px 0 0;
  transition:transform .42s cubic-bezier(.76,0,.24,1),border-radius .42s cubic-bezier(.76,0,.24,1);
  will-change:transform;
  display:grid;place-items:center;
}
#page-wipe::before{
  content:"";position:absolute;top:0;left:8%;right:8%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
}
#page-wipe span{
  font-family:var(--mono,monospace);font-size:9px;letter-spacing:.4em;color:rgba(255,255,255,.6);
  opacity:0;transition:opacity .2s;
}
#page-wipe.run{transform:translateY(0)}
#page-wipe.run span{opacity:1}
#page-wipe.out{transform:translateY(-100%);border-radius:0 0 44px 44px}

/* ---------- detail masuk halaman ---------- */
.view.active .view-next{animation:riseIn .7s cubic-bezier(.2,.8,.2,1) .25s both}
.view.active .sec-label{animation:riseIn .6s cubic-bezier(.2,.8,.2,1) both}
.view.active .sec-title{animation:riseIn .7s cubic-bezier(.2,.8,.2,1) .06s both}
#home .hero-eyebrow{animation:riseIn .7s cubic-bezier(.2,.8,.2,1) .05s both}

/* hover halus untuk baris & kartu */
.repo,.fact,.now-card,.soc,.qa-item,.music-card{transition:transform .3s cubic-bezier(.2,.8,.2,1),border-color .3s,background .3s,box-shadow .3s}
.repo:hover{transform:translateY(-3px)}

@media (prefers-reduced-motion:reduce){
  #boot,#page-wipe{display:none!important}
  body.booting main{opacity:1}
  .view.active *{animation:none!important}
}
