body,html{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background-color:#000;font-family:Courier New,Courier,monospace;user-select:none;-webkit-user-select:none}#app{width:100%;height:100%;position:relative;display:flex;justify-content:center;align-items:center}canvas{image-rendering:pixelated;image-rendering:crisp-edges;width:100%;height:100%;object-fit:cover}#loading-screen{position:absolute;top:0;left:0;width:100%;height:100%;background:black;color:#fff;display:flex;justify-content:center;align-items:center;z-index:10;cursor:pointer;animation:blink 1.5s infinite}@keyframes blink{0%{opacity:1}50%{opacity:.5}to{opacity:1}to{opacity:1}}#debug-overlay{position:absolute;top:10px;left:10px;z-index:9999;color:red;font-family:Courier New,Courier,monospace;font-size:20px;font-weight:700;pointer-events:none;background:rgba(0,0,0,.5);padding:5px}#final-dialog-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);display:flex;justify-content:center;align-items:center;z-index:20}#final-dialog{background:#222;border:4px solid #fff;padding:24px;text-align:center;color:#fff;max-width:80%;box-shadow:8px 8px #fff3}#final-dialog h2{font-size:24px;margin-top:0;color:#ffeb3b}#final-dialog p{font-size:16px;margin-bottom:24px}.button-container{display:flex;gap:16px;justify-content:center}#final-dialog button{background:#444;border:4px solid #fff;color:#fff;padding:8px 24px;font-size:18px;cursor:pointer;font-family:inherit;transition:transform .1s}#final-dialog button:hover{background:#666;transform:scale(1.05)}#final-dialog button:active{transform:scale(.95)}#btn-accept{color:#4caf50!important}#btn-decline{color:#f44336!important}#calendar-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;z-index:100;display:flex;flex-direction:column;-webkit-user-select:none;user-select:none;opacity:0;transition:opacity 2s ease-in}.calendar-top-section{flex:4;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;z-index:2;background:radial-gradient(circle at center,#1a2a3a 0%,#050510 100%);border-bottom:2px solid #333}.split-bottom-section{flex:6;display:flex;flex-direction:column;position:relative;overflow:hidden;opacity:0;transition:opacity 2s ease-in-out}.image-half{flex:1;width:100%;position:relative;overflow:hidden}.image-half img{width:100%;height:100%;object-fit:cover;opacity:.8;transition:opacity .5s;image-rendering:pixelated}@keyframes rumble{0%{transform:translateY(0)}50%{transform:translateY(-2px)}to{transform:translateY(0)}}@keyframes breathe{0%{transform:scale(1)}50%{transform:scale(1.03)}to{transform:scale(1)}}@keyframes light-pass{0%{background-position:-100% 0}to{background-position:200% 0}}.image-half.subway-section img{transform-origin:center;animation:rumble 5s infinite ease-in-out}.image-half.subway-section:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,200,.05) 40%,rgba(255,255,200,.1) 50%,rgba(255,255,200,.05) 60%,transparent 100%);background-size:200% 100%;animation:light-pass 5s infinite linear;pointer-events:none}.image-half.office-section img{transform-origin:center;animation:breathe 5s infinite ease-in-out}.ice-wall-divider{position:absolute;top:50%;left:0;right:0;height:6px;transform:translateY(-50%);background:rgba(200,230,255,.6);z-index:10;box-shadow:0 0 10px #00ffff80,0 0 20px #ffffff4d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-top:1px solid rgba(255,255,255,.9);border-bottom:1px solid rgba(135,206,235,.9);animation:ice-pulse 2s infinite ease-in-out}@keyframes ice-pulse{0%{box-shadow:0 0 10px #00ffff80,0 0 20px #ffffff4d;opacity:.8}50%{box-shadow:0 0 20px #0ffc,0 0 40px #fff9;opacity:1}to{box-shadow:0 0 10px #00ffff80,0 0 20px #ffffff4d;opacity:.8}}.ice-wall-divider:before{content:"";position:absolute;top:-20px;left:0;width:100%;height:46px;background:linear-gradient(0deg,transparent,rgba(255,255,255,.1),transparent);pointer-events:none}.calendar-frame{display:flex;gap:15px;padding:15px;background:linear-gradient(145deg,#3a4d60 0%,#1a2530 100%);border:4px solid #485c6f;border-radius:10px;box-shadow:0 0 30px #ff8c004d,0 0 60px #ff8c001a,inset 0 0 20px #00000080;border-color:#485c6f}.wheel-window{position:relative;width:60px;height:80px;background:#0b1520;border:2px solid #2c3e50;border-radius:4px;overflow:hidden}.digit-strip{display:flex;flex-direction:column;transition:transform .5s cubic-bezier(.25,1,.5,1)}.digit-strip img{width:100%;height:80px;display:block;object-fit:cover;background:black;mix-blend-mode:screen}.wheel-shadow{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to bottom,rgba(0,0,0,.9) 0%,rgba(0,0,0,.1) 30%,rgba(0,0,0,0) 50%,rgba(0,0,0,.1) 70%,rgba(0,0,0,.9) 100%);pointer-events:none}.interaction-hint{margin-top:20px;color:#888;font-family:Courier New,monospace;font-size:22px;animation:blink 2s infinite;transition:opacity .5s ease-in-out}@keyframes blink{0%,to{opacity:.3}50%{opacity:1}}#heartbeat-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;z-index:100;display:flex;justify-content:center;align-items:center;flex-direction:column;opacity:0;transition:opacity 6s ease-in}.heartbeat-container{display:flex;flex-direction:column;align-items:center;gap:40px}.heart-text{color:#fff;font-size:24px;letter-spacing:4px;text-shadow:0 0 10px rgba(255,255,255,.5)}@keyframes fade-in-text{to{opacity:1}}.heart-subtext{color:#ccc;font-size:16px;letter-spacing:1px;text-shadow:0 0 5px rgba(255,255,255,.3);margin-top:-20px;min-height:20px}.pixel-heart-wrapper{position:relative;width:120px;height:120px;cursor:pointer;transform:scale(1);transition:transform .1s}.pixel-heart-wrapper:active{transform:scale(.9)}.pixel-heart{width:100%;height:100%;position:relative}.heart-pixels{width:100%;height:100%;background-color:#f33;clip-path:polygon(10% 20%,30% 0%,50% 20%,70% 0%,90% 20%,90% 50%,50% 90%,10% 50%);box-shadow:0 0 20px #ff323266}.ripple-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:2}.ripple{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:50%;border:2px solid rgba(255,255,255,.8);background:rgba(255,255,255,.1);opacity:0;pointer-events:none}.ripple-soft{animation:ripple-1 1.2s ease-out forwards}.ripple-medium{border-width:3px;animation:ripple-2 1s ease-out forwards}.ripple-strong{border-width:4px;background:rgba(255,255,255,.3);animation:ripple-3 .8s ease-out forwards}@keyframes ripple-1{0%{width:0;height:0;opacity:.8}to{width:80px;height:80px;opacity:0}}@keyframes ripple-2{0%{width:0;height:0;opacity:.9}to{width:140px;height:140px;opacity:0}}@keyframes ripple-3{0%{width:0;height:0;opacity:1;border-color:#fff}to{width:250px;height:250px;opacity:0}}.heart-pump{animation:pump .3s ease-out}@keyframes pump{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.window-sky-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;background-color:#0b1026;animation:dayNightCycle 20s ease-in-out infinite}#game-canvas{position:relative;z-index:1}@keyframes dayNightCycle{0%{background-color:#0b1026}40%{background-color:#0b1026}50%{background-color:#4b3d60}60%{background-color:#87ceeb}90%{background-color:#87ceeb}to{background-color:#0b1026}}.star{position:absolute;width:4px;height:4px;background-color:#fff;opacity:0;animation:starCycle 20s ease-in-out infinite,twinkle 2s infinite ease-in-out}@keyframes starCycle{0%{opacity:1}35%{opacity:1}50%{opacity:0}60%{opacity:0}90%{opacity:0}to{opacity:1}}@keyframes twinkle{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}#start-screen{position:absolute;top:0;left:0;width:100%;height:100%;background:black;z-index:2000;display:flex;justify-content:center;align-items:center;transition:background 2s ease-out}.butterfly-container{position:relative;width:100px;height:100px;cursor:pointer;display:flex;flex-direction:column;align-items:center;transition:transform .3s cubic-bezier(.175,.885,.32,1.275)}.butterfly-container:hover{transform:scale(1.1)}.butterfly-svg{width:100px;height:80px;filter:drop-shadow(0 0 10px rgba(255,200,200,.5));overflow:visible}.wing-left,.wing-bottom-left{transform-origin:50px 45px;transform-box:view-box;animation:wingFlutter 3s infinite ease-in-out}.wing-right,.wing-bottom-right{transform-origin:50px 45px;transform-box:view-box;animation:wingFlutterRight 3s infinite ease-in-out}@keyframes wingFlutter{0%{transform:scaleX(1) rotateY(0)}50%{transform:scaleX(.8) rotateY(60deg)}to{transform:scaleX(1) rotateY(0)}}@keyframes wingFlutterRight{0%{transform:scaleX(1) rotateY(0)}50%{transform:scaleX(.8) rotateY(-60deg)}to{transform:scaleX(1) rotateY(0)}}.antenna{animation:sway 4s infinite ease-in-out;transform-origin:50px 45px}@keyframes sway{0%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}to{transform:rotate(-5deg)}}.fly-away .butterfly-svg{animation:flyPath 1.5s ease-in forwards}.fly-away .click-hint{opacity:0;transition:opacity .5s ease-out;animation:none}.fly-away .wing-left,.fly-away .wing-bottom-left{animation:wingFlutterFast .1s infinite linear!important}.fly-away .wing-right,.fly-away .wing-bottom-right{animation:wingFlutterFastRight .1s infinite linear!important}@keyframes flyPath{0%{transform:translate(0) rotate(0) scale(1);opacity:1}to{transform:translate(100vw,-50vh) rotate(45deg) scale(.5);opacity:0}}@keyframes wingFlutterFast{0%{transform:scaleX(1) rotateY(0)}50%{transform:scaleX(.5) rotateY(80deg)}to{transform:scaleX(1) rotateY(0)}}@keyframes wingFlutterFastRight{0%{transform:scaleX(1) rotateY(0)}50%{transform:scaleX(.5) rotateY(-80deg)}to{transform:scaleX(1) rotateY(0)}}.click-hint{margin-top:10px;color:#fff9;font-size:14px;letter-spacing:2px;animation:blink 2s infinite}.hidden{display:none!important}#scene8-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;z-index:1000;display:flex;justify-content:center;align-items:center;overflow:hidden}#scene8-curtain{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;z-index:5;pointer-events:none}#scene8-intro-text{position:absolute;z-index:10;color:#fff;font-size:40px;line-height:1.5;letter-spacing:2px;opacity:0;text-align:center;pointer-events:none;font-family:Courier New,Courier,monospace;width:100%;padding:0 20px}.scene8-animate-curtain{animation:scene8CurtainFade 1s ease-in-out forwards;animation-delay:7s}@keyframes scene8CurtainFade{0%{opacity:1}to{opacity:0}}#scene8-video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1;filter:brightness(0)}.scene8-blur-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);-webkit-mask-image:radial-gradient(ellipse at center,transparent 40%,black 100%);mask-image:radial-gradient(ellipse at center,transparent 40%,black 100%);opacity:1}.scene8-eyelid{position:absolute;left:0;width:100%;height:50%;background-color:#000;z-index:4;pointer-events:none;will-change:transform;transform:translateZ(0)}.eyelid-top{top:0;transform-origin:top;box-shadow:0 0 40px 20px #000;z-index:5}.eyelid-bottom{bottom:0;transform-origin:bottom;box-shadow:0 0 40px 20px #000;z-index:5}.scene8-vignette{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;pointer-events:none;background:radial-gradient(circle at center,transparent 50%,black 100%);opacity:1}.scene8-animate-text{animation:scene8TextSequence 7s ease-in-out forwards}.scene8-animate-video{animation:scene8BrightnessRise 7s ease-out forwards;animation-delay:7s}.scene8-animate-blur{animation:scene8FadeOutBlur 7s ease-in-out forwards;animation-delay:7s}.scene8-animate-eyelid-top{animation:scene8EyelidOpenTop 7s cubic-bezier(.645,.045,.355,1) forwards;animation-delay:7s}.scene8-animate-eyelid-bottom{animation:scene8EyelidOpenBottom 7s cubic-bezier(.645,.045,.355,1) forwards;animation-delay:7s}.scene8-animate-vignette{animation:scene8VignetteFade 5s ease-in-out forwards;animation-delay:9s}@keyframes scene8TextSequence{0%{opacity:0}28%{opacity:1}71%{opacity:1}to{opacity:0}}@keyframes scene8BrightnessRise{0%{filter:brightness(0)}30%{filter:brightness(.2)}to{filter:brightness(1)}}@keyframes scene8FadeOutBlur{0%{opacity:1}70%{opacity:1}to{opacity:0}}@keyframes scene8EyelidOpenTop{0%{transform:translateY(0)}30%{transform:translateY(-60%)}45%{transform:translateY(-30%)}to{transform:translateY(-100%)}}@keyframes scene8EyelidOpenBottom{0%{transform:translateY(0)}30%{transform:translateY(60%)}45%{transform:translateY(30%)}to{transform:translateY(100%)}}@keyframes scene8VignetteFade{0%{opacity:1}to{opacity:0}}#scene8-finale-container{position:absolute;top:0;left:0;width:100%;height:100%;z-index:20;display:flex;flex-direction:column;justify-content:center;align-items:center;pointer-events:none}#finale-lines{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;width:80%;max-width:800px}.finale-line{color:#000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Microsoft YaHei,SimHei,sans-serif;font-weight:700;font-size:clamp(14px,4.5vw,22px);line-height:1.6;text-align:center;opacity:0;text-shadow:0 1px 4px rgba(255,255,255,.8);transition:opacity 1.5s ease-in-out}.finale-spacer{height:20px}#finale-buttons{margin-top:40px;display:flex;gap:30px;transition:opacity 1s ease-in}@media screen and (max-width: 600px){#finale-lines{width:95%;gap:10px}.finale-line{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Microsoft YaHei,sans-serif;line-height:1.4;color:#000;text-shadow:0 1px 2px rgba(255,255,255,.8)}.finale-spacer{height:12px}#scene8-intro-text{font-size:32px}#finale-buttons{gap:15px}.pixel-btn{padding:8px 12px;font-size:14px}}.pixel-btn{background:white;color:#000;border:4px solid white;padding:10px 20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Microsoft YaHei,sans-serif;font-size:16px;font-weight:700;cursor:pointer;box-shadow:4px 4px #00000080;pointer-events:auto}.pixel-btn:hover{transform:translate(2px,2px);box-shadow:2px 2px #00000080}#scene8-ticket{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-width:90%;max-height:80%;z-index:30;transition:opacity 1s ease-in-out;box-shadow:0 10px 30px #00000080;border-radius:10px}@media screen and (max-width: 600px){#scene8-ticket{width:95%;max-width:none}}
