html,body{background:#000;margin:0;padding:0;overflow:hidden}#root{background:#000;min-height:100svh}*{box-sizing:border-box}:root{--door-width:clamp(62px, 7.2vw, 96px);--door-height:clamp(120px, 22vh, 212px)}html,body,#root{background:#000;min-height:100%;margin:0}body{overflow:hidden}button{font:inherit}audio{display:none}.mini-player{z-index:35;flex-direction:column;align-items:flex-end;gap:10px;font-family:Arial,Helvetica,sans-serif;display:flex;position:fixed;bottom:22px;right:22px}.player-toggle{color:#c9a86a;cursor:pointer;-webkit-backdrop-filter:blur(12px);background:#080808db;border:1px solid #c9a86ab3;border-radius:50%;place-items:center;width:48px;height:48px;font-size:20px;line-height:1;display:grid;box-shadow:0 8px 28px #00000080,0 0 18px #c9a86a24}.player-toggle:hover{background:#c9a86a1f;border-color:#c9a86a}.player-panel{color:#fff;-webkit-backdrop-filter:blur(16px);background:#080808e6;border:1px solid #c9a86a52;grid-template-columns:1fr auto;align-items:center;gap:14px;width:min(270px,100vw - 44px);padding:14px;display:grid;box-shadow:0 16px 46px #00000094}.player-track{flex-direction:column;gap:5px;min-width:0;display:flex}.player-status{color:#c9a86acc;letter-spacing:.14em;text-transform:uppercase;font-size:9px}.player-track strong{color:#ffffffe6;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;overflow:hidden}.player-play{color:#c9a86a;cursor:pointer;background:0 0;border:1px solid #c9a86a8c;padding:7px 10px;font-size:10px}.player-play:hover{background:#c9a86a1f}.player-volume{color:#ffffff8c;letter-spacing:.08em;text-transform:uppercase;grid-column:1/-1;gap:6px;font-size:10px;display:grid}.player-volume input{accent-color:#c9a86a;cursor:pointer;width:100%}.scene{isolation:isolate;background:#000;position:fixed;inset:0;overflow:hidden}.black-background{background:#000;position:absolute;inset:0}.light-haze{filter:blur(28px);pointer-events:none;background:radial-gradient(#ffffff47 0%,#ffffff24 18%,#ffffff0d 42%,#0000 72%);width:min(54vw,620px);height:min(68vh,620px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.door{z-index:2;width:var(--door-width);height:var(--door-height);cursor:pointer;background:#fff;border:0;border-radius:1px;padding:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50.5%);box-shadow:0 0 12px 5px #fffffff2,0 0 32px 17px #ffffff85,0 0 72px 38px #ffffff38,0 0 150px 72px #ffffff14}.door:hover{filter:brightness(1.08)}.door:focus-visible{outline-offset:5px;outline:2px solid #fff}.enter-flash{opacity:0;pointer-events:none;z-index:9;background:#000;position:absolute;inset:0}.scene.is-entering .door{z-index:9;animation:1.05s cubic-bezier(.22,1,.36,1) forwards doorEnter}.scene.is-entering .light-haze{animation:1.05s ease-out forwards hazeEnter}.scene.is-entering .enter-flash{animation:1.05s ease-out forwards flashEnter}@keyframes doorEnter{0%{filter:brightness();transform:translate(-50%,-50.5%)scale(1);box-shadow:0 0 12px 5px #fffffff2,0 0 32px 17px #ffffff85,0 0 72px 38px #ffffff38,0 0 150px 72px #ffffff14}42%{filter:brightness(1.22);transform:translate(-50%,-50.5%)scale(1.22)}to{filter:brightness(1.35);transform:translate(-50%,-50.5%)scale(18);box-shadow:0 0 28px 12px #fff,0 0 80px 40px #ffffffd9,0 0 160px 90px #ffffff80}}@keyframes hazeEnter{0%{opacity:1;filter:blur(28px);transform:translate(-50%,-50%)scale(1)}to{opacity:1;filter:blur(18px);transform:translate(-50%,-50%)scale(2.2)}}@keyframes flashEnter{0%{opacity:0}58%{opacity:0}78%{opacity:.72}to{opacity:1}}.vignette{z-index:3;pointer-events:none;background:radial-gradient(70% 72%,#0000 38%,#00000057 70%,#000000e6 100%);position:absolute;inset:0}.anniversary{z-index:10;text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:22px;padding:28px 20px;display:flex;position:fixed;inset:0}.anniversary-text{letter-spacing:-.015em;color:#fffffff5;text-shadow:0 0 18px #ffffff47;text-wrap:balance;white-space:pre-wrap;word-break:break-word;max-width:820px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(22px,3.2vw,38px);font-style:italic;font-weight:400;line-height:1.42}.anniversary-text.second{color:#ffffffeb;max-width:760px;font-size:clamp(19px,2.8vw,30px)}.anniversary-text.present{letter-spacing:.08em;text-transform:lowercase;color:#fff;text-shadow:0 0 22px #ffffff73;font-size:clamp(26px,4.2vw,48px);font-weight:400}.anniversary-text.memory{letter-spacing:.06em;text-transform:none;color:#c9a86a;text-shadow:0 0 14px #c9a86a38;font-size:clamp(30px,4.8vw,54px);font-style:normal;font-weight:400}.cursor.gold{background:#c9a86a;box-shadow:0 0 8px #c9a86a73}.typed{white-space:pre-wrap}.cursor{vertical-align:-.12em;background:#ffffffeb;width:2px;height:1.05em;margin-left:3px;animation:.85s step-end infinite cursorBlink;display:inline-block;box-shadow:0 0 8px #ffffffa6}.cursor.done{opacity:0;animation:1.2s step-end 3 forwards cursorBlink}@keyframes cursorBlink{0%,49%{opacity:1}50%,to{opacity:0}}@media (width<=600px){:root{--door-width:clamp(56px, 16vw, 84px);--door-height:clamp(110px, 28vh, 180px)}.anniversary-text{gap:.22em .34em;font-size:clamp(20px,6.2vw,32px)}.final-memory{gap:28px;padding-top:8px}.final-title{transform:translateY(14px)}.final-voice-text{transform:translateY(12px)}}.anniversary.gallery-mode{pointer-events:auto;scrollbar-width:thin;scrollbar-color:#c9a86a80 transparent;padding:clamp(34px,7vw,84px) clamp(16px,5vw,72px);display:block;overflow:hidden auto}.gallery-page{width:min(1180px,100%);margin:0 auto}.gallery-title{color:#c9a86a;letter-spacing:.08em;text-align:center;text-shadow:0 0 18px #c9a86a3d;margin:0 0 clamp(28px,5vw,58px);font-family:Georgia,Times New Roman,serif;font-size:clamp(30px,5vw,56px);font-weight:400}.gallery-hint{color:#ffffff8c;letter-spacing:.16em;text-align:center;text-transform:uppercase;margin:-32px 0 28px;font-family:Arial,Helvetica,sans-serif;font-size:12px}.progress-number,.gallery-clue,.unlock-question{text-underline-offset:5px;text-decoration-line:underline;text-decoration-color:#b64040;text-decoration-thickness:2px}.progress-number{color:#ffffffd1}.gallery-clue{color:#c85a5a;letter-spacing:.08em;text-transform:none;margin-top:14px;font-style:italic;display:block}.picked-preview{justify-content:center;gap:12px;margin:-14px 0 4px;display:flex}.picked-item{border:1px solid #c9a86abf;width:64px;height:48px;animation:.3s cubic-bezier(.16,1,.3,1) both pickedIn;position:relative;overflow:hidden;box-shadow:0 0 14px #c9a86a40,0 8px 20px #00000080}.picked-item img{object-fit:cover;width:100%;height:100%;display:block}.picked-number{color:#000;background:#c9a86a;border-radius:50%;place-items:center;width:18px;height:18px;font-family:Arial,Helvetica,sans-serif;font-size:10px;font-weight:700;display:grid;position:absolute;top:2px;left:2px}@keyframes pickedIn{0%{opacity:0;transform:translateY(-6px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.pick-code{justify-content:center;align-items:center;gap:14px;margin:-14px 0 22px;display:flex}.pick-label{color:#ffffff85;letter-spacing:.18em;text-transform:uppercase;font-family:Arial,Helvetica,sans-serif;font-size:10px}.pick-digits{gap:8px;display:flex}.pick-digit{color:#fff;letter-spacing:.04em;border-bottom:2px solid #b64040;place-items:center;width:38px;height:42px;font-family:Arial,Helvetica,sans-serif;font-size:18px;font-weight:700;display:grid}.pick-code.is-error .pick-digit{border-bottom-color:#ff6b6b;animation:.38s pickShake}@keyframes pickShake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}.pick-clear{color:#ffffffb8;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;border:1px solid #ffffff29;border-radius:999px;padding:6px 12px;font-family:Arial,Helvetica,sans-serif;font-size:10px}.pick-clear:hover{color:#fff;border-color:#ffffff52}.memory-gallery{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,2vw,24px);padding-bottom:60px;display:grid}.memory-card{appearance:none;font:inherit;text-align:left;cursor:pointer;opacity:0;animation:cardReveal .9s calc(var(--i) * .12s) cubic-bezier(.16, 1, .3, 1) forwards;background:#090909;border:1px solid #c9a86a33;flex-direction:column;margin:0;padding:0;transition:transform .45s,border-color .45s,box-shadow .45s;display:flex;position:relative;overflow:hidden;transform:translateY(24px)scale(.96);box-shadow:0 16px 38px #0000006b}.memory-number{z-index:3;color:#fff;text-shadow:0 1px 5px #000;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0000007a;border:1px solid #ffffff8c;border-radius:50%;place-items:center;width:28px;height:28px;font-family:Arial,Helvetica,sans-serif;font-size:12px;font-weight:700;transition:background .22s,color .22s,border-color .22s,transform .22s;display:grid;position:absolute;top:10px;left:10px}.memory-card.is-picked .memory-number{color:#000;text-shadow:none;background:#c9a86a;border-color:#c9a86a;transform:scale(1.08)}.memory-card.is-picked{border-color:#c9a86ae0;box-shadow:inset 0 0 0 1px #c9a86a85,0 16px 38px #0000006b,0 0 20px #c9a86a47}.memory-card.is-error{animation:.42s pickShake}.memory-content{z-index:1;aspect-ratio:4/3;cursor:zoom-in;appearance:none;background:0 0;border:0;width:100%;padding:0;position:relative;overflow:hidden}.memory-select{z-index:4;color:#c9a86a;letter-spacing:.14em;text-transform:uppercase;text-align:center;cursor:pointer;background:#000000b8;border:0;border-top:1px solid #c9a86a2e;width:100%;padding:9px 10px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:700;position:relative}.memory-select:hover{color:#fff;background:#c9a86a1f}.memory-card.is-picked .memory-select{color:#fff;background:#c9a86a2e}.memory-card:before{content:"";filter:blur(22px);opacity:.35;z-index:0;pointer-events:none;background:#444;position:absolute;inset:-16px;transform:scale(1.1)}.memory-image{z-index:1;object-fit:cover;opacity:0;filter:saturate(.82)contrast(.96)brightness(.86)blur(8px);width:100%;height:100%;animation:imageReveal 1.1s calc(var(--i) * .12s + .2s) ease-out forwards;transition:transform .7s,filter .7s;display:block;position:relative;transform:scale(1.06)}.memory-card:hover{z-index:2;border-color:#c9a86aa6;transform:translateY(-6px)scale(1.015);box-shadow:0 22px 52px #0000009e,0 0 24px #c9a86a1f}.memory-card:hover .memory-image{filter:saturate()contrast()brightness()blur();transform:scale(1.02)}@keyframes cardReveal{to{opacity:1;transform:translateY(0)scale(1)}}@keyframes imageReveal{to{opacity:1;filter:saturate(.82)contrast(.96)brightness(.86)blur();transform:scale(1)}}@media (width<=800px){.memory-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.anniversary.gallery-mode{padding:28px 12px}.memory-gallery{gap:10px}.gallery-hint{margin-bottom:22px}}.unlock-page{text-align:center;flex-direction:column;align-items:center;gap:20px;width:min(90vw,520px);display:flex}.unlock-title{color:#c9a86a;letter-spacing:.04em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(30px,5vw,52px);font-weight:400}.unlock-question{color:#c85a5a;margin:0 0 8px;font-family:Georgia,Times New Roman,serif;font-size:clamp(18px,2.8vw,25px);font-style:italic}.unlock-form{flex-direction:column;align-items:center;gap:16px;display:flex}.unlock-form label{color:#ffffff8f;letter-spacing:.18em;text-transform:uppercase;font-family:Arial,Helvetica,sans-serif;font-size:11px}.unlock-code{color:#fff;letter-spacing:.35em;text-align:center;background:0 0;border:0;border-bottom:2px solid #b64040;border-radius:0;outline:0;width:120px;padding:0 0 8px;font-family:Arial,Helvetica,sans-serif;font-size:28px}.unlock-code:focus{border-bottom-color:#e07171;box-shadow:0 4px 14px #b6404038}.unlock-button{color:#c9a86a;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;background:0 0;border:1px solid #c9a86a9e;padding:11px 24px;font-family:Arial,Helvetica,sans-serif;font-size:12px}.unlock-button:hover{background:#c9a86a1a}.unlock-error{color:#d56c6c;margin:0;font-family:Arial,Helvetica,sans-serif;font-size:12px}.anniversary.final-mode{pointer-events:auto;scrollbar-width:thin;scrollbar-color:#c9a86a80 transparent;padding:clamp(28px,6vw,72px) 20px 40px;display:block;overflow:hidden auto}.final-memory{flex-direction:column;align-items:center;gap:22px;width:min(900px,100%);margin:0 auto;padding:12px 0 28px;display:flex}.final-picture-wrap{cursor:zoom-in;background:0 0;border:none;flex-shrink:0;width:min(68vw,580px);max-width:92vw;margin:0 auto;padding:0;line-height:0;animation:1.4s cubic-bezier(.16,1,.3,1) both finalFrameIn;display:block;position:relative;overflow:visible}.final-picture{object-fit:contain;border:1px solid #c9a86a85;width:100%;max-width:100%;height:auto;max-height:none;margin:0 auto;transition:opacity 2.8s,filter 2.8s;display:block;box-shadow:0 0 50px #c9a86a24,0 24px 70px #000000a6}.final-picture.primary{opacity:1;filter:saturate(.9)contrast(.98)blur();position:relative}.final-picture.secondary{opacity:0;filter:saturate(.9)contrast(.98)blur(10px);margin:auto;position:absolute;inset:0}.final-picture-wrap.is-crossfaded .final-picture.primary{opacity:0;filter:saturate(.5)contrast(.9)blur(10px)}.final-picture-wrap.is-crossfaded .final-picture.secondary{opacity:1;filter:saturate(.95)contrast()blur()}.lightbox{z-index:50;-webkit-backdrop-filter:blur(18px);cursor:zoom-out;background:#000000e0;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.lightbox-image{object-fit:contain;cursor:default;width:auto;max-width:min(92vw,1100px);height:auto;max-height:88vh;animation:.32s cubic-bezier(.16,1,.3,1) both lightboxIn;display:block;box-shadow:0 24px 80px #000000a6,0 0 0 1px #ffffff14}@keyframes lightboxIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.lightbox-close{z-index:51;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0000008c;border:1px solid #ffffff38;border-radius:50%;place-items:center;width:44px;height:44px;font-family:Arial,Helvetica,sans-serif;font-size:16px;font-weight:700;line-height:1;display:grid;position:fixed;top:18px;right:18px}.lightbox-close:hover{background:#ffffff1f;border-color:#fff6}.lightbox-nav{z-index:51;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000073;border:1px solid #ffffff2e;border-radius:50%;place-items:center;width:48px;height:48px;font-size:28px;line-height:1;display:grid;position:fixed;top:50%;transform:translateY(-50%)}.lightbox-nav.prev{left:18px}.lightbox-nav.next{right:18px}.lightbox-nav:hover{background:#ffffff1f}.lightbox-counter{color:#ffffffb8;letter-spacing:.12em;font-family:Arial,Helvetica,sans-serif;font-size:12px;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}.final-title{z-index:1;color:#c9a86a;letter-spacing:.08em;text-shadow:0 0 18px #c9a86a3d;opacity:0;margin:0;padding-top:6px;font-family:Georgia,Times New Roman,serif;font-size:clamp(28px,4vw,46px);font-weight:400;line-height:1.1;animation:.85s cubic-bezier(.16,1,.3,1) 1.9s forwards titleDrop;position:relative;transform:translateY(14px)}@keyframes titleDrop{to{opacity:1;transform:translateY(0)}}.final-voice-text{color:#ffffffd1;letter-spacing:.01em;text-align:center;white-space:pre-wrap;opacity:0;max-width:760px;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(15px,2vw,21px);font-style:italic;line-height:1.55;animation:.85s cubic-bezier(.16,1,.3,1) 2.15s forwards voiceDrop;transform:translateY(12px)}@keyframes voiceDrop{to{opacity:1;transform:translateY(0)}}.final-voice-cursor{vertical-align:-.12em;background:#ffffffd1;width:2px;height:1em;margin-left:4px;animation:.85s step-end infinite finalCursorBlink;display:inline-block}@keyframes finalCursorBlink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes finalVoiceIn{0%{opacity:0;filter:blur(6px);transform:translateY(12px)}to{opacity:1;filter:blur();transform:translateY(0)}}.games-section{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;background:#ffffff08;border:1px solid #c9a86a2e;width:min(640px,100%);margin:18px 0 0;padding:22px 18px}.games-title{color:#c9a86a;letter-spacing:.08em;margin:0 0 4px;font-family:Georgia,Times New Roman,serif;font-size:22px;font-weight:400}.games-hint{color:#ffffff9e;letter-spacing:.12em;text-transform:uppercase;margin:0 0 16px;font-family:Arial,Helvetica,sans-serif;font-size:11px}.game-board{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.game-card{aspect-ratio:1;cursor:pointer;background:#0a0a0a;border:1px solid #c9a86a38;padding:0;position:relative;overflow:hidden}.card-face{backface-visibility:hidden;place-items:center;transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .3s;display:grid;position:absolute;inset:0}.card-front{color:#c9a86a;background:radial-gradient(#c9a86a38 0%,#000000d9 70%);font-family:Georgia,Times New Roman,serif;font-size:22px}.card-back{opacity:0;transform:rotateY(180deg)}.card-back img{object-fit:cover;width:100%;height:100%;display:block}.game-card.is-flipped .card-front{opacity:0;transform:rotateY(180deg)}.game-card.is-flipped .card-back,.game-card.is-matched .card-back{opacity:1;transform:rotateY(0)}.game-card.is-matched{border-color:#c9a86abf;box-shadow:0 0 12px #c9a86a38}.game-stats{color:#ffffffad;justify-content:center;gap:12px;margin:0 0 12px;font-family:Arial,Helvetica,sans-serif;font-size:12px;display:flex}.game-win{color:#c9a86a;font-weight:700}.game-restart{color:#c9a86a;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:1px solid #c9a86a73;padding:8px 16px;font-family:Arial,Helvetica,sans-serif;font-size:11px}.game-restart:hover{background:#c9a86a1f}.whack-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.whack-hole{aspect-ratio:1;cursor:pointer;background:radial-gradient(#1e1e1e 0%,#0a0a0a 70%);border:1px solid #c9a86a38;padding:0;position:relative;overflow:hidden;box-shadow:inset 0 8px 18px #000000a6}.whack-hole.has-cat{border-color:#c9a86a73}.hole-rim{background:#0f0f0f;border-radius:50%;height:14px;position:absolute;bottom:-2px;left:6%;right:6%;box-shadow:inset 0 -2px 8px #00000080}.whack-cat{filter:drop-shadow(0 6px 10px #00000080);font-size:clamp(28px,6vw,42px);line-height:1;animation:.22s cubic-bezier(.16,1,.3,1) both catPop;position:absolute;bottom:12%;left:50%;transform:translate(-50%)translateY(14%)}@keyframes catPop{0%{transform:translate(-50%)translateY(60%)scale(.7)}to{transform:translate(-50%)translateY(14%)scale(1)}}.whack-hole.is-bonked .whack-cat{animation:.18s both catBonk}@keyframes catBonk{to{opacity:0;transform:translate(-50%)translateY(60%)scale(.75)}}.bonk-fx{color:#ffd66b;letter-spacing:.08em;text-shadow:0 1px 6px #000000a6;pointer-events:none;font-family:Arial,Helvetica,sans-serif;font-size:13px;font-weight:800;animation:.42s ease-out both bonkUp;position:absolute;top:18%;left:50%;transform:translate(-50%)}@keyframes bonkUp{0%{opacity:1;transform:translate(-50%)translateY(0)}to{opacity:0;transform:translate(-50%)translateY(-18px)}}.whack-stats{color:#ffffffb8;justify-content:center;gap:14px;margin:0 0 12px;font-family:Arial,Helvetica,sans-serif;font-size:12px;display:flex}@media (width<=600px){.game-board{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.whack-board{gap:8px}}@keyframes finalFrameIn{0%{opacity:0;transform:translateY(18px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes finalPictureIn{0%{opacity:0;filter:saturate(.5)contrast(.9)blur(10px);transform:scale(1.04)}to{opacity:1;filter:saturate(.9)contrast(.98)blur();transform:scale(1)}}
