:root{--green-950:#0f1f0f;--green-900:#1a2f1a;--green-800:#243d24;--green-700:#2d4a2d;--green-600:#3d5c3d;--green-500:#4a6b4a;--green-400:#5c7c5c;--green-300:#6b8e6b;--green-200:#8faf8f;--green-100:#b8cfb8;--green-50:#e8efe8;--surface:#f4f6f4;--surface-card:#fafbfa;--text:#1a2f1a;--text-muted:#3d5c3d;--border:#e0e8e0}.relationship-container{min-height:100vh;background:linear-gradient(180deg,var(--green-900) 0,var(--green-800) 50%,var(--green-900) 100%);padding:2rem 1rem}.password-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.password-card{background:var(--surface-card);border-radius:16px;padding:3rem;box-shadow:0 4px 24px rgba(0,0,0,.15);max-width:400px;width:100%;text-align:center;border:1px solid var(--border)}.password-card h2{color:var(--green-800);margin-bottom:1rem;font-size:1.75rem;font-weight:600}.password-card p{color:var(--text-muted);margin-bottom:2rem;font-size:1rem}.password-form{display:flex;flex-direction:column;gap:1rem}.password-input{padding:.875rem 1rem;border:1px solid var(--border);border-radius:10px;font-size:1rem;transition:border-color .2s,box-shadow .2s;width:100%;box-sizing:border-box;background:var(--surface)}.password-input:focus{outline:none;border-color:var(--green-500);box-shadow:0 0 0 3px rgba(74,107,74,.15)}.password-input:disabled{background:var(--green-50);cursor:not-allowed;opacity:.7}.password-error{color:#c45c5c;font-size:.9rem;margin-top:-.5rem}.password-submit-btn{background:var(--green-600);color:#fffaf4;padding:.875rem 1.5rem;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s,transform .15s}.password-submit-btn:hover{background:var(--green-700);transform:translateY(-1px)}.password-submit-btn:active{transform:translateY(0)}.password-submit-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.password-submit-btn:disabled:hover{transform:none}.cooldown-message{color:var(--green-600);font-size:.9rem;margin-top:.5rem;font-weight:500}.lockout-message{text-align:center}.lockout-icon{font-size:3rem;margin:1rem 0}.lockout-text{color:#b85454;font-size:1.1rem;font-weight:600;margin:1rem 0}.lockout-subtext{color:var(--text-muted);font-size:.9rem;margin-top:.5rem}.relationship-header{text-align:center;margin-bottom:2.5rem}.relationship-header h1{font-size:2.5rem;color:var(--surface-card);font-weight:600;margin:0;letter-spacing:.02em}.relationship-header .moon-subtitle{font-size:1.25rem;color:#fffaf4;font-weight:400;margin:.5rem 0 0;letter-spacing:.03em}.couple-names{font-size:1.75rem;color:var(--green-100);margin:1rem 0 0;font-weight:400;letter-spacing:.03em}.error,.loading{text-align:center;color:var(--green-100);font-size:1.25rem;padding:2rem}.error-message{background:rgba(196,92,92,.2);color:var(--surface-card);border:1px solid rgba(196,92,92,.4);padding:1rem 1.25rem;border-radius:10px;margin:1rem auto;max-width:600px;text-align:center;cursor:pointer}.stats-section{max-width:800px;margin:0 auto 2.5rem;display:flex;flex-direction:column;gap:1.5rem;align-items:center}.days-counter{background:var(--surface-card);border-radius:16px;padding:2.5rem 3rem;text-align:center;box-shadow:0 4px 20px rgba(0,0,0,.12);width:100%;max-width:500px;border:1px solid var(--border)}.days-number{font-size:4.5rem;font-weight:700;color:var(--green-700);margin-bottom:.25rem;letter-spacing:-.02em}.days-label{font-size:1.25rem;color:var(--text-muted);font-weight:500;margin-bottom:.25rem}.time-detail{font-size:.95rem;color:var(--green-500);margin-top:.5rem}.start-date-section{background:var(--surface-card);border-radius:16px;padding:1.75rem 2rem;box-shadow:0 4px 20px rgba(0,0,0,.12);width:100%;max-width:500px;text-align:center;border:1px solid var(--border)}.date-label{font-size:.9rem;color:var(--text-muted);margin-bottom:.25rem}.date-display{display:flex;align-items:center;justify-content:center;gap:.5rem}.date-value{font-size:1.35rem;color:var(--green-700);font-weight:600}.btn-edit{background:var(--green-500);color:#fffaf4;border:none;border-radius:50%;width:40px;height:40px;cursor:pointer;font-size:1.2rem;transition:background .2s,transform .15s}.btn-edit:hover{background:var(--green-600);transform:scale(1.05)}.date-edit{display:flex;flex-direction:column;gap:1rem;align-items:center}.date-input{padding:.75rem 1rem;border:1px solid var(--border);border-radius:10px;font-size:1rem;width:100%;max-width:280px;background:var(--surface)}.btn-cancel,.btn-save{padding:.5rem 1.25rem;border:none;border-radius:10px;cursor:pointer;font-size:.95rem;transition:background .2s,transform .15s}.btn-save{background:var(--green-600);color:#fffaf4}.btn-cancel{background:var(--green-50);color:var(--green-700)}.btn-cancel:hover,.btn-save:hover{transform:scale(1.02)}.btn-save:hover{background:var(--green-700)}.btn-cancel:hover{background:var(--green-100)}.fun-facts-section{max-width:560px;margin:0 auto 2.5rem;text-align:center}.fun-fact-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--surface-card);border-radius:16px;padding:1.5rem 1.75rem;box-shadow:0 4px 20px rgba(0,0,0,.12);border:1px solid var(--border);display:flex;align-items:center;gap:1rem;min-height:4rem;width:100%;cursor:pointer;transition:box-shadow .2s,transform .15s;text-align:left}.fun-fact-card:hover{box-shadow:0 6px 24px rgba(0,0,0,.15);transform:translateY(-2px)}.fun-fact-card:active{transform:translateY(0)}.fun-fact-content{display:flex;align-items:center;gap:1rem;width:100%;animation:fun-fact-fade-in .4s ease-out}@keyframes fun-fact-fade-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fun-fact-icon{font-size:2rem;flex-shrink:0}.fun-fact-text{margin:0;font-size:1rem;color:var(--text);line-height:1.45;text-align:left}.fun-fact-hint{margin:.75rem 0 0;font-size:.8rem;color:var(--green-400);opacity:.9}.photos-section{max-width:1200px;margin:0 auto;background:var(--surface-card);border-radius:16px;padding:2rem;box-shadow:0 4px 20px rgba(0,0,0,.12);border:1px solid var(--border)}.photos-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.75rem;flex-wrap:wrap;gap:1rem}.photos-header h2{color:var(--green-800);margin:0;font-size:1.5rem;font-weight:600}.upload-btn{background:var(--green-600);color:#fffaf4;padding:.75rem 1.25rem;border-radius:10px;cursor:pointer;font-size:.95rem;font-weight:600;transition:background .2s,transform .15s;display:inline-block;border:none}.upload-btn:hover{background:var(--green-700);transform:translateY(-1px)}.no-photos{text-align:center;padding:2.5rem;color:var(--text-muted)}.no-photos,.no-photos p{font-size:1rem}.photos-filter{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.photos-filter-label{font-size:.9rem;color:var(--text-muted);margin-right:.25rem}.filter-chip{padding:.4rem .75rem;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.85rem;cursor:pointer;transition:background .2s,border-color .2s,color .2s}.filter-chip:hover{background:var(--green-50);color:var(--green-700);border-color:var(--green-400)}.filter-chip-active{background:var(--green-600);border-color:var(--green-600);color:var(--surface-card)}.filter-chip-active:hover{background:var(--green-700);border-color:var(--green-700);color:var(--surface-card)}.photos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));grid-gap:1.25rem;gap:1.25rem}.photo-card{position:relative;border-radius:12px;overflow:hidden;border:1px solid var(--border);background:var(--surface)}.photo-image-wrap{display:block;padding:0;border:none;background:none;cursor:pointer;width:100%;line-height:0;transition:opacity .2s}.photo-image-wrap:hover{opacity:.95}.photo-card:hover{box-shadow:0 6px 16px rgba(0,0,0,.08)}.photo-image{width:100%;height:250px;object-fit:cover;display:block}.photo-card .photo-image{width:100%!important;height:250px!important}.delete-btn{position:absolute;top:10px;right:10px;background:rgba(250,251,250,.95);border:1px solid var(--border);border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:.9rem;transition:background .2s,transform .15s;color:var(--text-muted)}.delete-btn:hover{transform:scale(1.05);background:rgba(196,92,92,.2);color:#b85454}.edit-btn{position:absolute;top:10px;left:10px;background:rgba(250,251,250,.95);border:1px solid var(--border);border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:.9rem;transition:background .2s,transform .15s;color:var(--text-muted)}.edit-btn:hover{transform:scale(1.05);background:rgba(74,107,74,.2);color:var(--green-600)}.photo-meta{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(26,47,26,.9),transparent);color:var(--surface-card);padding:.75rem 1rem;font-size:.85rem;text-align:center}.photo-date{margin:0}.photo-tags{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center;margin-top:.35rem}.photo-tag{background:rgba(255,250,244,.25);padding:.2rem .5rem;border-radius:6px;font-size:.75rem}.photo-description{margin-top:.35rem;font-size:.78rem;line-height:1.3;opacity:.95;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.edit-photo-overlay{position:fixed;inset:0;background:rgba(15,31,15,.85);z-index:1001;display:flex;align-items:center;justify-content:center;padding:2rem;box-sizing:border-box}.edit-photo-modal{background:var(--surface-card);border-radius:16px;padding:1.75rem;max-width:420px;width:100%;border:1px solid var(--border);box-shadow:0 8px 32px rgba(0,0,0,.2)}.edit-photo-title{margin:0 0 1.25rem;font-size:1.35rem;color:var(--green-800)}.edit-photo-form{display:flex;flex-direction:column;gap:1rem}.edit-photo-label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--text-muted)}.edit-photo-input{padding:.6rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;background:var(--surface)}textarea.edit-photo-input{min-height:88px;resize:vertical;font-family:inherit}.edit-photo-input:focus{outline:none;border-color:var(--green-500)}.edit-photo-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:.5rem}.edit-photo-cancel{padding:.6rem 1rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text-muted);font-size:.95rem;cursor:pointer}.edit-photo-cancel:hover{background:var(--green-50);color:var(--green-700)}.edit-photo-save{padding:.6rem 1.25rem;border:none;border-radius:8px;background:var(--green-600);color:var(--surface-card);font-size:.95rem;cursor:pointer}.edit-photo-save:hover:not(:disabled){background:var(--green-700)}.edit-photo-save:disabled{opacity:.7;cursor:not-allowed}.upload-preview-wrap{text-align:center;margin-bottom:1rem;border-radius:10px;overflow:hidden;background:var(--green-50);max-height:220px}.upload-preview-img{width:100%;max-height:220px;object-fit:contain;display:block}.upload-modal .edit-photo-form{gap:1rem}.gallery-overlay{position:fixed;inset:0;background:rgba(15,31,15,.95);z-index:1000;display:flex;align-items:center;justify-content:center;padding:2rem;box-sizing:border-box}.gallery-close{position:absolute;top:1.25rem;right:1.25rem;background:rgba(255,250,244,.1);border:1px solid rgba(255,250,244,.2);color:#fffaf4;width:42px;height:42px;border-radius:50%;font-size:1.25rem;cursor:pointer;line-height:1;transition:background .2s}.gallery-close:hover{background:rgba(255,250,244,.18)}.gallery-next,.gallery-prev{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,250,244,.1);border:1px solid rgba(255,250,244,.2);color:#fffaf4;width:48px;height:48px;border-radius:50%;font-size:1.75rem;cursor:pointer;line-height:1;transition:background .2s}.gallery-prev{left:1rem}.gallery-next{right:1rem}.gallery-next:hover,.gallery-prev:hover{background:rgba(255,250,244,.2)}.gallery-content{max-width:90vw;max-height:85vh;display:flex;flex-direction:column;align-items:center;gap:1rem}.gallery-image{max-width:100%;max-height:75vh;object-fit:contain;border-radius:8px}.gallery-counter{color:var(--green-100);font-size:.95rem}@media (max-width:768px){.relationship-header h1{font-size:2rem}.couple-names{font-size:1.4rem}.days-number{font-size:3.25rem}.photos-header{flex-direction:column;align-items:stretch}.upload-btn{width:100%;text-align:center}.photos-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem}.photo-card .photo-image,.photo-image{height:200px!important}}.photo-skeleton .photo-image-wrap{background:linear-gradient(135deg,rgba(255,250,244,.05),rgba(255,250,244,.1) 50%,rgba(255,250,244,.05));min-height:250px;border-radius:12px}.skeleton-shimmer{position:relative;overflow:hidden}.skeleton-shimmer:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,250,244,.15) 50%,transparent);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{left:-100%}to{left:100%}}.skeleton-text{background:rgba(255,250,244,.1);border-radius:4px;height:14px;margin-top:.5rem}.progressive-image-container{position:relative;width:100%;height:250px;overflow:hidden;border-radius:12px}@media (max-width:768px){.progressive-image-container{height:200px}}.progressive-thumb{filter:blur(0);transition:filter .3s ease-out}.progressive-full,.progressive-thumb{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.progressive-full{opacity:0;transition:opacity .4s ease-in-out}.progressive-full.loaded{opacity:1}.progressive-image-container:has(.progressive-full.loaded) .progressive-thumb{filter:blur(2px)}.companion-mode-overlay{position:fixed;inset:0;background:rgba(15,31,15,.3);z-index:998;cursor:not-allowed;animation:overlay-fade-in .3s ease-out}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.companion-toggle-wrap{position:fixed;bottom:20px;right:20px;z-index:1003;display:flex;flex-direction:column;align-items:flex-end;gap:.7rem}.companion-active-indicator{position:absolute;right:58px;bottom:12px;z-index:2;display:inline-flex;align-items:center;gap:.35rem;padding:.22rem .34rem;border-radius:999px;background:rgba(16,34,16,.82);border:1px solid rgba(205,235,205,.25);box-shadow:0 4px 14px rgba(0,0,0,.2)}.companion-active-dot{width:24px;height:24px;border-radius:999px;background:rgba(250,251,250,.96);border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:.86rem}.companion-mode-menu{display:flex;flex-direction:column;align-items:flex-end;gap:.6rem;margin-bottom:.15rem;opacity:0;transform:translateY(8px);transform-origin:bottom right;pointer-events:none;transition:opacity .2s ease,transform .2s ease}.companion-mode-menu .companion-mode-option{opacity:0;transform:translateY(10px) scale(.9);transition:opacity .2s ease,transform .2s ease,background .18s ease,border-color .18s ease}.companion-mode-menu.open .companion-mode-option{opacity:1;transform:translateY(0) scale(1)}.companion-mode-menu.open .companion-mode-option:first-child{transition-delay:.02s}.companion-mode-menu.open .companion-mode-option:nth-child(2){transition-delay:.06s}.companion-mode-menu.open{opacity:1;transform:translateY(0);pointer-events:auto}.companion-mode-option{border:1px solid var(--border);background:var(--surface-card);color:var(--text);border-radius:999px;width:46px;height:46px;padding:0;font-size:1.25rem;line-height:1;cursor:pointer;min-width:46px;text-align:center;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.15)}.companion-mode-option:hover{border-color:var(--green-500);background:#f2f9f2}.companion-mode-option.active{border-color:var(--green-700);background:#e9f3e9;font-weight:600}.companion-mode-toggle{position:relative;width:50px;height:50px;border-radius:50%;border:2px solid var(--border);background:var(--surface-card);font-size:1.5rem;cursor:pointer;z-index:1001;display:flex;align-items:center;justify-content:center;transition:all .3s ease;box-shadow:0 2px 8px rgba(0,0,0,.15);opacity:.7}.companion-mode-toggle:hover{opacity:1;transform:scale(1.1);box-shadow:0 4px 12px rgba(0,0,0,.2)}.companion-mode-toggle.companion-mode-active{background:var(--green-600);border-color:var(--green-700);opacity:1;box-shadow:0 4px 12px rgba(74,107,74,.4)}.companion-mode-toggle.companion-mode-active:hover{background:var(--green-700)}@media (max-width:768px){.companion-toggle-wrap{bottom:15px;right:15px}.companion-active-indicator{right:52px;bottom:9px}.companion-mode-toggle{width:44px;height:44px;font-size:1.3rem}.companion-mode-option{width:42px;height:42px;min-width:42px;font-size:1.1rem}.companion-active-dot{width:22px;height:22px;font-size:.78rem}}.turtle{filter:drop-shadow(2px 2px 4px rgba(0,0,0,.3))}.turtle:hover{filter:drop-shadow(2px 2px 6px rgba(0,0,0,.4))}.turtle-excited{animation:wiggle .2s ease-in-out infinite}.turtle-returning{animation:swim-back .6s ease-out}@keyframes wiggle{0%,to{scale:1}25%{scale:1.1}75%{scale:1.1}}@keyframes swim-back{0%{opacity:.7}50%{opacity:.85;scale:1.1}to{opacity:1;scale:1}}.bamboo-mode-overlay{position:fixed;inset:0;z-index:999;pointer-events:none;background:radial-gradient(circle at 50% 75%,rgba(60,100,60,.16),rgba(15,31,15,.35));overflow:hidden}.bamboo-meter-card{position:fixed;top:1rem;right:1rem;background:rgba(250,251,250,.92);border:1px solid var(--border);border-radius:14px;padding:.7rem .85rem;min-width:200px;box-shadow:0 4px 18px rgba(0,0,0,.18)}.bamboo-meter-title{color:var(--green-700);font-size:.86rem;font-weight:600}.bamboo-meter-value{color:var(--green-900);font-size:1.55rem;line-height:1.15;font-weight:700;margin-top:.15rem}.bamboo-meter-sub{color:var(--text-muted);font-size:.77rem;margin-top:.2rem}.bamboo-forest{position:absolute;inset:0}.bamboo-stalk{position:absolute;bottom:-20px;display:block;background:repeating-linear-gradient(0deg,rgba(49,112,49,.95) 0 18px,rgba(33,88,33,.96) 18px 22px);border-radius:8px;transform-origin:bottom center;animation:bamboo-sway ease-in-out infinite alternate}.bamboo-stalk-weekly{filter:saturate(.9)}.bamboo-stalk-monthly{filter:saturate(1.15) brightness(1.04);box-shadow:0 0 0 1px rgba(205,235,205,.08)}@keyframes bamboo-sway{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}