/* v14: soft, continuous opening and a slower light wash. */
.door { will-change: auto; }
.door.is-current { will-change: transform; }
.portal.dm-enhanced { perspective: 900px; perspective-origin: 50% 48%; }
.dm-original { visibility: hidden; }
.dm-aperture, .dm-leaf, .dm-spill { position: absolute; display: block; pointer-events: none; }
.dm-aperture { z-index: 1; overflow: hidden; background: radial-gradient(ellipse at 75% 50%, #fff8db, #ffe2a0 55%, #d8ad63); }
.dm-leaf { z-index: 3; transform-origin: 0 50%; transform: rotateY(0deg); backface-visibility: hidden; -webkit-backface-visibility: hidden; transition: transform 1000ms cubic-bezier(.45,0,.25,1); overflow: hidden; }
.dm-leaf > .door-art { max-width: none; max-height: none; bottom: auto; right: auto; }
.door-art.dm-frame { z-index: 4; pointer-events: none; }
.dm-spill { z-index: 0; top: 86%; left: 4%; width: 110%; height: 17%; background: linear-gradient(#ffe7a34a, #f8d38a14 55%, transparent); clip-path: polygon(29% 0, 64% 0, 100% 100%, 0 100%); opacity: 0; transition: opacity 1000ms cubic-bezier(.45,0,.25,1); }
.dm-ajar > .dm-leaf { transform: rotateY(15deg); }
.dm-ajar > .dm-spill { opacity: .72; }
.door-entering .forest { pointer-events: none; }
.door-entering .invitation, .door-entering .door-caption, .door-entering .carousel-controls, .door-entering .forest-actions, .door-entering .scene-header { opacity: 0; transition: opacity 650ms cubic-bezier(.45,0,.25,1); }
.door-entering #firefly { opacity: 0; }
.dm-journey { position: fixed; inset: 0; z-index: 29; overflow: hidden; pointer-events: none; isolation: isolate; }
.dm-light-disk { position: absolute; top: 0; left: 0; width: 160px; height: 160px; z-index: 2; border-radius: 50%; opacity: 0; transform-origin: 50% 50%; background: radial-gradient(circle, #fff4d4 0%, #ffeaba 26%, #ffdfa185 51%, #f8cd7326 66%, transparent 74%); pointer-events: none; }
.dm-light-cover { position: absolute; inset: 0; z-index: 3; background: #f9eac4; opacity: 0; pointer-events: none; }
.dm-opening-door.door { position: absolute; top: 0; left: 0; bottom: auto; display: block; padding: 0; margin: 0; transform-origin: 0 0; transition: none; filter: none; opacity: 1; z-index: 1; pointer-events: none; }
.dm-opening-door > .portal { width: 100%; height: 100%; aspect-ratio: auto; }
.dm-journey .dm-spill { opacity: .85; }
.dm-opening-door .dm-leaf { transition: none; will-change: transform; }
.dm-journey[data-stage=flood] .dm-light-disk, .dm-journey[data-stage=clearing] .dm-light-disk { will-change: transform, opacity; }
.dm-journey[data-stage=flood] .dm-light-cover, .dm-journey[data-stage=clearing] .dm-light-cover { will-change: opacity; }
/* The real landscape is already in place when the warm light clears. */
.door-arrived .world-scene, .door-arrived .world-background { animation: none; }
.door-arrived #application[open] { animation: dm-form-arrive 600ms cubic-bezier(.4,0,.2,1) both; }
@keyframes dm-form-arrive { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .dm-leaf, .dm-spill { transition: none; }
  .door-arrived #application[open] { animation: none; }
}
