/* ===== 动画集合 ===== */

/* 场景淡入 / 淡出 */
.scene {
    transition: opacity 1s ease;
}

.scene.fade-out {
    opacity: 0;
    pointer-events: none;
}

.scene.fade-in {
    opacity: 1;
}

/* ENTER 按钮呼吸 */
@keyframes breathe {
    0%, 100% { box-shadow: 0 0 0 rgba(255,214,92,0); }
    50%      { box-shadow: 0 0 25px rgba(255,214,92,0.6); }
}

#enter {
    animation: breathe 2.4s ease-in-out infinite;
}

/* STARRY 招牌闪烁 */
@keyframes signFlicker {
    0%, 100% { opacity: 1; text-shadow: 0 0 15px #ffd65c; }
    92%      { opacity: 1; }
    94%      { opacity: 0.4; text-shadow: 0 0 4px #ffd65c; }
    96%      { opacity: 1; text-shadow: 0 0 15px #ffd65c; }
}

.sign {
    animation: signFlicker 4s infinite;
}

/* 门打开 */
.door {
    transform-origin: left center;
    transition: transform 1.1s cubic-bezier(.6,.05,.3,1);
}

.door.open {
    transform: perspective(800px) rotateY(-95deg);
}

/* 路灯轻微摇曳 */
@keyframes lampSway {
    0%, 100% { transform: rotate(-1deg); }
    50%      { transform: rotate(1deg); }
}

/* 灯光呼吸 */
@keyframes lampGlow {
    0%, 100% { opacity: 0.9; }
    50%      { opacity: 0.7; }
}

/* 进入内部：镜头推进 */
@keyframes zoomIn {
    from { transform: scale(1);   filter: brightness(0.65); }
    to   { transform: scale(1.6); filter: brightness(0.2); }
}

.scene.entering {
    animation: zoomIn 1.4s ease forwards;
}

/* 内部场景淡入 */
.scene-interior {
    opacity: 0;
    transition: opacity 1.2s ease;
}

.scene-interior.show {
    opacity: 1;
}

/* 视差层浮动 */
@keyframes float {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-6px); }
}
