/* 페이지 전환 오버레이 */
.pt-overlay{position:fixed; inset:0; z-index:200; pointer-events:none; overflow:hidden}
/* 클릭 지점에서 퍼지는 원 */
.pt-ripple{position:absolute; width:20px; height:20px; border-radius:50%; background:var(--cream);
  transform:translate(-50%,-50%) scale(0); animation:ptSpread 1s cubic-bezier(.5,0,.35,1) forwards}
@keyframes ptSpread{to{transform:translate(-50%,-50%) scale(120)}}
/* 항로 점선 */
.pt-trail{position:absolute; top:calc(46% + 16px); left:0; height:2px; width:0; opacity:0;
  background:repeating-linear-gradient(90deg,var(--accent) 0 8px,transparent 8px 16px);
  animation:ptTrail 1.3s cubic-bezier(.45,0,.5,1) .3s forwards}
@keyframes ptTrail{0%{width:0;opacity:0}12%{opacity:.85}100%{width:112%;opacity:0}}
/* 비행기 */
.pt-plane{position:absolute; top:46%; left:-14%; font-size:44px; opacity:0;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.18));
  animation:ptFly 1.3s cubic-bezier(.45,0,.5,1) .3s forwards}
@keyframes ptFly{0%{left:-14%;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:114%;opacity:0}}
/* 스쳐 지나가는 구름 */
.pt-cloud{position:absolute; font-size:52px; opacity:0}
.pt-cloud.c1{top:24%; left:-20%; animation:ptCloud 1.25s ease-in-out .34s forwards}
.pt-cloud.c2{top:62%; left:-32%; font-size:64px; animation:ptCloud 1.4s ease-in-out .2s forwards}
.pt-cloud.c3{top:40%; left:-46%; font-size:40px; animation:ptCloud 1.5s ease-in-out .46s forwards}
@keyframes ptCloud{0%{opacity:0}15%{opacity:.95}85%{opacity:.95}100%{left:120%;opacity:0}}
/* 도착 페이지 등장 */
.pt-enter{animation:ptEnter .6s ease-out}
@keyframes ptEnter{from{opacity:0}to{opacity:1}}
