:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--cream:#fff6f1;--cream-2:#fdeee9;--blush:#fadbe2;--rose:#f2a7bb;--rose-deep:#b4577a;--lavender:#dccdf4;--lavender-deep:#b9a2e6;--peach:#fde0cf;--peach-deep:#f7b89a;--ink:#4b3445;--ink-soft:#7a6072;--paper:#fffdfb;--shadow:0 18px 40px -18px #b4577a59, 0 4px 12px -4px #4b34451f;--font-display:"Fredoka", ui-rounded, system-ui, sans-serif;--font-script:"Caveat", "Segoe Print", cursive;--font-body:"DM Sans", system-ui, -apple-system, sans-serif;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--gutter:16px}*,:before,:after{box-sizing:border-box}html,body{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{font-family:var(--font-body);color:var(--ink);background:linear-gradient(180deg, #e4d7f6 0%, var(--blush) 55%, var(--cream) 100%);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;font-size:16px;line-height:1.6}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--lavender-deep);outline-offset:3px;border-radius:8px}[hidden]{display:none!important}#scene{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#scene.is-hover{cursor:pointer}.btn{font-family:var(--font-display);letter-spacing:.01em;border:0;border-radius:999px;padding:14px 28px;font-size:1.1rem;font-weight:600;transition:transform .2s,box-shadow .2s,opacity .3s}.btn--primary{color:#fff;background:linear-gradient(135deg, var(--peach-deep), #ee8fab 55%, var(--lavender-deep));box-shadow:0 12px 26px -10px #b4577ab3}.btn--primary:hover:not(:disabled){transform:translateY(-2px)scale(1.02)}.btn--primary:active:not(:disabled){transform:scale(.97)}.btn--primary:disabled{opacity:.55;cursor:default}.btn--ghost{color:var(--rose-deep);box-shadow:inset 0 0 0 2px var(--rose);background:#ffffffb3}.screen{z-index:30;padding:calc(var(--gutter) + var(--safe-t)) var(--gutter) calc(var(--gutter) + var(--safe-b));place-items:center;transition:opacity .6s,visibility .6s;display:grid;position:fixed;inset:0}.screen.is-leaving{opacity:0;visibility:hidden}.screen--loader{background:radial-gradient(900px 500px at 110% -10%, var(--lavender) 0%, transparent 60%), radial-gradient(700px 500px at -20% 20%, var(--peach) 0%, transparent 55%), linear-gradient(180deg, var(--cream) 0%, var(--cream-2) 50%, #fbe6ee 100%);text-align:center;align-content:center;gap:14px}.loader__cake{font-size:56px;animation:2.4s ease-in-out infinite bob}.loader__text{font-family:var(--font-script);color:var(--rose-deep);margin:0;font-size:1.8rem}.loader__pct{color:var(--ink-soft);font-variant-numeric:tabular-nums;margin:0;font-size:.85rem}.bar{background:#ffffffbf;border-radius:99px;width:min(280px,72vw);height:10px;overflow:hidden;box-shadow:inset 0 0 0 1px #b4577a26}.bar span{transform-origin:0;border-radius:inherit;background:linear-gradient(90deg, var(--peach-deep), var(--rose), var(--lavender-deep));height:100%;transition:transform .25s;display:block;transform:scaleX(0)}.screen--title{-webkit-backdrop-filter:blur(6px);background:linear-gradient(#fff6f18c,#fadbe2bf);place-items:start center;overflow-y:auto}.title__inner{grid-template-columns:1.15fr 1fr;grid-template-areas:"text stack""how stack";align-items:center;gap:22px 40px;width:min(980px,100%);margin:auto;display:grid}.title__text{grid-area:text}.title__stack{grid-area:stack;height:380px;position:relative}.title__how{grid-area:how}.title__kicker{font-family:var(--font-script);color:var(--rose-deep);margin:0;font-size:clamp(1.6rem,1.2rem + 1.5vw,2.2rem)}.title__name{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;margin:0;font-size:clamp(4.2rem,2.5rem + 9vw,8rem);font-weight:700;line-height:.95}.title__name .char{opacity:0;display:inline-block;transform:translateY(60%)rotate(-12deg)scale(.6)}.screen--title.is-in .title__name .char{animation:.9s cubic-bezier(.34,1.56,.64,1) forwards charIn;animation-delay:calc(.15s + var(--i) * 80ms)}.title__headline{font-family:var(--font-display);background:linear-gradient(90deg, var(--rose-deep), #d0709a 45%, #8f6cc9);color:#0000;-webkit-background-clip:text;background-clip:text;margin:6px 0 0;font-size:clamp(1.5rem,1.1rem + 1.6vw,2.2rem);font-weight:600}.title__sub{max-width:46ch;color:var(--ink-soft);margin:12px 0 0}.title__how ul{color:var(--ink-soft);gap:6px;margin:0 0 18px;padding:0;font-size:.95rem;list-style:none;display:grid}.title__how li:before{content:"♡ ";color:var(--rose)}kbd{min-width:1.6em;font:600 .8rem/1.6 var(--font-body);text-align:center;color:var(--ink);background:var(--paper);border-radius:6px;margin:0 1px;padding:0 .35em;display:inline-block;box-shadow:0 2px #b4577a4d}.screen--title .title__text,.screen--title .title__how{opacity:0;transition:opacity .8s,transform .8s;transform:translateY(18px)}.screen--title.is-in .title__text,.screen--title.is-in .title__how{opacity:1;transform:none}.screen--title.is-in .title__how{transition-delay:.35s}.mini-pola{background:var(--paper);width:46%;box-shadow:var(--shadow);opacity:0;transform:translateY(60px) rotate(var(--r)) scale(.85);border-radius:4px;margin:0;padding:8px 8px 30px;transition:opacity .9s,transform 1.1s cubic-bezier(.34,1.4,.64,1);position:absolute}.mini-pola img{object-fit:cover;background:var(--blush);border-radius:2px;width:100%;display:block}.mini-pola:first-of-type{--r:-8deg;transition-delay:.3s;top:6%;left:4%}.mini-pola:nth-of-type(2){--r:7deg;transition-delay:.45s;top:0;left:48%}.mini-pola:nth-of-type(3){--r:-2deg;transition-delay:.6s;top:34%;left:26%}.screen--title.is-in .mini-pola{opacity:1;transform:rotate(var(--r))}.age-badge{z-index:2;width:92px;height:92px;font:700 2.4rem/1 var(--font-display);color:#fff;background:radial-gradient(circle at 30% 30%, #f9c4d3, var(--rose) 60%, #e48aa6);box-shadow:var(--shadow);border-radius:50%;place-items:center;transition:transform 1s cubic-bezier(.34,1.56,.64,1) .9s;display:grid;position:absolute;bottom:4%;right:0;transform:scale(0)rotate(-90deg)}.screen--title.is-in .age-badge{transform:scale(1)rotate(0)}@media (max-width:760px){.title__inner{text-align:center;grid-template-columns:1fr;grid-template-areas:"stack""text""how";gap:14px}.title__stack{width:min(330px,100%);height:250px;margin:0 auto}.mini-pola{width:35%;padding:6px 6px 20px}.mini-pola:first-of-type{top:4%;left:8%}.mini-pola:nth-of-type(2){top:0;left:54%}.mini-pola:nth-of-type(3){top:26%;left:31%}.title__sub{margin-inline:auto;font-size:.95rem}.title__how ul{justify-items:center}.age-badge{width:70px;height:70px;font-size:1.8rem}.btn--primary{width:100%;max-width:340px}}#hud{z-index:10;pointer-events:none;padding:calc(12px + var(--safe-t)) var(--gutter) 0;justify-content:space-between;align-items:flex-start;display:flex;position:fixed;inset:0 0 auto}.hud__left{justify-items:start;gap:6px;display:grid}.pill{box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);color:var(--ink);background:#fffdfbd1;border-radius:999px;align-items:center;gap:8px;padding:8px 14px 8px 12px;font-size:.92rem;font-weight:700;display:inline-flex}.pill__heart{color:var(--rose);font-size:1.05rem;line-height:1}.pill.is-bump{animation:.6s cubic-bezier(.34,1.56,.64,1) bump}.hud__month{-webkit-backdrop-filter:blur(8px);box-shadow:var(--shadow);font-family:var(--font-script);color:var(--rose-deep);background:#fffdfbb8;border-radius:999px;padding:4px 14px 6px;font-size:1.35rem;font-weight:700;line-height:1}.hud__month.is-in{animation:.8s both monthIn}.icon-btn{pointer-events:auto;width:44px;height:44px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);background:#fffdfbd1;border:0;border-radius:50%;place-items:center;display:grid}.icon-btn svg{fill:none;width:22px;height:22px;stroke:var(--rose-deep);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.icon-btn .spk{fill:var(--rose)}.icon-btn .off,.icon-btn[data-muted="1"] .on{display:none}.icon-btn[data-muted="1"] .off{display:inline}.hud__bar{height:4px;position:fixed;inset:0 0 auto}.hud__bar span{transform-origin:0;background:linear-gradient(90deg, var(--peach-deep), var(--rose), var(--lavender-deep));border-radius:0 4px 4px 0;height:100%;transition:transform .3s linear;display:block;transform:scaleX(0)}.prompt,.toast{z-index:12;pointer-events:none;text-align:center;opacity:0;border-radius:999px;max-width:calc(100vw - 32px);padding:10px 18px;font-size:.95rem;font-weight:700;transition:opacity .3s,transform .35s cubic-bezier(.34,1.56,.64,1);position:fixed;left:50%;transform:translate(-50%,12px)scale(.96)}.prompt{bottom:calc(28px + var(--safe-b));font-family:var(--font-body);color:#fff;background:linear-gradient(135deg, #ee8fab, var(--lavender-deep));border:0;min-height:44px;padding:12px 22px;box-shadow:0 10px 24px -10px #b4577acc}.prompt.is-visible{pointer-events:auto;cursor:pointer;touch-action:manipulation;opacity:1;animation:1.8s ease-in-out infinite glowPulse;transform:translate(-50%)scale(1)}.toast{top:calc(84px + var(--safe-t));color:var(--ink);box-shadow:var(--shadow);background:#fffdfbeb}.toast.is-visible{opacity:1;transform:translate(-50%)scale(1)}.joystick{z-index:11;pointer-events:none;opacity:0;width:120px;height:120px;left:90px;top:calc(100% - 110px - var(--safe-b));background:#ffffff47;border-radius:50%;margin:-60px 0 0 -60px;transition:opacity .2s;position:fixed;box-shadow:inset 0 0 0 2px #ffffffbf}.joystick.is-active{opacity:1}.joystick__knob{background:linear-gradient(135deg, #f7c6d3, var(--lavender-deep));border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%;box-shadow:0 6px 16px -6px #b4577acc}.memory{z-index:20;padding:calc(var(--gutter) + var(--safe-t)) var(--gutter) calc(var(--gutter) + var(--safe-b));-webkit-backdrop-filter:blur(4px);opacity:0;background:#4b344547;place-items:center;transition:opacity .35s;display:grid;position:fixed;inset:0}.memory.is-open{opacity:1}.memory__card{overscroll-behavior:contain;background:var(--paper);-webkit-user-select:text;user-select:text;border-radius:26px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8px 28px;width:min(860px,100%);max-height:100%;padding:26px;transition:transform .45s cubic-bezier(.34,1.4,.64,1);display:grid;position:relative;overflow-y:auto;transform:translateY(30px)scale(.92)rotate(-1.5deg);box-shadow:0 30px 80px -30px #4b344599}.memory.is-open .memory__card{transform:none}.memory__close{z-index:3;width:40px;height:40px;color:var(--rose-deep);background:var(--blush);border:0;border-radius:50%;font-size:1.6rem;line-height:1;position:absolute;top:10px;right:10px}.memory__carousel{position:relative}.memory__viewport{touch-action:pan-y;border-radius:6px;overflow:hidden}.memory__track{transition:transform .45s cubic-bezier(.22,1,.36,1);display:flex}.memory__slide{background:#fff;border-radius:4px;flex:0 0 100%;margin:0;padding:10px 10px 4px;box-shadow:0 10px 26px -14px #4b344580}.memory__frame{aspect-ratio:var(--ratio,3 / 4);background:var(--blush) center / cover;border-radius:2px;max-height:min(56vh,520px);margin:0 auto;overflow:hidden}.memory__frame img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .5s;display:block}.memory__frame img.is-loaded{opacity:1}.memory__frame.is-missing{background:linear-gradient(135deg, var(--blush), var(--lavender));place-items:center;width:min(100%,360px);display:grid}.memory__frame.is-missing:after{content:"♡\a photo coming soon";white-space:pre;text-align:center;font:700 1.6rem/1.3 var(--font-script);color:#4b34458c}.memory__slide figcaption{text-align:center;font:700 1.45rem/1.2 var(--font-script);color:var(--ink);padding:6px 4px 2px}.nav-btn{width:38px;height:38px;color:var(--rose-deep);box-shadow:var(--shadow);background:#fffdfbe6;border:0;border-radius:50%;font-size:1.6rem;line-height:1;transition:opacity .2s;position:absolute;top:45%;translate:0 -50%}.nav-btn:disabled{opacity:0;pointer-events:none}.memory__prev{left:-8px}.memory__next{right:-8px}.memory__dots{justify-content:center;gap:8px;padding-top:10px;display:flex}.memory__dots button{background:var(--lavender);border:0;border-radius:50%;width:9px;height:9px;padding:0}.memory__dots button[aria-current=true]{background:var(--rose-deep)}.memory.is-single .nav-btn,.memory.is-single .memory__dots{display:none}.memory__num{letter-spacing:.12em;text-transform:uppercase;color:var(--rose);margin:0;font-size:.8rem;font-weight:700}.memory__date{font:700 1.5rem/1.2 var(--font-script);color:var(--rose-deep);margin:4px 0 0}.memory__title{font:600 clamp(1.6rem, 1.2rem + 1.4vw, 2.1rem)/1.15 var(--font-display);color:var(--ink);margin:4px 0 10px}.memory__story{color:var(--ink-soft);margin:0;font-size:1.02rem}.memory__text>*{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(10px)}.memory.is-open .memory__text>*{opacity:1;transform:none}.memory.is-open .memory__text>:nth-child(2){transition-delay:60ms}.memory.is-open .memory__text>:nth-child(3){transition-delay:.12s}.memory.is-open .memory__text>:nth-child(4){transition-delay:.18s}@media (max-width:700px){.memory{padding-bottom:calc(8px + var(--safe-b));align-items:end}.memory__card{border-radius:22px;grid-template-columns:1fr;padding:18px 16px 22px;transform:translateY(60px)scale(.96)}.memory__frame{max-height:44vh}.memory__text{padding:0 4px}.memory__story{font-size:.98rem}}.hud__pills{flex-wrap:wrap;gap:6px;display:flex}.pill__star{color:#e0a93a;font-size:1rem;line-height:1}.hud__task{color:var(--rose-deep);background:#fff8e2e6}.hud__task.is-done{animation:.6s cubic-bezier(.34,1.56,.64,1) bump}.trial__card{text-align:center;background:radial-gradient(400px 220px at 50% -10%, #fff3c9 0%, transparent 70%), var(--paper);-webkit-user-select:text;user-select:text;border-radius:26px;width:min(480px,100%);max-height:100%;padding:28px 26px 24px;transition:transform .45s cubic-bezier(.34,1.4,.64,1);position:relative;overflow-y:auto;transform:translateY(30px)scale(.92);box-shadow:0 30px 80px -30px #4b344599}.trial.is-open .trial__card{transform:none}.trial__icon{color:#e0a93a;text-shadow:0 0 18px #ffd778e6;font-size:2.4rem;line-height:1;animation:3s ease-in-out infinite bob}.trial__kicker{margin-top:8px}.trial__text{max-width:40ch;margin:0 auto}.trial__how{background:var(--blush);max-width:40ch;color:var(--rose-deep);border-radius:14px;margin:14px auto 18px;padding:8px 14px;font-size:.95rem;font-weight:700}.trial__how:empty{display:none}.trial__actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.trial.is-outro .trial__later{display:none}.ending{z-index:15;pointer-events:none;padding:calc(var(--gutter) + var(--safe-t)) var(--gutter) calc(var(--gutter) + var(--safe-b));place-items:end center;display:grid;position:fixed;inset:0}.ending__card{pointer-events:auto;text-align:center;-webkit-backdrop-filter:blur(10px);opacity:0;-webkit-user-select:text;user-select:text;background:#fffdfbe6;border-radius:26px;width:min(560px,100%);max-height:58vh;padding:24px 24px 20px;transition:opacity .8s,transform .9s cubic-bezier(.34,1.4,.64,1);overflow-y:auto;transform:translateY(40px)scale(.95);box-shadow:0 30px 80px -30px #4b344599}.ending.is-in .ending__card{opacity:1;transform:none}.ending__title{font:700 clamp(1.9rem, 1.4rem + 2vw, 2.6rem)/1.1 var(--font-display);background:linear-gradient(90deg, var(--rose-deep), #d0709a 45%, #8f6cc9);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 8px}.ending__msg{color:var(--ink-soft);margin:0 0 6px;font-size:1rem}.ending__sign{font:700 1.6rem/1.2 var(--font-script);color:var(--rose-deep);margin:0 0 14px}.wish-done{min-height:0;font:700 1.6rem/1.2 var(--font-script);color:var(--rose-deep);margin:0}.ending.is-wished .wish-done{margin:2px 0 12px;animation:.8s both monthIn}#replay-btn{display:none}.ending.is-wished #replay-btn{animation:.8s .5s both monthIn;display:inline-block}.ending.is-wished #wish-btn{display:none}@media (max-width:700px){.ending__card{max-height:52vh;padding:18px 16px 16px}.ending__msg{font-size:.93rem}}.noscript{text-align:center;font:600 1.2rem var(--font-display);background:var(--cream);place-items:center;margin:0;padding:24px;display:grid;position:fixed;inset:0}@keyframes bob{50%{transform:translateY(-10px)rotate(4deg)}}@keyframes charIn{to{opacity:1;transform:none}}@keyframes bump{40%{transform:scale(1.12)}}@keyframes monthIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes glowPulse{50%{box-shadow:0 10px 30px -6px #ee8fabf2}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
