:root{color:#2f2c28;background:#f3f1ed;font-family:"Noto Serif SC",Songti SC,STSong,"Source Han Serif SC",Georgia,serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--gold: #b9904b;--soft-gold: #d7b264;--paper: #fff9ef;--ink: #312f2b;--title-ink: #675233;--title-gold: #a97c35;--muted: #726554;--sage: #9aaa83;--blush: #e8b8a7;--morning-blue: #b9cddd;--cat-greeting-ink: rgba(103, 70, 32, .84);--scene-countdown-ink: #155e63;--safe-bottom: max(22px, env(safe-area-inset-bottom))}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;min-height:100%;margin:0;overflow:hidden}button{font:inherit;-webkit-tap-highlight-color:transparent}.page-shell{min-height:100svh;padding:0;background:radial-gradient(circle at 18% 6%,rgba(255,255,255,.98),transparent 34%),radial-gradient(circle at 12% 58%,rgba(154,170,131,.1),transparent 30%),radial-gradient(circle at 86% 20%,rgba(185,205,221,.2),transparent 28%),radial-gradient(circle at 78% 82%,rgba(214,202,194,.1),transparent 28%),linear-gradient(156deg,#fcfcf9f0,#eff0edd6 58%,#f7f6f2eb),url(/assets/birthday/bg-paper-light.webp) center / cover no-repeat,#f3f1ed;overflow:hidden;position:relative;isolation:isolate;touch-action:pan-y;overscroll-behavior:none}.page-shell:before,.page-shell:after{content:"";position:fixed;pointer-events:none;border:1px solid rgba(185,144,75,.28);border-radius:999px;inset:auto auto -8vh -18vw;width:82vw;height:32vh;transform:rotate(-10deg)}.page-shell:after{inset:6vh -34vw auto auto;width:72vw;height:30vh;transform:rotate(18deg);opacity:.5}.page-shell:has(.card-stage[data-active-act=garden]):before{border-color:#b9904b1f;opacity:.36}.page-shell:has(.card-stage[data-active-act=wish]){background:#f6f2e9}.page-shell:has(.card-stage[data-active-act=wish]):before,.page-shell:has(.card-stage[data-active-act=wish]):after,.page-shell:has(.card-stage[data-active-act=catWindow]):before,.page-shell:has(.card-stage[data-active-act=catWindow]):after{opacity:0}.page-shell:has(.card-stage[data-active-act=catWindow]){background:#e9dece}.card-stage{width:100%;min-height:100svh;position:relative;z-index:1;overflow:clip;touch-action:pan-y;-webkit-user-select:none;user-select:none}.scene-wrap{width:100%;height:100svh;min-height:100svh;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.scene-wrap canvas{display:block;width:100%!important;height:100%!important;touch-action:none}.copy-panel{position:absolute;inset:auto 0 0;text-align:center;min-height:clamp(252px,34svh,340px);padding:clamp(42px,7svh,72px) clamp(20px,5vw,56px) var(--safe-bottom);display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:0;background:linear-gradient(180deg,#faf4ea00,#faf4ea4d 24%,#faf4eae6 66%,#faf4eafa);pointer-events:none;z-index:3;contain:layout paint;transition:opacity .52s cubic-bezier(.2,.72,.18,1),transform .52s cubic-bezier(.2,.72,.18,1)}.copy-panel>*{pointer-events:auto}.wish-entry-panel{position:absolute;inset:auto 0 0;z-index:3;min-height:clamp(132px,18svh,172px);padding:36px 20px var(--safe-bottom);display:flex;align-items:flex-end;justify-content:center;pointer-events:none;background:linear-gradient(180deg,#faf4ea00,#faf4ea70 56%,#faf4eae6)}.wish-entry-panel>*{pointer-events:auto}.wish-entry-button-shell{display:inline-flex;animation:wish-entry-button-in .36s cubic-bezier(.2,.78,.22,1) both}.garden-awaken-button,.blessing-button.wish-entry-button{--ceremony-stone-edge: rgba(165, 132, 82, .56);--ceremony-stone-ink: #927149;--ceremony-stone-inlay: rgba(174, 139, 86, .28);position:relative;isolation:isolate;border:1px solid var(--ceremony-stone-edge);color:var(--ceremony-stone-ink);background:linear-gradient(145deg,#fffcf5fa,#f4ebdbfa 52%,#e5d7befa);box-shadow:inset 0 1px #ffffffc7,inset 0 -2px 5px #85653c1a,0 5px 12px #634a2a1a,0 0 0 2px #fffcf447;text-shadow:0 1px 0 rgba(255,255,255,.62),0 1px 2px rgba(112,83,49,.08)}.blessing-button.wish-entry-button{width:106px;min-width:106px;min-height:40px;margin-top:0;padding:0 14px;overflow:hidden;border-radius:999px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-size:14px;font-weight:500;letter-spacing:.14em;text-indent:.14em;transition:transform .22s cubic-bezier(.2,.76,.22,1),border-color .22s ease,box-shadow .22s ease,background .22s ease}.blessing-button.wish-entry-button:before{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;z-index:1;border:1px solid var(--ceremony-stone-inlay);border-radius:999px;box-shadow:inset 0 0 0 1px #ffffff75;pointer-events:none}.blessing-button.wish-entry-button:hover{border-color:#9f7c49ad;background:linear-gradient(145deg,#fffdf8fc,#f7efe0fc 52%,#eadcc3fc);box-shadow:inset 0 1px #ffffffd6,inset 0 -2px 5px #85653c14,0 6px 15px #634a2a21,0 0 0 2px #fffcf45c}.garden-entry-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:flex-end;justify-content:center;padding-bottom:calc(var(--safe-bottom) + clamp(48px,7.1svh,64px));pointer-events:none}.garden-entry-panel>*{pointer-events:auto}.garden-entry-panel .scene-swipe-hint{position:absolute;right:0;bottom:var(--safe-bottom);left:0;margin:0 auto}.garden-awaken-button{--awaken-size: clamp(76px, 20vw, 80px);width:var(--awaken-size);height:var(--awaken-size);-moz-appearance:none;appearance:none;-webkit-appearance:none;margin:0;padding:0;border-radius:50%;display:inline-grid;place-items:center;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:transform .22s cubic-bezier(.2,.76,.22,1),border-color .22s ease,box-shadow .22s ease,background .22s ease}.garden-awaken-button:before,.garden-awaken-button:after{content:"";position:absolute;border-radius:inherit;pointer-events:none}.garden-awaken-button:before{top:5px;right:5px;bottom:5px;left:5px;z-index:1;border:1px solid var(--ceremony-stone-inlay);box-shadow:inset 0 0 0 1px #ffffff75}.garden-awaken-button:after{top:-7px;right:-7px;bottom:-7px;left:-7px;z-index:-2;border:1px solid rgba(165,132,82,.2);box-shadow:0 0 16px #85653c1a;opacity:.3;transform:scale(.94);will-change:transform,opacity;animation:garden-awaken-breathe 2.8s ease-in-out infinite}.garden-awaken-button span{position:relative;z-index:2;display:block;padding-left:.14em;font-size:clamp(16.5px,4.45vw,18px);line-height:1;font-weight:500;letter-spacing:.14em}.garden-awaken-button:hover{border-color:#9f7c49ad;background:linear-gradient(145deg,#fffdf8fc,#f7efe0fc 52%,#eadcc3fc);box-shadow:inset 0 1px #ffffffd6,inset 0 -2px 5px #85653c14,0 6px 15px #634a2a21,0 0 0 2px #fffcf45c;transform:translateY(-1px) scale(1.015)}.garden-awaken-button:active,.blessing-button.wish-entry-button:active{box-shadow:inset 0 2px 7px #8f672d17,0 4px 12px #8f672d14,0 0 20px #dcb4651a;transform:translateY(1px) scale(.965)}.garden-awaken-button:focus-visible,.blessing-button.wish-entry-button:focus-visible{outline:2px solid rgba(165,132,82,.72);outline-offset:6px}.wish-final-blessing{position:absolute;inset:0 auto 0 50%;width:min(100%,calc(100svh * 390 / 844));height:100svh;z-index:3;pointer-events:none;transform:translate(-50%);overflow:hidden}.wish-final-copy{--blessing-ease: cubic-bezier(.2, .76, .22, 1);--blessing-ink: #765a32;position:absolute;top:17%;right:7.5%;width:49%;padding:0;color:var(--blessing-ink);text-align:left;contain:layout paint}.wish-final-name{width:max-content;margin:0;overflow:hidden;color:var(--blessing-ink);font-size:clamp(11.5px,3vw,12px);line-height:1;font-weight:500;letter-spacing:.3em;writing-mode:vertical-rl;text-orientation:upright}.wish-final-name span{display:block;opacity:0;transform:translateY(115%);animation:wish-copy-rise .62s var(--blessing-ease) .18s forwards}.wish-final-copy h1{margin:0;display:flex;flex:0 0 auto;flex-direction:column;align-items:center;gap:.14em;color:var(--blessing-ink);font-size:clamp(24px,3.1svh,26px);line-height:1;font-weight:450;letter-spacing:0;text-shadow:0 8px 22px rgba(143,103,45,.09);white-space:normal;animation:wish-title-settle .52s var(--blessing-ease) both}.wish-final-title-character{display:inline-block;opacity:1;transform:none;animation:none}.wish-final-vertical-composition{display:flex;flex-direction:row-reverse;align-items:flex-start;justify-content:flex-start;gap:20px;padding-right:1px}.wish-final-message{margin:0;flex:0 0 auto;color:var(--blessing-ink);font-size:clamp(11.5px,3vw,12px);line-height:1.05;letter-spacing:.15em;text-shadow:0 2px 12px rgba(255,252,245,.72)}.wish-final-message-visual{display:flex;flex-direction:row-reverse;align-items:flex-start;gap:17px}.wish-final-message-line{display:block;writing-mode:vertical-rl;text-orientation:upright;opacity:0;clip-path:inset(0 0 100% 0);transform:translateY(10px);animation:wish-message-unveil .62s var(--blessing-ease) forwards}.wish-final-message-line.is-1{margin-top:0;animation-delay:.93s}.wish-final-message-line.is-2{margin-top:0;word-spacing:-.3em;animation-delay:1.07s}.wish-final-blessing[data-blessing-replay=true] .wish-final-name span,.wish-final-blessing[data-blessing-replay=true] .wish-final-title-character,.wish-final-blessing[data-blessing-replay=true] .wish-final-message-line{opacity:1;clip-path:none;transform:none;animation:none}.wish-countdown-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none}.wish-countdown-panel .scene-swipe-hint{position:absolute;right:0;bottom:var(--safe-bottom);left:0;margin:0 auto}.cat-scene-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none}.cat-greeting-hint{position:absolute;right:0;bottom:calc(var(--safe-bottom) + 6px);left:0;margin:0 auto;color:var(--cat-greeting-ink);font-size:clamp(16px,4.5vw,18px);line-height:1;font-weight:500;letter-spacing:.04em;text-align:center;text-indent:.04em;text-shadow:0 2px 12px rgba(255,248,236,.58);animation:none;transform:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.card-stage.is-wish-ceremony-running .copy-panel{opacity:0;transform:translateY(18px);pointer-events:none}.card-stage.is-wish-ceremony-running .copy-panel>*{pointer-events:none}.gold-rule{width:min(170px,48vw);height:22px;display:grid;place-items:center;margin-bottom:4px;color:var(--gold)}.gold-rule:before,.gold-rule:after{content:"";width:66px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.gold-rule:after{background:linear-gradient(90deg,var(--gold),transparent)}.gold-rule span{position:absolute;width:9px;height:9px;transform:rotate(45deg);background:var(--gold)}.scene-copy{display:flex;flex-direction:column;align-items:center}h1{margin:0;color:var(--title-ink);background:linear-gradient(180deg,var(--title-ink) 0%,var(--title-gold) 94%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:clamp(38px,11vw,58px);line-height:1.08;font-weight:500;letter-spacing:0;text-shadow:0 7px 22px rgba(93,65,28,.08)}.birthday-title{margin:12px 0 0;color:var(--gold);font-size:clamp(20px,5.8vw,28px);line-height:1.28;font-weight:500;letter-spacing:0}.primary-wish,.revealed-wish{margin:12px auto 0;width:min(34em,calc(100vw - 80px));max-width:100%;color:var(--ink);font-family:"Noto Serif SC",Songti SC,STSong,"Source Han Serif SC",serif;font-size:clamp(15px,4vw,18px);line-height:1.85;letter-spacing:0;text-wrap:pretty}.revealed-wish{min-height:3.7em;color:var(--muted);opacity:0;transform:translateY(8px);transition:opacity .72s ease,transform .72s ease}.revealed-wish.is-visible{opacity:1;transform:translateY(0)}.card-stage[data-active-act=wish][data-wish-lit=true] .revealed-wish.is-visible{color:#6b5840;text-shadow:0 0 16px rgba(255,230,166,.26),0 8px 28px rgba(143,103,45,.1)}.blessing-button{margin-top:6px;min-width:164px;min-height:44px;border:1px solid rgba(185,144,75,.48);border-radius:999px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;color:#604819;background:#fffbf4b8;box-shadow:inset 0 0 0 1px #ffffff94,0 14px 40px #8f672d24,0 0 0 6px #e8b8a70f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;line-height:1;white-space:nowrap;touch-action:manipulation;transition:transform .18s ease,background .18s ease,border-color .18s ease}.blessing-button:hover{background:#fffcf7eb;border-color:#b9904b9e}.blessing-button:active{transform:translateY(1px) scale(.99)}.blessing-button:focus-visible{outline:2px solid rgba(185,144,75,.75);outline-offset:3px}.scene-swipe-hint{width:37.44px;height:14.04px;flex:0 0 14.04px;margin-top:16px;display:grid;place-items:center;color:var(--scene-countdown-ink);pointer-events:none;animation:none}.scene-countdown-arrow{width:37.44px;height:auto;display:block;overflow:visible;opacity:.52}.scene-countdown-arrow__fill{fill:currentColor;stroke:none;animation-name:scene-countdown-fill;animation-duration:var(--scene-countdown-duration)!important;animation-timing-function:linear;animation-fill-mode:both;animation-iteration-count:1;transform-box:fill-box}.scene-countdown-arrow__fill--left{transform-origin:right center}.scene-countdown-arrow__fill--right{transform-origin:left center}.scene-swipe-hint[data-paused=true] .scene-countdown-arrow__fill{animation-play-state:paused}.scene-swipe-hint[data-complete=true] .scene-countdown-arrow__fill{animation:none!important;transform:scaleX(1)}.scene-countdown-arrow__outline{fill:none;stroke:currentColor;stroke-width:1.25px;stroke-linecap:butt;stroke-linejoin:round;vector-effect:non-scaling-stroke}.static-scene{height:100%;min-height:390px;position:relative;display:grid;place-items:center;perspective:800px}.static-wish-scene{overflow:hidden}.static-wish-scene img,.static-cat-reading-room img{width:100%;height:100svh;display:block;object-fit:cover;object-position:center}.static-wish-scene.is-pullback img{--wish-pullback-width: calc(100svh * 590 / 844);position:absolute;top:0;left:max(0px,calc((100vw - var(--wish-pullback-width)) / 2));width:var(--wish-pullback-width);max-width:none;object-fit:fill}.static-cat-reading-room{overflow:hidden}.qa-mobile-viewport{position:fixed;inset:0 auto auto 0;overflow:clip;transform:scale(.42654);transform-origin:top left}.qa-mobile-viewport,.qa-mobile-viewport .card-stage,.qa-mobile-viewport .scene-wrap{width:390px;height:844px;min-height:844px}.qa-mobile-viewport .copy-panel{width:390px;min-height:338px;padding-right:18px;padding-bottom:22px;padding-left:18px}.qa-mobile-viewport .wish-entry-panel,.qa-mobile-viewport .wish-final-blessing{width:390px}.qa-mobile-viewport .wish-final-copy{top:17%;right:7.5%;width:49%}.qa-mobile-viewport .wish-final-copy h1{font-size:25px}.qa-mobile-viewport .wish-final-name,.qa-mobile-viewport .wish-final-message{font-size:12.2px}.qa-mobile-viewport h1{font-size:41px}.qa-mobile-viewport .birthday-title{font-size:22px}.qa-mobile-viewport .primary-wish,.qa-mobile-viewport .revealed-wish{width:min(23em,100%);font-size:15px;line-height:1.72}.static-card{position:absolute;width:38%;height:60%;top:16%;background:linear-gradient(145deg,#fffaf1,#efe0ca);border:1px solid rgba(185,144,75,.38);box-shadow:0 24px 55px #694b2324}.static-card-left{left:11%;transform:rotateY(-20deg);transform-origin:right center}.static-card-center{width:42%;left:29%;border-radius:52% 52% 0 0;transform:translateY(-4%)}.static-card-right{right:11%;transform:rotateY(20deg);transform-origin:left center}.static-cat{position:absolute;inset:32% auto auto 39%;width:46px;height:82px;border:2px solid var(--gold);border-top-color:transparent;border-radius:48% 48% 42% 42%}.static-cat:before{content:"";position:absolute;inset:-13px 7px auto;height:28px;border:solid var(--gold);border-width:2px 2px 0 2px;clip-path:polygon(0 100%,22% 0,50% 58%,78% 0,100% 100%)}.static-cake{position:absolute;width:132px;height:54px;top:57%;border-radius:999px 999px 28px 28px;background:#fff8ec;border-bottom:8px solid #d5ac64;box-shadow:0 18px 42px #6f502626}.static-flame{position:absolute;left:calc(50% - 5px);top:-38px;width:10px;height:30px;border-radius:999px;background:linear-gradient(#fff9bf,#f0b34e);box-shadow:0 0 24px #f0b34ee6;opacity:0;transform:scale(.7);transition:opacity 1.6s ease,transform 1.6s ease}.static-scene.is-opened .static-flame{opacity:1;transform:scale(1)}@media(min-width:700px){.page-shell{padding:0}.card-stage{min-height:100svh}.scene-wrap{height:100svh}.copy-panel{padding-bottom:max(28px,env(safe-area-inset-bottom))}}@media(max-height:760px){.garden-entry-panel{padding-bottom:calc(var(--safe-bottom) + 40px)}.birthday-title{margin-top:12px}.primary-wish,.revealed-wish{margin-top:8px;line-height:1.68}.copy-panel{min-height:clamp(224px,38svh,300px);padding-top:38px;padding-bottom:max(16px,env(safe-area-inset-bottom))}.revealed-wish{min-height:3.1em}}@media(max-width:520px){.copy-panel{min-height:clamp(276px,40svh,348px);padding-right:max(18px,env(safe-area-inset-right));padding-left:max(18px,env(safe-area-inset-left))}h1{font-size:clamp(34px,10.5vw,48px)}.birthday-title{font-size:clamp(19px,5.4vw,24px)}.primary-wish,.revealed-wish{width:min(23em,100%);font-size:clamp(14px,3.85vw,16px);line-height:1.72}.blessing-button{min-width:156px;min-height:46px}}@keyframes scene-copy-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes wish-entry-button-in{0%{opacity:0;transform:translateY(7px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes wish-copy-rise{0%{opacity:0;transform:translateY(115%)}to{opacity:1;transform:translateY(0)}}@keyframes wish-title-settle{0%{transform:translateY(8px) scale(.985)}to{transform:translateY(0) scale(1)}}@keyframes wish-message-unveil{0%{opacity:0;clip-path:inset(0 0 100% 0);transform:translateY(10px)}to{opacity:1;clip-path:inset(0 0 0 0);transform:translateY(0)}}@keyframes scene-countdown-fill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes garden-awaken-breathe{0%,to{opacity:.26;transform:scale(.94)}50%{opacity:.48;transform:scale(1.05)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}.scene-swipe-hint{animation:none!important}.scene-copy,.revealed-wish,.garden-awaken-button,.garden-awaken-button:after,.wish-entry-button-shell,.blessing-button,.scene-swipe-hint,.wish-final-copy,.wish-final-copy h1,.wish-final-name span,.wish-final-title-character,.wish-final-message-line{transform:none!important}.wish-final-copy,.wish-final-name span,.wish-final-title-character,.wish-final-message-line{opacity:1!important;filter:none!important;clip-path:none!important}}
