@import "https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600&family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400&family=Outfit:wght@400;500;600&display=swap";:root{color:#5c3d45;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;background:#b6daf8;font-family:Outfit,system-ui,sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{overscroll-behavior:none;width:100%;height:100%;margin:0;overflow:hidden}body{min-height:100dvh;min-height:-webkit-fill-available;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);background:#b6daf8}button{font:inherit;cursor:pointer}.greeting-stage{z-index:1;width:100%;height:100%;min-height:100dvh;padding:calc(32px + env(safe-area-inset-top,0px)) 28px calc(40px + env(safe-area-inset-bottom,0px));touch-action:none;-webkit-font-smoothing:antialiased;place-items:center;display:grid;position:relative;overflow:hidden}.greeting-hint{left:50%;bottom:calc(34px + env(safe-area-inset-bottom,0px));letter-spacing:.12em;color:#32507373;opacity:0;pointer-events:none;margin:0;font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(14px,3.6vw,17px);font-weight:400;transition:opacity .45s;position:absolute;transform:translate(-50%)}.greeting-hint.is-visible{opacity:1}.origami{--pull:0;aspect-ratio:1;transform-origin:50%;will-change:transform, opacity;width:min(82vw,360px);position:relative}.origami.is-idle{animation:6s ease-in-out infinite float-card}.origami.is-dragging,.origami.is-leaving{animation:none}.origami.is-leaving{pointer-events:none}@keyframes float-card{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.origami-svg{width:100%;height:100%;display:block;overflow:visible}.flap-layer{transform-box:view-box;transform-origin:200px 200px;will-change:transform, opacity}.flap-top{transform-origin:200px 48px;transform:translateY(calc(var(--pull) * -56px)) scale(calc(1 - var(--pull) * .04));opacity:calc(1 - var(--pull) * .35)}.flap-bottom{transform-origin:200px 352px;transform:translateY(calc(var(--pull) * 56px)) scale(calc(1 - var(--pull) * .04));opacity:calc(1 - var(--pull) * .35)}.flap-left{transform-origin:48px 200px;transform:translateX(calc(var(--pull) * -56px)) scale(calc(1 - var(--pull) * .04));opacity:calc(1 - var(--pull) * .3)}.flap-right{transform-origin:352px 200px;transform:translateX(calc(var(--pull) * 56px)) scale(calc(1 - var(--pull) * .04));opacity:calc(1 - var(--pull) * .3)}.pull-tab{z-index:5;aspect-ratio:.72;color:#e04565;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:linear-gradient(#fffffff2 0%,#ffecf2fa 100%);border:0;border-radius:999px;align-content:center;justify-items:center;gap:4px;width:min(11.5%,42px);padding:10px 0 9px;transition:box-shadow .25s,transform .15s;display:grid;position:absolute;top:44%;left:50%;transform:translate(-50%);box-shadow:inset 0 2px #ffffffe6,inset 0 -1px #dc78961f,0 6px 16px #be5a782e,0 1px 2px #be5a781a}.pull-tab:before{content:"";border-radius:inherit;pointer-events:none;border:1px solid #ffffffbf;position:absolute;inset:1px}.pull-tab:after{content:"";position:absolute;inset:-18px -14px}.pull-tab.is-dragging{cursor:grabbing;box-shadow:inset 0 2px #fffffff2,0 10px 22px #be5a783d}.pull-word{letter-spacing:.18em;color:#2f9a58;font-family:Outfit,Avenir Next,system-ui,sans-serif;font-size:clamp(8px,2vw,9.5px);font-weight:600;line-height:1;position:relative}.pull-arrow{opacity:.9;width:11px;height:auto;animation:1.8s ease-in-out infinite arrow-nudge;display:block;position:relative}.pull-tab.is-dragging .pull-arrow{animation:none}@keyframes arrow-nudge{0%,to{opacity:.75;transform:translateY(0)}50%{opacity:1;transform:translateY(2px)}}.letter-stage{pointer-events:none;opacity:0;perspective:1200px;place-items:center;display:grid;position:absolute;inset:0}.letter-stage.is-active{pointer-events:auto;opacity:1}.letter{width:min(84vw,300px);transform-style:preserve-3d;filter:drop-shadow(0 14px 28px #aa5a7829);flex-direction:column;display:flex}.letter-panel{backface-visibility:hidden;width:100%;transform-style:preserve-3d;background:linear-gradient(165deg,#ffffff8c,#0000 42%),linear-gradient(#fff8fa 0%,#ffe6ee 100%);place-items:center;display:grid;position:relative;box-shadow:inset 0 1px #ffffffe6}.letter-panel-top{transform-origin:bottom;z-index:3;border-bottom:1px solid #d48ca02e;border-radius:20px 20px 0 0;height:88px}.letter-panel-middle{z-index:1;background:linear-gradient(165deg,#ffffffa6,#0000 40%),linear-gradient(#fff9fb 0%,#ffe8ef 100%);min-height:220px;padding:22px 20px 18px}.letter-panel-bottom{transform-origin:top;z-index:2;border-top:1px solid #d48ca02e;border-radius:0 0 20px 20px;height:88px}.panel-placeholder{color:#c45a78;letter-spacing:.02em;opacity:.85;margin:0;font-family:Caveat,Segoe Script,cursive;font-size:clamp(22px,5.5vw,28px)}.letter-message{text-align:center;color:#7a4558;width:100%;font-family:Caveat,Segoe Script,cursive}.letter-line{letter-spacing:.01em;opacity:0;margin:0;font-size:clamp(22px,5.8vw,28px);line-height:1.22;transition:opacity .65s,transform .65s;transform:translateY(5px)}.letter-line.is-visible{opacity:1;transform:translateY(0)}.letter-line.is-spacer{height:.32em}.letter-heart{opacity:0;width:22px;height:20px;margin:12px auto 0;transition:opacity .6s,transform .6s cubic-bezier(.22,1,.36,1);position:relative;transform:scale(.8)translateY(4px)}.letter-heart.is-visible{opacity:1;transform:scale(1)translateY(0)}.letter-heart-shape{background:radial-gradient(circle at 32% 28%,#ff9aa6,#d64555 58%,#b83242);position:absolute;inset:0;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 28'%3E%3Cpath fill='black' d='M16 26C7 19.5 2 14.8 2 8.8 2 4.7 5.2 2 8.8 2c2.3 0 4.5 1.2 7.2 3.8C18.7 3.2 20.9 2 23.2 2 26.8 2 30 4.7 30 8.8 30 14.8 25 19.5 16 26z'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 28'%3E%3Cpath fill='black' d='M16 26C7 19.5 2 14.8 2 8.8 2 4.7 5.2 2 8.8 2c2.3 0 4.5 1.2 7.2 3.8C18.7 3.2 20.9 2 23.2 2 26.8 2 30 4.7 30 8.8 30 14.8 25 19.5 16 26z'/%3E%3C/svg%3E") 50%/contain no-repeat}@media (prefers-reduced-motion:reduce){.origami.is-idle,.pull-arrow{animation:none}.flap-top,.flap-bottom,.flap-left,.flap-right{opacity:1;transform:none}}.replay-button{left:50%;bottom:calc(28px + env(safe-area-inset-bottom,0px));z-index:30;color:#6a4a52;letter-spacing:.05em;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;pointer-events:none;background:#ffffffb8;border:0;border-radius:999px;padding:11px 20px;font-family:Cormorant Garamond,Georgia,serif;font-size:15px;transition:opacity .45s,transform .45s;position:fixed;transform:translate(-50%,8px);box-shadow:0 8px 22px #46648c1f}.replay-button.is-visible{opacity:1;pointer-events:auto;transform:translate(-50%)}.replay-button:active{transform:translate(-50%,1px)scale(.98)}.ambient-background{z-index:-1;background:radial-gradient(90% 55% at 50% -10%,#ffffffa6,#0000 50%),radial-gradient(60% 40% at 80% 70%,#ffffff2e,#0000 50%),linear-gradient(#87bfe9 0%,#b7dbf5 42%,#e8f3fb 100%);position:fixed;inset:0}.background-particles{z-index:0;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.loading-screen{z-index:50;background:linear-gradient(#8ec4ef 0%,#d7ebfb 100%);place-content:center;gap:6px;transition:opacity .6s,visibility .6s;display:grid;position:fixed;inset:0}.loading-screen.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.loading-orb{background:radial-gradient(circle at 35% 30%,#fff,#f0c8ce 55%,#d97886);border-radius:50%;width:36px;height:36px;margin:0 auto 12px;animation:1.8s ease-in-out infinite loading-pulse;box-shadow:0 10px 24px #466e962e}.loading-title{text-align:center;color:#3d5d7a;margin:0;font-family:Cormorant Garamond,Georgia,serif;font-size:26px;font-weight:400}.loading-sub{text-align:center;letter-spacing:.14em;text-transform:uppercase;color:#3d5d7a8c;margin:0;font-family:Outfit,system-ui,sans-serif;font-size:11px}@keyframes loading-pulse{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.loading-orb{animation:none}}.app-shell{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;min-height:100dvh;position:relative;overflow:hidden}.experience{z-index:1;width:100%;height:100%;min-height:100dvh;position:relative}
