:root{--intro-exit: 1.3s}.intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(120% 80% at 50% 8%,#f9e6c9,#f9e6c900 60%),linear-gradient(180deg,#f7e1c2,#f2d8b4 52%,#e9ce9f);animation:intro-in .9s ease both}@keyframes intro-in{0%{opacity:0}to{opacity:1}}.intro__scene{position:relative;width:min(100vw,calc(100vh * 4 / 3));aspect-ratio:4 / 3}.intro__svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.node{opacity:0;transition:opacity 1.1s ease,transform 1.1s ease}.node.is-on{opacity:1}.node--map.is-on{opacity:.32}.node--route{opacity:0}.node--route.is-on{opacity:.85}.node--region{transform-box:fill-box;transform-origin:center;transform:scale(.94)}.node--region.is-on{transform:scale(1)}.node--icon{transform-box:fill-box;transform-origin:center;transform:scale(.92)}.node--icon.is-on{transform:scale(1)}.node--star{transform-box:fill-box;transform-origin:center;transform:scale(.3)}.node--star.is-on{transform:scale(1);animation:star-twinkle 3.2s ease-in-out 1s infinite}.star-glow{transform-box:fill-box;transform-origin:center}@keyframes star-twinkle{0%,to{opacity:1}50%{opacity:.78}}.node--label{font-family:Cormorant Garamond,serif;font-style:italic;font-weight:600;font-size:34px;letter-spacing:.04em;fill:#6b4a2f}.node--label-sm{font-size:27px}.node--label-lg{font-size:42px}.intro__texts{position:absolute;left:0;right:0;bottom:30%;text-align:center;pointer-events:none}.intro__text{position:absolute;left:0;right:0;bottom:0;margin:0;opacity:0;transform:translateY(8px);transition:opacity .7s ease,transform .7s ease}.intro__text.is-on{opacity:1;transform:translateY(0)}.intro__date{font-family:Cormorant Garamond,serif;font-size:clamp(18px,3.4vw,30px);letter-spacing:.34em;color:#8a6b3f;text-indent:.34em}.intro__place{margin-top:clamp(8px,1.6vw,16px);font-family:"Noto Serif SC",serif;font-weight:600;font-size:clamp(28px,5.6vw,52px);letter-spacing:.14em;color:#5b3c24;text-indent:.14em}.intro__subtitle{font-family:"Noto Serif SC",serif;font-weight:500;font-size:clamp(17px,3.2vw,30px);line-height:1.9;letter-spacing:.06em;color:#6b4a2f}.intro__continue{position:absolute;left:0;right:0;bottom:18%;width:auto;padding:0;display:flex;flex-direction:column;align-items:center;background:transparent;border:none;cursor:pointer;color:#6b4a2f;opacity:0;transition:opacity .8s ease;pointer-events:none;-webkit-tap-highlight-color:transparent}.intro__continue-text{display:inline-block;font-family:"Noto Serif SC",serif;font-size:clamp(14px,1.7vw,19px);letter-spacing:.3em;transform:translate(-.5em)}.intro__continue-text:after{content:"";display:block;width:8px;height:8px;margin:10px auto 0;position:relative;left:-.15em;border-right:1.5px solid #a9854f;border-bottom:1.5px solid #a9854f;transform:rotate(45deg);opacity:.7}.intro__continue.is-on{pointer-events:auto;animation:continue-breathe 2.6s ease-in-out infinite}@keyframes continue-breathe{0%,to{opacity:.55}50%{opacity:.95}}.intro__skip{position:absolute;top:clamp(14px,3.4%,40px);right:clamp(18px,4.5%,64px);z-index:3;background:transparent;border:none;cursor:pointer;font-family:"Noto Serif SC",serif;font-size:clamp(14px,1.6vw,18px);letter-spacing:.22em;color:#6b4a2f;padding:8px 10px;opacity:.8;transition:opacity .2s ease;-webkit-tap-highlight-color:transparent}.intro__skip:after{content:"";display:block;margin-top:4px;border-bottom:1px dotted #a9854f;opacity:.7}.intro__skip:hover{opacity:1}.intro--exiting{opacity:0;transition:opacity var(--intro-exit) ease;pointer-events:none}@media (max-width: 760px){.intro__scene{width:100vw;height:100svh;aspect-ratio:auto}.intro__texts{bottom:20%}.intro__subtitle{font-size:clamp(16px,4.6vw,22px)}.intro__continue{bottom:11%}}@media (prefers-reduced-motion: reduce){.intro,.node,.intro__text{animation:none!important;transition:opacity .3s ease!important;transform:none!important}.intro--exiting{transition:opacity .3s ease}}.letter{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;overflow:hidden;background:radial-gradient(120% 80% at 50% 8%,#f9e6c9,#f9e6c900 60%),linear-gradient(180deg,#f7e1c2,#f2d8b4 52%,#e9ce9f);animation:letter-in .6s ease both}@keyframes letter-in{0%{opacity:0}to{opacity:1}}.letter__stage{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:clamp(16px,3vw,28px);transition:transform .95s cubic-bezier(.22,.61,.36,1),opacity .95s ease}.letter[data-phase=D] .letter__stage,.letter[data-phase=E] .letter__stage{transform:translate(-50%,-50%) translate(-40vw) scale(.62);opacity:.92}.letter-intro{position:relative}.letter-intro__text{margin:clamp(12px,4%,22px) 0 0;font-family:var(--serif-cn);font-size:clamp(13px,3.6vw,16px);line-height:1.95;letter-spacing:.05em;color:var(--ink);text-align:center}.letter-intro__photo{position:absolute;top:40%;left:12%;width:40%;height:auto;transform:rotate(-6deg) translateY(6px);border:5px solid #fff;border-radius:2px;box-shadow:0 8px 18px -10px #5b3c248c;opacity:0;transition:opacity .7s ease .2s;pointer-events:none;z-index:0}.letter[data-phase=D] .letter-intro__photo,.letter[data-phase=E] .letter-intro__photo{opacity:1}.envelope{position:relative;z-index:1;width:clamp(150px,60%,220px);margin-top:clamp(14px,5%,26px)}.env{width:100%;height:auto;display:block;overflow:visible;filter:drop-shadow(0 8px 16px rgba(91,60,36,.28))}.env-flap{transform-box:view-box;transform-origin:160px 84px;transition:transform .64s cubic-bezier(.34,1.2,.64,1)}.env-paper{transform-box:view-box;transform-origin:160px 118px;transition:transform .64s cubic-bezier(.22,.61,.36,1)}.env-seal{transition:opacity .34s ease}.letter[data-phase=C] .env-flap,.letter[data-phase=D] .env-flap,.letter[data-phase=E] .env-flap{transform:scaleY(-1)}.letter[data-phase=C] .env-paper,.letter[data-phase=D] .env-paper,.letter[data-phase=E] .env-paper{transform:translateY(-58px)}.letter[data-phase=C] .env-seal,.letter[data-phase=D] .env-seal,.letter[data-phase=E] .env-seal{opacity:0}.letter__nav{display:flex;gap:clamp(14px,4vw,22px);align-items:center}.letter[data-phase=D] .letter__nav,.letter[data-phase=E] .letter__nav{opacity:0;pointer-events:none;transition:opacity .3s ease}.letter__sheet{position:absolute;right:clamp(3%,5vw,7%);top:50%;width:min(60vw,720px);height:min(82vh,760px);transform:translateY(-50%) translate(46px) scale(.97);opacity:0;pointer-events:none;transition:transform .95s cubic-bezier(.22,.61,.36,1),opacity .85s ease,width .7s cubic-bezier(.22,.61,.36,1),right .7s cubic-bezier(.22,.61,.36,1)}.letter[data-phase=D] .letter__sheet,.letter[data-phase=E] .letter__sheet{opacity:1;transform:translateY(-50%)}.letter.is-wish[data-phase=E]{--wcontent: min(94vw, 1180px)}.letter.is-wish[data-phase=E] .letter__sheet{left:auto;right:calc(50% - var(--wcontent) / 2);width:calc(var(--wcontent) * .54)}.letter[data-phase=E] .letter__sheet{pointer-events:auto}.sheet__paper{position:relative;width:100%;height:100%;border-radius:6px 14px 14px 6px;padding:clamp(22px,4%,40px) clamp(20px,4%,40px) clamp(18px,3%,30px);background:radial-gradient(120% 60% at 50% 0%,#fffaf0,#fffaf000 55%),linear-gradient(170deg,var(--paper-1) 0%,var(--paper-2) 100%);box-shadow:inset 0 0 0 1px #b8884a66,inset 0 0 0 5px #fdf8ee99,inset 0 0 0 6px #cfa86d52,0 30px 60px -26px #4a2c1780;display:flex;flex-direction:column}.sheet__tag{align-self:flex-start;font-family:var(--serif-en);font-size:12px;letter-spacing:.16em;color:var(--ink-soft);padding:5px 14px;border-radius:999px;background:#b8884a1f;box-shadow:inset 0 0 0 1px #b8884a66}.sheet__scroll{flex:1;min-height:0;overflow-y:auto;margin-top:clamp(16px,3%,26px);padding-right:clamp(8px,1.6vw,16px);scrollbar-width:thin;scrollbar-color:rgba(150,110,60,.4) transparent}.sheet__scroll::-webkit-scrollbar{width:6px}.sheet__scroll::-webkit-scrollbar-track{background:transparent}.sheet__scroll::-webkit-scrollbar-thumb{background:#966e3c61;border-radius:999px}.sheet__scroll::-webkit-scrollbar-thumb:hover{background:#966e3c8c}.sheet__greeting{margin:0 0 clamp(10px,2%,18px);font-family:var(--serif-cn);font-weight:600;font-size:clamp(20px,2.6vw,30px);letter-spacing:.04em;color:var(--ink);line-height:38px}.sheet__body{font-family:var(--serif-cn);font-size:clamp(15px,1.9vw,19px);line-height:38px;letter-spacing:.03em;color:var(--ink)}.sheet__body p{margin:0 0 12px;white-space:pre-wrap}.sheet__placeholder{color:#785a3852;font-size:clamp(14px,1.8vw,17px)}.letter__back{position:absolute;top:-2.6rem;left:2px;font-family:var(--serif-cn);font-size:clamp(13px,1.5vw,15px);letter-spacing:.1em;color:var(--ink);padding:8px 18px;border:none;border-radius:999px;cursor:pointer;background:linear-gradient(180deg,#fbf2e0,#f0ddc0);box-shadow:inset 0 1px #fffc,inset 0 0 0 1px #b8884a73,0 8px 16px -10px #5b3c2480;opacity:0;pointer-events:none;transition:opacity .5s ease .3s,transform .18s ease}.letter[data-phase=E] .letter__back{opacity:1;pointer-events:auto}.letter__back:hover{transform:translateY(-1px)}.letter.is-wish[data-phase=E] .letter__stage{opacity:0;transform:translate(-50%,-50%) translate(-40vw) scale(.6);pointer-events:none;transition:opacity .52s ease,transform .52s ease}.letter__wish{position:absolute;top:50%;--wcontent: min(94vw, 1180px);left:calc(50% - var(--wcontent) / 2);width:calc(var(--wcontent) * .42);transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:clamp(14px,2.4vh,26px);pointer-events:none}.letter.is-wish .letter__wish{pointer-events:auto}.wish__cake-wrap,.wish__player{opacity:0;transform:translateY(16px);transition:opacity .64s ease,transform .64s ease}.letter.is-wish .wish__cake-wrap{opacity:1;transform:none;transition-delay:.48s}.letter.is-wish .wish__player{opacity:1;transform:none;transition-delay:.84s}.wish__cake-wrap{position:relative;width:84%;max-width:420px}.wish__cake{width:100%;height:auto;display:block;filter:drop-shadow(0 16px 26px rgba(91,60,36,.28))}.wish__glow{position:absolute;top:6%;left:50%;width:46%;height:22%;transform:translate(-50%);pointer-events:none;background:radial-gradient(ellipse at center,#ffe09680,#ffd6822e 40%,#ffd68200 70%);mix-blend-mode:screen;animation:candle-flicker 2.6s ease-in-out infinite}@keyframes candle-flicker{0%,to{opacity:.85}45%{opacity:1}60%{opacity:.7}}.wish__player{width:66%;max-width:320px;padding:clamp(12px,1.4vw,16px) clamp(16px,1.8vw,20px) clamp(10px,1.2vw,14px);border-radius:16px;background:linear-gradient(170deg,#fbf3e3,#f4e6cd);box-shadow:inset 0 1px #ffffffb3,inset 0 0 0 1px #b8884a52,0 18px 36px -20px #5b3c2480;text-align:center;color:var(--ink)}.wish__title{font-family:var(--serif-cn);font-weight:600;font-size:clamp(15px,1.7vw,18px);letter-spacing:.16em;text-indent:.16em;color:var(--ink)}.wish__progress{display:flex;align-items:center;gap:10px;margin-top:clamp(12px,1.6vw,18px);font-family:var(--serif-en);font-size:11px;letter-spacing:.06em;color:var(--ink-soft)}.wish__bar{position:relative;flex:1;height:4px;border-radius:999px;background:#966e3c38;cursor:pointer}.wish__fill{position:absolute;left:0;top:0;height:100%;width:0%;border-radius:999px;background:linear-gradient(90deg,#cfa86d,#b8884a)}.wish__controls{display:flex;align-items:center;justify-content:center;gap:clamp(18px,2.4vw,30px);margin-top:clamp(12px,1.6vw,18px)}.wish__prev,.wish__next,.wish__play{border:none;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;-webkit-tap-highlight-color:transparent}.wish__prev svg,.wish__next svg{width:22px;height:22px;fill:var(--ink-soft)}.wish__play{width:clamp(42px,3.4vw,50px);height:clamp(42px,3.4vw,50px);border-radius:50%;background:linear-gradient(180deg,#cfa86d,#b2823f);box-shadow:inset 0 1px #fff6,0 8px 16px -8px #5b3c2499;transition:transform .16s ease}.wish__play:hover{transform:translateY(-1px)}.wish__play svg{width:46%;height:46%;fill:#fff}.wish__play .ic-pause,.wish__play.is-playing .ic-play{display:none}.wish__play.is-playing .ic-pause{display:block}.wish__divider{display:flex;align-items:center;justify-content:center;margin:clamp(12px,1.8vw,18px) 0 clamp(8px,1.2vw,12px);color:var(--gold);font-size:13px;opacity:.7}.wish__text{margin:0;font-family:var(--serif-cn);font-size:clamp(14px,1.7vw,18px);letter-spacing:.1em;text-indent:.1em;color:var(--ink)}.wish__heart{margin-top:8px;color:var(--heart);font-size:14px;opacity:.8}@media (max-width: 820px){.letter[data-phase=D] .letter__stage,.letter[data-phase=E] .letter__stage{transform:translate(-50%,-50%) translate(0) translateY(-128vw) scale(.34);opacity:.55}.letter__sheet{width:92vw;height:74vh;right:4vw;top:auto;bottom:4vh;transform:translate(0) translateY(40px) scale(.98)}.letter[data-phase=D] .letter__sheet,.letter[data-phase=E] .letter__sheet{transform:translateY(0)}.letter__back{top:-2.4rem}.letter__wish{width:92vw;left:4vw;top:2vh;transform:none;gap:8px;justify-content:flex-start}.wish__cake-wrap{width:clamp(96px,26vw,140px)}.wish__player{width:min(82vw,300px)}.letter.is-wish[data-phase=E] .letter__stage{opacity:0}.letter.is-wish[data-phase=E] .letter__wish{top:1.5vh;height:auto;gap:6px}.letter.is-wish[data-phase=E] .wish__cake-wrap{width:clamp(82px,20vw,112px)}.letter.is-wish[data-phase=E] .wish__player{width:min(74vw,264px);padding:9px 14px 7px}.letter.is-wish[data-phase=E] .wish__title{font-size:14px}.letter.is-wish[data-phase=E] .wish__progress{margin-top:7px}.letter.is-wish[data-phase=E] .wish__controls{margin-top:7px;gap:18px}.letter.is-wish[data-phase=E] .wish__play{width:38px;height:38px}.letter.is-wish[data-phase=E] .wish__divider{margin:7px 0 4px}.letter.is-wish[data-phase=E] .wish__heart{margin-top:4px}.letter.is-wish[data-phase=E] .letter__sheet{left:auto;right:4vw;width:92vw;top:48vh;bottom:2vh;height:auto}.letter.is-wish[data-phase=E] .letter__back{top:-2.1rem}}@media (prefers-reduced-motion: reduce){.letter__stage,.letter__sheet,.env-flap,.env-paper{transition-duration:.2s}}:root{--bg-1: #f4e7d2;--bg-2: #ecdcc0;--bg-3: #e6d2b2;--leather-1: #8a5634;--leather-2: #774727;--leather-3: #623a20;--leather-edge: #4c2c17;--stitch: #c79a6a;--paper-1: #fdf8ee;--paper-2: #f6ecd8;--paper-line: #e7d4b3;--ink: #5b3c24;--ink-soft: #8a6b4d;--gold: #b8884a;--gold-soft: #cfa86d;--heart: #b9603f;--serif-en: "Cormorant Garamond", "Noto Serif SC", serif;--serif-cn: "Noto Serif SC", "Songti SC", serif;--hand: "Ma Shan Zheng", "Noto Serif SC", cursive;--radius: 18px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--serif-cn);color:var(--ink);-webkit-font-smoothing:antialiased;background:radial-gradient(120% 80% at 50% 8%,#f9e6c9,#f9e6c900 60%),linear-gradient(180deg,#f7e1c2,#f2d8b4 52%,#e9ce9f);background-attachment:fixed}.page{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center}.album-reveal{width:100%;opacity:0}.album-reveal.is-in{animation:album-emerge 1.1s ease .15s both}@keyframes album-emerge{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.album-reveal.is-in{animation:album-emerge .3s ease both}}.album-stage{position:relative;width:100%;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(18px,3.4vw,30px);padding:clamp(20px,5vw,48px) 16px}.album-sprig{position:absolute;width:clamp(90px,16vw,180px);height:clamp(90px,16vw,180px);opacity:.5;pointer-events:none;background-repeat:no-repeat;background-position:center;background-size:contain;mix-blend-mode:multiply}.album-sprig--tl{top:4%;left:5%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='%23b89a6e' stroke-width='1.3' stroke-linecap='round'%3E%3Cpath d='M10 12 C40 30 60 55 78 92'/%3E%3Cpath d='M30 26 C24 38 26 50 34 58'/%3E%3Cpath d='M46 44 C40 56 42 68 50 76'/%3E%3Cpath d='M60 62 C54 74 56 86 64 94'/%3E%3Cpath d='M32 24 C44 20 56 24 62 34'/%3E%3Cpath d='M48 42 C60 38 72 42 78 52'/%3E%3C/g%3E%3Cg fill='%23c7a978'%3E%3Ccircle cx='30' cy='26' r='2.4'/%3E%3Ccircle cx='46' cy='44' r='2.4'/%3E%3Ccircle cx='62' cy='62' r='2.4'/%3E%3Ccircle cx='63' cy='34' r='2.4'/%3E%3Ccircle cx='79' cy='52' r='2.4'/%3E%3C/g%3E%3Cg fill='%238a9f55'%3E%3Cellipse cx='34' cy='58' rx='7' ry='3' transform='rotate(58 34 58)'/%3E%3Cellipse cx='50' cy='76' rx='7' ry='3' transform='rotate(58 50 76)'/%3E%3Cellipse cx='64' cy='94' rx='6' ry='2.6' transform='rotate(58 64 94)'/%3E%3Cellipse cx='62' cy='34' rx='7' ry='3' transform='rotate(-18 62 34)'/%3E%3Cellipse cx='78' cy='52' rx='7' ry='3' transform='rotate(-18 78 52)'/%3E%3C/g%3E%3C/svg%3E");transform:scaleX(-1)}.album-sprig--br{right:5%;bottom:5%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='%23b89a6e' stroke-width='1.3' stroke-linecap='round'%3E%3Cpath d='M10 12 C40 30 60 55 78 92'/%3E%3Cpath d='M30 26 C24 38 26 50 34 58'/%3E%3Cpath d='M46 44 C40 56 42 68 50 76'/%3E%3Cpath d='M60 62 C54 74 56 86 64 94'/%3E%3Cpath d='M32 24 C44 20 56 24 62 34'/%3E%3Cpath d='M48 42 C60 38 72 42 78 52'/%3E%3C/g%3E%3Cg fill='%23c7a978'%3E%3Ccircle cx='30' cy='26' r='2.4'/%3E%3Ccircle cx='46' cy='44' r='2.4'/%3E%3Ccircle cx='62' cy='62' r='2.4'/%3E%3Ccircle cx='63' cy='34' r='2.4'/%3E%3Ccircle cx='79' cy='52' r='2.4'/%3E%3C/g%3E%3Cg fill='%238a9f55'%3E%3Cellipse cx='34' cy='58' rx='7' ry='3' transform='rotate(58 34 58)'/%3E%3Cellipse cx='50' cy='76' rx='7' ry='3' transform='rotate(58 50 76)'/%3E%3Cellipse cx='64' cy='94' rx='6' ry='2.6' transform='rotate(58 64 94)'/%3E%3Cellipse cx='62' cy='34' rx='7' ry='3' transform='rotate(-18 62 34)'/%3E%3Cellipse cx='78' cy='52' rx='7' ry='3' transform='rotate(-18 78 52)'/%3E%3C/g%3E%3C/svg%3E")}.album{position:relative;display:flex;width:min(92vw,430px);aspect-ratio:430 / 580;border-radius:var(--radius);background:var(--leather-edge);box-shadow:0 2px #ffffff2e inset,0 30px 60px -24px #4a2c178c,0 12px 26px -16px #4a2c1766;isolation:isolate}.album__spine{position:relative;flex:0 0 30px;border-radius:var(--radius) 6px 6px var(--radius);background:linear-gradient(90deg,var(--leather-edge) 0%,var(--leather-3) 38%,var(--leather-2) 70%,var(--leather-edge) 100%);box-shadow:inset -6px 0 10px -6px #0000008c,inset 2px 0 4px #ffffff1f;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px}.album__band{width:100%;height:12px;background:linear-gradient(180deg,#ffffff29,#00000047);box-shadow:0 1px #ffffff1f,0 -1px 2px #0000004d}.album__spine-heart{position:absolute;bottom:16px;color:var(--gold-soft);font-size:13px;opacity:.8}.album__leaves{position:relative;flex:1;margin:7px 7px 7px 0;border-radius:6px 14px 14px 6px;-webkit-perspective:1700px;perspective:1700px;-webkit-perspective-origin:left center;perspective-origin:left center}.leaf{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-transform-origin:left center;transform-origin:left center;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.leaf--static{z-index:1}.leaf--flip{z-index:3;will-change:transform}.leaf__face{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:6px 14px 14px 6px;overflow:hidden;-webkit-transform:translateZ(0)}.leaf__face--front{-webkit-transform:rotateY(0deg) translateZ(0);transform:rotateY(0) translateZ(0)}.leaf__face--back{-webkit-transform:rotateY(180deg);transform:rotateY(180deg);background:repeating-linear-gradient(120deg,var(--paper-1),var(--paper-1) 7px,var(--paper-2) 7px,var(--paper-2) 14px);box-shadow:inset 0 0 40px #7858342e}.leaf--next{animation:flip-next var(--flip-dur, .78s) cubic-bezier(.46,.03,.34,1) forwards}@keyframes flip-next{0%{transform:rotateY(0)}to{transform:rotateY(-168deg)}}.leaf--prev{animation:flip-prev var(--flip-dur, .78s) cubic-bezier(.46,.03,.34,1) forwards}@keyframes flip-prev{0%{transform:rotateY(-168deg)}to{transform:rotateY(0)}}.leaf--flip:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:6px 14px 14px 6px;background:linear-gradient(90deg,#4a2c1757,#4a2c1700 28%);pointer-events:none}.album__zone{position:absolute;top:0;bottom:0;z-index:2;border:none;background:transparent;cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}.album__zone--next{right:0;width:58%}.album__zone--prev{left:0;width:42%}.album__zone:disabled{cursor:default}.cover{width:100%;height:100%;padding:5px;background:radial-gradient(140% 120% at 80% 0%,#97623c,#97623c00 45%),linear-gradient(150deg,var(--leather-1) 0%,var(--leather-2) 55%,var(--leather-3) 100%)}.cover__inner{position:relative;height:100%;border-radius:4px 12px 12px 4px;padding:clamp(20px,6%,34px) clamp(18px,6%,30px);box-shadow:inset 0 0 0 1.5px #cfa86d8c,inset 0 0 0 7px #4a2c1740,inset 0 0 0 8.5px #cfa86d4d,inset 0 0 60px #00000047;display:flex;flex-direction:column;overflow:hidden}.cover__tag{align-self:flex-start;font-family:var(--serif-en);font-size:11px;letter-spacing:.18em;color:#f6e7cf;padding:5px 12px;border-radius:999px;background:#4a2c1759;box-shadow:inset 0 0 0 1px #cfa86d99}.cover__eyebrow{margin:clamp(20px,7%,34px) 0 0;font-family:var(--serif-en);font-size:clamp(12px,3.4vw,15px);letter-spacing:.42em;color:var(--gold-soft);text-indent:.42em}.cover__title{margin:10px 0 0;font-family:var(--serif-cn);font-weight:600;font-size:clamp(34px,11vw,50px);line-height:1.18;letter-spacing:.04em;color:#fbf1df;text-shadow:0 1px 0 rgba(0,0,0,.35)}.cover__text{margin:clamp(16px,5%,26px) 0 0;font-family:var(--serif-cn);font-size:clamp(13px,3.7vw,16px);line-height:2;letter-spacing:.05em;color:#f6e7cfd1}.cover__sprig{position:absolute;right:clamp(14px,7%,30px);bottom:clamp(10px,4%,26px);width:clamp(54px,18%,78px);height:auto;color:var(--gold-soft);opacity:.7}.page-leaf{width:100%;height:100%;padding:6px;background:linear-gradient(150deg,var(--leather-1) 0%,var(--leather-2) 60%,var(--leather-3) 100%)}.page-leaf__inner{position:relative;height:100%;border-radius:4px 10px 10px 4px;padding:clamp(16px,5%,26px) clamp(14px,5%,24px) clamp(14px,4%,22px);background:radial-gradient(120% 90% at 50% 0%,#fffaf0,#fffaf000 60%),linear-gradient(170deg,var(--paper-1) 0%,var(--paper-2) 100%);box-shadow:inset 0 0 0 1px #b8884a66,inset 0 0 0 4px #fdf8ee99,inset 0 0 0 5px #cfa86d59;display:flex;flex-direction:column;align-items:center;background-blend-mode:normal}.page-leaf__inner:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border-radius:4px 8px 8px 4px;background-image:repeating-linear-gradient(0deg,rgba(184,136,74,.05) 0px,rgba(184,136,74,.05) 1px,transparent 1px,transparent 26px);pointer-events:none}.page-leaf__tag{font-family:var(--serif-en);font-size:9.5px;letter-spacing:.16em;color:var(--ink-soft);padding:4px 11px;border-radius:999px;background:#b8884a1f;box-shadow:inset 0 0 0 1px #b8884a66}.polaroid{position:relative;margin-top:clamp(12px,4%,20px);flex:1 1 auto;width:100%;min-height:0;display:flex;background:linear-gradient(160deg,#fff,#fbf5ea);padding:clamp(9px,3%,14px);padding-bottom:clamp(9px,3%,14px);border-radius:3px;box-shadow:0 1px #ffffffe6 inset,0 10px 22px -12px #5b3c248c,0 3px 8px -4px #5b3c244d;transform:rotate(-1.1deg)}.polaroid__photo{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#efe6d6;overflow:hidden;box-shadow:inset 0 0 14px #5b3c2429}.polaroid__photo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.polaroid__corner{position:absolute;width:16px;height:16px;z-index:2;background:linear-gradient(135deg,#7858348c,#78583433);box-shadow:inset 0 0 3px #00000040}.polaroid__corner--tl{top:5px;left:5px;clip-path:polygon(0 0,100% 0,0 100%)}.polaroid__corner--tr{top:5px;right:5px;clip-path:polygon(0 0,100% 0,100% 100%)}.polaroid__corner--bl{bottom:5px;left:5px;clip-path:polygon(0 0,0 100%,100% 100%)}.polaroid__corner--br{bottom:5px;right:5px;clip-path:polygon(100% 0,100% 100%,0 100%)}.page-leaf__caption{margin-top:clamp(14px,4%,22px);text-align:center}.page-leaf__title{margin:0;font-family:var(--serif-cn);font-weight:600;font-size:clamp(17px,5vw,22px);letter-spacing:.06em;color:var(--ink)}.page-leaf__date{margin:7px 0 0;font-family:var(--serif-en);font-size:clamp(11px,3.3vw,13px);letter-spacing:.16em;color:var(--ink-soft)}.page-leaf__number{margin-top:clamp(8px,2.5%,14px);font-family:var(--serif-en);font-size:10.5px;letter-spacing:.34em;color:var(--gold);text-indent:.34em}.album-nav{display:flex;gap:clamp(14px,4vw,22px);align-items:center}.album-nav__btn{font-family:var(--serif-cn);font-size:clamp(13px,3.6vw,15px);letter-spacing:.14em;color:var(--ink);padding:11px clamp(20px,6vw,30px);border:none;border-radius:999px;cursor:pointer;background:linear-gradient(180deg,#fbf2e0,#f0ddc0);box-shadow:inset 0 1px #fffc,inset 0 0 0 1px #b8884a73,0 8px 16px -10px #5b3c2480;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.album-nav__btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:inset 0 1px #ffffffe6,inset 0 0 0 1px #b8884a99,0 12px 20px -10px #5b3c248c}.album-nav__btn:active:not(:disabled){transform:translateY(0)}.album-nav__btn--primary{color:#fbf1df;background:linear-gradient(180deg,var(--leather-1) 0%,var(--leather-3) 100%);box-shadow:inset 0 1px #ffffff38,inset 0 0 0 1px #cfa86d8c,0 10px 18px -10px #4a2c1799}.album-nav__btn:disabled{opacity:.4;cursor:default}@media (max-width: 480px){.album{width:min(94vw,360px)}.album__spine{flex-basis:24px}}@media (max-height: 720px){.album{width:min(72vh,92vw)}}@media (prefers-reduced-motion: reduce){.leaf--next,.leaf--prev{animation-duration:.01s}}.album__leaves{--flip-dur: .78s}
