@import "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Playfair+Display:wght@400;500;600&family=Inter:wght@300;400;500&display=swap";
:root{--bg:#fdfbf7;--card:#f6efe7;--card-hover:#f0e8dc;--green:#8baf7f;--green-light:#a8c89e;--rose:#d4a5a5;--rose-light:#e8c4c4;--text:#3d3d3d;--text-soft:#6b6b6b;--text-muted:#9b9b9b;--border:#e8dfd4;--shadow:#0000000a;--radius:16px;--radius-sm:10px;--font-brand:"Poppins", -apple-system, BlinkMacSystemFont, sans-serif;--font-serif:"Playfair Display", Georgia, serif;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, sans-serif}[data-theme=dark]{--bg:#1a1a1a;--card:#252525;--card-hover:#2e2e2e;--green:#8baf7f;--green-light:#a8c89e;--rose:#d4a5a5;--rose-light:#e8c4c4;--text:#e8e8e8;--text-soft:#b0b0b0;--text-muted:#777;--border:#333;--shadow:#0003;--flower-overlay-bg:#141414cc;--flower-overlay-text:#e0e0e0}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3{font-family:var(--font-serif);font-weight:500}button{font-family:var(--font-sans);cursor:pointer;border:none;outline:none}input,textarea,select{font-family:var(--font-sans);border:none;outline:none}a{color:inherit;text-decoration:none}.container{max-width:480px;margin:0 auto;padding:0 24px}.card{background:var(--card);border-radius:var(--radius);box-shadow:0 2px 8px var(--shadow);padding:24px;transition:transform .2s,box-shadow .2s}.card:hover{box-shadow:0 4px 12px var(--shadow);transform:translateY(-1px)}.btn-primary{background:var(--green);color:#fff;border-radius:var(--radius-sm);letter-spacing:.3px;width:100%;padding:14px 28px;font-size:15px;font-weight:500;transition:background .2s}.btn-primary:hover{background:var(--green-light)}.btn-secondary{color:var(--text-soft);border-radius:var(--radius-sm);border:1px solid var(--border);background:0 0;width:100%;padding:12px 24px;font-size:14px;font-weight:400;transition:border-color .2s}.btn-secondary:hover{border-color:var(--text-muted)}.input-field{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);padding:14px 18px;font-size:15px;transition:border-color .2s}.input-field:focus{border-color:var(--green)}.input-field::placeholder{color:var(--text-muted)}.textarea-field{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);resize:vertical;min-height:120px;padding:18px;font-size:15px;line-height:1.6;transition:border-color .2s}.textarea-field:focus{border-color:var(--green)}.textarea-field::placeholder{color:var(--text-muted);font-style:italic}.label{color:var(--text-soft);letter-spacing:.3px;margin-bottom:8px;font-size:13px;font-weight:500;display:block}.page-title{font-family:var(--font-brand);color:var(--text);margin-bottom:8px;font-size:28px;font-weight:600}.page-subtitle{color:var(--text-soft);margin-bottom:32px;font-size:15px;line-height:1.5}.fade-in{animation:.4s forwards fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.screen{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:48px 24px;display:flex}.skeleton{background:linear-gradient(90deg, var(--card) 25%, var(--card-hover) 50%, var(--card) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{border-radius:var(--radius);height:220px;margin-bottom:16px}.skeleton-text{width:60%;height:14px;margin-bottom:8px}.skeleton-text-short{width:40%;height:12px}.bloom-enter{animation:.6s forwards bloomIn}@keyframes bloomIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:4px}@media (max-width:480px){.btn-primary,.btn-secondary{min-height:48px}.input-field,.textarea-field{font-size:16px}.container{padding:0 16px}}@media (hover:none){.card:active{transition:transform .1s;transform:scale(.98)}}.nav-bar{background:var(--bg);border-bottom:1px solid var(--border);z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:space-between;align-items:center;padding:12px 24px;display:flex;position:sticky;top:0}.nav-title{font-family:var(--font-brand);font-size:18px;font-weight:400}.nav-actions{align-items:center;gap:16px;display:flex}.nav-switch{background:var(--card);width:28px;height:28px;color:var(--text-soft);border-radius:50%;justify-content:center;align-items:center;font-size:18px;line-height:1;text-decoration:none;transition:background .2s,color .2s;display:flex}.nav-switch:hover{background:var(--card-hover);color:var(--text)}.nav-link{color:var(--text-muted);font-size:13px;transition:color .2s}.nav-link:hover{color:var(--text-soft)}@media (max-width:768px){.nav-link{display:none}}.streak-bar{justify-content:center;gap:32px;padding:16px 0 20px;display:flex}.streak-item{flex-direction:column;align-items:center;gap:2px;display:flex}.streak-number{font-family:var(--font-serif);color:var(--text);font-size:24px;font-weight:600}.streak-label{color:var(--text-muted);letter-spacing:.3px;font-size:11px}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}@keyframes heartPop{0%{transform:scale(1)}50%{transform:scale(1.4)}to{transform:scale(1)}}.heart-pop{animation:.3s heartPop}.day-card-container{perspective:1000px;margin-bottom:24px}.day-card-flipper{width:100%;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.4,0,.2,1);position:relative}.day-card-flipper.flipped{transform:rotateY(180deg)}.day-card-face{backface-visibility:hidden}.day-card-front{cursor:pointer}.day-card-back{background:var(--bg);overflow-wrap:break-word;word-break:break-word;border-radius:8px;flex-direction:column;width:100%;height:100%;padding:24px;display:flex;position:absolute;top:0;left:0;overflow:hidden auto;transform:rotateY(180deg);box-shadow:0 1px 4px #0000000a}.day-card-image{aspect-ratio:1;background:var(--card);border-radius:8px;justify-content:center;align-items:center;width:100%;min-height:200px;display:flex;position:relative;overflow:hidden}.flower-overlay{-webkit-backdrop-filter:blur(44px)saturate(.3);background:var(--flower-overlay-bg,#fdfbf7bf);border-radius:8px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.flower-overlay-text{color:var(--flower-overlay-text,var(--text-soft));letter-spacing:.3px;letter-spacing:.3px;font-size:14px;font-weight:500}.flower-image{object-fit:cover;border-radius:8px;width:100%;height:100%}.flower-placeholder{background:var(--card);border-radius:8px;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.flower-placeholder span{color:var(--text-muted);font-size:13px;font-style:italic}.flower-empty{background:var(--card);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:12px;width:100%;height:100%;display:flex}.flower-empty-label{color:var(--text-muted);letter-spacing:.3px;font-size:12px}.day-card-meta{align-items:center;gap:8px;padding:8px 2px 0;display:flex}.day-card-date{color:var(--text-soft);font-size:13px;font-weight:500}.day-card-number{color:var(--text-muted);font-size:14px;font-family:var(--font-serif)}.day-card-seed{color:var(--text-muted);cursor:pointer;font-size:13px;transition:color .15s}.day-card-seed:hover{color:var(--text-primary)}.day-card-seed-controls{align-items:center;gap:4px;margin-left:auto;display:flex}.seed-dice-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:0 2px;font-size:20px;line-height:1;transition:color .2s,transform .2s}.seed-dice-btn:hover{color:var(--text-primary);transform:rotate(45deg)}.seed-input-form{display:inline-flex}.seed-input{border:1px solid var(--border);background:var(--bg-secondary);width:64px;color:var(--text-primary);font-size:13px;font-family:var(--font-serif);text-align:center;border-radius:4px;padding:2px 6px}.seed-input:focus{border-color:var(--text-muted);outline:none}.day-card-status{color:var(--text-muted);text-align:center;padding:4px 2px 0;font-size:12px;font-style:italic}.day-card-back-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.day-card-flip-back{background:var(--bg);border:1px solid var(--border);width:28px;height:28px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:16px;transition:background .2s;display:flex}.day-card-flip-back:hover{background:var(--card-hover)}.entry-composer{flex-direction:column;flex:1;min-height:0;display:flex}.entry-prompt{font-family:var(--font-serif);color:var(--text-soft);text-align:center;margin-bottom:20px;font-size:17px;font-style:italic;line-height:1.5}.entry-textarea{width:100%;font-family:var(--font-sans);color:var(--text);resize:none;background:0 0;border:none;outline:none;flex:1;padding:0;font-size:16px;line-height:1.8}.entry-textarea::placeholder{color:var(--text-muted);opacity:.5}.entry-submit{background:var(--green);color:#fff;border-radius:50%;justify-content:center;align-self:flex-end;align-items:center;width:40px;height:40px;margin-top:12px;font-size:18px;transition:opacity .2s,transform .2s;display:flex}.entry-submit:disabled{opacity:.3;transform:scale(.9)}.entry-submit:not(:disabled):hover{transform:scale(1.1)}.day-card-front:active .day-card-image{opacity:.92;transition:opacity .1s}.day-card-back-content{flex-direction:column;flex:1;gap:12px;display:flex;overflow-y:auto}.back-center{flex:1;justify-content:center;align-items:center;display:flex}.back-message{color:var(--text-soft);text-align:center;font-size:14px;font-style:italic;line-height:1.6}.back-entries{flex-direction:column;gap:16px;display:flex}.back-entry{border-bottom:1px solid var(--border);padding-bottom:12px}.back-entry:last-child{border-bottom:none}.back-entry-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.back-entry-name{color:var(--text-muted);text-transform:lowercase;letter-spacing:.3px;font-size:12px;font-weight:500}.back-entry-text{color:var(--text);white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;font-size:15px;line-height:1.7}.back-replies{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:8px;display:flex}.back-reply{align-items:baseline;gap:8px;display:flex}.back-reply-name{color:var(--text-muted);flex-shrink:0;font-size:11px;font-weight:500}.back-reply-text{color:var(--text-soft);overflow-wrap:break-word;word-break:break-word;min-width:0;font-size:13px;line-height:1.4}.back-reply-input{align-items:center;gap:8px;margin-top:auto;padding-top:8px;display:flex}.landing-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:0;min-height:100dvh;padding:32px 24px;display:flex}.landing-flower-wrap{aspect-ratio:1;border:3px solid #8baf7f26;border-radius:50%;width:180px;margin-bottom:40px;overflow:hidden;box-shadow:0 12px 40px #8baf7f33,0 4px 12px #0000000a}.landing-flower{width:100%;height:100%;display:block}.landing-title{font-family:var(--font-brand);color:var(--text);letter-spacing:-.5px;margin-bottom:6px;font-size:26px;font-weight:500}.landing-desc{color:var(--text-muted);letter-spacing:.2px;margin-bottom:40px;font-size:14px}.landing-actions{flex-direction:column;gap:12px;width:100%;max-width:280px;display:flex}.landing-actions .btn-primary{background:var(--green);color:#fff;letter-spacing:.3px;border-radius:50px;padding:16px 28px;font-size:15px;font-weight:500;transition:transform .2s,box-shadow .2s;box-shadow:0 4px 16px #8baf7f4d}.landing-actions .btn-primary:hover{background:var(--green-light);transform:translateY(-1px);box-shadow:0 6px 20px #8baf7f66}.landing-actions .btn-secondary{background:var(--card);color:var(--text);border:none;border-radius:50px;padding:16px 28px;font-size:15px;font-weight:500;transition:transform .2s,box-shadow .2s;box-shadow:0 2px 8px #0000000f}.landing-actions .btn-secondary:hover{border-color:#0000;transform:translateY(-1px);box-shadow:0 4px 12px #00000014}.share-section{background:var(--card);border-radius:var(--radius-sm);margin-bottom:24px;padding:20px}.share-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;font-size:12px;font-weight:500}.share-code{font-family:var(--font-serif);letter-spacing:2px;margin-bottom:12px;font-size:28px;font-weight:600}.share-instructions{color:var(--text-soft);margin-bottom:16px;font-size:13px;line-height:1.5}.share-copy-btn{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);cursor:pointer;background:#fff;padding:10px;font-size:13px;transition:all .2s}.share-copy-btn:hover{background:var(--card-hover)}.share-copy-btn:active{transform:scale(.98)}.step-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:20px;font-size:12px;font-weight:500}.input-hint{color:var(--text-muted);margin-top:6px;font-size:12px}.input-error{color:var(--rose);margin-top:6px;font-size:12px}.setup-summary{background:var(--card);border-radius:var(--radius-sm);margin-bottom:16px;padding:16px 20px}.setup-summary-row{justify-content:space-between;align-items:center;padding:6px 0;display:flex}.setup-summary-label{color:var(--text-muted);font-size:13px}.setup-summary-value{color:var(--text);font-size:14px;font-weight:500}.setup-person-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;margin-bottom:12px;padding:16px 20px}.setup-person-title{font-family:var(--font-serif);margin-bottom:8px;font-size:16px;font-weight:500}.setup-person-detail{color:var(--text-soft);justify-content:space-between;padding:3px 0;font-size:13px;display:flex}.setup-done-card{background:var(--card);border-radius:var(--radius-sm);margin-bottom:16px;padding:20px}.setup-done-name{font-family:var(--font-serif);margin-bottom:12px;font-size:18px;font-weight:500}.setup-done-details p{color:var(--text);gap:8px;padding:4px 0;font-size:14px;display:flex}.setup-done-label{color:var(--text-muted);min-width:90px;font-size:12px}.settings-page{min-height:100dvh;padding:0 0 60px}.settings-container{max-width:380px;margin:0 auto;padding:0 24px}.settings-top{align-items:center;gap:12px;padding:24px 0 32px;display:flex}.settings-back{color:var(--text-muted);font-size:18px;line-height:1;text-decoration:none}.settings-title{font-family:var(--font-brand);color:var(--text-primary);font-size:18px;font-weight:600}.settings-garden-code{background:var(--card);border-radius:var(--radius-sm);margin-bottom:32px;padding:16px}.settings-code-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:11px;font-weight:500;display:block}.settings-code-display{justify-content:space-between;align-items:center;display:flex}.settings-code-display span{font-family:var(--font-serif);letter-spacing:1px;font-size:20px;font-weight:600}.settings-copy-btn{color:var(--green);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;padding:4px 10px;font-size:12px;font-weight:500;transition:background .15s}.settings-copy-btn:hover{background:var(--bg-secondary)}.settings-code-type{color:var(--text-muted);margin-top:8px;font-size:12px;display:block}.settings-fields{flex-direction:column;gap:0;display:flex}.settings-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 0;display:flex}.settings-row label{color:var(--text-primary);flex-shrink:0;width:100px;font-size:14px}.settings-row input,.settings-row select{text-align:right;color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;padding:4px 0;font-family:inherit;font-size:14px}.settings-row input::placeholder{color:var(--text-muted);opacity:.6}.settings-row select{appearance:none;cursor:pointer}.settings-msg{color:var(--green);text-align:center;margin:16px 0;font-size:13px}.settings-save{width:100%;color:var(--text-primary);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;margin-top:24px;padding:12px;font-size:14px;font-weight:500;transition:background .15s}.settings-save:hover{background:var(--bg-secondary)}.settings-save:disabled{opacity:.5;cursor:default}.settings-logout-btn{width:100%;color:var(--text-muted);cursor:pointer;text-align:center;background:0 0;border:none;margin-top:16px;padding:12px;font-size:13px}.settings-logout-btn:hover{color:var(--rose)}.theme-toggle{border:1px solid var(--border);border-radius:8px;gap:0;display:flex;overflow:hidden}.theme-toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:8px 16px;font-size:13px;transition:background .2s,color .2s}.theme-toggle-btn.active{background:var(--card-hover);color:var(--text);font-weight:500}.settings-toggle{background:var(--border);cursor:pointer;border:none;border-radius:12px;width:44px;height:24px;padding:0;transition:background .2s;position:relative}.settings-toggle.on{background:var(--green)}.settings-toggle-knob{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000001a}.settings-toggle.on .settings-toggle-knob{transform:translate(20px)}.notif-modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;padding:24px;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.notif-modal{background:var(--bg);text-align:center;border-radius:20px;width:100%;max-width:320px;padding:32px 28px;box-shadow:0 20px 60px #00000026}.notif-modal-icon{margin-bottom:16px;font-size:36px}.notif-modal-title{font-family:var(--font-brand);color:var(--text);margin-bottom:8px;font-size:18px;font-weight:500}.notif-modal-desc{color:var(--text-soft);margin-bottom:24px;font-size:14px;line-height:1.6}.notif-modal-actions{flex-direction:column;gap:10px;display:flex}.notif-modal-enable{background:var(--green);color:#fff;cursor:pointer;border:none;border-radius:50px;padding:14px;font-size:14px;font-weight:500;transition:transform .2s,box-shadow .2s}.notif-modal-enable:hover{transform:translateY(-1px);box-shadow:0 4px 12px #8baf7f4d}.notif-modal-dismiss{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:8px;font-size:13px}.notif-modal-dismiss:hover{color:var(--text-soft)}.bottom-nav{z-index:900;background:var(--bg);border-top:1px solid var(--border);padding:8px 0;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px));display:none;position:fixed;bottom:0;left:0;right:0}@media (max-width:768px){.bottom-nav{justify-content:space-around;align-items:center;display:flex}body{padding-bottom:64px}}.bottom-nav-item{color:var(--text-muted);flex-direction:column;align-items:center;gap:2px;padding:4px 16px;font-size:10px;text-decoration:none;transition:color .15s;display:flex}.bottom-nav-item.active{color:var(--text-primary)}.bottom-nav-item svg{opacity:.7}.bottom-nav-item.active svg{opacity:1}.install-banner{z-index:1000;padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));background:var(--card);border-top:1px solid var(--border);position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #0000000f}.install-banner-content{justify-content:space-between;align-items:center;gap:12px;max-width:400px;margin:0 auto;display:flex}.install-banner-text{color:var(--text-primary);flex:1;margin:0;font-size:13px}.install-share-icon{font-size:14px}.install-banner-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.install-banner-btn{color:#fff;cursor:pointer;background:#b48dff;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500}.install-banner-dismiss{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.install-banner-dismiss:hover{color:var(--text-primary)}@media (max-width:480px){.container{padding:0 16px}.landing-flower-wrap{width:150px}.landing-title{font-size:22px}.settings-container{padding:0 16px}.day-card-back{padding:16px}.streak-bar{gap:24px;padding:12px 0 16px}.streak-number{font-size:20px}.nav-bar{padding:10px 16px}}@media (max-width:360px){.landing-flower-wrap{width:130px}.btn-primary{padding:12px 20px;font-size:14px}.input-field{padding:12px 14px;font-size:14px}}@supports (padding-top:env(safe-area-inset-top)){.nav-bar{padding-top:calc(12px + env(safe-area-inset-top))}.settings-page{padding-bottom:calc(60px + env(safe-area-inset-bottom))}.landing-page{padding-bottom:env(safe-area-inset-bottom)}}
