@font-face{font-family:Ryuryu;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/2405-2@1.0/Ownglyph_ryurue-Rg.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Cafe24Ssurround;src:url(https://cdn.jsdelivr.net/gh/fonts-archive/Cafe24Ssurround/Cafe24Ssurround.woff2) format("woff2"),url(https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2105_2@1.0/Cafe24Ssurround.woff) format("woff");font-weight:400;font-display:swap}:root{--cream: #F7F1E6;--text-cream: #FFF4DC;--brown: #4A3B32;--pink: #F9C9D3;--pink-deep: #F3B7C6;--yellow: #F6E7A6;--green: #CFE3B4;--white: #FFFFFF;--night: #4A3F7C;--line: rgba(74, 59, 50, .14);--font-hand: "Ryuryu", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--font-round: "Cafe24Ssurround", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--card-w: 420px;--ease-pop: cubic-bezier(.34, 1.56, .64, 1);--ease-hero: cubic-bezier(.22, 1.25, .36, 1);--ease-settle: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-cloth: cubic-bezier(.25, .9, .3, 1);--ease-fall: cubic-bezier(.55, 0, 1, .45);--ease-inout: cubic-bezier(.45, 0, .55, 1)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--night);color:var(--brown);font-family:var(--font-round);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}em,i{font-style:normal}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit;color:inherit}button{border:0;background:none;padding:0;cursor:pointer}.hand{font-family:var(--font-hand);font-weight:400}.shell{position:relative;max-width:var(--card-w);margin:0 auto;min-height:calc(var(--vh, 1vh) * 100);display:flex;flex-direction:column;background:var(--cream);overflow:hidden}.shell--scene{height:calc(var(--vh, 1vh) * 100);background:var(--night);color:var(--text-cream)}@supports (height: 100dvh){.shell{min-height:100dvh}.shell--scene{height:100dvh}}.topbar{position:absolute;left:0;right:0;top:0;z-index:6;display:flex;justify-content:space-between;align-items:center;padding:14px 64px 0 18px}.topbar__price{font-size:13px;opacity:.85}.badge{display:inline-block;padding:4px 12px;border-radius:999px;background:var(--yellow);color:var(--brown);font-size:13px}.stage{position:absolute;inset:0;z-index:1;overflow:hidden;background:var(--night) url(/bg.jpg) center / cover no-repeat}.stage__canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:2;touch-action:none}.fx{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.fx__moon{position:absolute;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#fff0be80,#ffecaa29 45%,#ffecaa00 70%);animation:fx-breathe 7s var(--ease-inout) infinite}@keyframes fx-breathe{0%,to{transform:translate(-50%,-50%) scale(.95);opacity:.75}50%{transform:translate(-50%,-50%) scale(1.05);opacity:1}}.fx__lantern{position:absolute;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#ffd6828c,#ffd6822e 40%,#ffd68200 70%);animation:fx-pulse 2.6s var(--ease-inout) infinite}@keyframes fx-pulse{0%,to{opacity:.55}50%{opacity:1}}.fx__star{position:absolute;transform:translate(-50%,-50%);animation:fx-twinkle 3s var(--ease-inout) infinite}@keyframes fx-twinkle{0%,to{opacity:.15;transform:translate(-50%,-50%) scale(.7)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}}.fx__seed{position:absolute;transform:translate(-50%,-50%);animation:fx-seed 12s var(--ease-inout) infinite}@keyframes fx-seed{0%{transform:translate(-50%,-50%) rotate(-8deg);opacity:0}10%{opacity:.9}50%{transform:translate(calc(-50% + 18px),calc(-50% - 60px)) rotate(10deg)}90%{opacity:.9}to{transform:translate(calc(-50% - 8px),calc(-50% - 130px)) rotate(-6deg);opacity:0}}.fx__fog{position:absolute;left:-20%;width:140%;height:14%;transform:translateY(-50%);background:linear-gradient(to bottom,#fff0,#ffffff42 45%,#fff0);mask-image:linear-gradient(to right,transparent,#000 20%,#000 80%,transparent);-webkit-mask-image:linear-gradient(to right,transparent,#000 20%,#000 80%,transparent)}.fx__fog--a{animation:fx-fog 26s var(--ease-inout) infinite}.fx__fog--b{animation:fx-fog 34s var(--ease-inout) infinite reverse;opacity:.8}@keyframes fx-fog{0%,to{transform:translate(-3%,-50%)}50%{transform:translate(3%,-50%)}}.bojagi{position:absolute;left:0;right:0;top:calc(var(--feet, 60%) - 210px);z-index:4;display:flex;flex-direction:column;align-items:center;gap:18px;pointer-events:none}.bojagi__hit{display:block;pointer-events:auto}.bojagi__wrap{position:relative;width:150px;height:150px;perspective:700px;transform-style:preserve-3d;transform:rotate(45deg);animation:bojagi-idle 3.4s var(--ease-inout) infinite}@keyframes bojagi-idle{0%,to{transform:rotate(45deg) translateY(0)}50%{transform:rotate(47.5deg) translateY(-5px)}}.bojagi.is-open .bojagi__wrap{animation:none;transform:rotate(45deg)}.bojagi__base{position:absolute;inset:8px;border-radius:10px;background:var(--pink)}.bojagi__glow{position:absolute;inset:-40px;border-radius:50%;background:radial-gradient(circle,#fffcebf2,#ffecaa8c,#ffecaa00 70%);opacity:0;transform:scale(.4);transition:opacity .5s var(--ease-settle),transform .6s var(--ease-settle)}.bojagi.is-open .bojagi__glow{opacity:1;transform:scale(1.2)}.bojagi__flap{position:absolute;inset:8px;backface-visibility:hidden;transition:transform .48s var(--ease-cloth)}.bojagi__flap--n{clip-path:polygon(0 0,100% 0,50% 50%);transform-origin:50% 0;background:#f2b4c4}.bojagi__flap--e{clip-path:polygon(100% 0,100% 100%,50% 50%);transform-origin:100% 50%;background:#fad2db}.bojagi__flap--s{clip-path:polygon(100% 100%,0 100%,50% 50%);transform-origin:50% 100%;background:#f6c3d0}.bojagi__flap--w{clip-path:polygon(0 100%,0 0,50% 50%);transform-origin:0 50%;background:#fbdce3}.bojagi__flap:after{content:"";position:absolute;inset:0;background:linear-gradient(45deg,transparent calc(50% - .8px),rgba(255,255,255,.55) calc(50% - .8px),rgba(255,255,255,.55) calc(50% + .8px),transparent calc(50% + .8px)),linear-gradient(-45deg,transparent calc(50% - .8px),rgba(255,255,255,.55) calc(50% - .8px),rgba(255,255,255,.55) calc(50% + .8px),transparent calc(50% + .8px))}.bojagi.is-open .bojagi__flap--n{transform:rotateX(160deg)}.bojagi.is-open .bojagi__flap--e{transform:rotateY(-160deg)}.bojagi.is-open .bojagi__flap--s{transform:rotateX(-160deg)}.bojagi.is-open .bojagi__flap--w{transform:rotateY(160deg)}.bojagi__knot{position:absolute;left:50%;top:50%;width:30px;height:30px;transform:translate(-50%,-50%) rotate(-45deg);transition:transform .35s var(--ease-out),opacity .3s var(--ease-out)}.bojagi__knot:before{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;border-radius:50%;background:var(--white);transform:translate(-50%,-50%)}.bojagi__knot span{position:absolute;top:0;width:13px;height:20px;border-radius:50% 50% 40% 40%;background:var(--white)}.bojagi__knot span:first-child{left:2px;transform:rotate(-30deg)}.bojagi__knot span:last-child{right:2px;transform:rotate(30deg)}.bojagi.is-open .bojagi__knot{transform:translate(-50%,-50%) rotate(-45deg) scale(0);opacity:0}.bojagi.is-open{animation:bojagi-out .38s var(--ease-out) .52s both}.bojagi.is-open .bojagi__hit{pointer-events:none}@keyframes bojagi-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.12)}}.bojagi__hint{margin:0;font-size:15px;color:var(--text-cream);text-shadow:0 0 10px rgba(74,63,124,.6);animation:hint 1.6s var(--ease-inout) infinite}@keyframes hint{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(-3px);opacity:1}}.bojagi.is-open .bojagi__hint{animation:hint-out .25s var(--ease-out) both}@keyframes hint-out{to{opacity:0;transform:translateY(6px)}}.particle{position:absolute;z-index:3;pointer-events:none;margin:-10px 0 0 -10px}.particle--leaf{animation:leaf-fall 1.5s linear both}@keyframes leaf-fall{0%{opacity:1;transform:translate(0) rotate(0);animation-timing-function:cubic-bezier(.4,0,1,1)}42%{opacity:1;transform:translate(calc(var(--r) * .5px),130px) rotate(calc(var(--r) * .55deg)) scale(1.08,.86);animation-timing-function:cubic-bezier(0,0,.5,1)}58%{opacity:1;transform:translate(calc(var(--r) * .8px),92px) rotate(calc(var(--r) * .8deg));animation-timing-function:cubic-bezier(.5,0,1,1)}72%{opacity:1;transform:translate(calc(var(--r) * 1.05px),130px) rotate(calc(var(--r) * 1deg)) scale(1.05,.92);animation-timing-function:cubic-bezier(0,0,.5,1)}82%{opacity:1;transform:translate(calc(var(--r) * 1.2px),116px) rotate(calc(var(--r) * 1.1deg));animation-timing-function:cubic-bezier(.5,0,1,1)}90%{opacity:1;transform:translate(calc(var(--r) * 1.3px),130px) rotate(calc(var(--r) * 1.15deg))}to{opacity:0;transform:translate(calc(var(--r) * 1.35px),130px) rotate(calc(var(--r) * 1.15deg))}}.particle--heart{animation:float-up 1.1s var(--ease-settle) both}@keyframes float-up{0%{opacity:0;transform:translateY(0) scale(.4)}20%{opacity:1;transform:translateY(-14px) scale(1.15)}to{opacity:0;transform:translateY(-70px) scale(1)}}.mute{position:absolute;right:14px;top:14px;z-index:7;width:40px;height:40px;border-radius:50%;background:#fff4dc29;display:flex;align-items:center;justify-content:center;transition:transform .2s var(--ease-pop)}.mute:active{transform:scale(.9)}.hero{--actions-h: 22px;position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:0 24px calc(var(--actions-h) + env(safe-area-inset-bottom));text-align:center;color:var(--text-cream);pointer-events:none}.hero>*{pointer-events:auto}.hero__name{margin:0;font-size:70px;line-height:1.05;letter-spacing:.01em;text-shadow:0 0 14px rgba(255,236,190,.55),0 0 2px rgba(255,244,220,.6);min-height:1.05em}.hero__ch{display:inline-block;opacity:0}.hero__name.is-on .hero__ch{animation:ch-in .3s var(--ease-pop) both}@keyframes ch-in{0%{opacity:0;transform:translateY(6px) scale(.75)}to{opacity:1;transform:none}}.hero__greeting{margin:4px 0 0;font-size:39px;line-height:1.2;text-shadow:0 0 12px rgba(255,236,190,.45);opacity:0}.hero__greeting.is-on{animation:rise-hero .6s var(--ease-hero) both}.hero>.hero__hint{position:absolute;left:0;right:0;top:calc(var(--hint-top, 30%) - 40px);width:max-content;max-width:calc(100% - 48px);margin:0 auto;padding:6px 16px;border-radius:999px;background:#ffffff38;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:inset 0 0 0 1px #ffffff40;font-size:22px;line-height:1.2;text-align:center;color:#fff4dc;opacity:0;pointer-events:none;text-shadow:0 1px 2px rgba(40,25,70,.95),0 0 4px rgba(58,44,108,1),0 0 12px rgba(58,44,108,.95),0 0 24px rgba(58,44,108,.8),0 0 10px rgba(255,236,190,.35)}.hero__hint.is-on{animation:hint-in .6s var(--ease-settle) var(--d, 0ms) both,hint-float 3.2s ease-in-out calc(var(--d, 0ms) + .6s) infinite}@keyframes hint-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes hint-float{0%,to{opacity:1;transform:translateY(0)}50%{opacity:.6;transform:translateY(-3px)}}.hero__from{margin:8px 0 0;font-size:24px;line-height:1.2;opacity:0;color:#fff4dc;text-shadow:0 0 14px rgba(40,25,70,.8),0 0 4px rgba(40,25,70,.6)}.hero__from.is-on{animation:rise-soft .5s var(--ease-settle) var(--d, 0ms) both}.hero__extra{margin:10px 0 0;font-size:15px;opacity:0;color:var(--text-cream);background:#4a3f7c47;border-radius:999px;padding:6px 14px}.hero__extra.is-on{animation:rise-soft .5s var(--ease-settle) var(--d, 0ms) both}.hero--actions{--actions-h: 112px}.hero>.hero__actions{position:absolute;left:0;right:0;bottom:0;box-sizing:border-box;padding:10px 24px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0}.hero__actions.is-on{animation:rise-soft .5s var(--ease-settle) var(--d, 0ms) both}.hero__sent{margin:0;font-size:32px;text-shadow:0 0 12px rgba(255,236,190,.45)}.floor-shade{position:absolute;left:0;right:0;bottom:0;height:48%;z-index:4;pointer-events:none;background:linear-gradient(to bottom,#3a2c6c00,#3a2c6c61 40%,#3a2c6c80)}.floor-shade--soft{height:42%;opacity:0;transition:opacity .8s var(--ease-out);background:linear-gradient(to bottom,#3a2c6c00,#3a2c6c38 45%,#3a2c6c57)}.floor-shade--soft.is-on{opacity:1}.hero--landing{top:calc(var(--feet, 60%) + 3%);justify-content:flex-start;gap:0}.hero--landing .title{font-size:34px;line-height:1.15;margin:0;text-shadow:0 0 14px rgba(255,236,190,.5)}.hero--landing .sub{margin:4px 0 0;font-size:14px;opacity:.9}.landing__form{margin-top:14px;width:100%;display:flex;flex-direction:column;gap:8px}.landing__form .input{text-align:center;padding:12px 14px;font-size:15px}.landing__row{display:flex;gap:8px}.landing__row .btn{min-height:46px;font-size:16px}.hero--landing .note{font-size:12px;opacity:.75}@keyframes rise-hero{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes rise-soft{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.rise-hero{opacity:0;animation:rise-hero .6s var(--ease-hero) var(--d, 0ms) both}.rise-soft{opacity:0;animation:rise-soft .5s var(--ease-settle) var(--d, 0ms) both}.btn{display:inline-flex;align-items:center;justify-content:center;width:100%;max-width:300px;min-height:52px;padding:12px 24px;border-radius:999px;cursor:pointer;font-family:var(--font-round);font-size:17px;background:var(--brown);color:var(--white);transition:transform .28s var(--ease-pop),filter .2s}.btn:active{transform:scale(.95);transition-duration:.08s}.btn:disabled{opacity:.5;cursor:default;transform:none}.btn--jelly{position:relative;overflow:hidden;color:var(--brown);background:linear-gradient(180deg,#FBD6DF 0%,var(--pink) 55%,#F2B3C3 100%);box-shadow:inset 0 1px #ffffffb3,0 6px 18px #4a3f7c40}.btn--jelly:before{content:"";position:absolute;left:10%;right:10%;top:5px;height:40%;border-radius:999px;background:linear-gradient(180deg,#ffffffbf,#fff0);pointer-events:none}.btn--cream{background:#fff4dc29;color:var(--text-cream);border:1.5px solid rgba(255,244,220,.55)}.textlink{font-size:15px;color:var(--text-cream);text-decoration:underline;text-underline-offset:4px;opacity:.9;padding:6px 10px}.input,.textarea{width:100%;border:1.5px solid var(--line);border-radius:16px;background:var(--white);color:var(--brown);padding:14px 16px;font-size:16px;outline:none;transition:border-color .2s var(--ease-settle)}.input:focus,.textarea:focus{border-color:var(--pink-deep)}.textarea{resize:none;line-height:1.55}.textarea::placeholder,.input::placeholder{color:#4a3b3266}.counter{font-size:12px;opacity:.6}.counter.is-low{opacity:1;color:#c97a8c}.note{font-size:13px;opacity:.8;text-align:center;margin:0}.sheet{position:fixed;inset:0;z-index:20;pointer-events:none}.sheet__dim{position:absolute;inset:0;background:#281e4673;opacity:0;transition:opacity .3s var(--ease-out)}.sheet__panel{position:absolute;left:50%;bottom:0;width:100%;max-width:var(--card-w);transform:translate(-50%,105%);background:var(--cream);color:var(--brown);border-radius:24px 24px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;box-sizing:border-box;max-height:calc(100% - 24px);overflow-y:auto;transition:transform .42s var(--ease-settle)}.sheet.is-open{pointer-events:auto}.sheet.is-open .sheet__dim{opacity:1}.sheet.is-open .sheet__panel{transform:translate(-50%)}.sheet__grip{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 6px}.sheet__label{font-size:26px;margin:0}.sheet__row{display:flex;justify-content:flex-end;margin-top:-4px}.sheet .btn{max-width:none}.pad{padding:0 20px}.gap{display:flex;flex-direction:column;gap:12px}.btn--ghost{background:transparent;color:var(--brown);border:1.5px solid var(--brown)}.btn--small{min-height:44px;font-size:15px;width:auto;padding:8px 18px}.title{font-family:var(--font-hand)}@media(prefers-reduced-motion:reduce){.bojagi__wrap,.bojagi__hint{animation-duration:.01s;animation-iteration-count:1}}.page{background:var(--cream);color:var(--brown)}.page--center{justify-content:center;align-items:center;text-align:center;padding:24px;gap:14px}.page__top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 0}.page__back{font-size:22px;line-height:1;padding:6px 10px 6px 0}.page__hint{font-size:13px;opacity:.7}.page__body{padding:8px 20px 40px;display:flex;flex-direction:column;gap:18px}.page__title{font-family:var(--font-hand);font-size:34px;margin:6px 0 0;line-height:1.2}.page__actions{margin-top:8px}.page .btn{max-width:none}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:14px;display:flex;justify-content:space-between}.field__count{opacity:.5;font-size:12px}.field__help{font-size:12px;opacity:.6}.preview{position:relative;max-width:var(--card-w);margin:0 auto}.preview .shell--scene{height:calc(var(--vh, 1vh) * 100)}@supports (height: 100dvh){.preview .shell--scene{height:100dvh}}.paybar{position:fixed;left:50%;bottom:0;width:100%;max-width:var(--card-w);transform:translate(-50%);z-index:8;background:var(--cream);color:var(--brown);border-radius:20px 20px 0 0;padding:12px 16px calc(14px + env(safe-area-inset-bottom));animation:rise-soft .5s var(--ease-settle) 2.4s both}.paybar__row{display:flex;gap:8px}.paybar__row .btn{max-width:none}.paybar__edit{flex:0 0 88px;color:var(--brown);border-color:var(--line);background:var(--white)}.paybar__note{margin:8px 0 0;font-size:12px;opacity:.65;text-align:center}.paybar__err{margin:0 0 8px;font-size:13px;color:#c97a8c;text-align:center}.linkbox{width:100%;background:var(--white);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:10px;margin-top:8px}.linkbox__url{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;word-break:break-all;text-align:left;line-height:1.5}.box__actions{display:flex;flex-direction:column;gap:8px}.tabs{display:flex;gap:6px;background:#ffffff8c;border-radius:999px;padding:4px}.tab{flex:1;position:relative;padding:9px 12px;border-radius:999px;font-family:var(--font-round);font-size:15px;color:var(--brown);opacity:.7;transition:background .2s,opacity .2s}.tab.is-on{background:var(--white);opacity:1;box-shadow:0 1px 4px #4a3b321f}.tab__dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--pink-deep);margin-left:6px;vertical-align:2px;box-shadow:0 0 0 3px #f9c9d373}.letters{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.letter{position:relative;background:#fffdf8eb;border-radius:20px;padding:14px 16px 12px;box-shadow:0 2px 10px #4a3b320f;border:1px solid rgba(74,59,50,.06)}.letter.is-new:before{content:"";position:absolute;left:10px;top:12px;width:7px;height:7px;border-radius:50%;background:var(--pink-deep);box-shadow:0 0 0 3px #f9c9d373}.letter__head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding-left:8px}.letter__from{font-size:20px}.letter__time{font-size:11px;opacity:.55;white-space:nowrap}.letter__body{margin:8px 0 0;font-size:21px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.letter__foot{display:flex;justify-content:space-between;margin-top:10px;font-size:11px;opacity:.8}.letter-empty{text-align:center;padding:28px 0}.cardlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.cardrow{background:var(--white);border-radius:18px;padding:14px 14px 12px}.cardrow__head{display:flex;justify-content:space-between;align-items:center;gap:10px}.cardrow__name{font-size:26px;margin:0;line-height:1.1}.cardrow__meta{margin:2px 0 0;font-size:12px;opacity:.6}.cardrow__btns{display:flex;gap:6px;flex-shrink:0}.cardrow__btns .btn--cream{color:var(--brown);border-color:var(--line);background:var(--cream)}.replies{list-style:none;margin:10px 0 0;padding:10px 0 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.reply__body{margin:0;font-size:14px;white-space:pre-wrap;line-height:1.5}.reply__meta{display:flex;justify-content:space-between;font-size:11px;opacity:.55;margin-top:2px}.reply__del{font-size:11px;text-decoration:underline;opacity:.8}.bojagi__img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:transform .45s var(--ease-out),opacity .3s var(--ease-out) .15s}.bojagi.is-open .bojagi__img{transform:scale(1.18);opacity:0}.bojagi__spark{position:absolute;left:50%;top:50%;width:22px;margin:-11px 0 0 -11px;opacity:0;pointer-events:none;transform:rotate(var(--a)) translateY(0) scale(.2)}.bojagi.is-open .bojagi__spark{animation:spark-out .6s var(--ease-out) var(--dl) both}@keyframes spark-out{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.2)}25%{opacity:1;transform:rotate(var(--a)) translateY(-30px) scale(1)}to{opacity:0;transform:rotate(var(--a)) translateY(-110px) scale(.6)}}.particle img{width:44px;display:block}.particle--heart img{width:40px}.wish{position:absolute;inset:0;z-index:30;pointer-events:none;overflow:hidden}.wish__orbs{position:absolute;inset:0}.orb{position:absolute;left:0;top:0;will-change:transform,opacity}.wish__flash{position:absolute;width:60vmin;height:60vmin;margin:-30vmin 0 0 -30vmin;border-radius:50%;background:radial-gradient(circle,#fffae1,#fff0bebf 30%,#ffecaa00 70%);opacity:0;transform:scale(.3)}.wish.is-wish .wish__flash{animation:moon-flash .9s var(--ease-out) both}@keyframes moon-flash{0%{opacity:0;transform:scale(.3)}25%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}.wish__img{position:absolute;inset:0;background:url(/wish.jpg) center / cover no-repeat;opacity:0;transition:opacity .8s var(--ease-out)}.wish.is-wish .wish__img{opacity:1}.wish__life{position:absolute;inset:0}.wish__moonglow{position:absolute;width:44vmin;height:44vmin;margin:-22vmin 0 0 -22vmin;border-radius:50%;background:radial-gradient(circle,#fff0be80,#ffecaa2e 45%,#ffecaa00 70%);animation:moon-breathe 7s var(--ease-inout) infinite}@keyframes moon-breathe{0%,to{transform:scale(.94);opacity:.7}50%{transform:scale(1.06);opacity:1}}.wish__sparkle{position:absolute;margin:-12px 0 0 -12px;opacity:0;animation:twinkle 2.6s var(--ease-inout) infinite}@keyframes twinkle{0%,to{opacity:.15;transform:scale(.7) rotate(0)}50%{opacity:1;transform:scale(1.1) rotate(12deg)}}.wish__seed{position:absolute;width:30px;margin:-15px 0 0 -15px;opacity:.9;animation:seed-float 9s var(--ease-inout) infinite}@keyframes seed-float{0%{transform:translate(0) rotate(-8deg)}50%{transform:translate(14px,-40px) rotate(10deg)}to{transform:translate(-6px,-80px) rotate(-6deg);opacity:0}}.wish__cta{position:absolute;left:0;right:0;bottom:calc(26px + env(safe-area-inset-bottom));display:flex;justify-content:center;pointer-events:auto;animation:cta-pop .55s var(--ease-pop) both}@keyframes cta-pop{0%{opacity:0;transform:translateY(16px) scale(.85)}to{opacity:1;transform:none}}.toggle{display:flex;align-items:center;gap:12px;background:var(--white);border-radius:16px;padding:12px 14px;cursor:pointer;position:relative}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle__text{flex:1;display:flex;flex-direction:column;gap:2px}.toggle__title{font-size:15px}.toggle__desc{font-size:12px;opacity:.65;line-height:1.4}.toggle__knob{flex:0 0 46px;width:46px;height:28px;border-radius:999px;background:var(--line);position:relative;transition:background .25s var(--ease-settle)}.toggle__knob:after{content:"";position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:var(--white);transition:transform .28s var(--ease-pop)}.toggle.is-on .toggle__knob{background:var(--pink-deep)}.toggle.is-on .toggle__knob:after{transform:translate(18px)}.badge--tiny{font-size:11px;padding:2px 8px;vertical-align:middle;font-family:var(--font-round)}.tap-start{position:absolute;inset:0;z-index:4;display:flex;align-items:flex-end;justify-content:center;padding-bottom:calc(18% + env(safe-area-inset-bottom));background:none}.tap-start__hint{font-size:15px;color:var(--text-cream);padding:10px 18px;border-radius:999px;background:#3a2c6c73;text-shadow:0 0 8px rgba(58,44,108,.8);animation:hint 1.6s var(--ease-inout) infinite}.hero__name,.hero__greeting,.hero__sent,.hero--landing .title{text-shadow:0 0 2px rgba(58,44,108,.9),0 0 10px rgba(58,44,108,.85),0 0 22px rgba(58,44,108,.7),0 0 14px rgba(255,236,190,.35)}.hero--landing .sub,.hero--landing .note,.textlink{text-shadow:0 0 6px rgba(58,44,108,.9),0 0 14px rgba(58,44,108,.7)}.floor-shade--soft{background:linear-gradient(to bottom,#3a2c6c00,#3a2c6c61 40%,#3a2c6c8c);height:50%}.hero__name,.hero__greeting,.hero__sent{color:#fff4dc;text-shadow:0 0 12px rgba(40,25,70,.7),0 0 3px rgba(40,25,70,.55),0 0 18px rgba(255,244,220,.35)}.hero__pad{position:absolute;left:50%;top:42%;width:120%;height:46%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse at center,#5a468c8c,#5a468c4d 45%,#5a468c00 72%);opacity:0;transition:opacity .8s var(--ease-out);pointer-events:none}.hero__pad.is-on{opacity:.35}.hero>*{position:relative}.landing-page{background:var(--night)}.landing__hero{height:calc(var(--vh, 1vh) * 100)}@supports (height: 100dvh){.landing__hero{height:100dvh}}.landing__cta{margin-top:16px;width:100%;display:flex;flex-direction:column;align-items:center;gap:8px}.landing__cta .note{text-shadow:0 0 6px rgba(58,44,108,.9)}.samples{max-width:var(--card-w);margin:0 auto;padding:28px 20px calc(36px + env(safe-area-inset-bottom));color:var(--text-cream);display:flex;flex-direction:column;align-items:center;gap:14px}.samples__title{font-size:30px;margin:0}.samples__row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%}.samples__item{margin:0;aspect-ratio:9 / 16;border-radius:14px;overflow:hidden;background:#fff4dc14}.samples__item img{width:100%;height:100%;object-fit:cover;display:block}.samples__desc{margin:0;font-size:14px;opacity:.85;text-align:center}.makebox{display:flex;flex-direction:column;gap:12px;background:#ffffff8c;border-radius:18px;padding:14px}.cardrow__info{min-width:0}.cardrow__tools{display:flex;align-items:center;gap:12px;margin-top:10px;flex-wrap:wrap}.cardrow__link{font-size:12px;text-decoration:underline;text-underline-offset:3px;opacity:.75}.cardrow__del{margin-left:auto;color:#c97a8c}.toggle--mini{background:none;padding:0;gap:8px}.toggle--mini .toggle__title{font-size:12px;opacity:.8}.toggle--mini .toggle__knob{flex-basis:36px;width:36px;height:22px}.toggle--mini .toggle__knob:after{width:16px;height:16px}.toggle--mini.is-on .toggle__knob:after{transform:translate(14px)}.hero__card{width:calc(100% + 8px);margin:0 -4px;padding:calc(14px * var(--ts, 1)) 12px calc(12px * var(--ts, 1));border-radius:24px;background:#3a2c6c00;transition:background .8s var(--ease-out)}.hero__card.is-on{background:#3a2c6c66;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.hero__pad{display:none}.hero__name{font-size:calc(78px * var(--ts, 1));line-height:1.02}.hero__greeting{font-size:calc(42px * var(--ts, 1));margin-top:6px}.hero__from{font-size:calc(24px * var(--ts, 1))}.hero__sent{font-size:calc(32px * var(--ts, 1))}.hero__name,.hero__greeting,.hero__sent,.hero__ch{color:#fff4dc;text-shadow:0 0 14px rgba(40,25,70,.8),0 0 4px rgba(40,25,70,.6),0 0 16px rgba(255,244,220,.25)}.hero__actions .btn--jelly{box-shadow:inset 0 1px #ffffffb3,0 6px 18px #28194673}.textlink{text-shadow:0 0 8px rgba(40,25,70,.9),0 0 14px rgba(40,25,70,.7);font-size:16px}.contact{color:var(--brown);font-weight:600;text-decoration:underline;text-underline-offset:3px}.btn--onlight{color:var(--brown);border-color:var(--line)}.toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:40;background:var(--brown);color:var(--white);padding:10px 18px;border-radius:999px;font-size:14px;animation:rise-soft .3s var(--ease-settle) both}.keybox{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--white);border-radius:16px;padding:12px 14px;border:1.5px solid transparent;transition:border-color .3s,box-shadow .3s}.keybox.is-hi{border-color:var(--pink-deep);box-shadow:0 0 0 4px #f9c9d373;animation:key-pulse 1.4s var(--ease-inout) 3}@keyframes key-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.015)}}.keybox__text{margin:0;font-size:13px;line-height:1.4}.keybox__btns{display:flex;gap:6px;flex-shrink:0}.keybox__btns .btn--cream{color:var(--brown);border-color:var(--line)}@media(max-width:400px){.keybox{flex-direction:column;align-items:stretch}.keybox__btns .btn{flex:1}}.makebox--full{align-items:stretch}.senderrow{display:flex;gap:8px;align-items:stretch}.senderrow .input{flex:1;min-width:0}.sender__saved{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;font-size:15px}.sender__name{font-weight:600}.addmore{align-self:center;color:var(--brown);border-color:var(--line);background:var(--cream)}.devlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.devlist__item{background:var(--white);border-radius:14px;padding:10px 14px;display:flex;flex-direction:column;gap:2px}.devlist__link{font-size:16px;text-decoration:underline;text-underline-offset:3px}.devlist__desc{font-size:12px;opacity:.65}.devlist__path{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;opacity:.5}.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px}.pager__btn{width:38px;height:38px;border-radius:50%;background:var(--white);font-size:22px;line-height:1;color:var(--brown);transition:transform .2s var(--ease-pop)}.pager__btn:active{transform:scale(.9)}.pager__btn:disabled{opacity:.3}.pager__label{font-size:14px;min-width:40px;text-align:center}.hero--landing{top:calc(var(--feet, 66%) + 3%)}.hero--landing .title{margin:0;font-size:clamp(30px,10vw,44px);line-height:1.12;color:#fff4dc;font-weight:400;white-space:nowrap;text-shadow:0 0 2px rgba(58,44,108,.9),0 0 10px rgba(58,44,108,.85),0 0 22px rgba(58,44,108,.7),0 0 14px rgba(255,236,190,.35)}.hero--landing .landing__cta{margin-top:14px}@media(max-height:740px){.hero--landing .title{font-size:clamp(28px,9vw,38px)}}.admin__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.admin__stat{background:var(--white);border-radius:14px;padding:10px 12px;display:flex;flex-direction:column}.admin__k{font-size:12px;opacity:.6}.admin__v{font-size:20px;font-family:var(--font-hand)}.admin__t{font-size:11px;opacity:.55}.admin__row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.admin__token{margin:0;font-size:14px;display:flex;gap:6px;align-items:center}.admin__token code{font-family:ui-monospace,Menlo,Consolas,monospace}.admin__badge{font-size:11px;padding:1px 8px;border-radius:999px;background:var(--cream)}.admin__badge--paid{background:var(--green)}.admin__badge--pending{background:var(--yellow)}.admin__badge--refunded{background:#f3c9d2}
