*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{color:#6b2a4a;overscroll-behavior:none;-webkit-font-smoothing:antialiased;background:#fff3c4;height:100%;font-family:Nunito,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;overflow:hidden}#app{position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}#scene{opacity:0;touch-action:none;outline:none;width:100%;height:100%;transition:opacity 1.8s;display:block;position:absolute;top:0;bottom:0;left:0;right:0}#scene.is-visible{opacity:1}#ui{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}button:focus-visible{outline-offset:3px;outline:3px solid #f4699d}.btn{letter-spacing:.04em;pointer-events:auto;border-radius:999px;justify-content:center;align-items:center;padding:.95em 2.6em;font-size:1.08rem;font-weight:800;transition:transform .28s cubic-bezier(.2,1.3,.4,1),box-shadow .28s,background .28s;display:inline-flex;position:relative;overflow:hidden}.btn--primary{color:#fff;background:linear-gradient(135deg,#ff8fb8,#f4699d 48%,#f7b500);animation:2.6s ease-in-out infinite btnPulse;box-shadow:0 10px 26px #f4699d6b,inset 0 1px #fff9}.btn--primary:after{content:"";background:linear-gradient(110deg,#0000 30%,#ffffffb3 50%,#0000 70%);transition:transform .75s;position:absolute;top:0;bottom:0;left:0;right:0;transform:translate(-130%)}.btn--primary:hover{transform:translateY(-3px)scale(1.05);box-shadow:0 16px 34px #f4699d80,0 0 0 6px #ffd95e73}.btn--primary:hover:after{transform:translate(130%)}.btn--primary:active{transform:scale(.96)}.btn--soft{color:#a83a6a;background:#ffe6ef;padding:.7em 1.8em;font-size:.98rem;box-shadow:inset 0 0 0 2px #ffcfe0}.btn--soft:hover{background:#ffcfe0;transform:translateY(-2px)}.btn--soft:active{transform:scale(.97)}@keyframes btnPulse{0%,to{box-shadow:0 10px 26px #f4699d6b,0 0 #ffd95e8c}50%{box-shadow:0 10px 26px #f4699d6b,0 0 0 12px #ffd95e00}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.cover{padding:max(20px, env(safe-area-inset-top,0px)) 20px max(20px, env(safe-area-inset-bottom,0px));pointer-events:auto;opacity:1;background:radial-gradient(900px 600px at 50% 18%,#fffbe9 0%,#0000 62%),linear-gradient(165deg,#ffe6ef 0%,#fff3c4 58%,#ffe7a3 100%);place-items:center;transition:opacity 1.4s,visibility;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.cover.is-hidden{opacity:0;pointer-events:none;visibility:hidden;transition:opacity 1.4s,visibility 0s linear 1.4s}.cover__petals{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden}.petal{top:-8%;left:var(--x);opacity:.8;width:16px;height:24px;transform:scale(var(--s));animation:petalFall var(--d) linear var(--delay) infinite;background:linear-gradient(135deg,#ffe066,#ffb703);border-radius:70% 0;position:absolute}@keyframes petalFall{0%{transform:translate3d(0, 0, 0) rotate(0deg) scale(var(--s))}to{transform:translate3d(var(--drift), 112vh, 0) rotate(540deg) scale(var(--s))}}.card{text-align:center;background:linear-gradient(#fffffff2,#fff7eaed);border-radius:30px;width:min(100%,500px);padding:clamp(46px,9vw,62px) clamp(26px,6vw,46px) clamp(40px,8vw,54px);animation:1.3s cubic-bezier(.2,.9,.3,1) both cardIn,6.5s ease-in-out 1.3s infinite cardFloat;position:relative;box-shadow:0 0 0 2px #ffd95ef2,0 0 0 9px #ffffffa6,0 0 0 11px #f7b50073,0 18px 50px #c8467847,0 4px 14px #f7b50038}.card__date{color:#b8860b;letter-spacing:.02em;font-family:Nunito,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:clamp(.84rem,2.6vw,.98rem);font-weight:700}.card__title{color:#f4699d;text-shadow:0 2px #fff,0 6px 18px #f4699d47;margin:.35em 0 .3em;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(2.5rem,11vw,3.7rem);font-style:italic;font-weight:700;line-height:1.05}.card__slogan{color:#6b2a4a;max-width:24ch;margin:0 auto 1.7em;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(1.15rem,4.6vw,1.5rem);font-style:italic;font-weight:400;line-height:1.45}.card__flower{filter:drop-shadow(0 6px 8px #b8860b4d);pointer-events:none;width:clamp(64px,17vw,96px);animation:5s ease-in-out infinite sway;position:absolute}.card__flower--tl{transform-origin:50%;top:calc(clamp(64px,17vw,96px)/-2.4);left:calc(clamp(64px,17vw,96px)/-2.4)}.card__flower--tr{animation-direction:reverse;animation-delay:-1.2s;top:calc(clamp(64px,17vw,96px)/-2.4);right:calc(clamp(64px,17vw,96px)/-2.4)}.card__flower--bl{animation-direction:reverse;animation-delay:-2.4s;bottom:calc(clamp(64px,17vw,96px)/-2.4);left:calc(clamp(64px,17vw,96px)/-2.4)}.card__flower--br{animation-delay:-3.4s;bottom:calc(clamp(64px,17vw,96px)/-2.4);right:calc(clamp(64px,17vw,96px)/-2.4)}.card__tulip{transform-origin:50% 100%;pointer-events:none;width:clamp(30px,8vw,44px);animation:4.2s ease-in-out infinite tulipSway;position:absolute;bottom:-6px}.card__tulip--l{left:24%}.card__tulip--r{animation-delay:-2s;right:24%}.card__sparkles{pointer-events:none;border-radius:inherit;position:absolute;top:0;bottom:0;left:0;right:0}.spark{left:var(--x);top:var(--y);width:var(--sz);color:#f7b500;opacity:0;animation:twinkle 3.6s ease-in-out var(--delay) infinite;position:absolute}.spark svg{filter:drop-shadow(0 0 4px #ffd95ee6);width:100%;display:block}@keyframes cardIn{0%{opacity:0;transform:translateY(40px)scale(.92)}to{opacity:1;transform:none}}@keyframes cardFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes sway{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes tulipSway{0%,to{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}@keyframes twinkle{0%,to{opacity:0;transform:scale(.3)rotate(0)}50%{opacity:1;transform:scale(1)rotate(45deg)}}.login-gate{z-index:20}.card--login .login-gate__title{font-size:clamp(1.7rem,7vw,2.3rem)}.card--login .login-gate__subtitle{max-width:26ch;margin-bottom:1.6em;font-size:clamp(1rem,3.6vw,1.15rem)}.card--login.is-rejected{animation:.5s cubic-bezier(.2,1.3,.4,1) shakeReject}.card--login.is-rejected .login-gate__input{border-color:#f4699db3;box-shadow:0 0 0 3px #f4699d2e}.login-gate__form{flex-direction:column;align-items:center;gap:14px;display:flex}.login-gate__input{color:#6b2a4a;text-align:center;background:#ffffffe6;border:2px solid #f7b5008c;border-radius:999px;outline:none;width:min(100%,320px);padding:14px 18px;font-family:Nunito,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:1.05rem;transition:border-color .2s,box-shadow .2s}.login-gate__input::placeholder{color:#6b2a4a73}.login-gate__input:focus{border-color:#ff8fb8;box-shadow:0 0 0 3px #ff8fb838}.login-gate__error{color:#a83a6a;max-width:30ch;min-height:1.2em;margin:-4px 0 0;font-family:Nunito,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:.88rem;font-weight:700;line-height:1.4}@keyframes shakeReject{0%,to{transform:translate(0)}20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.staff-portal{right:max(12px, env(safe-area-inset-right,0px));bottom:max(12px, env(safe-area-inset-bottom,0px));z-index:120;pointer-events:auto;color:#6b2a4a8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffb8;border:1px solid #6b2a4a1f;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;text-decoration:none;transition:color .2s cubic-bezier(.2,.9,.3,1),background .2s cubic-bezier(.2,.9,.3,1),transform .2s cubic-bezier(.2,.9,.3,1);display:flex;position:fixed;box-shadow:0 4px 14px #6b2a4a1a}.staff-portal:hover{color:#6b2a4a;background:#ffffffeb;transform:scale(1.05)}.staff-portal:focus-visible{outline-offset:2px;outline:2px solid #f7b500}.staff-portal__icon{display:block}.sidebar{left:max(10px, env(safe-area-inset-left,0px));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);opacity:0;pointer-events:none;z-index:5;background:#fffc;border-radius:999px;flex-direction:column;gap:4px;padding:5px;transition:transform .75s cubic-bezier(.2,.9,.3,1),opacity .5s;display:flex;position:absolute;top:50%;transform:translate(-170%,-50%);box-shadow:0 8px 26px #c8467840,inset 0 0 0 1.5px #ffd95eb3}.sidebar.is-visible{opacity:1;pointer-events:auto;transform:translateY(-50%)}.sidebar__toggle{color:#f4699d;border-radius:50%;place-items:center;width:44px;height:44px;transition:background .2s,transform .25s cubic-bezier(.2,1.3,.4,1),color .2s;display:none}.sidebar__toggle svg{width:22px;height:22px}.sidebar__toggle:active{transform:scale(.92)}.sidebar__panel{display:contents}.ctrl{color:#f4699d;border-radius:50%;place-items:center;width:44px;height:44px;transition:background .2s,transform .25s cubic-bezier(.2,1.3,.4,1),color .2s;display:grid}.ctrl svg{width:22px;height:22px}.ctrl:hover{background:#ffe6ef;transform:scale(1.08)}.ctrl:active{transform:scale(.92)}.ctrl.is-active{color:#fff;background:#f4699d}.ctrl.is-hidden{display:none}.vol-wrap{position:relative}.vol-pop{transform-origin:0;opacity:0;visibility:hidden;background:#fffffff5;border-radius:18px;padding:14px 18px;transition:opacity .22s,transform .3s cubic-bezier(.2,1.3,.4,1),visibility 0s linear .3s;position:absolute;top:50%;left:calc(100% + 14px);transform:translate(-8px,-50%)scale(.9);box-shadow:0 10px 28px #c846784d,inset 0 0 0 1.5px #ffcfe0}.vol-pop.is-open{opacity:1;visibility:visible;transition:opacity .22s,transform .3s cubic-bezier(.2,1.3,.4,1),visibility;transform:translateY(-50%)}.vol-range{-webkit-appearance:none;appearance:none;background:linear-gradient(90deg,#ff8fb8,#ffd95e);border-radius:99px;outline:none;width:min(150px,42vw);height:8px;display:block}.vol-range::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#fff;border:3px solid #f4699d;border-radius:50%;width:24px;height:24px;box-shadow:0 2px 8px #c8467866}.vol-range::-moz-range-thumb{cursor:pointer;background:#fff;border:3px solid #f4699d;border-radius:50%;width:20px;height:20px}.vol-range:focus-visible{outline-offset:6px;outline:3px solid #f4699d}@media (max-width:380px),(max-height:420px){.ctrl{width:40px;height:40px}}@media (max-width:768px){.sidebar__toggle{display:grid}.sidebar__panel{opacity:0;pointer-events:none;flex-direction:column;gap:4px;max-height:0;transition:max-height .35s cubic-bezier(.2,.9,.3,1),opacity .25s,margin-top .35s cubic-bezier(.2,.9,.3,1);display:flex;overflow:hidden}.sidebar.is-open .sidebar__panel{opacity:1;pointer-events:auto;max-height:320px;margin-top:6px}}.music{right:max(14px, env(safe-area-inset-right,0px));bottom:max(14px, env(safe-area-inset-bottom,0px));opacity:0;pointer-events:none;z-index:5;transition:opacity .5s,transform .7s cubic-bezier(.2,.9,.3,1);position:absolute;transform:translateY(24px)}.music.is-visible{opacity:1;pointer-events:auto;transform:none}.music__btn{color:#f4699d;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffdb;border-radius:999px;padding:.8em 1.3em;font-size:.95rem;font-weight:800;transition:transform .25s cubic-bezier(.2,1.3,.4,1),background .2s;box-shadow:0 8px 24px #c8467847,inset 0 0 0 1.5px #ffd95ebf}.music__btn:hover{background:#fff;transform:translateY(-2px)scale(1.03)}.music__btn:active{transform:scale(.96)}.music__menu{width:min(330px,100vw - 28px);max-height:calc(100vh - 110px);transform-origin:100% 100%;opacity:0;visibility:hidden;background:#fffffff5;border-radius:22px;max-height:calc(100dvh - 110px);padding:14px 12px 12px;transition:opacity .22s,transform .3s cubic-bezier(.2,1.3,.4,1),visibility 0s linear .3s;position:absolute;bottom:calc(100% + 12px);right:0;overflow-y:auto;transform:translateY(10px)scale(.96);box-shadow:0 14px 40px #5a144659,inset 0 0 0 1.5px #ffcfe0}.music.is-open .music__menu{opacity:1;visibility:visible;transition:opacity .22s,transform .3s cubic-bezier(.2,1.3,.4,1),visibility;transform:none}.music__title{color:#f4699d;padding:0 8px 8px;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:1.15rem;font-style:italic;font-weight:700}.music__list{gap:4px;list-style:none;display:grid}.music__item{text-align:left;border-radius:14px;grid-template-columns:32px 1fr 22px;align-items:center;gap:10px;width:100%;padding:8px 10px;transition:background .2s;display:grid}.music__item:hover{background:#ffe6ef}.music__item.is-current{background:linear-gradient(135deg,#ffe6ef,#fff3c4);box-shadow:inset 0 0 0 1.5px #ffcfe0}.music__num{color:#f4699d;background:#ffe6ef;border-radius:50%;place-items:center;width:32px;height:32px;font-size:.9rem;font-weight:800;display:grid}.music__item.is-current .music__num{color:#fff;background:#f4699d}.music__meta{line-height:1.25;display:grid}.music__meta strong{color:#6b2a4a;font-size:.95rem}.music__meta small{color:#6b2a4aa6;font-size:.78rem}.music__eq{align-items:flex-end;gap:2px;height:16px;display:none}.music__eq i{transform-origin:bottom;background:#f4699d;border-radius:2px;width:3px;height:100%;animation:.9s ease-in-out infinite eq}.music__eq i:nth-child(2){animation-delay:-.3s}.music__eq i:nth-child(3){animation-delay:-.6s}.music__item.is-current .music__eq{display:flex}.music__auto{color:#a83a6a;background:#fff6f9;border-radius:14px;width:100%;margin-top:8px;padding:.7em 1em;font-size:.88rem;font-weight:700;transition:background .2s;display:block;box-shadow:inset 0 0 0 1.5px #ffcfe0}.music__auto.is-on{color:#fff;box-shadow:none;background:linear-gradient(135deg,#ff8fb8,#f4699d)}@keyframes eq{0%,to{transform:scaleY(.25)}50%{transform:scaleY(1)}}.dialogue{left:50%;top:calc(max(14px, env(safe-area-inset-top,0px)) + 12px);color:#6b2a4a;opacity:0;pointer-events:none;z-index:4;background:#fff;border-radius:26px;width:min(92vw,560px);padding:30px 22px 60px;transition:opacity .35s,transform .45s cubic-bezier(.2,1.3,.4,1);position:absolute;transform:translate(-50%,-12px)scale(.94);box-shadow:0 12px 32px #c846784d,0 0 0 3px #ffcfe0}.dialogue.is-visible{opacity:1;pointer-events:auto;transform:translate(-50%)scale(1)}.dialogue--bottom{top:auto;bottom:calc(max(14px, env(safe-area-inset-bottom,0px)) + 68px);transform:translate(-50%,12px)scale(.94)}.dialogue--phrase{text-align:center;padding-bottom:24px;pointer-events:none!important}.dialogue__name{letter-spacing:.02em;color:#fff;background:linear-gradient(135deg,#ff8fb8,#f4699d);border-radius:999px;padding:5px 16px;font-size:.86rem;font-weight:800;position:absolute;top:-15px;left:20px;box-shadow:0 4px 12px #f4699d66}.dialogue--phrase .dialogue__name{display:none}.dialogue__text{min-height:3em;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(1rem,3.4vw,1.2rem);font-style:italic;font-weight:600;line-height:1.5}.dialogue__next{color:#fff;opacity:0;pointer-events:none;background:linear-gradient(135deg,#ff8fb8,#f4699d 55%,#f7b500);border-radius:999px;padding:.6em 1.4em;font-size:.95rem;font-weight:800;transition:opacity .3s,transform .35s cubic-bezier(.2,1.3,.4,1);position:absolute;bottom:12px;right:14px;transform:translateY(8px)scale(.9);box-shadow:0 6px 16px #f4699d73}.dialogue__next.is-visible{opacity:1;pointer-events:auto;animation:1.8s ease-in-out .4s infinite nextPulse;transform:none}.dialogue__next:hover{transform:translateY(-2px)scale(1.05)}.dialogue__next:active{transform:scale(.95)}@keyframes nextPulse{0%,to{box-shadow:0 6px 16px #f4699d73,0 0 #ffd95e99}50%{box-shadow:0 6px 16px #f4699d73,0 0 0 9px #ffd95e00}}.final-slogan{left:50%;top:max(12px, env(safe-area-inset-top,0px));text-align:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;pointer-events:none;background:#fff9f1e6;border-radius:26px;width:min(92vw,560px);padding:clamp(10px,2.4vh,18px) 24px clamp(12px,2.6vh,20px);transition:opacity .8s,transform 1s cubic-bezier(.2,.9,.3,1);position:absolute;transform:translate(-50%,-26px);box-shadow:0 14px 40px #5a144659,inset 0 0 0 2px #ffd95ecc}.final-slogan.is-visible{opacity:1;transform:translate(-50%)}.final-slogan.is-visible .w{opacity:1;filter:none;transform:none}.final-slogan .w{opacity:0;filter:blur(4px);transition:opacity .6s,transform .7s cubic-bezier(.2,.9,.3,1),filter .6s;transition-delay:calc(var(--i) * .11s + .4s);display:inline-block;transform:translateY(10px)}.final-slogan__head{color:#f4699d;margin-bottom:.25em;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(1.15rem,min(5.6vw,4.6vh),2rem);font-style:italic;font-weight:700;line-height:1.15}.final-slogan__body{color:#6b2a4a;max-width:46ch;margin:0 auto;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(.82rem,min(3.3vw,2.9vh),1.12rem);font-weight:500;line-height:1.42}.hint{left:max(12px, env(safe-area-inset-left,0px));bottom:max(14px, env(safe-area-inset-bottom,0px));color:#a83a6a;opacity:0;pointer-events:none;background:#ffffffe0;border-radius:18px;max-width:calc(100vw - 230px);padding:9px 16px;font-size:.82rem;font-weight:700;line-height:1.35;transition:opacity .6s,transform .6s cubic-bezier(.2,.9,.3,1);position:absolute;transform:translateY(10px);box-shadow:0 6px 20px #5a144640}.hint.is-visible{opacity:1;transform:none}@media (max-height:600px) and (orientation:landscape){.dialogue,.final-slogan{width:min(560px,100vw - 180px)}}.flash{opacity:0;pointer-events:none;z-index:3;background:radial-gradient(circle at 50% 55%,#fff 0%,#ffe3ef 50%,#ffe9a8 100%);position:absolute;top:0;bottom:0;left:0;right:0}.heart-fx{z-index:6;pointer-events:none;-webkit-user-select:none;user-select:none;animation-name:heartUp;animation-timing-function:ease-out;animation-fill-mode:forwards;position:absolute;transform:translate(-50%,-50%)}@keyframes heartUp{0%{opacity:0;transform:translate(-50%,-50%)scale(.4)rotate(0)}15%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--dx)), calc(-50% - 170px)) scale(1.15) rotate(var(--rot))}}.letter-modal{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;visibility:hidden;pointer-events:none;perspective:1000px;z-index:7;background:#5a184a73;place-items:center;padding:20px;transition:opacity .35s,visibility 0s linear .4s;display:grid;position:absolute;top:0;bottom:0;left:0;right:0}.letter-modal.is-open{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .35s,visibility}.letter-modal.is-open .letter-card{opacity:1;transform:none}.letter-card{width:min(100%,440px);max-height:80vh;text-align:center;opacity:0;transform-origin:50% 100%;background:linear-gradient(#fffdf6,#fff1dd);border-radius:22px;max-height:min(80dvh,620px);padding:68px clamp(22px,6vw,36px) 26px;transition:opacity .4s,transform .75s cubic-bezier(.2,1.3,.4,1);position:relative;overflow-y:auto;transform:translateY(50px)scale(.6)rotateX(55deg);box-shadow:0 24px 60px #3c0a3280,inset 0 0 0 2px #f7b5008c,inset 0 0 0 9px #fff9}.letter-card__seal{background:linear-gradient(135deg,#ffd95e,#f7b500);border-radius:50%;place-items:center;width:46px;height:46px;font-size:1.4rem;display:grid;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 6px 16px #b8860b80}.letter-card__title{color:#f4699d;margin-bottom:.55em;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(1.7rem,7vw,2.2rem);font-style:italic;font-weight:700;line-height:1.1}.letter-card__body{color:#6b2a4a;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:clamp(1.02rem,3.8vw,1.2rem);font-weight:500;line-height:1.65}.letter-card__sign{color:#b8860b;margin:1.1em 0 1.3em;font-family:Fraunces,Iowan Old Style,Palatino Linotype,Georgia,serif;font-style:italic}
