:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased;font:16px/1.4 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{color:#f4f4f8;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;background:#0f0f1a;width:100%;height:100%;min-height:100svh;margin:0;padding:0;overflow:hidden}button{font:inherit}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.hub-map,.level-page{animation:.35s fade-in}@keyframes intro-pop-in{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes intro-fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes intro-pulse{0%,to{opacity:.4}50%{opacity:1}}.intro-screen{z-index:950;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 30%,#24243a,#0f0f1a 70%);flex-direction:column;justify-content:center;align-items:center;gap:clamp(10px,2vh,20px);padding:24px;display:flex;position:fixed;inset:0}.intro-image{opacity:0;width:clamp(140px,22vh,240px);animation:.7s cubic-bezier(.34,1.56,.64,1) forwards intro-pop-in}.intro-title{letter-spacing:.02em;background:linear-gradient(135deg,#f0d6ff,#c084fc 50%,#7dd3fc);color:#0000;text-shadow:0 2px #00000040;opacity:0;-webkit-background-clip:text;background-clip:text;margin:0;font-family:Luckiest Guy,Segoe UI,system-ui,sans-serif;font-size:clamp(20px,4vh,38px);font-weight:400;line-height:1.25;animation:.6s .55s forwards intro-fade-up}.intro-instructions{opacity:0;flex-direction:column;gap:10px;animation:.6s 1.15s forwards intro-fade-up;display:flex}.intro-instruction-row{align-items:center;gap:14px;display:flex}.intro-instruction-row p{color:#dcdce6;margin:0;font-size:.95rem}.intro-keys{flex-direction:column;align-items:center;gap:4px;display:flex}.intro-key-row{gap:4px;display:flex}.intro-key{color:#f4f4f8;background:#1c1c2c;border:1px solid #3a3a55;border-bottom-width:3px;border-radius:6px;justify-content:center;align-items:center;min-width:30px;height:30px;padding:0 8px;font-family:ui-monospace,monospace;font-size:.85rem;font-weight:600;display:flex}.intro-key--space{min-width:90px}.intro-key--sound{border-bottom-width:1px;min-width:30px;font-size:1.1rem}.intro-hint{color:#cfcfe0;opacity:0;margin:8px 0 0;font-size:.85rem;animation:.5s 1.75s forwards intro-fade-up,1.6s ease-in-out 2.25s infinite intro-pulse}.screen-size-overlay{z-index:1000;text-align:center;background:#0f0f1a;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex;position:fixed;inset:0}.screen-size-icon{font-size:48px}.screen-size-hint{color:#9a9ab5;max-width:32ch;font-size:.95rem}.pin-gate{z-index:900;background:#0f0f1a;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pin-gate-form{flex-direction:column;align-items:center;gap:12px;padding:24px;display:flex}.pin-gate-label{color:#cfcfe0;font-size:1.1rem}.pin-gate-input{letter-spacing:.3em;text-align:center;color:#f4f4f8;background:#1c1c2c;border:1px solid #3a3a55;border-radius:8px;width:10ch;padding:10px 12px;font-size:1.5rem}.pin-gate-input:focus{outline:2px solid #c084fc}.pin-gate-button{color:#1a1a2e;cursor:pointer;background:#c084fc;border:none;border-radius:8px;padding:10px 24px;font-weight:600}.pin-gate-error{color:#ff8a8a;margin:0;font-size:.9rem}.hub-map{background:radial-gradient(circle at 50% 30%,#24243a,#0f0f1a 70%);flex-direction:column;justify-content:center;align-items:center;gap:clamp(16px,4vh,32px);width:100%;height:100%;min-height:100svh;padding:16px;display:flex}.hub-title{text-align:center;-webkit-user-select:none;user-select:none;margin:0;font-size:clamp(20px,3.5vh,32px)}.hub-doors{flex-wrap:wrap;justify-content:center;gap:clamp(10px,2vw,20px);max-width:900px;display:flex}.hub-door-link{color:inherit;text-decoration:none}.hub-door-link--disabled{cursor:default}.hub-door{-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#1c1c2c;border:2px solid #3a3a55;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:clamp(110px,16vw,150px);height:clamp(110px,16vw,150px);transition:transform .15s,border-color .15s;display:flex;position:relative}.hub-door-icon{font-size:clamp(28px,5vw,40px)}.hub-door-label{text-align:center;padding:0 6px;font-size:clamp(11px,1.6vw,14px)}.hub-door--unlocked{border-color:#c084fc}.hub-door-link:hover .hub-door--unlocked{transform:translateY(-4px)}.hub-door--completed{border-color:#4caf50}.hub-door--locked{opacity:.45;filter:grayscale()}.hub-door-check{color:#4caf50;font-weight:700;position:absolute;top:6px;right:10px}.level-page{width:100%;height:100%;min-height:100svh;position:relative}.phaser-container{width:100%;height:100%;min-height:100svh;line-height:0}.level-loading{color:#cfcfe0;justify-content:center;align-items:center;width:100%;height:100%;min-height:100svh;display:flex}.level-progress-badge,.level-complete-banner{-webkit-user-select:none;user-select:none;touch-action:manipulation}.content-modal-overlay{z-index:20;background:#0a0a1099;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.content-modal{background:#1c1c2c;border:1px solid #3a3a55;border-radius:14px;flex-direction:column;gap:12px;width:min(560px,100%);max-height:96%;padding:20px;display:flex;overflow-y:auto}@keyframes content-modal-photo-reveal{0%{opacity:0;filter:blur(8px);transform:scale(.82)rotate(-2deg)}60%{opacity:1;filter:blur()}to{opacity:1;filter:blur();transform:scale(1)rotate(0)}}.content-modal-photo{object-fit:contain;border-radius:10px;width:100%;max-height:min(65vh,520px);animation:.55s cubic-bezier(.34,1.56,.64,1) both content-modal-photo-reveal;display:block}.content-modal-photo-wrap{position:relative}.content-modal-speech-bubble{color:#1a1a2e;text-align:center;background:#fff;border-radius:14px;margin:0 0 14px;padding:10px 14px;font-weight:600;line-height:1.4;position:relative}.content-modal-speech-bubble:after{content:"";border:8px solid #0000;border-top-color:#fff;border-bottom-width:0;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)}.content-modal-video{background:#000;border-radius:10px;width:100%;max-height:320px}.content-modal-title{margin:0;font-size:1.15rem}.content-modal-body{color:#dcdce6;white-space:pre-line;margin:0;line-height:1.5}.content-modal-embed{border-radius:10px;width:100%;height:152px;overflow:hidden}.content-modal-embed iframe{border:none;width:100%;height:100%}.content-modal-listen-hint{color:#cfcfe0;text-align:center;margin:0;font-size:.85rem}.content-modal-quote{color:#e8d9fb;background:#c084fc14;border-left:3px solid #c084fc;border-radius:0 8px 8px 0;margin:0;padding:10px 14px;font-style:italic;line-height:1.5}.content-modal-rating{background:#ffffff0d;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:8px 14px;display:flex}.content-modal-rating-label{color:#dcdce6;font-size:.85rem;font-weight:600}.content-modal-rating-hearts{gap:2px;font-size:1.1rem;line-height:1;display:flex}.content-modal-close{color:#1a1a2e;cursor:pointer;background:#c084fc;border:none;border-radius:8px;align-self:flex-end;min-height:44px;padding:8px 20px;font-weight:600}.content-modal-close:disabled{color:#8a8a9e;cursor:not-allowed;background:#4a4a5e}.level-complete-banner{top:max(10px, env(safe-area-inset-top));z-index:10;color:#0f0f1a;text-align:center;background:#4caf50e6;border-radius:8px;padding:8px 16px;font-size:.85rem;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.level-progress-badge{top:max(10px, env(safe-area-inset-top));right:max(10px, env(safe-area-inset-right));z-index:10;color:#f4f4f8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#141420b3;border-radius:8px;padding:6px 12px;font-size:.85rem;font-weight:600;position:absolute}.gift-gallery{flex-direction:column;gap:8px;display:flex}.gift-card{background:#2a1c33;border:1px solid #6a3a7a;border-radius:10px;padding:14px}.gift-title{color:#f0d6ff;margin:0 0 4px;font-size:1rem}.gift-description{color:#dcdce6;margin:0 0 8px;line-height:1.4}.gift-code{letter-spacing:.05em;word-break:break-all;background:#1a1a2e;border-radius:6px;margin:0 0 8px;padding:6px 10px;font-family:ui-monospace,monospace;font-size:.85rem}.gift-spotify-embed{border:none;border-radius:12px;display:block}.gift-link{color:#1a1a2e;background:#c084fc;border-radius:8px;padding:6px 14px;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-block}.gift-nav{justify-content:space-between;align-items:center;gap:8px;display:flex}.gift-nav button{color:#f4f4f8;cursor:pointer;background:0 0;border:1px solid #6a3a7a;border-radius:8px;min-height:44px;padding:8px 14px}.gift-nav span{color:#cfcfe0;font-size:.85rem}.confetti-overlay{z-index:25;pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti-piece{opacity:.9;width:8px;height:14px;animation-name:confetti-fall;animation-timing-function:ease-in;animation-fill-mode:forwards;position:absolute;top:-20px}@keyframes confetti-fall{to{opacity:.2;transform:translateY(110vh)rotate(360deg)}}
