.menu-dice-stage{
  position:fixed;left:50%;top:50%;width:106px;height:98px;
  margin:-49px 0 0 -53px;perspective:620px;
}
.menu-dice-mover{
  width:106px;height:98px;display:grid;place-items:center;
  animation:menu-dice-arrive .7s cubic-bezier(.2,.65,.3,1) both;
}
.menu-dice-cube{
  position:relative;width:72px;height:72px;transform-style:preserve-3d;
  animation:menu-dice-roll .7s ease-out both;
}
.menu-dice-face{
  position:absolute;width:74px;height:74px;margin:-1px;
  border-radius:14px;background:#fff;border:2px solid #000;
  display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);
  padding:13px;backface-visibility:hidden;
  box-shadow:0 3px 0 rgba(0,0,0,.25);
}
.menu-dice-face--front{transform:translateZ(36px);}
.menu-dice-face--back{transform:rotateY(180deg) translateZ(36px);}
.menu-dice-face--top{transform:rotateX(90deg) translateZ(36px);}
.menu-dice-face--bottom{transform:rotateX(-90deg) translateZ(36px);}
.menu-dice-face--right{transform:rotateY(90deg) translateZ(36px);}
.menu-dice-face--left{transform:rotateY(-90deg) translateZ(36px);}
.menu-dice-pip{
  width:12px;height:12px;border-radius:50%;background:#111;
  align-self:center;justify-self:center;
}
.menu-dice-pip--red{background:#d50000;transform:scale(1.5);}
@keyframes menu-dice-arrive{
  0%{transform:translateX(var(--dice-start)) translateY(-24px);}
  70%{transform:translateX(0) translateY(0);}
  83%{transform:translateX(0) translateY(-7px);}
  100%{transform:translateX(0) translateY(0);}
}
@keyframes menu-dice-roll{
  0%{transform:rotateX(-210deg) rotateY(-396deg) rotateZ(-180deg);}
  70%{transform:rotateX(-30deg) rotateY(324deg) rotateZ(0deg) scale(1.08);}
  85%{transform:rotateX(-38deg) rotateY(324deg) rotateZ(0deg) scale(1.04);}
  100%{transform:rotateX(-30deg) rotateY(324deg) rotateZ(0deg) scale(1);}
}
.menu-dice-stage{z-index:10000;pointer-events:none;}
.menu-postcard-stage{
  position:fixed;left:50%;top:50%;width:min(280px,70vw);aspect-ratio:1.5;
  transform:translate(-50%,-50%);z-index:10000;pointer-events:none;
}
.menu-postcard-card{
  position:relative;width:100%;height:100%;
  animation:menu-postcard-arrive .8s cubic-bezier(.2,.65,.3,1) both;
}
.menu-postcard-back,.menu-postcard-front{
  position:absolute;inset:0;border:8px solid #fffaf0;border-radius:5px;
  backface-visibility:hidden;box-shadow:0 14px 35px rgba(0,0,0,.35);
}
.menu-postcard-back{
  background:linear-gradient(#b9b2a2,#b9b2a2) 50% 50%/1px 72% no-repeat,
    repeating-linear-gradient(transparent 0 20px,#d1c9b8 21px 22px) 85% 70%/35% 55% no-repeat,#fffaf0;
}
.menu-postcard-stamp{
  position:absolute;right:7%;top:5%;width:32px;height:40px;
  display:grid;place-items:center;border:2px dashed #739b89;color:#487963;
  background:#d8efdf;font-size:22px;
}
.menu-postcard-stamp svg{width:24px;height:24px;transform:rotate(-45deg);}
.menu-postcard-front{
  display:none;
}
@keyframes menu-postcard-arrive{
  0%{opacity:0;transform:translateX(calc(50vw + 160px));}
  100%{opacity:1;transform:translateX(0);}
}
@media(prefers-reduced-motion:reduce){
  .menu-postcard-card{animation:none;}
}

/* Travel Log: a slower, visible flight ends within the viewport. */
.menu-flight-stage{
  position:fixed;inset:0;z-index:10000;overflow:hidden;pointer-events:none;
}
.menu-flight-trail{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.menu-flight-trail line{
  stroke:#8aeaff;stroke-width:3;stroke-linecap:round;
  filter:drop-shadow(0 0 5px #21adff) drop-shadow(0 0 12px #168aff);
  animation:menu-flight-draw 2s cubic-bezier(.4,0,.2,1) both,
    menu-flight-fade .8s 1.8s ease-out forwards;
}
.menu-flight-plane{
  position:absolute;left:0;top:0;width:76px;height:76px;
  display:block;color:#fffaf0;
  filter:drop-shadow(0 0 6px #8aeaff) drop-shadow(0 0 18px #168aff);
  animation:menu-flight-cross 2s cubic-bezier(.4,0,.2,1) both,
    menu-flight-fade .5s 2s ease-out forwards;
}
@keyframes menu-flight-cross{
  from{transform:translate(var(--flight-start-x),var(--flight-start-y)) translate(-50%,-50%) rotate(var(--flight-angle));}
  to{transform:translate(var(--flight-end-x),var(--flight-end-y)) translate(-50%,-50%) rotate(var(--flight-angle));}
}
@keyframes menu-flight-draw{
  from{stroke-dashoffset:var(--flight-distance);}
  to{stroke-dashoffset:0;}
}
@keyframes menu-flight-fade{from{opacity:1;}to{opacity:0;}}
