:root{--radius: 22px;--radius-sm: 14px;--ink: #6a2f42;--ink-soft: #9b6576;--rose: #ff5d8f;--rose-deep: #ff3d78;--coral: #ff8a6b;--gold: #ffb26b;--card: rgba(255, 251, 248, .72);--card-line: rgba(255, 255, 255, .75);--shadow-card: 0 24px 60px rgba(120, 40, 70, .28);--shadow-btn: 0 12px 26px rgba(255, 61, 120, .4);--glow: 0 0 60px rgba(255, 190, 150, 0);--z-sky: 0;--z-stars: 1;--z-hearts: 2;--z-stage: 10;--z-fx: 30;--z-no: 60;--z-toast: 90;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:Nunito,system-ui,sans-serif;color:var(--ink);background:#ffb9a3;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;overflow-x:hidden;overflow-y:auto;overscroll-behavior:none;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}.sky,.sky .layer,.sun,.haze{position:fixed;inset:0;z-index:var(--z-sky);pointer-events:none}.sky .layer{opacity:0;transition:opacity 1.5s ease;will-change:opacity}.layer.sunset{background:linear-gradient(180deg,#ffd9a8,#ffb59a 42%,#ff8fae 78%,#ff7ba6)}.layer.golden{background:linear-gradient(180deg,#ffe8b0,#ffbf85 40%,#ff9276 72%,#ff6f95)}.layer.dusk{background:linear-gradient(180deg,#ffcf9e,#f39aa6 35%,#c078ac 68%,#7b5aa6)}.layer.night{background:linear-gradient(180deg,#3a2a63,#56386f 45%,#7b3d6e 78%,#34204f)}body[data-phase=sunset] .layer.sunset,body[data-phase=golden] .layer.golden,body[data-phase=dusk] .layer.dusk,body[data-phase=night] .layer.night{opacity:1}.sun{width:90vw;max-width:620px;height:90vw;max-height:620px;left:50%;bottom:-30vh;translate:-50% 0;border-radius:50%;background:radial-gradient(circle,#fff6d6f2,#ffd6a08c 34%,#ffb49600 66%);filter:blur(4px);transition:bottom 1.5s ease,background 1.5s ease,opacity 1.5s ease}body[data-phase=golden] .sun{bottom:-24vh}body[data-phase=dusk] .sun{bottom:-40vh;background:radial-gradient(circle,#ffded2b3,#dc96aa00 62%)}body[data-phase=night] .sun{bottom:44vh;width:150px;height:150px;background:radial-gradient(circle,#f6f5fff2,#d2d2ff59 42%,#c8c8ff00 70%)}.haze{background:radial-gradient(120% 80% at 50% 120%,rgba(255,255,255,.28),transparent 60%);mix-blend-mode:screen;opacity:.7}.stars{position:fixed;inset:0;width:100%;height:100%;z-index:var(--z-stars);pointer-events:none;opacity:.18;transition:opacity 1.6s ease}body[data-phase=dusk] .stars{opacity:.55}body[data-phase=night] .stars{opacity:1}.hearts{position:fixed;inset:0;z-index:var(--z-hearts);pointer-events:none;overflow:hidden}.heart{position:absolute;bottom:-8vh;font-size:1.4rem;opacity:0;filter:drop-shadow(0 4px 6px rgba(180,60,90,.18));animation:rise linear infinite;will-change:transform,opacity}@keyframes rise{0%{transform:translateY(0) rotate(-8deg) scale(.9);opacity:0}12%{opacity:.85}85%{opacity:.8}to{transform:translateY(-118vh) rotate(14deg) scale(1.1);opacity:0}}.fx{position:fixed;inset:0;width:100%;height:100%;z-index:var(--z-fx);pointer-events:none}.stage{position:relative;z-index:var(--z-stage);width:100%;max-width:460px;padding:calc(var(--safe-t) + 18px) calc(var(--safe-r) + 18px) calc(var(--safe-b) + 18px) calc(var(--safe-l) + 18px);display:flex;align-items:center;justify-content:center;min-height:100dvh}.screen{display:none;width:100%;flex-direction:column;align-items:center;text-align:center;gap:16px;padding:30px 24px 34px;border-radius:var(--radius);background:var(--card);border:1px solid var(--card-line);box-shadow:var(--shadow-card),var(--glow);-webkit-backdrop-filter:blur(20px) saturate(1.3);backdrop-filter:blur(20px) saturate(1.3);transition:box-shadow 1.5s ease}.screen.is-active{display:flex;animation:screen-in .6s cubic-bezier(.16,1,.3,1) both}.screen.is-out{display:flex;animation:screen-out .24s ease forwards}body[data-phase=night] .screen{box-shadow:var(--shadow-card),0 0 70px #ffb4d259}@keyframes screen-in{0%{opacity:0;transform:translateY(22px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes screen-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-14px) scale(.98)}}.emblem{position:relative;display:grid;place-items:center;width:92px;height:92px;margin-top:4px}.emblem-icon{font-size:3rem;animation:bob 3.4s ease-in-out infinite;filter:drop-shadow(0 8px 14px rgba(255,80,120,.35))}.emblem-glow{position:absolute;inset:-12px;border-radius:50%;background:radial-gradient(circle,rgba(255,190,150,.8),transparent 66%);animation:pulse-glow 3s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-9px) rotate(5deg)}}@keyframes pulse-glow{0%,to{transform:scale(.9);opacity:.6}50%{transform:scale(1.12);opacity:1}}.eyebrow{margin:0;font-family:Quicksand,sans-serif;font-weight:600;font-size:.82rem;letter-spacing:.14em;text-transform:lowercase;color:var(--ink-soft)}.eyebrow.shimmer{background:linear-gradient(90deg,var(--rose),var(--gold),var(--rose));background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 3s linear infinite}@keyframes shimmer{to{background-position:200% center}}.ask{margin:0;font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:600;font-size:1.9rem;line-height:1.18;color:var(--ink);letter-spacing:-.01em}.ask.fancy{font-size:2.1rem;background:linear-gradient(120deg,var(--rose-deep),var(--coral));-webkit-background-clip:text;background-clip:text;color:transparent}.title{margin:0;font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:600;font-size:1.55rem;color:var(--ink)}.subtext{margin:2px 0 0;color:var(--ink-soft);font-size:.98rem}.hint{margin:2px 0 0;font-size:.85rem;color:var(--ink-soft);opacity:.9;min-height:1.1em}.muted{color:var(--ink-soft);font-weight:500}.btn{font-family:Quicksand,sans-serif;font-weight:700;font-size:1.06rem;border:none;border-radius:999px;padding:15px 30px;cursor:pointer;color:#fff;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:transform .16s ease,box-shadow .2s ease,filter .2s ease}.btn:active{transform:scale(.96)}.yes-wrap{display:flex;justify-content:center;width:100%;padding:6px 0 2px}.btn-yes{background:linear-gradient(135deg,var(--rose-deep),var(--coral));box-shadow:var(--shadow-btn);font-size:1.2rem;padding:17px 46px;animation:yes-breathe 2.4s ease-in-out infinite}@keyframes yes-breathe{0%,to{box-shadow:0 12px 26px #ff3d7866;transform:scale(1)}50%{box-shadow:0 16px 40px #ff3d7899;transform:scale(1.035)}}.btn-primary{background:linear-gradient(135deg,var(--rose-deep),var(--coral));box-shadow:var(--shadow-btn);width:100%}.btn-primary:hover{filter:brightness(1.04)}.btn-ghost{background:#ffffff8c;color:var(--rose-deep);border:1.5px solid rgba(255,93,143,.5);box-shadow:none}.btn-no{position:fixed;z-index:var(--z-no);background:#ffffffd9;color:var(--ink-soft);border:1.5px solid rgba(255,145,174,.6);box-shadow:0 8px 18px #963c5a33;padding:13px 26px;font-size:1rem;touch-action:manipulation;transition:left .2s cubic-bezier(.16,1,.3,1),top .2s cubic-bezier(.16,1,.3,1),transform .12s ease}.field{width:100%;display:flex;flex-direction:column;gap:8px;text-align:left}.field label,.field-label{font-family:Quicksand,sans-serif;font-weight:600;font-size:.9rem;color:var(--ink-soft);padding-left:4px}.input{width:100%;font-family:Nunito,sans-serif;font-size:16px;padding:14px 16px;border-radius:var(--radius-sm);border:1.5px solid rgba(255,145,174,.5);background:#ffffffd9;color:var(--ink);outline:none;transition:border-color .2s ease,box-shadow .2s ease}.input:focus{border-color:var(--rose);box-shadow:0 0 0 4px #ff5d8f2e}textarea.input{resize:none;line-height:1.4}.chip-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.chip{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;border-radius:var(--radius-sm);border:1.5px solid rgba(255,145,174,.45);background:#ffffffb3;color:var(--ink);font-family:Quicksand,sans-serif;font-weight:600;font-size:.9rem;cursor:pointer;touch-action:manipulation;transition:transform .14s ease,background .16s ease,box-shadow .16s ease,color .16s ease}.chip .chip-sub{font-size:.72rem;color:var(--ink-soft);font-weight:600}.chip:active{transform:scale(.95)}.chip.selected{background:linear-gradient(135deg,var(--rose-deep),var(--coral));color:#fff;border-color:transparent;box-shadow:var(--shadow-btn)}.chip.selected .chip-sub{color:#ffffffe6}.activity-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}.tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px 10px;border-radius:var(--radius-sm);border:1.5px solid rgba(255,145,174,.45);background:#ffffffb3;color:var(--ink);font-family:Quicksand,sans-serif;font-weight:600;font-size:.92rem;cursor:pointer;touch-action:manipulation;transition:transform .14s ease,background .16s ease,box-shadow .16s ease,color .16s ease}.tile-emoji{font-size:1.9rem}.tile:active{transform:scale(.96)}.tile.selected{background:linear-gradient(135deg,var(--rose-deep),var(--coral));color:#fff;border-color:transparent;box-shadow:var(--shadow-btn);transform:translateY(-2px)}.error{margin:0;min-height:1.1em;color:var(--rose-deep);font-size:.86rem;font-weight:600}.pass{position:relative;width:100%;border-radius:18px;background:linear-gradient(160deg,#fff,#fff4ef);box-shadow:0 16px 34px #78284638;overflow:hidden;text-align:left;animation:pass-pop .6s cubic-bezier(.16,1,.3,1) both}@keyframes pass-pop{0%{opacity:0;transform:translateY(16px) scale(.95) rotate(-1deg)}to{opacity:1;transform:none}}.pass-top{display:flex;align-items:center;gap:14px;padding:18px 20px;background:linear-gradient(135deg,var(--rose-deep),var(--coral));color:#fff}.pass-emoji{font-size:2.2rem;filter:drop-shadow(0 3px 6px rgba(0,0,0,.2))}.pass-head{display:flex;flex-direction:column}.pass-kicker{font-family:Quicksand,sans-serif;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;opacity:.9}.pass-activity{font-family:Fraunces,serif;font-style:italic;font-weight:600;font-size:1.3rem}.pass-perf{position:relative;height:0;border-top:2px dashed rgba(255,145,174,.5);margin:0 14px}.pass-perf:before,.pass-perf:after{content:"";position:absolute;top:-11px;width:20px;height:20px;border-radius:50%;background:var(--card)}.pass-perf:before{left:-24px}.pass-perf:after{right:-24px}.pass-rows{padding:14px 20px 6px;display:flex;flex-direction:column;gap:10px}.pass-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.pass-row span{font-family:Quicksand,sans-serif;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.pass-row b{font-size:1rem;color:var(--ink);text-align:right}.pass-row.note-row b{font-weight:600;font-style:italic;color:var(--rose-deep)}.countdown{margin:6px 14px 16px;padding:12px;border-radius:14px;background:#ff5d8f14;display:flex;justify-content:center;gap:10px;font-variant-numeric:tabular-nums}.cd-unit{display:flex;flex-direction:column;align-items:center;min-width:46px}.cd-num{font-family:Quicksand,sans-serif;font-weight:700;font-size:1.5rem;color:var(--rose-deep);line-height:1}.cd-label{font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-top:4px}.countdown.soon{font-family:Quicksand,sans-serif;font-weight:700;color:var(--rose-deep)}.actions{display:flex;flex-direction:column;gap:10px;width:100%}.save-status{margin:0;min-height:1.1em;font-size:.82rem;font-weight:600;color:var(--ink-soft)}.toast{position:fixed;left:50%;bottom:calc(var(--safe-b) + 26px);translate:-50% 20px;z-index:var(--z-toast);background:#3c1928eb;color:#fff;font-family:Quicksand,sans-serif;font-weight:600;font-size:.9rem;padding:12px 20px;border-radius:999px;box-shadow:0 12px 30px #00000047;opacity:0;pointer-events:none;transition:opacity .3s ease,translate .3s ease}.toast.show{opacity:1;translate:-50% 0}@media(max-height:720px){.emblem{width:74px;height:74px}.emblem-icon{font-size:2.5rem}.ask{font-size:1.7rem}.screen{gap:13px;padding:24px 22px}}@media(max-width:380px){.activity-grid{grid-template-columns:1fr 1fr}.ask{font-size:1.7rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.08s!important}.heart{display:none}}
