:root{--paper:#f4f0e8;--ink:#393e33;--muted:#797d70;--green:#53654a;--line:#dcded2;--rose:#bb7965;font-family:'PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid var(--rose);outline-offset:5px}header,main,footer{max-width:1200px;margin:auto}header{height:100px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font:24px Georgia,serif;letter-spacing:2px}.brand span{font:12px 'PingFang SC',sans-serif;letter-spacing:1px;margin-left:15px;color:var(--muted)}nav{display:flex;gap:32px;font-size:13px}.hero{min-height:690px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:45px;padding:65px 0 100px}.eyebrow{display:block;font-size:11px;letter-spacing:2px;color:var(--green);margin-bottom:28px}h1,h2,h3{font-family:'Songti SC','STSong',Georgia,serif;font-weight:500}h1{font-size:clamp(40px,4.8vw,64px);line-height:1.45;letter-spacing:1px;margin:0 0 24px}h2{font-size:40px;line-height:1.5;margin:0 0 24px}p{font-size:15px;line-height:2.1;color:var(--muted)}.accent{color:var(--green)}.primary{display:inline-flex;gap:45px;padding:18px 25px;background:var(--green);color:#fff;border-radius:3px;margin:24px 0}.hero small{display:block;font-size:11px;color:var(--muted);letter-spacing:1px}.hero-art{position:relative;padding:0 50px 0 40px}.polaroid{background:#fffdf7;padding:12px 12px 0;box-shadow:0 15px 40px #3b403318;margin:0;transform:rotate(2deg)}.photo{border:0;padding:0;background:transparent;display:block;width:100%;overflow:hidden}.photo img{width:100%;display:block;object-fit:cover;transition:transform .5s}.photo:hover img{transform:scale(1.035)}figcaption{padding:19px 6px 22px;text-align:center;font-family:'Songti SC',serif;font-size:16px;color:#656b58}.hero-photo img{height:430px;object-position:center 45%}.hero-photo:before{content:'';position:absolute;width:110px;height:29px;left:35%;top:-14px;background:#d3d8bd9c;transform:rotate(-4deg);z-index:1}.mini-photo{position:absolute;width:175px;bottom:-50px;right:0;transform:rotate(-9deg)}.mini-photo img{height:190px}.mini-photo figcaption{font-size:13px;padding:12px}.scribble{position:absolute;top:-44px;left:80px;font:italic 21px Georgia;color:var(--rose);transform:rotate(-6deg)}.stamp{position:absolute;right:9px;top:24px;border:1px solid var(--rose);border-radius:50%;padding:21px 10px;color:var(--rose);font:12px Georgia;letter-spacing:2px;text-align:center;transform:rotate(13deg)}.divider{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:21px 0;color:var(--muted);font-size:11px;letter-spacing:2px}.chapter{padding:100px 0;border-bottom:1px solid var(--line)}.section-heading{position:relative}.section-heading p{position:absolute;right:60px;bottom:10px}.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;margin-top:40px}.gallery .polaroid:nth-child(2n){transform:rotate(-2deg)}.gallery img{height:280px}.gallery figcaption{font-size:14px;padding:16px 3px}.hint{font-size:12px;letter-spacing:1px;margin-top:30px}.little-things,.future{display:grid;grid-template-columns:1fr 1fr;gap:120px;align-items:center}.little-things>.polaroid{width:85%;justify-self:end;transform:rotate(4deg)}.little-things img{height:450px}.notes{display:grid;gap:12px;margin-top:30px}.note{background:#ebe7da;border:0;padding:22px;text-align:left;line-height:1.9;color:var(--ink);border-left:2px solid #b4bca1}.note span{display:block;font-size:11px;color:var(--muted);margin-top:6px}.note.open{background:#e4e9dd}.treats{text-align:center}.coupons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:35px}.coupons button{border:1px dashed #a5ad96;background:#e9ecdf;min-height:180px;padding:25px;text-align:left;color:var(--ink);font-family:'Songti SC',serif;font-size:24px}.coupons button:nth-child(2){background:#eee3d8}.coupons button:nth-child(3){background:#e4e5dc}.coupons span{display:block;font:italic 32px Georgia;color:#8f9d80;margin-bottom:20px}.coupons b{display:block;font:12px 'PingFang SC',sans-serif;margin-top:20px;color:var(--muted)}.coupons button.claimed{border-style:solid}.future img{height:440px}.route{display:flex;gap:24px;align-items:center;margin:32px 0;font-family:'Songti SC',serif;font-size:25px}.route i{font-size:16px;letter-spacing:3px;color:#a6b098}.outline{border:1px solid #a6af98;background:transparent;color:var(--green);padding:15px 20px}.future-line{color:var(--ink)}.finale{text-align:center;border-bottom:0}.cake{width:260px;margin:30px auto 0;padding-top:20px}#candle{position:relative;border:0;background:transparent;padding:0 30px;display:block;margin:auto;height:75px}.candle-stick{display:block;background:repeating-linear-gradient(45deg,#c38e74 0 5px,#f3dfbf 5px 10px);width:12px;height:43px;margin:auto}.wick{font-size:15px;color:#7d624a;display:block;line-height:12px}.flame{position:absolute;top:0;left:32px;color:#daa049;font-size:22px;text-shadow:0 0 22px #f7b34b;animation:glow 1s infinite alternate}.cake-top{height:24px;border-radius:50%;background:#e7d0b4;position:relative;margin-top:-5px}.cake-body{background:#ebd9c3;border-radius:0 0 18px 18px;padding:22px 10px;font-size:10px;letter-spacing:2px;color:#967a60;margin-top:-10px}.envelope{background:#e9e5d8;border:1px solid #d3cbb7;width:min(500px,100%);padding:35px;text-align:left;margin-top:20px;position:relative;box-shadow:0 8px 25px #393e3308;color:var(--ink)}.envelope span{display:block;font-size:11px;letter-spacing:2px;color:var(--muted)}.envelope strong{display:block;font:23px 'Songti SC',serif;margin:30px 0}.letter{max-width:760px;margin:50px auto 0;background:#fffcf5;text-align:left;padding:65px 70px;box-shadow:0 10px 50px #393e330a;border-top:3px solid #a6af98}.letter h3{font-size:26px}.letter p{color:#505549;font-family:'Songti SC',serif;font-size:18px;line-height:2.2;margin:0 0 24px}.signature{text-align:right;color:var(--green);margin-top:40px;font-family:'Songti SC',serif}.ending{padding-top:50px}.ending span{font-family:'Songti SC',serif;font-size:22px;color:var(--green)}footer{border-top:1px solid var(--line);padding:30px 0;display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}dialog{border:0;background:#fffdf7;padding:18px;max-width:640px;width:calc(100% - 32px);max-height:92svh;box-shadow:0 20px 80px #0004}dialog::backdrop{background:#20271bd9;backdrop-filter:blur(5px)}dialog img{display:block;width:100%;height:auto;max-height:72svh;object-fit:contain}dialog p{text-align:center;margin-bottom:0;padding:0 15px}.close{position:absolute;right:20px;top:20px;z-index:2;width:36px;height:36px;background:#fffdf7ee;border:0;border-radius:50%;font-size:24px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--green);color:white;padding:14px 22px;border-radius:4px;opacity:0;pointer-events:none;transition:opacity .3s;z-index:5;max-width:90vw;white-space:nowrap;font-size:13px}#toast.visible{opacity:1}[hidden]{display:none!important}@keyframes glow{to{opacity:.65;transform:scale(.9)}}@media(max-width:1250px){header,main,footer{margin-left:40px;margin-right:40px}.gallery{gap:18px}.little-things,.future{gap:65px}}@media(max-width:760px){header,main,footer{margin-left:22px;margin-right:22px}header{height:76px}.brand{font-size:20px}.brand span{display:none}nav{gap:18px;font-size:12px}.hero{grid-template-columns:1fr;gap:65px;padding:50px 0 90px}.hero h1{font-size:43px}.hero-art{max-width:450px;width:100%;margin:auto;padding:0 40px 0 5px}.hero-photo img{height:370px}.mini-photo{width:140px;right:0;bottom:-35px}.mini-photo img{height:150px}.scribble{left:25px;top:-38px;font-size:18px}.stamp{right:0}.eyebrow{font-size:10px;letter-spacing:1.5px}h2{font-size:30px}.chapter{padding:65px 0}.section-heading p{position:static}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:23px 15px}.gallery img{height:220px}.gallery .polaroid{padding:7px 7px 0}.gallery figcaption{font-size:12px}.little-things,.future{grid-template-columns:1fr;gap:40px}.little-things>.polaroid{width:85%;justify-self:center}.little-things img{height:360px}.coupons{grid-template-columns:1fr;gap:12px}.coupons button{min-height:130px;font-size:21px}.coupons span{float:right;margin:0}.coupons b{font-size:13px;line-height:1.8}.future>.polaroid{width:85%;justify-self:center}.future img{height:360px}.route{gap:18px}.route i{letter-spacing:1px}.letter{padding:32px 24px}.letter p{font-size:17px}.finale h2{font-size:27px}footer{gap:20px;line-height:1.8}.divider{font-size:10px;letter-spacing:0}#toast{white-space:normal;width:max-content}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}@media print{header,footer,.cake,.envelope,.coupons,dialog,#toast{display:none}.letter[hidden]{display:block!important}.letter{box-shadow:none;padding:0}.chapter:not(.finale),.hero,.divider{display:none}.letter p{color:#000}.finale{padding:0}}

.coupons button:nth-child(4){background:#eee7df}

.coupon-card{display:grid;grid-template-columns:minmax(0,1fr) 100px;align-items:stretch;background:#e9ecdf;border:1px dashed #a5ad96}.coupon-card:nth-child(2){background:#eee3d8}.coupon-card:nth-child(3){background:#e4e5dc}.coupon-card:nth-child(4){background:#eee7df}.coupons .coupon-card>button[data-coupon]{border:0;background:transparent;min-width:0;font-size:23px}.coupons .save-coupon{border:0;border-left:1px dashed #a5ad96;background:transparent;min-height:0;padding:16px 10px;font:13px 'PingFang SC',sans-serif;text-align:center;color:var(--green)}.save-coupon:hover{background:#ffffff40}.coupon-image-dialog h3{margin:14px 35px 24px 0}.coupon-image-dialog .primary{display:flex;margin:14px 0 0}.coupon-image-dialog img{width:100%;height:auto}.coupon-image-dialog p{font-size:13px}@media(max-width:760px){.coupon-card{grid-template-columns:minmax(0,1fr) 85px}.coupons .coupon-card>button[data-coupon]{font-size:21px;padding:20px}.coupons .save-coupon{font-size:12px}}
#journey-progress{display:flex;justify-content:center;gap:12px;padding:25px 0 8px}.journey-dot{width:10px;height:10px;padding:0;border-radius:50%;background:#d0d5c6;border:0;position:relative}.journey-dot:after{content:'';position:absolute;inset:-8px}.journey-dot.active{background:var(--green);box-shadow:0 0 0 4px #53654a15}main{display:flex;flex-direction:column;min-height:calc(100svh - 170px)}#journey-progress{order:-1}.chapter{padding:35px 0 40px;border-bottom:0}.hero{min-height:0;padding:45px 0 70px}.current-scene{animation:scene-in .4s ease}.chapter h2{font-size:36px}.section-heading p{position:static}.gallery{display:block;max-width:340px;margin:25px auto}.gallery img{height:320px}.gallery .polaroid{transform:rotate(-1deg)}#memories{text-align:center}.album-navigation{display:flex;align-items:center;justify-content:center;gap:24px;font-size:13px}.album-caption{text-align:center;color:var(--green);margin:20px auto 0;max-width:600px}#memories>.hint{margin:12px 0}.little-things,.future{gap:65px}.little-things img,.future img{height:350px}.yourself,.next-date{text-align:center;max-width:850px;width:100%;margin:auto}.permission-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:35px}.permission-cards .note{min-height:160px}.date-choices{display:grid;gap:16px;max-width:460px;margin:35px auto}.date-choices .selected{background:var(--green);color:white}.route i{transition:letter-spacing .5s}.route.closer{justify-content:center}.route.closer i{color:var(--rose);font-size:28px}.treats .coupons{max-width:950px;margin:25px auto}.treats .hint{margin:20px 0}.coupons .coupon-card>button[data-coupon]{min-height:155px}.finale .eyebrow{margin-bottom:18px}.finale .cake{margin-top:15px}.finale .letter{margin-top:35px}#journey-controls{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px 0;border-top:1px solid var(--line)}#journey-controls .primary{margin:0;font-size:14px;padding:14px 20px}#journey-count{font-size:12px;color:var(--muted)}button:disabled{opacity:.35;cursor:default}.yourself p,.next-date p{margin-top:10px}@keyframes scene-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:760px){.hero{padding:25px 0 55px;gap:50px}.hero h1{font-size:37px}.hero-photo img{height:300px}.chapter{padding:22px 0 30px}.chapter h2{font-size:28px}.gallery{max-width:280px;margin:20px auto}.gallery img{height:290px}.permission-cards{grid-template-columns:1fr;gap:12px;margin-top:20px}.permission-cards .note{min-height:0}.little-things,.future{gap:28px}.little-things>.polaroid,.future>.polaroid{width:70%}.little-things img,.future img{height:260px}.future>.polaroid{order:1}.hero-art{max-width:340px}.coupons .coupon-card>button[data-coupon]{min-height:135px}#journey-controls{flex-wrap:wrap;gap:12px}#journey-count{order:-1;width:100%;text-align:center}#journey-controls button{font-size:12px!important;max-width:75%;padding:13px 14px!important}.album-navigation{gap:16px}.album-navigation button{padding:10px 14px}.letter{padding:28px 22px}#journey-progress{padding-top:20px}}
@media print{#journey-progress,#journey-controls{display:none!important}.finale[hidden]{display:block!important}}
#journey-progress{gap:8px;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));padding-bottom:20px}.journey-dot{width:100%;height:auto;min-height:42px;border-radius:3px;font-size:12px;padding:10px 4px;color:var(--green);background:#e7eadd}.journey-dot:after{display:none}.journey-dot.active{color:white;background:var(--green);box-shadow:none}.journey-dot:disabled{color:#94998a;background:#eeeede;opacity:.6}.date-choices button{text-align:left}#save-date{margin:10px 0 20px}@media(max-width:760px){#journey-progress{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.journey-dot{font-size:11px;min-height:34px;padding:8px 3px}}
.visit-dialog{width:min(500px,calc(100% - 32px));padding:40px 28px 24px;text-align:center;border-radius:20px}.visit-dialog h3{font-size:32px;margin:10px 0}.visit-dialog .eyebrow{margin:10px 0 20px}.visit-dialog>p{margin:5px 0}.visit-playground{height:285px;position:relative;margin-top:20px}.visit-yes{position:absolute;top:10px;left:50%;transform:translateX(-50%);border:0;background:#ce504f;color:white;width:150px;height:75px;border-radius:14px;font-size:24px;box-shadow:0 8px 20px #ce504f30;transition:width .2s,height .2s,font-size .2s}.visit-no{position:absolute;top:170px;left:72%;padding:7px 12px;font-size:12px;border:1px solid #ddd5c6;background:#eee9de;color:#898575;border-radius:7px;transition:top .15s,left .15s}.visit-feedback{min-height:54px;font-size:13px!important}.visit-dialog .close{font-size:24px}

#toast{font-size:20px;line-height:1.8;padding:22px 30px;max-width:min(660px,calc(100vw - 36px));white-space:normal;text-align:center;box-shadow:0 12px 40px #26331f30;bottom:35px}.visit-dialog h3{font-size:36px}.visit-dialog>p{font-size:19px}.visit-feedback{font-size:18px!important;min-height:76px}#restart{border:1px solid var(--line);background:transparent;padding:10px 14px;color:var(--green);border-radius:4px;font:inherit;white-space:nowrap}footer{align-items:center;flex-wrap:wrap}@media(max-width:760px){#toast{font-size:18px;padding:18px 22px;bottom:22px}.visit-dialog h3{font-size:30px}.visit-dialog>p{font-size:17px}.visit-feedback{font-size:17px!important}footer{gap:12px}footer>span{flex-basis:100%;order:1}}
.treats .coupons{gap:14px;margin:20px auto}.coupons .coupon-card>button[data-coupon]{min-height:125px;padding:18px 20px;font-size:21px}.coupons .coupon-card>button[data-coupon]>span{font-size:25px;margin-bottom:10px}.coupons .coupon-card>button[data-coupon]>b{margin-top:10px;font-size:12px;line-height:1.7}@media(max-width:760px){.treats .coupons{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.coupon-card{grid-template-columns:1fr}.coupons .coupon-card>button[data-coupon]{min-height:105px;padding:12px;font-size:16px}.coupons .save-coupon{border-left:0;border-top:1px dashed #a5ad96;padding:9px}.coupons .coupon-card>button[data-coupon]>span{font-size:20px;float:none;margin-bottom:6px}.coupons .coupon-card>button[data-coupon]>b{font-size:11px;margin-top:6px}}
/* Use the family-expense card color for all four gifts. */
.coupons .coupon-card:nth-child(n){background:#e9ecdf}
#original-game[aria-disabled="true"]{opacity:.5;cursor:not-allowed}.signature time{display:inline-block;margin-top:14px;font-size:15px;color:var(--muted)}
.cake{position:relative;transition:filter .5s}.cake.lit{filter:drop-shadow(0 -8px 24px #efb45166)}#candle{height:100px;width:90px;padding:0 30px;overflow:visible}.flame{position:absolute;top:3px;left:31px;width:28px;height:42px;border-radius:55% 45% 55% 45%;background:radial-gradient(ellipse at 50% 80%,#fffce0 0 20%,#ffe18a 35%,#ffb63b 65%,#f17b29 100%);box-shadow:0 0 18px #ffba52,0 0 45px #ffd15b80;transform-origin:50% 100%;animation:candle-flicker .65s ease-in-out infinite alternate}.flame:after{content:'';position:absolute;width:10px;height:19px;bottom:2px;left:9px;border-radius:50%;background:#fff8d9}.wick{padding-top:43px;line-height:12px}.cake.lit .cake-top{background:#eed3ac}.candle-smoke{position:absolute;top:10px;left:36px;width:18px;height:24px;pointer-events:none}.cake.blown .candle-smoke:before,.cake.blown .candle-smoke:after{content:'';position:absolute;inset:0;background:#9b9e9180;border-radius:50%;filter:blur(4px);animation:candle-smoke-rise 2.3s ease-out forwards}.cake.blown .candle-smoke:after{animation-delay:.25s}.cake.blown .cake-body{animation:cake-celebrate .7s ease}.birthday-shower{position:fixed;inset:0;pointer-events:none;z-index:20;overflow:hidden}.birthday-shower i{position:absolute;top:-20px;width:9px;height:15px;animation:birthday-fall 3s ease-in forwards}@keyframes candle-flicker{from{transform:rotate(-5deg) scale(.95,1)}to{transform:rotate(5deg) scale(1.05,.9)}}@keyframes candle-smoke-rise{0%{opacity:0;transform:translate(0,15px) scale(.7)}20%{opacity:.7}100%{opacity:0;transform:translate(25px,-100px) scale(3)}}@keyframes birthday-fall{to{transform:translate(var(--drift),110vh) rotate(540deg);opacity:0}}@keyframes cake-celebrate{50%{transform:scale(1.05)}}
.opening-heart-effect{position:fixed;inset:0;display:grid;place-items:center;pointer-events:none;z-index:30;background:radial-gradient(circle at center,#f8dedf66,transparent 45%);animation:heart-overlay 1.6s ease both}.opening-heart{color:#cf6f7d;font-size:130px;line-height:1;filter:drop-shadow(0 8px 24px #d9909a55);animation:heart-bloom 1.6s ease both}.heart-spark{position:absolute;left:50%;top:50%;font-size:24px;color:#dc919b;animation:heart-spark 1.3s ease-out both;animation-delay:var(--delay)}@keyframes heart-bloom{0%{opacity:0;transform:scale(.2)}25%{opacity:1;transform:scale(1.12)}42%{transform:scale(.93)}58%{transform:scale(1)}75%{opacity:1}100%{opacity:0;transform:scale(1.2)}}@keyframes heart-spark{0%,15%{opacity:0;transform:translate(-50%,-50%) scale(.3)}40%{opacity:.9}100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(.6)}}@keyframes heart-overlay{0%,100%{opacity:0}20%,70%{opacity:1}}@media(prefers-reduced-motion:reduce){.heart-spark{display:none}.opening-heart-effect{background:transparent}.opening-heart{font-size:80px}}
.distance-effect{position:fixed;inset:0;z-index:30;pointer-events:none;display:grid;place-items:center;background:#f4f0e8d9;backdrop-filter:blur(4px);animation:distance-overlay 2.5s both}.distance-stage{position:relative;width:min(600px,90vw);height:300px;display:grid;place-items:center}.travelling-heart{position:absolute;top:50px;font-size:90px;line-height:1;color:#ce7786;filter:drop-shadow(0 6px 20px #c96d7c30)}.travelling-heart small{display:block;text-align:center;font-size:16px;color:var(--green);margin-top:15px;line-height:1.5}.from-beijing{left:8%;animation:heart-travel-left 2.5s both}.from-zhejiang{right:8%;animation:heart-travel-right 2.5s both}.meeting-heart{position:absolute;top:36px;left:50%;font-size:120px;color:#c95872;transform:translateX(-50%);animation:hearts-meet 2.5s both;filter:drop-shadow(0 0 35px #e4a3ae)}.distance-stage p{position:absolute;bottom:20px;color:var(--green);font:24px 'Songti SC',serif;animation:distance-caption 2.5s both;text-align:center;width:100%}@keyframes heart-travel-left{0%{opacity:0;transform:translateX(-30px)}15%{opacity:1}55%{opacity:1;left:calc(50% - 50px);transform:scale(.9)}65%,100%{opacity:0;left:calc(50% - 50px)}}@keyframes heart-travel-right{0%{opacity:0;transform:translateX(30px)}15%{opacity:1}55%{opacity:1;right:calc(50% - 50px);transform:scale(.9)}65%,100%{opacity:0;right:calc(50% - 50px)}}@keyframes hearts-meet{0%,50%{opacity:0;transform:translateX(-50%) scale(.5)}65%{opacity:1;transform:translateX(-50%) scale(1.15)}78%{opacity:1;transform:translateX(-50%) scale(1)}100%{opacity:0;transform:translateX(-50%) scale(1.3)}}@keyframes distance-caption{0%,45%{opacity:0;transform:translateY(12px)}65%,90%{opacity:1;transform:translateY(0)}100%{opacity:0}}@keyframes distance-overlay{0%,100%{opacity:0}12%,85%{opacity:1}}@media(prefers-reduced-motion:reduce){.travelling-heart{display:none}.meeting-heart{opacity:1}.distance-stage p{opacity:1}}
/* A consistent cream-paper birthday album, without changing the layout. */
:root{--paper:#f8f4ed;--ink:#3c4438;--muted:#7b8074;--green:#52684c;--line:#e1dfd1;--rose:#c47e86}body{background:radial-gradient(ellipse at 90% 0,#f3e5df80,transparent 45%),radial-gradient(ellipse at 0 75%,#e9eddc70,transparent 40%),var(--paper)}header{border-bottom-color:#d8decc}.brand{color:var(--green)}nav a{transition:color .2s}nav a:hover{color:var(--rose)}#music-toggle{border:1px solid #d6ddca;border-radius:24px;padding:7px 12px;background:#fffcf7;color:var(--green);font-size:12px;white-space:nowrap}#music-toggle[aria-pressed="true"]{background:#e8eedf;border-color:#a5b393}h1,h2{letter-spacing:1px;text-wrap:balance}.eyebrow{color:#7b8b68;letter-spacing:2px}.primary{border:1px solid #52684c;border-radius:12px;box-shadow:0 5px 15px #52684c18;transition:transform .2s,box-shadow .2s;background:linear-gradient(135deg,#607654,#4b6146)}.primary:hover{transform:translateY(-2px);box-shadow:0 8px 20px #52684c25}.primary:active{transform:translateY(1px)}.outline{border-color:#c1ccb2;border-radius:11px;background:#fffdf780;transition:background .2s,transform .2s}.outline:hover:not(:disabled){background:#eaf0e2;transform:translateY(-1px)}.polaroid{background:#fffefa;border:1px solid #efe9dd;box-shadow:0 4px 8px #484b3505,0 15px 35px #484b3515;border-radius:3px}.polaroid img{border-radius:2px}figcaption{color:#66755b}.hero-photo:before{background:#d5dcbaa8}.scribble{color:var(--rose)}.stamp{border-color:#c99595;color:#bc858b}.note{background:linear-gradient(145deg,#f4eddf,#ece6d8);border:1px solid #e4dac5;border-left:3px solid #aebb94;border-radius:4px 12px 12px 4px;box-shadow:0 4px 12px #7c73520a;transition:background .25s,box-shadow .25s}.note:hover{box-shadow:0 7px 18px #7c735218}.note.open{background:linear-gradient(145deg,#edf1e2,#e4eacd);border-color:#c9d3b7}.note span{color:#8d957f}.coupon-card{border-color:#b5c4a1;border-radius:12px;overflow:hidden;box-shadow:0 4px 16px #52684c0c}.coupons .coupon-card:nth-child(n){background:linear-gradient(135deg,#edf1e3,#e4ead7)}.coupons .save-coupon{color:#5e7550;border-color:#b5c4a1}.coupons .coupon-card>button[data-coupon]>span{color:#8c9f76}.date-choices .selected{background:linear-gradient(135deg,#607654,#4b6146);border-color:var(--green);box-shadow:0 5px 15px #52684c15}.journey-dot{background:#edf0e4;color:#758265;border:1px solid #dfe5d3;border-radius:8px}.journey-dot.active{background:#52684c;border-color:#52684c;box-shadow:0 4px 12px #52684c1a}.journey-dot:disabled{background:#f1f0e8;border-color:#e8e6dc;color:#a5a799}.envelope{border-radius:6px;background:linear-gradient(145deg,#f2eadb,#e9e1d0);border-color:#d8cbb1;box-shadow:0 8px 25px #84735012;transition:transform .2s}.envelope:hover{transform:translateY(-3px)}.envelope strong{color:#5d694e}.letter{background:repeating-linear-gradient(0deg,#a3926f03 0 1px,transparent 1px 5px),#fffdf7;border:1px solid #ece4d4;border-top:3px solid #a9b78e;border-radius:6px;box-shadow:0 10px 40px #6b745b10}.letter h3{color:var(--green)}.signature{color:#6c7b59}.signature time{font-family:'PingFang SC',sans-serif;font-size:13px;letter-spacing:1px}dialog{border:1px solid #e4dece;border-radius:18px;background:linear-gradient(145deg,#fffdf7,#f7f2e7);box-shadow:0 25px 70px #35442c33}dialog::backdrop{background:#2632239c;backdrop-filter:blur(7px)}.close{color:#79866b;background:#fffdf2;border:1px solid #e8e4d6}.visit-yes{background:linear-gradient(135deg,#e26d75,#c9495d);box-shadow:0 8px 24px #d55d6b38}.visit-dialog h3{color:#ac626e}.visit-no{border-color:#dedaca;background:#edeadf}.cake-top{background:#efd6bd}.cake-body{background:linear-gradient(180deg,#f2dfc9,#e8cdb1);color:#9e7e5e}.ending span{color:#aa7380}#restart{border-radius:8px;background:#fffdf680}#toast{background:#52684cf2;border-radius:14px;border:1px solid #799069}.album-caption{font-family:'Songti SC',serif;font-size:17px}.hint{color:#929783}@media(max-width:760px){nav{gap:10px;font-size:11px}#music-toggle{font-size:11px;padding:6px 8px}.eyebrow{letter-spacing:1.2px}.album-caption{font-size:16px}.journey-dot{border-radius:6px}}@media print{#music-toggle{display:none}}
.birthday-entry{min-height:100svh;display:grid;place-items:center;padding:35px 24px;background:radial-gradient(circle at 50% 30%,#f5e1df80,transparent 45%)}.entry-card{text-align:center;max-width:650px;width:100%;padding:45px 25px}.entry-card .eyebrow{font-size:11px;margin-bottom:20px}.entry-heart{font:110px Georgia,serif;color:#c47e86;line-height:1.2;margin-bottom:22px;animation:entry-heartbeat 2.5s ease-in-out infinite}.entry-card h1{font-size:clamp(32px,5vw,48px);line-height:1.6;letter-spacing:1px}.entry-card p{margin:20px 0;color:var(--muted)}.entry-card .primary{font-size:18px;padding:18px 38px;min-width:230px}.entry-card small{display:block;font-size:12px;color:var(--muted);margin-top:16px}@keyframes entry-heartbeat{50%{transform:scale(1.06)}}@media print{.birthday-entry{display:none!important}}
.save-photo-hint{margin:20px 0 10px;padding:20px 14px;border:2px solid #b8c99f;border-radius:12px;background:#e8efdc;color:#425d37;text-align:center}.save-photo-hint strong{display:block;font-size:24px;line-height:1.6}.save-photo-hint span{display:block;font-size:18px;line-height:1.8;margin-top:5px}@media(max-width:760px){.save-photo-hint strong{font-size:22px}.save-photo-hint span{font-size:17px}}
.visit-dialog>.visit-challenge{font-size:25px;font-weight:800;line-height:1.65;color:#bd4159;background:#f9e2e5;border:2px dashed #db8896;border-radius:12px;padding:16px 12px;margin:20px 0 12px;box-shadow:0 5px 16px #c9495d12}@media(max-width:760px){.visit-dialog>.visit-challenge{font-size:22px;padding:14px 10px}}
