/* Paper, silk, wax, and light connect the four painted rooms. */
.gift-sealed .story-next,.gift-sealed .motion-toggle,.gift-sealed .chapter-nav{visibility:hidden}
.gift-cover{position:fixed;inset:0;z-index:20;display:grid;place-items:center;overflow:auto;background:linear-gradient(#f4dfc758,#e9c8b447),url('assets/backgrounds/rose-salon-oil.webp') center/cover;color:#704c40}
.gift-cover-light{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse,#fff5e2b3,transparent 70%)}
.gift-cover-content{position:relative;width:min(82vw,480px);text-align:center;padding:70px 0}
.gift-cover-kicker{font:10px Georgia,serif;letter-spacing:3px;color:#8a7047;margin-bottom:60px}
.gift-envelope{position:relative;width:100%;aspect-ratio:1.5;perspective:900px;filter:drop-shadow(0 15px 20px #6e483d2b)}
.gift-envelope-back{position:absolute;inset:0;border:1px solid #b99b6c;border-radius:5px;background:linear-gradient(140deg,#e8d3af,#fff3d9)}
.gift-envelope-letter{position:absolute;inset:10% 7%;display:flex;flex-direction:column;justify-content:center;gap:12px;background:repeating-linear-gradient(4deg,#9b793207 0 1px,transparent 1px 5px),#fff7e5;border:1px solid #cbb58f;color:#765443;opacity:0}
.gift-envelope-letter span{font:27px 'SimSun',serif;letter-spacing:5px}.gift-envelope-letter i{font:italic 15px Georgia,serif;letter-spacing:2px}
.gift-envelope-front{position:absolute;inset:0;z-index:3;background:linear-gradient(32deg,#eddbbc 49.5%,transparent 50%) left/50.1% 100% no-repeat,linear-gradient(-32deg,#e5ccaa 49.5%,transparent 50%) right/50.1% 100% no-repeat;border-bottom:1px solid #b59a76;border-radius:5px}
.gift-envelope-flap{position:absolute;inset:0 0 42%;z-index:4;clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(#fff4dc,#dbc09b);transform-origin:50% 0}
.gift-envelope-flower{position:absolute;left:-10%;bottom:-20%;width:44%;height:65%;object-fit:contain;z-index:5;pointer-events:none}
.unwrap-button{position:absolute;left:50%;top:43%;translate:-50% -50%;z-index:6;width:108px;height:86px;background:radial-gradient(ellipse,#ddb4a681,transparent 70%);border:0;color:#a46c73;cursor:pointer;filter:drop-shadow(1px 3px 2px #74493435)}
.unwrap-button svg{width:100%;height:100%;fill:#dfb2b7;stroke:#b9838b;animation:bow-invitation 3s ease-in-out infinite}
.unwrap-button:focus{outline:none}
.gift-cover-title{font:23px 'SimSun',serif;margin:60px 0 14px;letter-spacing:3px}.gift-cover-hint{font-size:12px;color:#8c725c;letter-spacing:2px}
@keyframes bow-invitation{50%{scale:1.06;filter:brightness(1.08)}}
.is-opening .unwrap-button{animation:ribbon-release .55s ease forwards}.is-opening .gift-envelope-flap{animation:gift-flap-open .8s .2s ease forwards}.is-opening .gift-envelope-letter{animation:gift-letter-rise .85s .4s ease forwards}.gift-cover.is-opening{animation:gift-cover-away 3s ease forwards}
@keyframes ribbon-release{to{opacity:0;scale:1.4;translate:-50% -70%}}
@keyframes gift-flap-open{to{transform:rotateX(175deg);z-index:0}}
@keyframes gift-letter-rise{from{opacity:0}to{opacity:1;translate:0 -35%;rotate:-2deg}}
@keyframes gift-cover-away{0%,91.666%{opacity:1}100%{opacity:0}}
.chapter-nav{position:fixed;top:39px;left:50%;translate:-50% 0;z-index:7;display:flex;gap:3px;padding:0 5px;border-radius:28px;background:#fff4df90;backdrop-filter:blur(8px);box-shadow:0 2px 10px #7859370a}
.chapter-nav button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;gap:2px;border:0;background:transparent;color:#937b56;font:italic 9px Georgia,serif;border-radius:50%;cursor:pointer}
.chapter-nav svg{width:23px;height:23px}.chapter-nav button[aria-current=step]{background:#b3946224;color:#704931;box-shadow:inset 0 0 0 1px #b3946240}.chapter-nav button:focus-visible{outline:2px solid #8a6b45}.chapter-nav button:disabled{cursor:default}
.story-mode .gift-next{display:flex;flex-direction:row;align-items:center;gap:9px;min-height:57px;padding:7px 16px;border:1px solid var(--theme-metal);background:linear-gradient(110deg,#fffaed,#f1dfbf);opacity:1;animation:none;letter-spacing:.5px}
.gift-next small{font:9px Georgia,serif;letter-spacing:.6px;flex-shrink:0}.gift-next .journey-token{display:grid;place-items:center;flex-shrink:0;width:37px;height:37px;color:#9e794f;filter:drop-shadow(1px 2px 1px #78603920)}
.gift-next .journey-token svg{width:37px;height:37px;animation:none;rotate:0}.token-seal svg{fill:#bf926c33}.token-petal svg{fill:#e7b5a56b}.journey-action{font-size:12px;line-height:1.5}.gift-next:disabled{cursor:wait}
.gift-next .token-seal{border-radius:50%;background:radial-gradient(circle at 35% 25%,#e0bb9559,#a6744c26);box-shadow:inset 0 0 0 1px #ae84564d}
.gift-next .token-seal svg{fill:#bd8e665c;stroke:#8a633f}
.gift-next .token-clock{border-radius:50%;background:radial-gradient(circle at 30% 25%,#fffbedb3,#cbb57a30)}
.gift-next .token-clock .token-hand{transform-origin:30px 30px;animation:token-clock-turn 12s linear infinite}
.gift-next .token-petal{animation:petal-invitation 4s ease-in-out infinite;transform-origin:50% 80%}
@keyframes petal-invitation{0%,100%{rotate:-7deg;translate:0 -1px}50%{rotate:8deg;translate:0 2px}}
@keyframes token-clock-turn{to{rotate:360deg}}
.gift-transition{position:fixed;inset:0;z-index:12;pointer-events:none;visibility:hidden;overflow:hidden}
.gift-transition.is-running{visibility:visible}.gift-transition-glow{position:absolute;inset:0;background:radial-gradient(ellipse,#fff5dbed,#efd5b299 50%,transparent 90%);animation:journey-wash 1.45s ease both}
.gift-transition-object{position:absolute;left:50%;top:47%;width:180px;height:180px;translate:-50% -50%;color:#ac8951;filter:drop-shadow(0 8px 12px #71533226);animation:journey-object 1.45s ease both}
.gift-transition-object svg{width:100%;height:100%;fill:#f3dec14d}
.journey-seal .gift-transition-glow{background:radial-gradient(ellipse,#fff0e1f0,#e4bdb299 50%,transparent 90%)}
.journey-clock .gift-transition-glow{background:radial-gradient(ellipse,#fff9e4f0,#d7ddba99 50%,transparent 90%)}
.journey-petal .gift-transition-glow{background:radial-gradient(ellipse,#fff3d7f0,#e8c49499 50%,transparent 90%)}
.journey-clock .gift-transition-object svg{animation:clock-through 1.45s cubic-bezier(.3,.1,.2,1) both}
.journey-petal .gift-transition-object svg{fill:#e4b5a68c;animation:petal-through 1.45s ease both}
.journey-seal .gift-transition-object svg{fill:#b88e68b3;animation:seal-through 1.45s ease both}
.gift-transition i{position:absolute;left:50%;top:47%;width:4px;height:7px;border-radius:70% 20%;background:#d3ab67;--angle:calc(var(--grain)*40deg);transform:rotate(var(--angle)) translateY(-45px);animation:journey-grain 1.45s ease both}
@keyframes journey-wash{0%,100%{opacity:0}30%,55%{opacity:1}}
@keyframes journey-object{0%{opacity:0;scale:.5}25%{opacity:1;scale:1}60%{opacity:.8}100%{opacity:0;scale:1.6}}
@keyframes clock-through{to{rotate:320deg}}
@keyframes petal-through{from{rotate:-30deg;translate:0 -35px}to{rotate:45deg;translate:15px 75px}}
@keyframes seal-through{40%{scale:1.08}100%{scale:1.35;rotate:-12deg}}
@keyframes journey-grain{0%{opacity:0}30%{opacity:.8}100%{opacity:0;transform:rotate(var(--angle)) translateY(-190px)}}
.decor-paused .unwrap-button svg,.decor-paused .token-hand,.decor-paused .token-petal{animation-play-state:paused!important}
@media(max-width:900px){.story-mode .gift-next{left:15px;right:105px;min-height:57px;padding:6px 8px;gap:5px}.gift-next .journey-token,.gift-next .journey-token svg{width:30px;height:30px}.journey-action{font-size:10px}.gift-next small{font-size:8px}.chapter-nav{top:38px}.story-mode .panel-scroll{height:calc(100% - 89px - env(safe-area-inset-bottom,0px))}.gift-cover-kicker{margin-bottom:48px}.gift-cover-title{font-size:20px}}
@media(max-width:359px){.gift-next small{display:none}.chapter-nav{gap:0}.gift-envelope{aspect-ratio:1.35}}
@media(max-height:600px){.gift-cover-content{padding:30px 0}.gift-cover-kicker{margin:0 0 22px}.gift-envelope{width:65%;margin:auto}.gift-cover-title{margin-top:28px}}
@media(prefers-reduced-motion:reduce){.gift-cover *,.gift-cover.is-opening,.gift-transition *,.gift-next .token-hand,.gift-next .token-petal{animation:none!important}.gift-transition.is-running{visibility:hidden}}
.gift-envelope{aspect-ratio:1.42}
.gilded-envelope-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:3}
.gift-envelope-back,.gift-envelope-front,.gift-envelope-flower{display:none}
.gift-envelope-flap{inset:0;z-index:4;background:none;clip-path:polygon(3% 8%,97% 8%,85% 26%,50% 64%,15% 26%);transform-origin:50% 9%}
.gift-envelope-flap img{width:100%;height:100%;object-fit:contain}
.unwrap-button{inset:0;translate:none;width:100%;height:100%;padding:0;background:none;filter:none;border-radius:0}


.is-opening .gilded-envelope-art{animation:envelope-art-open 1s ease forwards}
.gift-envelope-letter{z-index:2}
@keyframes envelope-art-open{0%,20%{opacity:1}75%,100%{opacity:0}}
.classical-petal-canvas{position:fixed;inset:0;width:100vw;height:100dvh;z-index:30;visibility:hidden;pointer-events:none}
.classical-petal-canvas.is-running{visibility:visible;pointer-events:auto}
.panel-scroll:focus{outline:none}
.petals-covering main>section.warm-scene{transition:none!important}
.petals-covering main>section.is-active{opacity:1!important}
.petals-covering main>section.is-departing{animation:none!important;visibility:hidden!important;opacity:0!important}
.petals-covering main>section:not(.is-active){visibility:hidden!important;opacity:0!important}
@media(prefers-reduced-motion:reduce){.is-opening .gilded-envelope-art{animation:none!important}}
.chapter-wipe main>section.is-active *{animation-play-state:paused!important}

.gift-envelope-letter{background:#fff7e5 url('assets/backgrounds/rose-pearl-stationery.webp') center/100% 100% no-repeat;border-color:#d7b17c}
.transition-simplified main>section:not(.is-active){visibility:hidden!important;opacity:0!important}
@font-face{font-family:'Birthday Script';src:url('assets/fonts/PinyonScript-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
.story-mode .gift-next{left:max(18px,env(safe-area-inset-left,0px));right:auto;translate:none;width:clamp(176px,56vw,240px);max-width:calc(100vw - 128px);min-width:0;height:64px;min-height:64px;justify-content:center;gap:10px;padding:7px 14px}
.story-mode .gift-next .journey-action{font:400 34px/1.2 'Birthday Script','Segoe Script',cursive;letter-spacing:.5px;padding:2px 4px 4px}
.story-mode .motion-toggle{top:auto;right:max(18px,env(safe-area-inset-right,0px));width:64px;height:64px;min-width:64px;max-width:64px;min-height:64px;display:grid;place-items:center;padding:0;border-radius:50%;line-height:1;touch-action:manipulation}
.motion-toggle svg{width:22px;height:22px;fill:currentColor;pointer-events:none}
@media(max-width:359px){.story-mode .gift-next .journey-action{font-size:32px}}
@font-face{font-family:'Letter Calligraphy';src:url('assets/fonts/LiuJianMaoCao-Name.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap;unicode-range:U+71D5,U+7433,U+8096}
.gift-envelope-letter span{align-self:center;position:relative;font:400 35px/1.25 'Letter Calligraphy','KaiTi',cursive;letter-spacing:2px;transform:skewX(-6deg);padding:0 8px 3px}
.gift-envelope-letter i{font:400 25px/1.2 'Birthday Script','Segoe Script',cursive;letter-spacing:1px}

.story-mode .gift-next,.story-mode .motion-toggle{bottom:max(18px,calc(env(safe-area-inset-bottom,0px) + 10px));color:var(--theme-ink,#765443)}
