:root{--app-height: 100vh}@supports (height: 100dvh){:root{--app-height: 100dvh}}html{height:var(--app-height);overflow:hidden}body{height:var(--app-height);overflow:hidden;overscroll-behavior:none}#root{height:100%;width:100%}.app-container{height:var(--app-height);width:100vw;overflow:hidden;position:relative}body{font-family:Nunito Sans,sans-serif;background-color:#111}.font-serif-display{font-family:Cormorant Garamond,serif}.font-sans-body{font-family:Nunito Sans,sans-serif}:root{--turn-duration: 1.2s;--turn-easing: cubic-bezier(.4, 0, .2, 1)}.book-stage{perspective:2500px;perspective-origin:center center}.book-page{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transform-origin:left center;backface-visibility:hidden}.page-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden}.page-backface{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotateY(180deg);backface-visibility:hidden;background:#0a0a0a}@keyframes page-exit{0%{transform:rotateY(0)}to{transform:rotateY(-180deg)}}@keyframes page-enter{0%{transform:rotateY(-180deg)}to{transform:rotateY(0)}}.animate-page-exit{animation:page-exit var(--turn-duration) var(--turn-easing) forwards}.animate-page-enter{animation:page-enter var(--turn-duration) var(--turn-easing) forwards}.animate-turn-next{animation:page-exit var(--turn-duration) var(--turn-easing) forwards}.animate-turn-prev{animation:page-enter var(--turn-duration) var(--turn-easing) forwards}.mystic-edge-marker{position:absolute;top:0;bottom:0;width:6px;z-index:100;background:#fff;box-shadow:0 0 20px 4px #ffffffe6,0 0 40px 10px #e5d0a699;opacity:0;pointer-events:none;will-change:opacity}@keyframes edge-flash-symmetric{0%{opacity:0}35%{opacity:.5}50%{opacity:1}65%{opacity:.5}to{opacity:0}}.animate-edge-flash{animation:edge-flash-symmetric var(--turn-duration) var(--turn-easing) forwards}.page-lighting-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10;opacity:0}@keyframes lighting-sweep-right-to-left{0%{opacity:0;background:linear-gradient(to left,#fff0,#ffffff4d,#fff0 20%);background-position:100% 0}50%{opacity:1}to{opacity:0;background:linear-gradient(to left,#fff0,#ffffff4d,#fff0 20%);background-position:0% 0}}@keyframes lighting-sweep-left-to-right{0%{opacity:0;background:linear-gradient(to right,#fff0,#ffffff4d,#fff0 20%);background-position:0% 0}50%{opacity:1}to{opacity:0;background:linear-gradient(to right,#fff0,#ffffff4d,#fff0 20%);background-position:100% 0}}.animate-lighting-next{animation:lighting-sweep-right-to-left var(--turn-duration) var(--turn-easing) forwards;background-size:200% 100%}.animate-lighting-prev{animation:lighting-sweep-left-to-right var(--turn-duration) var(--turn-easing) forwards;background-size:200% 100%}.page-shadow-drop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000;opacity:0;pointer-events:none;z-index:5}@keyframes shadow-symmetric{0%{opacity:0}50%{opacity:.8}to{opacity:0}}.animate-shadow-cycle{animation:shadow-symmetric var(--turn-duration) var(--turn-easing) forwards}.page-edge-glow{position:absolute;top:0;bottom:0;width:8px;z-index:100;pointer-events:none;opacity:0}.page-edge-glow.glow-exit{right:-4px;background:linear-gradient(to left,rgba(255,255,255,.9),transparent);box-shadow:0 0 30px 8px #fff9;animation:edge-glow-exit var(--turn-duration) var(--turn-easing) forwards}.page-edge-glow.glow-enter{right:-4px;background:linear-gradient(to left,rgba(255,255,255,.9),transparent);box-shadow:0 0 30px 8px #fff9;animation:edge-glow-enter var(--turn-duration) var(--turn-easing) forwards}@keyframes edge-glow-exit{0%{opacity:0}30%{opacity:1}70%{opacity:1}to{opacity:0}}@keyframes edge-glow-enter{0%{opacity:0}30%{opacity:1}70%{opacity:1}to{opacity:0}}.page-shadow-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0006;z-index:15;pointer-events:none;opacity:0}@keyframes shadow-pulse{0%{opacity:0}50%{opacity:1}to{opacity:0}}.animate-shadow-pulse{animation:shadow-pulse var(--turn-duration) var(--turn-easing) forwards}.text-vanish{opacity:0;animation:fadeOutText .4s ease-out forwards}.text-appear{opacity:0;animation:fadeInText .8s ease-out .5s forwards}@keyframes fadeOutText{0%{opacity:1;filter:blur(0)}to{opacity:0;filter:blur(4px)}}@keyframes fadeInText{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes ken-burns{0%{transform:scale(1.05) translate(0)}to{transform:scale(1.15) translate(-1%,1%)}}.animate-ken-burns{animation:ken-burns 30s ease-out infinite alternate}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn 2s ease-in-out forwards}@keyframes gentle-glow{0%,to{box-shadow:0 0 10px #d4af3733,0 0 20px #d4af371a}50%{box-shadow:0 0 20px 5px #d4af374d,0 0 40px 10px #d4af3726}}.animate-gentle-glow{animation:gentle-glow 5s ease-in-out infinite}.text-subtle-glow{text-shadow:0 2px 5px rgba(0,0,0,.8),0 0 12px rgba(229,208,166,.3)}.elegant-frame{position:absolute;top:1rem;right:1rem;bottom:1rem;left:1rem;border-radius:2px;box-shadow:inset 0 0 0 1px #d4af3740,inset 0 0 20px 5px #d4af371a,inset 0 0 40px 15px #ffdc9614;overflow:hidden}@keyframes star-aura{0%{transform:translateY(0)}to{transform:translateY(-2000px)}}.celestial-bg:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(ellipse at 70% 30%,rgba(180,160,220,.15) 0%,transparent 50%),radial-gradient(ellipse at 30% 80%,rgba(100,120,200,.15) 0%,transparent 50%);opacity:.8;z-index:-1}.celestial-bg:after{content:"";position:absolute;top:-200px;right:-200px;bottom:-200px;left:-200px;background-image:url(https://assets.codepen.io/127738/transparent-stars.png);background-repeat:repeat;background-position:0% 0%;background-size:1000px 1000px;animation:star-aura 200s linear infinite;opacity:.2;z-index:-1}@keyframes cover-photo-reveal{0%{opacity:0;transform:scale(1.1);filter:blur(4px)}to{opacity:1;transform:scale(1);filter:blur(0px)}}.animate-cover-photo-reveal{animation:cover-photo-reveal 2s cubic-bezier(.25,1,.5,1) forwards}@keyframes cover-text-reveal{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.animate-cover-text-reveal{animation:cover-text-reveal 1.8s cubic-bezier(.25,1,.5,1) forwards}@keyframes dissolve-up{0%{opacity:1;transform:translateY(0);filter:blur(0px)}to{opacity:0;transform:translateY(-50px);filter:blur(10px)}}.animate-dissolve-up{animation:dissolve-up 2s cubic-bezier(.6,-.28,.735,.045) forwards}@keyframes button-exit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.animate-button-exit{animation:button-exit 1.5s ease-in forwards}@keyframes deepen-and-blur{0%{opacity:.5;filter:blur(0px)}to{opacity:.3;filter:blur(12px)}}.animate-deepen-and-blur{animation:deepen-and-blur 2s ease-out forwards}@keyframes celestial-focus-reveal{0%{opacity:0;filter:blur(8px);transform:translateY(10px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}.animate-celestial-focus{animation:celestial-focus-reveal 1.5s cubic-bezier(.25,1,.5,1) forwards}@keyframes cosmic-drift-far{0%{transform:translate(0)}to{transform:translate(-2000px)}}@keyframes cosmic-drift-near{0%{transform:translate(0)}to{transform:translate(-1000px)}}.celestial-dawn-sky{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 120% 70% at 50% 100%,rgba(255,204,160,.25) 0%,rgba(224,134,178,.2) 25%,rgba(110,89,170,.1) 50%,transparent 70%),#02040a;overflow:hidden}.celestial-dawn-stars-far{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(1px 1px at 20% 30%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 70% 60%,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 45% 85%,rgba(255,255,255,.5),transparent);background-size:300px 300px,400px 400px,250px 250px;animation:cosmic-drift-far 900s linear infinite;-webkit-mask-image:linear-gradient(to top,transparent 10%,black 40%);mask-image:linear-gradient(to top,transparent 10%,black 40%)}.celestial-dawn-stars-near{position:absolute;top:-200px;right:-200px;bottom:-200px;left:-200px;background-image:url(https://assets.codepen.io/127738/transparent-stars.png);background-repeat:repeat;background-position:0% 0%;background-size:800px 800px;animation:cosmic-drift-near 600s linear infinite;opacity:.7;-webkit-mask-image:linear-gradient(to top,transparent 5%,black 35%);mask-image:linear-gradient(to top,transparent 5%,black 35%)}.celestial-dawn-horizon{position:absolute;bottom:0;left:0;right:0;height:25vh;min-height:120px;max-height:300px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320'%3E%3Cpath fill='%2302040a' fill-opacity='1' d='M0,224L48,202.7C96,181,192,139,288,138.7C384,139,480,181,576,192C672,203,768,181,864,154.7C960,128,1056,96,1152,101.3C1248,107,1344,149,1392,170.7L1440,192L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z'%3E%3C/path%3E%3C/svg%3E");background-size:cover;background-repeat:no-repeat;background-position:bottom center;filter:blur(1px);transform:translateY(5%)}@keyframes float-star-1{0%{transform:translate(0)}50%{transform:translate(10px,-15px)}to{transform:translate(0)}}@keyframes float-star-2{0%{transform:translate(0)}50%{transform:translate(-12px,10px)}to{transform:translate(0)}}.starfield-container.has-focus .tribute-star:not(.focused){opacity:.2;filter:blur(1px)}.tribute-star{position:absolute;width:8px;height:8px;background-color:#ffffffb3;border-radius:50%;box-shadow:0 0 10px 2px #fff9;transition:transform .4s ease-out,background-color .4s ease-out,opacity .8s ease-out,filter .8s ease-out;cursor:pointer}.tribute-star.focused,.tribute-star:hover{transform:scale(2);background-color:#fff;opacity:1!important;filter:blur(0)!important}@keyframes pulse-invitation{0%,to{transform:scale(1.5);box-shadow:0 0 12px 3px #ffffffb3}50%{transform:scale(2.5);box-shadow:0 0 25px 8px #fff}}.tribute-star.pulse-invitation{animation:pulse-invitation 2s ease-in-out 2;z-index:21}@keyframes card-fade-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.tribute-card-contextual{position:absolute;width:280px;max-width:80vw;background-color:#0a0a0ab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(212,175,55,.2);border-radius:.75rem;padding:1rem;z-index:20;animation:card-fade-in .6s cubic-bezier(.2,1,.3,1) forwards}.tribute-card-close-btn{position:absolute;top:.5rem;right:.5rem;width:24px;height:24px;color:#ffffff80;transition:color .3s,transform .3s}.tribute-card-close-btn:hover{color:#fff;transform:scale(1.1)}@keyframes fly-to-position{0%{top:var(--start-top, 80%);left:var(--start-left, 50%);transform:translate(-50%,-50%) scale(1);opacity:1}20%{transform:translate(-50%,-50%) scale(1.1);opacity:1}90%{opacity:1}to{top:var(--target-top);left:var(--target-left);transform:translate(-50%,-50%) scale(.1);opacity:0}}.traveling-star{position:absolute;z-index:100;animation:fly-to-position 3s cubic-bezier(.5,0,.9,.6) forwards;pointer-events:none}.traveling-star-card{width:256px;padding:1rem;background-color:#ffdc9626;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.75rem;border:1px solid rgba(212,175,55,.3);box-shadow:0 0 30px 10px #d4af3733;transform-origin:center}.tooltip-premium{position:absolute;top:calc(100% + .5rem);left:50%;transform:translate(-50%) translateY(5px);padding:.375rem .625rem;background-color:#0a0a0ad9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;font-size:.75rem;border-radius:.375rem;white-space:nowrap;opacity:0;transition:opacity .3s ease-out,transform .3s ease-out;pointer-events:none;z-index:10;font-family:Cormorant Garamond,serif}.group:hover .tooltip-premium{opacity:1;transform:translate(-50%) translateY(0)}@keyframes float-particles{0%{background-position:0 0}to{background-position:500px 1000px}}.particle-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgba(255,255,255,.6) 1px,transparent 1.5px);background-size:5rem 5rem;opacity:0;animation:float-particles 60s linear infinite,fadeIn 5s ease-in-out forwards}@keyframes pulse-orb{0%,to{transform:scale(1);box-shadow:0 0 15px 4px #ffffff80}50%{transform:scale(1.2);box-shadow:0 0 25px 8px #ffffffb3}}.animate-pulse-orb{animation:pulse-orb 2.5s ease-in-out infinite}@keyframes newStarGlow{0%,to{transform:scale(1);box-shadow:0 0 10px #ffd70099}50%{transform:scale(1.4);box-shadow:0 0 20px #ffd700e6}}@keyframes celestialBreathing{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.05);opacity:1}}@keyframes gentleOrbit{0%{transform:translate(0)}25%{transform:translate(.5px,-.5px)}50%{transform:translateY(-1px)}75%{transform:translate(-.5px,-.5px)}to{transform:translate(0)}}@keyframes whisper-in{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur(0)}}.animate-whisper-in{animation:whisper-in .8s ease-out forwards}@keyframes celestial-whisper-reveal{0%{opacity:0;filter:blur(4px)}to{opacity:1;filter:blur(0)}}.animate-celestial-whisper{animation:celestial-whisper-reveal 1.2s cubic-bezier(.25,1,.5,1) forwards;opacity:0}@keyframes subtle-text-glow-loop{0%,to{text-shadow:0 0 8px rgba(255,255,255,.4)}50%{text-shadow:0 0 16px rgba(255,255,255,.7)}}.animate-subtle-text-glow{animation:subtle-text-glow-loop 5s ease-in-out infinite}.bg-noise{opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");pointer-events:none}
