.gg-envelope-scene{
  overflow:hidden;
  background:#f3f0ea;
  perspective:1800px;
  transition:background-color .7s ease,opacity .45s ease .95s,visibility .45s ease .95s;
}
.gg-envelope-scene.is-opening{background:rgba(248,245,238,0)}
.gg-envelope.gg-envelope-full{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  aspect-ratio:auto;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  overflow:hidden;
  transform-style:preserve-3d;
}
.gg-fold{
  position:absolute;
  inset:-1px;
  display:block;
  backface-visibility:hidden;
  will-change:transform;
  transition:transform 1.2s cubic-bezier(.72,.02,.18,1);
}
.gg-fold::after{
  content:"";
  position:absolute;
  inset:0;
  opacity:.7;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.36),transparent 45%),linear-gradient(105deg,rgba(255,255,255,.18),rgba(130,122,110,.03));
}
.gg-fold-top{
  z-index:2;
  clip-path:polygon(0 0,100% 0,56% 49%,44% 49%);
  background:linear-gradient(155deg,#faf9f6 0%,#e8e5df 78%,#d7d3cb 100%);
  filter:drop-shadow(0 3px 3px rgba(60,54,47,.16));
  transform-origin:50% 0;
}
.gg-fold-bottom{
  z-index:3;
  clip-path:polygon(0 100%,100% 100%,56% 49%,44% 49%);
  background:linear-gradient(24deg,#f8f7f3 0%,#e7e4de 78%,#d4d0c8 100%);
  filter:drop-shadow(0 -3px 3px rgba(60,54,47,.15));
  transform-origin:50% 100%;
}
.gg-fold-left{
  z-index:4;
  clip-path:polygon(0 0,52% 49%,52% 53%,0 100%);
  background:linear-gradient(95deg,#f7f6f2 0%,#ece9e3 70%,#d7d3cc 100%);
  filter:drop-shadow(3px 0 3px rgba(60,54,47,.17));
  transform-origin:0 50%;
}
.gg-fold-right{
  z-index:5;
  clip-path:polygon(100% 0,100% 100%,48% 53%,48% 49%);
  background:linear-gradient(265deg,#faf9f6 0%,#ebe8e2 68%,#d1cdc5 100%);
  filter:drop-shadow(-4px 1px 4px rgba(60,54,47,.20));
  transform-origin:100% 50%;
}
.gg-center-seal{
  position:absolute;
  z-index:7;
  left:50%;
  top:51%;
  transform:translate(-50%,-50%);
  width:106px;
  height:106px;
  border:2px solid #b58b2d;
  border-radius:50%;
  color:#ad8125;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:0;
  background:rgba(245,242,235,.96);
  box-shadow:0 3px 12px rgba(62,53,38,.18),inset 0 0 0 4px rgba(255,255,255,.65);
  font:500 48px/1 var(--gg-serif);
  letter-spacing:-.12em;
  transition:transform .55s cubic-bezier(.5,0,.2,1),opacity .35s ease;
}
.gg-center-seal span:last-child{transform:translateX(-5px)}
.gg-center-seal i{position:absolute;width:72%;border-top:1px solid #b58b2d;transform:rotate(-58deg)}
.gg-open-hint{
  position:absolute;
  z-index:8;
  left:50%;
  bottom:7vh;
  transform:translateX(-50%);
  width:max-content;
  max-width:88vw;
  color:#5e5850;
  font:500 13px/1.4 var(--gg-sans);
  letter-spacing:.18em;
  text-transform:uppercase;
  transition:opacity .3s ease;
}
.gg-envelope-scene>.gg-skip{
  position:absolute;
  z-index:9;
  right:24px;
  top:24px;
  color:#665f56;
  font:400 12px var(--gg-sans);
}
.gg-envelope-scene.is-opening .gg-fold-top{transform:translateY(-104%) rotateX(-8deg);transition-delay:.02s}
.gg-envelope-scene.is-opening .gg-fold-bottom{transform:translateY(104%) rotateX(8deg);transition-delay:.09s}
.gg-envelope-scene.is-opening .gg-fold-left{transform:translateX(-104%) rotateY(9deg);transition-delay:.16s}
.gg-envelope-scene.is-opening .gg-fold-right{transform:translateX(104%) rotateY(-9deg);transition-delay:.23s}
.gg-envelope-scene.is-opening .gg-center-seal{opacity:0;transform:translate(-50%,-50%) scale(.66) rotate(18deg)}
.gg-envelope-scene.is-opening .gg-open-hint{opacity:0}
@media (max-width:600px){
  .gg-fold-top{clip-path:polygon(0 0,100% 0,58% 48%,42% 48%)}
  .gg-fold-bottom{clip-path:polygon(0 100%,100% 100%,58% 48%,42% 48%)}
  .gg-fold-left{clip-path:polygon(0 0,53% 48%,53% 52%,0 100%)}
  .gg-fold-right{clip-path:polygon(100% 0,100% 100%,47% 52%,47% 48%)}
  .gg-center-seal{width:86px;height:86px;font-size:39px;top:50%}
  .gg-envelope-scene>.gg-skip{top:18px;right:18px}
}
@media (prefers-reduced-motion:reduce){
  .gg-fold{transition-duration:.35s!important}
  .gg-envelope-scene{transition-duration:.35s!important}
}
