:root{--cream:#fff8ef;--paper:#fffdf8;--blush:#f8d9d9;--rose:#bd6873;--red:#b94f5e;--brown:#5a3b38;--muted:#8c6b67;--gold:#c69a52;--shadow:0 18px 45px rgba(100,55,55,.14);--radius:26px}*{box-sizing:border-box}html{background:var(--cream);scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;color:var(--brown);font-family:Georgia,"Times New Roman",serif;background:radial-gradient(circle at 15% 12%,#fff 0 2px,transparent 3px),linear-gradient(160deg,#fffaf2,#fcedea);overflow-x:hidden}.app-shell{width:min(100%,520px);min-height:100vh;min-height:100dvh;margin:auto;position:relative}.screen{display:none;min-height:100vh;min-height:100dvh;padding:calc(70px + env(safe-area-inset-top)) 22px calc(100px + env(safe-area-inset-bottom));text-align:center;align-items:center;justify-content:center;flex-direction:column}.screen.active{display:flex;animation:fadeUp .55s ease}.auth-screen h1,.welcome-screen h1,.home-header h1{font-size:clamp(2rem,9vw,3rem);line-height:1.08;margin:.45rem 0}.eyebrow{font:700 .72rem/1.2 Arial,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--rose)}.password-card,.quote-card{width:100%;background:rgba(255,253,248,.88);border:1px solid rgba(198,154,82,.25);box-shadow:var(--shadow);border-radius:var(--radius);padding:22px;margin-top:20px;text-align:left}.password-card label{display:block;font:700 .84rem Arial,sans-serif;margin-bottom:8px}.hint{font-size:1.6rem;vertical-align:middle;margin-left:8px}.password-row{display:flex;gap:8px}.password-row input{min-width:0;flex:1;border:1px solid #e4c4c2;border-radius:15px;padding:14px;font-size:1rem;background:#fff}.primary-button,.secondary-button,.danger-button{border:0;border-radius:999px;min-height:50px;padding:13px 20px;font:700 .75rem Arial,sans-serif;letter-spacing:.08em;cursor:pointer}.primary-button{color:#fff;background:linear-gradient(135deg,var(--red),#d77e88);box-shadow:0 10px 24px rgba(185,79,94,.25)}.password-card>.primary-button{width:100%;margin-top:8px}.secondary-button{background:#fff;border:1px solid #ddb7b5;color:var(--brown)}.danger-button{background:var(--red);color:white}.icon-button,.text-button,.back-button,.floating-control,.music-control{border:0;background:transparent;color:var(--brown);cursor:pointer}.icon-button{min-width:48px;border-radius:14px;background:#f7e4e2}.error{min-height:1.35em;color:var(--red);font-family:Arial,sans-serif;font-size:.85rem}.welcome-heart{font-size:5rem;color:var(--rose);animation:pulse 2s infinite}.welcome-screen p{font-size:1.25rem}.home-header{margin-bottom:18px}.tap-title{cursor:pointer}.quote-card{text-align:center;margin:0 0 22px;font-style:italic}.garden{width:100%;display:grid;grid-template-columns:repeat(7,1fr);align-items:end;gap:5px;padding:18px 8px 4px;background:linear-gradient(transparent 70%,rgba(133,151,104,.15) 70%);border-radius:22px}.flower-spot{appearance:none;border:0;background:transparent;display:grid;place-items:center;height:65px;font-size:1.75rem;color:#bfae9e}.flower-spot.empty span{opacity:0;transform:translateY(18px)}.flower-spot.bloomed span{opacity:1;animation:bloom .7s ease both}.flower-spot.locked:before{content:"♡";font-size:1rem;color:#c9a6a5}.garden-caption{font:700 .75rem Arial,sans-serif;color:var(--muted)}.wide{width:100%;margin-top:15px}.text-button{text-decoration:underline;text-underline-offset:4px;margin-top:16px;min-height:44px}.back-button{position:fixed;z-index:8;left:max(16px,calc((100vw - 520px)/2 + 16px));top:calc(16px + env(safe-area-inset-top));width:48px;height:48px;border-radius:50%;background:rgba(255,253,248,.94);box-shadow:0 6px 20px rgba(90,59,56,.12);font-size:1.5rem}.day-screen{justify-content:flex-start}.day-copy{max-width:390px}.day-copy h1{font-size:1.7rem}.envelope-button{border:0;background:none;padding:30px 10px 18px;cursor:pointer}.envelope{display:block;position:relative;width:min(280px,76vw);height:178px;background:#ead5bf;border-radius:5px;box-shadow:var(--shadow);overflow:visible}.envelope:before,.envelope:after{content:"";position:absolute;inset:0}.envelope:before{background:linear-gradient(32deg,#f1dfca 49%,transparent 50%),linear-gradient(-32deg,#ecd3bd 49%,transparent 50%)}.flap{position:absolute;z-index:3;top:0;left:0;width:100%;height:60%;background:#f6e6d3;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;transition:transform .8s}.seal{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-25%);display:grid;place-items:center;width:50px;height:50px;color:#fff;background:var(--rose);clip-path:path("M25 46 C5 32 0 20 4 11 C8 2 20 3 25 12 C30 3 42 2 46 11 C50 20 45 32 25 46");filter:brightness(var(--seal-light,1));transition:.35s}.letter-peek{position:absolute;z-index:1;width:82%;height:88%;left:9%;bottom:5%;background:var(--paper);transition:transform .8s}.envelope.shake{animation:shake .5s}.envelope.open .flap{transform:rotateX(180deg);z-index:0}.envelope.open .letter-peek{transform:translateY(-70px)}.envelope.complete .seal{filter:drop-shadow(0 0 12px #e78992) brightness(1.15)}.heart-intro{display:flex;flex-direction:column;gap:5px;margin:12px}.heart-counter{font:700 .82rem Arial,sans-serif}.heart-field{position:relative;width:100%;height:255px;margin:8px 0}.collect-heart{position:absolute;width:50px;height:50px;border:0;background:transparent;color:var(--red);font-size:2.4rem;cursor:pointer;animation:float 3s ease-in-out infinite;touch-action:manipulation}.collect-heart.collected{pointer-events:none;animation:flyToEnvelope .65s ease forwards}.message-list{text-align:left;width:100%;margin:0;padding:0 8px 0 30px}.message-list li{padding:6px 0;animation:fadeUp .4s}.reveal-copy{display:grid;gap:8px;margin:10px 0;font-size:1.05rem}.letter-modal{position:fixed;z-index:30;inset:0;background:rgba(79,45,46,.35);padding:calc(18px + env(safe-area-inset-top)) 14px calc(18px + env(safe-area-inset-bottom));overflow:auto}.letter-card{width:min(100%,500px);margin:auto;background:var(--paper);border:1px solid #e5c89b;border-radius:12px;padding:28px 24px;box-shadow:0 25px 70px rgba(70,40,40,.3);text-align:left;line-height:1.65}.letter-card h2{font-size:1.8rem}.letter-card .primary-button{width:100%;margin-top:12px}.signature{font-style:italic}.reward-screen .bloom{font-size:6rem;animation:fallBloom 1.2s ease both}.floating-control,.music-control{position:fixed;z-index:15;bottom:calc(18px + env(safe-area-inset-bottom));height:48px;background:rgba(255,253,248,.95);box-shadow:0 8px 24px rgba(90,59,56,.18);font:700 .75rem Arial,sans-serif}.floating-control{left:max(16px,calc((100vw - 520px)/2 + 16px));padding:0 18px;border-radius:999px}.music-control{right:max(16px,calc((100vw - 520px)/2 + 16px));width:48px;border-radius:50%;font-size:1.2rem}.backdrop{position:fixed;z-index:25;inset:0;background:rgba(75,44,45,.3);display:flex;align-items:flex-end;justify-content:center}.days-sheet{width:min(100%,520px);max-height:82vh;overflow:auto;background:var(--paper);border-radius:28px 28px 0 0;padding:8px 18px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(70,40,40,.2);animation:slideUp .35s}.sheet-handle{width:44px;height:5px;border-radius:5px;background:#dbc4bd;margin:2px auto 12px}.sheet-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.sheet-header h2{font-size:1.25rem;text-align:left}.day-list{display:grid;gap:9px}.day-option{width:100%;border:1px solid #efd9d6;background:#fffaf6;border-radius:18px;padding:15px;text-align:left;color:var(--brown);display:flex;justify-content:space-between;align-items:center;cursor:pointer}.day-option[disabled]{opacity:.65}.day-state{font:700 .68rem Arial,sans-serif;color:var(--rose);text-transform:uppercase}.confirm-card{width:min(90%,420px);margin:auto;background:var(--paper);padding:24px;border-radius:24px;text-align:center}.confirm-actions{display:flex;justify-content:center;gap:10px}.toast{position:fixed;z-index:50;left:50%;bottom:calc(82px + env(safe-area-inset-bottom));transform:translate(-50%,20px);width:min(90%,430px);background:var(--brown);color:#fff;border-radius:16px;padding:12px 16px;text-align:center;opacity:0;pointer-events:none;transition:.25s;font:700 .8rem Arial,sans-serif}.toast.show{opacity:1;transform:translate(-50%,0)}.hidden{display:none!important}.easter-message{min-height:1.4em;color:var(--rose);font-style:italic}.sparkle{font-size:2rem;color:var(--gold)}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes pulse{50%{transform:scale(1.08)}}@keyframes float{50%{transform:translateY(-9px) rotate(4deg)}}@keyframes shake{25%{transform:translateX(-6px) rotate(-1deg)}75%{transform:translateX(6px) rotate(1deg)}}@keyframes flyToEnvelope{to{left:50%;top:-170px;opacity:0;transform:scale(.2)}}@keyframes slideUp{from{transform:translateY(100%)}}@keyframes bloom{from{opacity:0;transform:translateY(18px) scale(.2)}to{opacity:1;transform:none}}@keyframes fallBloom{0%{opacity:0;transform:translateY(-120px) rotate(-20deg)}70%{transform:translateY(5px) rotate(5deg)}100%{opacity:1;transform:none}}
@media(max-height:700px){.screen{padding-top:calc(58px + env(safe-area-inset-top))}.envelope{height:145px;width:min(240px,70vw)}.day-copy p{margin:.4rem}.day-copy h1{margin:.35rem}}@media(prefers-reduced-motion:reduce){.floating-heart{animation:none!important}}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* Day 1 state and mobile-safe interaction fixes. */
.screen{min-height:100vh;height:auto;padding-bottom:calc(120px + env(safe-area-inset-bottom));overflow:visible}.day-screen{justify-content:flex-start}.hint{display:inline-block;min-width:34px;font-size:32px;line-height:1;animation:crownFloat 3.2s ease-in-out infinite}.heart-play-area{position:relative;width:100%;min-height:470px;margin:4px 0 10px;overflow:visible}.heart-play-area .envelope-button{position:relative;z-index:2;margin-top:90px}.heart-field{position:absolute;z-index:4;inset:0;width:100%;height:100%;margin:0;overflow:visible}.heart-position{position:absolute;width:52px;height:52px}.floating-heart{width:52px;height:52px;border:0;border-radius:50%;background:rgba(255,248,239,.7);color:var(--red);font-size:2.45rem;line-height:1;display:grid;place-items:center;cursor:pointer;touch-action:manipulation;filter:drop-shadow(0 7px 8px rgba(185,79,94,.2));animation-name:heartFloat;animation-duration:var(--float-duration,4.5s);animation-delay:var(--float-delay,0s);animation-timing-function:ease-in-out;animation-iteration-count:infinite;will-change:transform}.floating-heart.collected{pointer-events:none;animation:heartCollect .7s ease-in forwards}.message-list{margin-bottom:22px;padding-bottom:18px}.reveal-copy{margin-bottom:20px}.dev-reset{position:fixed;z-index:16;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));transform:translateX(-50%);border:1px solid #d7aaa9;border-radius:999px;background:#fffaf6;color:var(--brown);padding:9px 13px;font:700 .62rem Arial,sans-serif;letter-spacing:.05em;box-shadow:0 6px 16px rgba(90,59,56,.14);cursor:pointer}
@keyframes crownFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-6px) rotate(3deg)}}
@keyframes heartFloat{0%{transform:translate3d(0,0,0) rotate(calc(var(--rotate-angle) * -1)) scale(1)}25%{transform:translate3d(6px,calc(var(--float-distance) * -.6),0) rotate(4deg) scale(1.06)}50%{transform:translate3d(-4px,calc(var(--float-distance) * -1),0) rotate(var(--rotate-angle)) scale(1)}75%{transform:translate3d(-7px,calc(var(--float-distance) * -.45),0) rotate(-3deg) scale(1.05)}100%{transform:translate3d(0,0,0) rotate(calc(var(--rotate-angle) * -1)) scale(1)}}
@keyframes heartCollect{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translate3d(0,-210px,0) scale(.18) rotate(18deg)}}
@media(max-width:380px){.heart-play-area{min-height:450px}.heart-position{width:48px;height:48px}.floating-heart{width:48px;height:48px;font-size:2.25rem}}
.completed-day-screen{gap:12px}.completed-day-screen .bloom{font-size:4.5rem}.completed-day-screen .primary-button,.completed-day-screen .secondary-button{width:100%;max-width:390px}.sheet-tools{display:flex;gap:8px;align-items:center}.day-option-group{border:1px solid #efd9d6;background:#fffaf6;border-radius:18px;padding:14px}.day-option-summary{display:flex;justify-content:space-between;gap:12px;text-align:left}.day-option-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.day-option-actions button{min-height:44px;flex:1}.subtle-danger{color:#8f4c54;background:#fff8f5;border-color:#e8c6c4;font-size:.68rem}#homePlayAgain,#rewardRestart{margin-top:10px}.confirm-card p{line-height:1.5;color:var(--muted)}
.app-version{margin:16px 0 0;text-align:center;color:#b79b96;font:600 .58rem Arial,sans-serif;letter-spacing:.12em}
