@font-face{font-family:Be Vietnam Pro;src:url(assets/be-vietnam.ttf) format('truetype');font-display:swap;font-weight:100 900}
@font-face{font-family:Cormorant Garamond;src:url(assets/cormorant.ttf) format('truetype');font-display:swap;font-weight:300 700}
:root{--paper:#f4e4e6;--paper-light:#fff7f3;--pink:#e9bdc6;--rose:#cc7e94;--wine:#70283e;--ink:#542235;--muted:#7b4658;--dark:#481d2c;--ease:cubic-bezier(.22,1,.36,1);--margin:clamp(22px,5vw,88px);--display:'Cormorant Garamond',Georgia,serif;--body:'Be Vietnam Pro',sans-serif;--shadow:0 24px 55px -25px #54223550;scroll-behavior:smooth;scroll-padding-top:100px;color-scheme:light}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.65}body:has(dialog[open]){overflow:hidden}button,input,textarea{font:inherit;color:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button{border:0}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--wine);outline-offset:5px}::selection{background:var(--wine);color:var(--paper-light)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--rose);border-radius:8px}::-webkit-scrollbar-track{background:var(--paper)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--display);font-weight:500;line-height:1.02;letter-spacing:-.035em;text-wrap:balance}h2{font-size:clamp(40px,4.7vw,68px)}[hidden]{display:none!important}.skip-link{position:fixed;z-index:100;left:20px;top:10px;transform:translateY(-150%);background:var(--wine);color:white;padding:12px 24px}.skip-link:focus{transform:none}.site-header{height:102px;padding:0 var(--margin);display:flex;align-items:center;justify-content:space-between;position:absolute;width:100%;top:0;z-index:3;gap:20px}.wordmark{font-family:var(--display);font-size:32px;font-weight:600;display:flex;align-items:center;gap:12px;white-space:nowrap}.brand-flower{font-size:29px;font-family:Georgia}.site-header nav{display:flex;gap:40px;font-size:14px}.site-header nav a{position:relative}.site-header nav a:after{content:'';position:absolute;bottom:-6px;left:0;width:100%;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .2s var(--ease)}.site-header nav a:hover:after{transform:scaleX(1)}.icon-button{width:44px;height:44px;background:transparent;display:grid;place-items:center;border-radius:50%;transition:background .2s,transform .15s}.icon-button:hover{background:#70283e0c}.icon-button svg{width:25px;height:25px}.button{display:inline-flex;align-items:center;justify-content:center;gap:32px;min-height:56px;padding:16px 25px;font-weight:500;font-size:14px;border-radius:8px;transition:background .2s,transform .16s var(--ease);line-height:1.5}.button span{font-size:22px;line-height:1}.button:hover{transform:translateY(-2px)}button:active,.button:active{transform:scale(.975)}.primary{background:var(--wine);color:var(--paper-light)}.primary:hover{background:var(--dark)}.secondary{background:var(--paper);color:var(--ink)}.text-button{background:none;padding:9px 0;font-size:14px;text-decoration:underline;text-underline-offset:5px;text-decoration-color:transparent;transition:text-decoration-color .2s;min-height:44px}.text-button:hover{text-decoration-color:currentColor}.group-backdrop{position:fixed;inset:0;z-index:-1;background-size:cover;background-position:center var(--photo-y,50%);opacity:0;transition:opacity .5s;pointer-events:none}.has-background{background:transparent}.has-background .group-backdrop{opacity:1}.has-background .group-backdrop:after{content:'';position:absolute;inset:0;background:#f4e4e6bf}.has-background .hero-sticky{background:transparent}.has-background .letter-section{background:#fff7f3ed}.has-background .gift-section{background:#f4e4e6ed}
.hero-track{height:173svh;position:relative}.hero-sticky{position:sticky;top:0;min-height:760px;height:100svh;max-height:1150px;overflow:hidden;background:var(--paper);isolation:isolate}.hero-date{position:absolute;right:var(--margin);top:96px;font-family:var(--display);font-size:clamp(72px,11vw,180px);line-height:1;color:#a35a70;letter-spacing:-.04em;transform:translateY(calc(var(--scroll,0)*-55px));z-index:-1}.hero-date span{font-size:.5em}.hero-copy{position:absolute;left:var(--margin);top:29%;max-width:48%;transform:translate3d(0,calc(var(--scroll,0)*-80px),0);opacity:calc(1 - var(--scroll,0)*.85);z-index:2}.hero-copy h1{font-size:clamp(64px,7.1vw,102px);margin-bottom:32px;line-height:.98}.hero-copy>p{font-size:clamp(14px,1.1vw,17px);line-height:1.8;margin-bottom:35px;color:var(--muted)}.hero-copy .button{min-width:238px}.invitation-scene{position:absolute;top:18%;left:48%;width:48%;height:70%;perspective:1400px;transform:translate3d(calc(var(--scroll,0)*-150px),calc(var(--scroll,0)*-45px),0) rotate(calc(var(--scroll,0)*-8deg));transform-style:preserve-3d}.invitation-object{width:340px;height:385px;position:absolute;left:50%;top:49%;transform-style:preserve-3d;transform:translate(-50%,-50%) rotateX(calc(9deg + var(--scroll,0)*23deg)) rotateY(calc(-13deg + var(--scroll,0)*24deg)) rotateZ(9deg) scale(calc(1 + var(--scroll,0)*.13));filter:drop-shadow(20px 35px 25px #6b283d25)}.letter-paper{position:absolute;left:13px;top:-65px;width:315px;height:352px;background:var(--paper-light);padding:24px 25px;transform:translateZ(3px) translateY(calc(var(--scroll,0)*-75px));text-align:center;color:var(--wine)}.paper-flower{display:block;font-size:31px;line-height:1;margin-bottom:15px}.letter-paper p{font-family:var(--display);font-size:40px;line-height:.96;margin-bottom:19px}.letter-paper em{font-style:italic;font-size:38px}.paper-bottom{font-size:9px;letter-spacing:.04em}.envelope-back{position:absolute;left:0;bottom:0;width:100%;height:255px;background:#cf8b9f;transform:translateZ(0)}.envelope-front{position:absolute;bottom:0;width:100%;height:235px;background:#dda0b0;clip-path:polygon(0 100%,0 52%,50% 13%,100% 52%,100% 100%);transform:translateZ(8px)}.envelope-fold{position:absolute;bottom:0;width:100%;height:255px;transform:translateZ(6px)}.fold-left{background:#e7b3c0;clip-path:polygon(0 0,56% 53%,0 100%)}.fold-right{background:#d594a7;clip-path:polygon(100% 0,44% 53%,100% 100%)}.wax-seal{position:absolute;left:calc(50% - 31px);bottom:76px;width:63px;height:63px;border-radius:47% 53% 46% 54%;background:var(--wine);color:#f3c7d3;display:grid;place-items:center;transform:translateZ(15px) rotate(-8deg);box-shadow:2px 5px 8px #481d2c36}.wax-seal span{font-family:var(--display);font-size:19px;line-height:.9;text-align:center;font-style:italic}.orbit-stamp{position:absolute;font-size:14px;line-height:1.5;z-index:1}.stamp-top{left:7%;top:4%;font-family:var(--display);font-size:56px;text-align:center;transform:rotate(-12deg)}.stamp-top span{font-size:16px}.stamp-bottom{right:0;bottom:7%;transform:rotate(7deg);font-size:13px}.stamp-bottom em{font-family:var(--display);font-size:27px}.ribbon-loop{position:absolute;width:180px;height:48px;border:12px solid #8c344f;transform:rotate(-26deg);border-radius:50%;z-index:-1;opacity:.8}.ribbon-one{right:0;top:20%;transform:rotate(-40deg) rotateY(30deg)}.ribbon-two{left:0;bottom:6%;transform:rotate(30deg) rotateY(-25deg)}.hero-bottom{position:absolute;bottom:30px;left:var(--margin);right:var(--margin);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);gap:16px}.hero-bottom a{display:flex;align-items:center;gap:20px}.hero-bottom a span{font-size:23px}.letter-section{position:relative;background:var(--paper-light);padding:120px var(--margin);display:grid;grid-template-columns:.65fr 2.2fr 1fr;gap:50px;align-items:start;overflow:hidden}.letter-date{font-family:var(--display);font-size:50px;color:#a35a70;line-height:1.1;writing-mode:vertical-rl;transform:rotate(180deg)}.letter-body h2{font-size:clamp(38px,4.2vw,60px);max-width:650px;margin-bottom:32px}.letter-body p{max-width:550px;margin-bottom:24px;line-height:1.9;color:var(--muted)}.signature{display:block;margin-top:35px;font-family:var(--display);font-size:23px;font-style:italic;color:var(--wine)}.folded-note{background:var(--pink);padding:25px;transform:rotate(7deg);width:100%;max-width:230px;aspect-ratio:4/5;align-self:center}.folded-note>span{font-size:13px}.folded-note p{font-family:var(--display);font-size:38px;line-height:.95;margin:23px 0}.folded-note svg{width:52px;height:52px;display:block;margin-left:auto}
.gift-section{padding:100px var(--margin) 35px;position:relative;background:#edd5db;scroll-margin-top:0}.gift-intro{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-bottom:45px}.gift-intro h2{margin-bottom:22px}.gift-intro p{color:var(--muted);font-size:15px;line-height:1.8;margin-bottom:0}.inventory{display:flex;align-items:center;gap:18px}.inventory strong{font-family:var(--display);font-size:90px;font-weight:500;line-height:1;font-variant-numeric:tabular-nums}.inventory>span{font-size:12px;color:var(--muted);line-height:1.7}.game-toolbar{display:flex;justify-content:space-between;gap:15px;align-items:center;padding-bottom:26px}.mode-tabs{display:flex;background:#e3c6ce;padding:5px;border-radius:9px}.mode-tabs button{background:transparent;border-radius:6px;padding:12px 24px;font-size:13px;min-height:46px;transition:background .25s,color .25s}.mode-tabs button.active{background:var(--wine);color:var(--paper-light)}#historyCount{display:inline-flex;align-items:center;justify-content:center;background:#dfbdc8;min-width:24px;height:24px;border-radius:50%;font-size:12px;margin-left:5px}.player-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:10px;font-size:13px}.player-row input{background:#fff7f37a;border:none;border-radius:5px;padding:12px 16px;max-width:300px;min-width:230px}.player-row input::placeholder{color:var(--muted);opacity:1}.game-live{margin-left:auto;font-size:12px;color:var(--muted)}.gift-stage{perspective:1400px;padding:65px 20px 20px;overflow:hidden}.gift-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:35px 30px;max-width:1080px;margin:0 auto;transform-style:preserve-3d;transform:rotateX(8deg);padding-bottom:20px}.gift-box{position:relative;aspect-ratio:1.05;background:none;padding:0;min-width:0;perspective:800px;transition:opacity .3s;isolation:isolate}.gift-box:focus-visible{outline-offset:12px}.gift-object{display:block;position:absolute;inset:8% 10% 12%;transform-style:preserve-3d;transform:rotateY(-23deg) rotateX(-16deg) rotateZ(var(--tilt));transition:transform .6s var(--ease),filter .4s;filter:none}.gift-box:hover .gift-object,.gift-box:focus-visible .gift-object{transform:translateY(-15px) rotateY(-12deg) rotateX(-14deg) rotateZ(0);filter:none}.gift-face{display:block;position:absolute;inset:0;background:var(--box-color);border-radius:2px;transform:translateZ(20px)}.gift-face:before{content:'';position:absolute;top:0;bottom:0;left:44%;width:13%;background:var(--ribbon-color)}.gift-face:after{content:'';position:absolute;left:0;right:0;top:39%;height:13%;background:var(--ribbon-color)}.gift-side{position:absolute;right:-20px;top:0;width:40px;height:100%;background:var(--box-side);transform:rotateY(90deg);transform-origin:center}.gift-top{position:absolute;top:-20px;left:0;height:40px;width:100%;background:var(--box-top);transform:rotateX(90deg)}.gift-bow{position:absolute;width:68%;height:32%;left:16%;top:27%;transform:translateZ(24px);display:flex;justify-content:center}.gift-bow:before,.gift-bow:after{content:'';width:47%;height:70%;border:10px solid var(--ribbon-color);border-radius:60% 65% 15% 60%;transform:rotate(24deg)}.gift-bow:after{transform:scaleX(-1) rotate(24deg)}.gift-number{position:absolute;bottom:-14px;right:-10px;transform:translateZ(30px) rotate(-12deg);background:var(--paper-light);width:43px;height:51px;display:grid;place-items:center;font-family:var(--display);font-size:23px;box-shadow:2px 4px 8px #481d2c15}.gift-number:before{content:'';position:absolute;top:4px;width:3px;height:3px;border-radius:50%;background:var(--box-color)}.gift-box-label{display:block;position:absolute;bottom:-18px;width:100%;font-size:11px;color:var(--muted);opacity:0;transition:opacity .2s}.gift-box:hover .gift-box-label,.gift-box:focus-visible .gift-box-label{opacity:1}.gift-box.is-gone{pointer-events:none}.gift-box.is-gone .gift-object{opacity:0;transform:translateY(-25px) rotateY(35deg);transition:opacity .5s,transform .7s var(--ease)}.gone-note{position:absolute;inset:20% 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:12px}.gone-note svg{width:28px;height:28px}.stage-caption{text-align:center;font-family:var(--display);font-style:italic;font-size:22px;margin:48px 0 12px;color:var(--muted)}.game-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:11px;color:var(--muted);padding-top:30px}.game-footer .text-button{font-size:11px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#7b6450;vertical-align:middle;margin-right:5px}.wheel-panel{display:flex;align-items:center;justify-content:center;gap:8%;padding:50px 0 20px;min-height:580px}.wheel-wrap{position:relative;max-width:480px;width:48%;aspect-ratio:1;perspective:900px}.wheel{width:100%;height:100%;border-radius:50%;box-shadow:0 22px 38px -15px #481d2c35;overflow:hidden;transform:rotate(0deg);will-change:transform}.wheel svg{display:block;width:100%;height:100%}.wheel-pointer{position:absolute;left:calc(50% - 12px);top:-12px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:34px solid var(--wine);z-index:2;filter:drop-shadow(0 3px 2px #481d2c25)}.wheel-hub{position:absolute;left:37%;top:37%;width:26%;height:26%;border-radius:50%;background:var(--wine);color:var(--paper-light);display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--display);font-size:clamp(20px,3vw,38px);line-height:.8;box-shadow:0 8px 12px #481d2c23}.wheel-hub em{font-weight:400}.wheel-copy{max-width:330px}.wheel-copy h3{font-size:clamp(40px,4.5vw,60px);margin-bottom:28px}.wheel-copy>p{font-size:14px;color:var(--muted);max-width:31ch;line-height:1.85;margin-bottom:28px}.small-note{font-size:12px!important;line-height:1.8!important;color:var(--muted);margin-top:12px}#wheelNote{margin-top:20px}.resume-banner{background:var(--paper-light);display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;border-radius:10px;margin:24px 0}.resume-banner p{margin:0}.complete-state{text-align:center;padding:55px 0}.complete-state h3{font-size:clamp(46px,6vw,76px);margin:14px 0 25px}.complete-state p{color:var(--muted);font-size:15px;margin-bottom:30px}.complete-flower{font-size:70px;line-height:1;color:var(--wine)}
.site-footer{background:var(--wine);color:var(--paper);padding:70px var(--margin);display:flex;align-items:flex-end;justify-content:space-between;gap:35px}.site-footer>p{font-family:var(--display);font-size:clamp(40px,4.5vw,68px);line-height:.95;margin:0;letter-spacing:-.03em}.site-footer>div{display:flex;flex-direction:column;gap:12px;font-size:12px;padding-bottom:5px;color:#e7bbc8}.site-footer>a{width:48px;height:48px;background:#8b435a;display:grid;place-items:center;border-radius:50%;font-size:22px}
dialog{border:none;padding:0;color:var(--ink);background:var(--paper-light);max-width:calc(100vw - 36px);max-height:90svh;border-radius:14px;box-shadow:0 24px 90px #210b1b50;overscroll-behavior:contain}dialog::backdrop{background:#371622b3;backdrop-filter:blur(8px)}dialog[open]{animation:dialog-in .3s var(--ease)}@keyframes dialog-in{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}.dialog-close{background:#70283e0c;color:var(--ink);font-size:28px;line-height:1;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;transition:background .2s;z-index:5}.dialog-close:hover{background:#70283e1c}.draw-dialog{width:900px}.draw-shell{position:relative;min-height:450px}.draw-shell>.dialog-close{position:absolute;top:18px;right:18px}#riddleView{max-width:580px;margin:auto;text-align:center;padding:45px 30px 30px}.dialog-flower{font-size:42px;color:var(--rose);display:block;line-height:1;margin-bottom:20px}.recipient{font-size:13px;margin-bottom:15px;color:var(--muted)}#drawTitle{font-size:50px;margin-bottom:25px}.riddle-question{font-size:17px;line-height:1.7}.riddle-choices{display:flex;flex-direction:column;gap:10px;margin-top:25px}.riddle-choices button{background:var(--paper);border-radius:8px;padding:14px 18px;font-size:14px;min-height:50px;transition:background .2s}.riddle-choices button:hover{background:var(--pink)}.riddle-choices button.correct{background:var(--wine);color:var(--paper-light)}.riddle-feedback{font-size:13px;min-height:42px;margin:20px 0 5px;color:var(--muted)}.riddle-actions{display:flex;justify-content:space-between;gap:15px}.riddle-actions button{font-size:12px}.unwrapping-view{text-align:center;padding:100px 30px 60px;min-height:480px}.unwrapping-view h2{font-size:50px;margin-bottom:20px}.unwrapping-view p{color:var(--muted);font-size:14px}.unwrap-gift{position:relative;width:100px;height:100px;background:var(--pink);margin:0 auto 45px;transform:rotate(-8deg);animation:unwrap .8s var(--ease) infinite alternate;box-shadow:var(--shadow)}.unwrap-gift:before,.unwrap-gift:after{content:'';position:absolute;background:var(--wine)}.unwrap-gift:before{height:100%;width:15px;left:43px;top:0}.unwrap-gift:after{height:15px;width:100%;top:43px;left:0}.unwrap-gift span{position:absolute;width:60px;height:30px;top:-17px;left:20px;border:10px solid var(--wine);border-radius:50%}.reveal-layout{display:grid;grid-template-columns:1.05fr 1fr;min-height:530px}.reveal-photo{position:relative;background:var(--paper);display:flex;align-items:center;padding:20px;overflow:hidden;min-width:0}.reveal-photo img{width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;display:block;border-radius:4px;animation:photo-reveal .8s var(--ease)}.photo-mark{position:absolute;bottom:22px;left:22px;font-size:10px;color:var(--muted)}.reveal-copy{padding:80px 35px 45px;display:flex;flex-direction:column;justify-content:center}.reveal-copy h2{font-size:53px;margin-bottom:18px}.reveal-item{font-size:14px;color:var(--wine);font-weight:600;margin-bottom:25px}.reveal-copy>p:not(.recipient):not(.reveal-item){font-size:14px;color:var(--muted);line-height:1.9}.reveal-copy .button{margin-top:10px;gap:18px}.reveal-save{font-size:10px;color:var(--muted);text-align:center;margin-top:15px}.panel-dialog{width:620px;padding:35px}.panel-head{display:flex;justify-content:space-between;gap:20px;align-items:start}.panel-head h2{font-size:45px;margin-bottom:15px}.panel-note{font-size:13px;color:var(--muted);margin-bottom:30px}.history-list{display:flex;flex-direction:column;margin-bottom:28px}.history-row{display:grid;grid-template-columns:68px 1fr;align-items:center;gap:18px;padding:16px 0}.history-row+.history-row{border-top:1px solid #e9cfd5}.history-row img{width:68px;height:68px;object-fit:cover;border-radius:6px}.history-row strong{font-weight:500;font-size:15px;display:block}.history-row p{font-size:12px;color:var(--muted);margin:3px 0}.empty-note{padding:30px 0 40px;color:var(--muted);font-size:14px}.field{display:flex;flex-direction:column;gap:8px;font-size:13px;margin-bottom:23px}.field input[type=text],.field textarea{background:var(--paper);border:0;border-radius:6px;padding:13px;width:100%;resize:vertical;font-size:14px}.field input[type=file]{font-size:12px;padding:10px 0;max-width:100%}.field input::file-selector-button{background:var(--paper);border:0;border-radius:5px;padding:10px 15px;color:var(--wine);margin-right:12px;font:inherit;cursor:pointer}.field input[type=range]{accent-color:var(--wine);width:100%}.background-setting{margin:28px 0;background:#f5e9e8;padding:18px;border-radius:8px}.background-setting .field{margin-bottom:10px}.background-setting .text-button{font-size:12px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:24px 0;font-size:14px}.toggle-row small{font-size:11px;display:block;color:var(--muted);margin-top:4px}.toggle-row input{appearance:none;flex-shrink:0;width:42px;height:24px;border-radius:20px;background:#dcc4cd;position:relative;cursor:pointer;transition:background .2s}.toggle-row input:before{content:'';width:18px;height:18px;border-radius:50%;position:absolute;top:3px;left:3px;background:white;transition:transform .2s}.toggle-row input:checked{background:var(--wine)}.toggle-row input:checked:before{transform:translateX(18px)}.host-note{margin-top:32px;padding-top:20px;color:var(--muted);font-size:12px}.host-note strong{font-size:13px;font-weight:600}.host-note p{margin-top:10px;line-height:1.8}.reset-button{background:none;padding:15px 0;color:var(--wine);font-size:12px;text-decoration:underline;text-underline-offset:4px}.confirm-dialog{padding:38px;width:540px}.confirm-dialog h2{font-size:43px;margin-bottom:22px}.confirm-dialog p{font-size:14px;color:var(--muted);line-height:1.85}.confirm-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.confirm-actions .button{font-size:12px;flex:1}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:50;background:var(--wine);color:var(--paper-light);font-size:13px;padding:14px 25px;border-radius:8px;max-width:90vw;text-align:center;transition:opacity .2s,transform .25s var(--ease)}.toast.visible{opacity:1;transform:translate(-50%,0)}#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:30}.noscript-message{padding:30px;text-align:center;background:var(--wine);color:white}.reduced-motion .hero-track{height:100svh;min-height:760px}.reduced-motion .hero-sticky{position:relative}.reduced-motion .hero-copy,.reduced-motion .invitation-scene{transform:none;opacity:1}.reduced-motion .invitation-object{transform:translate(-50%,-50%) rotateZ(6deg)}.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation-duration:.001ms!important;transition-duration:.001ms!important}.reduced-motion{scroll-behavior:auto}.reduced-motion .gift-grid{transform:none}@keyframes unwrap{to{transform:rotate(8deg) translateY(-8px)}}@keyframes photo-reveal{from{opacity:.3;transform:scale(1.04)}to{opacity:1;transform:none}}
@media(min-width:1600px){.invitation-object{width:400px;height:440px}.letter-paper{width:370px;height:400px;left:15px;top:-80px;padding:32px}.letter-paper p{font-size:47px}.letter-paper em{font-size:45px}.envelope-back,.envelope-fold{height:295px}.envelope-front{height:270px}.wax-seal{bottom:90px}.hero-copy h1{font-size:102px}}
@media(max-width:1000px){.site-header nav{gap:24px}.invitation-object{width:280px;height:330px}.letter-paper{width:258px;height:300px;left:11px;padding:23px 15px;top:-55px}.letter-paper p{font-size:35px}.letter-paper em{font-size:32px}.paper-bottom{font-size:8px}.envelope-back,.envelope-fold{height:220px}.envelope-front{height:205px}.wax-seal{bottom:60px;width:55px;height:55px;left:calc(50% - 27px)}.stamp-bottom{right:-3%;bottom:4%}.stamp-top{top:-1%;left:5%;font-size:44px}.hero-copy h1{font-size:clamp(60px,8vw,82px)}.letter-section{grid-template-columns:.4fr 2fr 1fr;gap:30px;padding-top:85px;padding-bottom:85px}.folded-note{padding:20px}.folded-note p{font-size:31px}.gift-grid{gap:35px 20px}.gift-stage{padding-left:0;padding-right:0}.gift-intro{margin-bottom:35px}.game-live{width:100%;margin-left:0}.player-row{gap:12px}.gift-bow:before,.gift-bow:after{border-width:7px}.gift-number{width:34px;height:40px;font-size:21px}.wheel-panel{gap:6%}.wheel-copy{max-width:270px}.wheel-copy .button{gap:15px;font-size:12px}.reveal-copy{padding:65px 28px 35px}.reveal-copy h2{font-size:46px}}
@media(max-width:700px){:root{--margin:22px}.site-header{height:82px;gap:10px}.wordmark{font-size:27px;gap:8px}.brand-flower{font-size:23px}.site-header nav{gap:18px}.site-header nav a{font-size:11px}.site-header nav a:first-child{display:none}.site-header .icon-button{width:36px;height:40px}.hero-track{height:155svh}.hero-sticky{min-height:780px;height:100svh;max-height:none}.hero-date{top:90px;right:var(--margin);font-size:64px;color:#a35a70}.hero-copy{top:145px;max-width:calc(100% - 44px);right:var(--margin);transform:translateY(calc(var(--scroll,0)*-45px));opacity:calc(1 - var(--scroll,0)*.8)}.hero-copy h1{font-size:64px;margin-bottom:22px;line-height:.96;max-width:100%}.hero-copy>p{font-size:12px;line-height:1.8;margin-bottom:23px}.hero-copy .button{min-width:215px;min-height:49px;padding:13px 20px;font-size:12px;gap:25px}.invitation-scene{left:28%;width:70%;top:50%;height:40%;transform:translate3d(calc(var(--scroll,0)*-35px),calc(var(--scroll,0)*-100px),0) rotate(calc(var(--scroll,0)*-7deg));pointer-events:none}.invitation-object{width:210px;height:235px;top:55%;left:52%}.letter-paper{width:194px;height:220px;left:8px;top:-45px;padding:14px 8px}.letter-paper p{font-size:26px;margin-bottom:9px}.letter-paper em{font-size:25px}.paper-flower{font-size:23px;margin-bottom:12px}.paper-bottom{font-size:6px}.envelope-back,.envelope-fold{height:155px}.envelope-front{height:150px}.wax-seal{width:43px;height:43px;bottom:43px;left:calc(50% - 21px)}.wax-seal span{font-size:15px}.stamp-top{left:-8%;top:14%;font-size:32px}.stamp-top span{font-size:11px}.stamp-bottom{right:1%;bottom:-5%;font-size:9px}.stamp-bottom em{font-size:20px}.ribbon-loop{width:105px;height:32px;border-width:8px}.ribbon-one{right:-7%;top:12%}.ribbon-two{left:-22%;bottom:5%}.hero-bottom{bottom:18px;font-size:10px;align-items:flex-end}.hero-bottom>span{max-width:145px}.hero-bottom a{gap:12px;font-size:10px;max-width:155px}.hero-bottom a span{font-size:20px}.letter-section{padding:70px var(--margin);grid-template-columns:1fr;gap:25px}.letter-date{writing-mode:initial;transform:none;font-size:32px}.letter-body h2{font-size:44px;max-width:100%;margin-bottom:26px}.letter-body p{font-size:14px;line-height:1.9}.signature{font-size:22px;margin-top:28px}.folded-note{width:160px;justify-self:end;aspect-ratio:1.1;transform:rotate(5deg);margin:5px 6px 0 0;padding:15px}.folded-note>span{font-size:10px}.folded-note p{font-size:29px;margin:13px 0 0}.folded-note svg{width:37px;height:37px;margin-top:-30px}.gift-section{padding-top:65px}.gift-intro{gap:15px;align-items:flex-start;margin-bottom:28px}.gift-intro h2{font-size:42px;max-width:220px;margin-bottom:19px}.gift-intro p{font-size:12px;max-width:260px}.gift-intro p br{display:none}.inventory{flex-direction:column;gap:1px;align-items:center;min-width:68px;padding-top:3px}.inventory strong{font-size:65px}.inventory>span{font-size:9px;text-align:center;line-height:1.6}.game-toolbar{flex-wrap:wrap;gap:12px;padding-bottom:20px}.mode-tabs{width:100%;padding:4px}.mode-tabs button{flex:1;padding:12px 8px;font-size:11px;min-height:44px}.game-toolbar>.text-button{margin-left:auto;font-size:11px}.player-row{align-items:start;gap:9px;margin-bottom:4px}.player-row label{width:100%;font-size:11px}.player-row input{width:100%;max-width:none;font-size:12px;min-height:46px}.game-live{font-size:10px;line-height:1.7}.gift-stage{padding-top:38px;overflow:visible}.gift-grid{grid-template-columns:repeat(3,1fr);gap:30px 16px;transform:rotateX(5deg)}.gift-box{aspect-ratio:1;min-height:82px}.gift-box:last-child{grid-column:2}.gift-object{inset:5% 8% 12%}.gift-face{transform:translateZ(12px)}.gift-side{right:-12px;width:24px}.gift-top{top:-12px;height:24px}.gift-bow{transform:translateZ(15px)}.gift-bow:before,.gift-bow:after{border-width:6px}.gift-number{width:27px;height:34px;font-size:18px;right:-5px;bottom:-12px;transform:translateZ(18px) rotate(-12deg)}.gift-box-label{display:none}.gone-note{font-size:9px;gap:3px;text-align:center}.gone-note svg{width:22px;height:22px}.stage-caption{font-size:19px;max-width:260px;margin:35px auto 0;line-height:1.35}.game-footer{font-size:9px;gap:10px;padding-top:25px}.game-footer .text-button{font-size:9px}.wheel-panel{flex-direction:column;padding:35px 0 10px;gap:35px;min-height:0}.wheel-wrap{width:90%;max-width:340px}.wheel-hub{font-size:31px}.wheel-copy{max-width:100%;text-align:center}.wheel-copy h3{font-size:44px;margin-bottom:20px}.wheel-copy h3 br{display:none}.wheel-copy>p{font-size:12px;max-width:32ch;margin-left:auto;margin-right:auto;margin-bottom:20px}.wheel-copy .button{font-size:13px;gap:24px}.wheel-copy #wheelNote{font-size:10px!important}.resume-banner{padding:18px;flex-direction:column;align-items:flex-start;font-size:13px}.resume-banner .button{font-size:12px;min-height:44px}.complete-state{padding:45px 0}.complete-state h3{font-size:50px}.complete-state p{font-size:12px}.site-footer{padding:50px var(--margin);flex-wrap:wrap;align-items:flex-start;gap:30px}.site-footer>p{font-size:44px;max-width:75%}.site-footer>div{order:3;width:100%;font-size:10px;gap:8px}.site-footer>a{width:40px;height:40px;align-self:center}.draw-dialog{max-width:calc(100vw - 24px);max-height:94svh}.draw-shell{min-height:400px}.draw-shell>.dialog-close{top:12px;right:12px;width:35px;height:35px;font-size:25px}#riddleView{padding:40px 22px 22px}.dialog-flower{font-size:32px}.recipient{font-size:11px}#drawTitle{font-size:40px;margin-bottom:22px}.riddle-question{font-size:14px}.riddle-choices button{font-size:12px;padding:13px;min-height:48px}.riddle-feedback{font-size:11px;min-height:40px}.riddle-actions button{font-size:11px}.unwrapping-view{padding:95px 22px 50px;min-height:470px}.unwrapping-view h2{font-size:43px}.reveal-layout{grid-template-columns:1fr;min-height:0}.reveal-photo{padding:15px 15px 28px;min-height:210px}.reveal-photo img{max-height:32svh;object-fit:contain}.photo-mark{bottom:6px;left:15px;font-size:9px}.reveal-copy{padding:25px 25px 30px}.reveal-copy h2{font-size:40px;margin-bottom:14px}.reveal-item{font-size:12px;margin-bottom:15px}.reveal-copy>p:not(.recipient):not(.reveal-item){font-size:12px}.reveal-copy .button{min-height:49px;font-size:12px}.reveal-save{font-size:9px}.panel-dialog{padding:25px 22px;max-width:calc(100vw - 24px)}.panel-head h2{font-size:37px;max-width:250px}.panel-head .dialog-close{width:34px;height:34px;font-size:25px}.panel-note{font-size:12px}.history-row{gap:12px}.history-row strong{font-size:13px}.history-row p{font-size:11px}.history-list+.button{font-size:12px;gap:15px}.toggle-row{font-size:12px}.toggle-row small{font-size:10px}.field{font-size:12px}.confirm-dialog{padding:30px 25px}.confirm-dialog h2{font-size:40px}.confirm-dialog p{font-size:13px}.confirm-actions{flex-direction:column}.toast{font-size:12px;width:max-content;max-width:90vw}.reduced-motion .hero-track{height:100svh;min-height:780px}}
/* Event controls stay legible from a shared display, and the paper objects keep real depth. */
.gift-face{box-shadow:5px 16px 18px -9px #70283e38}
.gift-grid{transform:rotateX(calc(2deg + var(--stage-x,0deg))) rotateY(var(--stage-y,0deg));transition:transform .55s var(--ease)}
.hero-sticky{perspective:1800px}
.invitation-scene{transform:translate3d(calc(var(--scroll,0)*-70px),calc(var(--scroll,0)*-45px),calc(var(--scroll,0)*-90px)) rotateY(calc(var(--scroll,0)*-14deg)) rotate(calc(var(--scroll,0)*-8deg))}
.paper-bottom{font-size:13px}.letter-paper p{font-size:36px}.folded-note p{font-size:32px}
.draw-shell>.dialog-close{background:var(--paper-light);box-shadow:0 4px 12px #54223518}
.hero-bottom,.inventory>span,.game-footer,.game-footer .text-button,.game-live,.gift-box-label,.photo-mark,.reveal-save,.site-footer>div,.small-note,.toggle-row small{font-size:13px!important}
.hero-copy>p,.gift-intro p,.letter-body p,.wheel-copy>p,.reveal-copy>p:not(.recipient):not(.reveal-item){font-size:16px}
.player-row,.player-row input,.mode-tabs button,.panel-note,.riddle-actions button,.riddle-feedback{font-size:14px}
@media(max-width:1000px){.hero-copy>p{max-width:32ch}.hero-copy>p br{display:none}.letter-paper p{font-size:32px}.paper-bottom{font-size:12px}.stamp-bottom{right:2%}}
@media(max-width:700px){
  .hero-sticky{min-height:850px}.hero-track{height:150svh;min-height:1150px}.hero-copy{top:155px}.hero-date{top:94px;font-size:59px}
  .hero-copy>p{font-size:14px;max-width:33ch}.hero-copy>p br{display:none}.hero-copy h1{font-size:61px}
  .invitation-scene{top:55%;left:24%;width:72%;height:35%;transform:translate3d(calc(var(--scroll,0)*-20px),calc(var(--scroll,0)*-50px),0) rotateY(calc(var(--scroll,0)*-15deg))}
  .letter-paper p{font-size:29px;line-height:1.02}.paper-bottom{font-size:10px}.stamp-top{left:-8%;top:7%}.stamp-bottom{display:none}.ribbon-one{right:0;top:8%}.ribbon-two{left:-15%;bottom:5%}
  .hero-bottom{font-size:12px!important;align-items:flex-start;bottom:18px}.hero-bottom>span{max-width:155px}.hero-bottom a{font-size:12px;max-width:145px;gap:8px}
  .site-header nav a{font-size:13px}.game-live,.game-toolbar>.text-button,.player-row,.player-row label,.player-row input,.mode-tabs button{font-size:13px}.gift-intro p{font-size:14px}.inventory>span{font-size:11px!important}.game-footer,.game-footer .text-button{font-size:11px!important}
  .game-footer{align-items:start}.game-footer>span{max-width:58%}.game-footer .text-button{padding-top:0;min-width:120px}.stage-caption{font-size:20px}
  .letter-body p{font-size:16px}.folded-note{width:175px}.folded-note p{font-size:26px;line-height:1.08}.folded-note svg{margin-top:7px;width:30px;height:30px}
  .wheel-copy>p{font-size:15px}.wheel-copy #wheelNote{font-size:13px!important}.riddle-question{font-size:16px}.riddle-choices button{font-size:14px}.riddle-feedback,.riddle-actions button,.recipient{font-size:13px}
  .reveal-copy>p:not(.recipient):not(.reveal-item){font-size:14px}.reveal-item{font-size:14px}.reveal-save,.photo-mark{font-size:11px!important}.reveal-copy{padding-top:20px}.reveal-copy h2{font-size:39px}
  .complete-state p{font-size:14px}.site-footer>p{font-size:42px;max-width:calc(100% - 65px)}.site-footer>div{font-size:12px!important}.panel-note,.toggle-row,.field,.history-row p,.confirm-dialog p{font-size:13px}.toggle-row small{font-size:12px!important}
  .reduced-motion .hero-track{min-height:850px}.reduced-motion .hero-sticky{min-height:850px}
}
@media(max-width:700px){.stamp-top span{font-size:13px}.game-footer,.game-footer .text-button{font-size:12px!important}.reveal-save,.photo-mark{font-size:12px!important}.gift-box-label,.gone-note{font-size:12px}.reveal-photo{padding-bottom:34px}.photo-mark{bottom:9px}.inventory>span{font-size:12px!important}}
@media(max-width:360px){.hero-copy h1{font-size:55px}.hero-copy{top:155px}.gift-intro h2{font-size:38px}.gift-bow:before,.gift-bow:after{border-width:5px}.hero-bottom{font-size:11px!important}.hero-bottom a{font-size:11px}}
.ui-icon{width:21px;height:21px;display:inline-block;flex-shrink:0;vertical-align:middle}.dialog-close .ui-icon{width:18px;height:18px}.hero-bottom .ui-icon{width:18px;height:18px}.text-button .ui-icon{width:15px;height:15px;margin-left:4px}.recipient{margin-top:2px}.reveal-copy .recipient{line-height:1.7}#drawTitle{margin-bottom:17px}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}.hero-track{height:100svh;min-height:780px}.hero-sticky{position:relative}.hero-copy,.invitation-scene{transform:none!important;opacity:1!important}.invitation-object{transform:translate(-50%,-50%) rotateZ(6deg)!important}.gift-grid{transform:none}}



