@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&family=Noto+Serif+SC:wght@500;600;700&display=swap";:root{color:#233129;font-synthesis:none;text-rendering:optimizelegibility;--green:#183027;--green-2:#244638;--orange:#d97757;--orange-dark:#b95f43;--cream:#f7f1e8;--paper:#fffdf9;--ink:#233129;--muted:#77776f;--line:#e4ddd3;background:#e9e3da;font-family:Noto Sans SC,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:#ded8cf;min-width:320px}button,input,textarea{font:inherit}button{cursor:pointer}button,input,textarea{-webkit-tap-highlight-color:transparent}.app-shell{background:var(--cream);max-width:560px;min-height:100dvh;margin:0 auto;position:relative;box-shadow:0 0 70px #24211d21}.app-content{min-height:100dvh;padding-bottom:calc(94px + env(safe-area-inset-bottom))}.screen{min-height:100dvh}.home-screen,.moments-screen,.profile-screen{padding:calc(22px + env(safe-area-inset-top)) 20px 34px}.topbar{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.kicker,.section-kicker{color:var(--orange-dark);letter-spacing:.18em;margin:0 0 5px;font-size:10px;font-weight:800}.topbar h1,.page-header h1{letter-spacing:-.04em;margin:0;font-family:Noto Serif SC,serif;font-size:25px}.mini-icon{border-radius:15px;width:45px;height:45px;box-shadow:0 8px 24px #18302733}.love-hero{color:#fff;background:radial-gradient(circle at 80% 18%,#d9775773,#0000 32%),linear-gradient(150deg,#244638,#11251e);border-radius:30px;min-height:350px;padding:28px;position:relative;overflow:hidden;box-shadow:0 28px 60px #18302738}.love-hero:after{content:"";border:1px solid #ffffff1f;border-radius:50%;width:220px;height:220px;position:absolute;bottom:-95px;right:-90px;box-shadow:0 0 0 35px #ffffff06,0 0 0 70px #ffffff05}.hero-glow{filter:blur(38px);background:#d977572b;border-radius:50%;width:140px;height:140px;position:absolute;top:22%;left:42%}.hero-label{color:#ffffffad;align-items:center;gap:8px;margin:0;font-size:12px;display:flex}.hero-label svg{width:14px;fill:var(--orange);color:var(--orange)}.day-number{letter-spacing:-.07em;margin-top:18px;font-family:Noto Serif SC,serif;font-size:clamp(72px,23vw,116px);line-height:.9;position:relative}.day-unit{color:#ffffff8c;margin:0;font-size:13px;position:absolute;top:105px;right:30px}.hero-names{font-family:Noto Serif SC,serif;font-size:21px;position:absolute;bottom:67px;left:28px}.hero-names span{color:var(--orange);margin:0 4px}.hero-date{color:#ffffff8a;align-items:center;gap:7px;font-size:11px;display:flex;position:absolute;bottom:28px;left:28px}.hero-date svg{width:13px}.section-block{margin-top:34px}.section-heading{justify-content:space-between;align-items:end;margin-bottom:16px;display:flex}.section-heading h2{letter-spacing:-.03em;margin:0;font-family:Noto Serif SC,serif;font-size:23px}.section-heading button{color:#8c867d;background:0 0;border:0;align-items:center;gap:2px;font-size:12px;display:flex}.section-heading button svg{width:15px}.moment-row{scroll-snap-type:x mandatory;scrollbar-width:none;grid-auto-columns:73%;grid-auto-flow:column;gap:12px;margin-right:-20px;padding-right:20px;display:grid;overflow-x:auto}.moment-row::-webkit-scrollbar{display:none}.memory-tile{scroll-snap-align:start;text-align:left;background:#ded7ce;border:0;border-radius:22px;height:208px;padding:0;position:relative;overflow:hidden;box-shadow:0 12px 30px #43382d17}.memory-tile:after{content:"";background:linear-gradient(#0000 45%,#0d1511cc);position:absolute;inset:0}.tile-copy{z-index:2;color:#fff;position:absolute;bottom:16px;left:17px;right:17px}.tile-copy span{color:#ffffffa3;letter-spacing:.1em;margin-bottom:4px;font-size:10px;display:block}.tile-copy strong{font-family:Noto Serif SC,serif;font-size:16px}.moment-media{object-fit:cover;background:#d6cfc5;width:100%;height:100%;display:block}.media-placeholder{background:linear-gradient(135deg,#ddd4c8,#f4ece3);height:100%}.text-memory{color:#fff;text-align:left;background:linear-gradient(145deg,#d16e50,#b4553c);flex-direction:column;justify-content:center;height:230px;padding:28px;display:flex}.text-memory span{opacity:.35;font-family:Georgia,serif;font-size:50px;line-height:.5}.text-memory p{margin:14px 0 0;font-family:Noto Serif SC,serif;font-size:17px;line-height:1.8}.text-memory.compact{height:100%;padding:23px}.text-memory.compact p{-webkit-line-clamp:4;-webkit-box-orient:vertical;font-size:14px;display:-webkit-box;overflow:hidden}.quote-card{background:#fffaf3;border:1px solid #e5d9ca;border-radius:24px;margin-top:28px;padding:24px;position:relative;overflow:hidden}.quote-card:after{content:"“";color:#d977571a;font-family:Georgia,serif;font-size:150px;position:absolute;top:-29px;right:16px}.quote-card>p{color:var(--orange-dark);letter-spacing:.1em;margin:0;font-size:10px;font-weight:700}.quote-card blockquote{margin:13px 0 12px;font-family:Noto Serif SC,serif;font-size:17px;line-height:1.8}.quote-card span{color:#9a958d;font-size:10px}.next-day-card{background:#fff;border:1px solid #ece5db;border-radius:21px;align-items:center;gap:14px;margin-top:14px;padding:17px;display:flex}.calendar-icon{width:46px;height:46px;color:var(--orange-dark);background:#f4e5dc;border-radius:15px;place-items:center;display:grid}.calendar-icon svg{width:20px}.next-day-card>div{flex:1}.next-day-card small,.next-day-card strong,.next-day-card p{display:block}.next-day-card small{color:#a29c93;font-size:9px}.next-day-card strong{margin:3px 0;font-family:Noto Serif SC,serif;font-size:15px}.next-day-card p{color:#8c877f;margin:0;font-size:10px}.outline-heart{width:19px;color:var(--orange)}.bottom-nav{z-index:40;width:min(560px,100%);min-height:72px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffdf9f2;border-top:1px solid #dbd3c8cc;grid-template-columns:repeat(5,1fr);align-items:center;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:#a29c94;background:0 0;border:0;flex-direction:column;align-items:center;gap:3px;font-size:9px;display:flex}.nav-item svg{width:20px}.nav-item.active{color:var(--green);font-weight:700}.add-button{border:5px solid var(--paper);background:var(--orange);color:#fff;border-radius:50%;place-items:center;width:52px;height:52px;margin:-26px auto 0;display:grid;box-shadow:0 10px 22px #b95f434d}.add-button svg{width:23px}.page-header{padding:5px 1px 20px}.page-header>p:last-child{color:var(--muted);margin:9px 0 0;font-size:12px;line-height:1.7}.filter-pills{gap:8px;margin:4px 0 26px;display:flex;overflow-x:auto}.filter-pills button{color:#888278;background:0 0;border:1px solid #ded6cc;border-radius:999px;padding:7px 15px;font-size:11px}.filter-pills button.selected{border-color:var(--green);background:var(--green);color:#fff}.timeline-list{margin-left:-4px}.timeline-item{grid-template-columns:44px 1fr;display:grid;position:relative}.timeline-rail{flex-direction:column;align-items:center;display:flex}.timeline-rail span{color:#9d968d;padding-top:10px;font-family:Noto Serif SC,serif;font-size:10px;transform:rotate(-90deg)}.timeline-rail i{background:#d9cfc2;flex:1;width:1px;min-height:90px;margin-top:20px}.moment-card{text-align:left;background:#fff;border:0;border-radius:23px;margin:0 0 18px;padding:0;overflow:hidden;box-shadow:0 12px 35px #45392d14}.moment-card>.moment-media,.moment-card>.text-memory{height:230px}.moment-copy{padding:18px}.moment-meta{color:#a09a91;flex-wrap:wrap;gap:9px;font-size:9px;display:flex}.moment-meta span{align-items:center;gap:3px;display:flex}.moment-meta svg{width:11px;height:11px}.moment-copy h2{margin:10px 0 6px;font-family:Noto Serif SC,serif;font-size:19px}.moment-copy>p{-webkit-line-clamp:2;color:#77736c;-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:1.75;display:-webkit-box;overflow:hidden}.video-badge{color:var(--orange-dark);background:#f2e4dc;border-radius:99px;align-items:center;gap:4px;margin-top:12px;padding:5px 9px;font-size:9px;display:inline-flex}.video-badge svg{width:12px}.timeline-end{color:#aaa39a;grid-column:2;justify-content:center;align-items:center;gap:7px;padding:15px;font-size:10px;display:flex}.timeline-end svg{fill:#d98a70;color:#d98a70;width:13px}.empty-state{text-align:center;color:#817b73;padding:80px 20px}.empty-state svg{width:40px;color:var(--orange)}.empty-state h2{font-family:Noto Serif SC,serif;font-size:20px}.empty-state button{background:var(--green);color:#fff;border:0;border-radius:99px;padding:10px 20px}.letter-screen{padding:calc(26px + env(safe-area-inset-top)) 20px 40px;color:#fff;background:linear-gradient(160deg,#1a3429,#10231c)}.page-header.light .kicker{color:#e89477}.letter-paper{color:#44463f;background:#fffaf0;border-radius:8px 8px 26px;margin-top:24px;padding:30px 26px;transform:rotate(-.6deg);box-shadow:0 28px 65px #00000040}.letter-paper p{margin:0 0 20px;font-family:Noto Serif SC,serif;font-size:15px;line-height:2.1}.letter-paper .salutation{color:#24382e;font-size:20px}.letter-paper footer{text-align:right;padding-top:10px}.letter-paper footer span{color:#a16d5a;font-size:10px;display:block}.letter-paper footer strong{color:#2c4437;margin-top:6px;font-family:Noto Serif SC,serif;font-size:21px;display:block}.letter-tip,.privacy-card{color:#ffffffa6;background:#ffffff12;border:1px solid #ffffff1f;border-radius:20px;gap:13px;margin-top:22px;padding:17px;display:flex}.letter-tip svg,.privacy-card svg{color:#e89477;flex:none;width:21px}.letter-tip strong,.privacy-card strong{color:#fff;font-size:12px;display:block}.letter-tip p,.privacy-card p{margin:4px 0 0;font-size:10px;line-height:1.6}.profile-screen{background:#f4eee6}.profile-hero{padding:calc(52px + env(safe-area-inset-top)) 20px 42px;color:#fff;text-align:center;background:radial-gradient(circle at 50% 10%,#315b49,#172f26 66%);border-radius:0 0 36px 36px;margin:-22px -20px 0}.profile-hero img{border:4px solid #ffffff24;border-radius:26px;width:82px;height:82px;box-shadow:0 15px 35px #00000040}.profile-hero h1{margin:15px 0 4px;font-family:Noto Serif SC,serif;font-size:25px}.profile-hero h1 span{color:#ec8e6e}.profile-hero p{color:#ffffff8f;margin:0;font-size:11px}.settings-card{background:var(--paper);border:1px solid #e7dfd4;border-radius:25px;margin-top:22px;padding:22px;box-shadow:0 12px 32px #3f352b0f}.settings-card h2{margin:0 0 18px;font-family:Noto Serif SC,serif;font-size:20px}.settings-card label,.composer>label,.two-fields label{color:#79746c;margin-top:13px;font-size:10px;font-weight:600;display:block}.settings-card input,.composer input,.composer textarea{width:100%;color:var(--ink);background:#faf7f2;border:1px solid #e1d9cf;border-radius:13px;outline:none;margin-top:6px;padding:12px 13px}.settings-card input:focus,.composer input:focus,.composer textarea:focus{border-color:#8da99b;box-shadow:0 0 0 3px #385e4b14}.privacy-card{color:#716d65;background:#fffaf4;border-color:#e9dfd2}.privacy-card strong{color:#34453b}.primary-button{background:var(--green);color:#fff;border:0;border-radius:15px;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:20px;padding:13px;font-size:12px;font-weight:700;display:flex;box-shadow:0 9px 22px #18302729}.primary-button svg{width:16px}.primary-button:disabled{opacity:.6}.modal-layer{z-index:80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#08110da3;justify-content:center;align-items:end;padding-top:30px;display:flex;position:fixed;inset:0}.composer{width:min(560px,100%);max-height:94dvh;padding:20px 20px calc(26px + env(safe-area-inset-bottom));background:var(--paper);border-radius:28px 28px 0 0;overflow-y:auto;box-shadow:0 -30px 80px #0000003d}.composer header,.detail-card>header{justify-content:space-between;align-items:center;display:flex}.composer header small{color:var(--orange-dark);letter-spacing:.16em;font-size:9px;font-weight:800}.composer header h2{margin:2px 0 0;font-family:Noto Serif SC,serif;font-size:23px}.composer header button,.detail-card>header button{color:#625e58;background:#f0ece6;border:0;border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.composer header button svg{width:18px}.kind-picker{grid-template-columns:repeat(3,1fr);gap:9px;margin-top:20px;display:grid}.kind-picker button{color:#878078;background:#fbf8f3;border:1px solid #e1d9cf;border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:10px;font-size:11px;display:flex}.kind-picker button svg{width:15px}.kind-picker button.active{color:var(--green);background:#e8f0eb;border-color:#355a49;font-weight:700}.file-picker{background:#faf5ee;border:1px dashed #cfc2b4;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;min-height:126px;color:#706b64!important;display:flex!important}.file-picker input{display:none}.file-picker svg{width:24px;color:var(--orange);margin-bottom:6px}.file-picker strong{text-overflow:ellipsis;white-space:nowrap;max-width:90%;font-size:12px;overflow:hidden}.file-picker span{color:#aaa39b;margin-top:4px;font-size:9px}.composer textarea{resize:vertical;min-height:90px}.two-fields{grid-template-columns:1fr 1fr;gap:10px;display:grid}.form-error{color:#b74b3f;margin:12px 0 0;font-size:10px}.detail-layer{align-items:center;padding:18px}.detail-card{background:var(--paper);border-radius:26px;width:min(524px,100%);max-height:92dvh;overflow-y:auto;box-shadow:0 30px 90px #00000061}.detail-card>header{padding:14px}.detail-card>header .delete-button{color:#a4473d;border-radius:99px;gap:4px;width:auto;padding:0 12px;font-size:10px;display:flex}.detail-card>header .delete-button svg{width:13px}.detail-card>.moment-media,.detail-card>.text-memory{min-height:280px;max-height:58dvh}.detail-copy{padding:22px}.detail-copy>span{color:#a39c92;font-size:10px}.detail-copy h2{margin:7px 0 10px;font-family:Noto Serif SC,serif;font-size:24px}.detail-copy p{color:#6f6b64;margin:0;font-size:13px;line-height:1.9}.toast{z-index:120;left:50%;bottom:calc(94px + env(safe-area-inset-bottom));white-space:nowrap;color:#fff;background:#13241df0;border-radius:99px;padding:10px 16px;font-size:11px;animation:.24s ease-out toast-in;position:fixed;transform:translate(-50%);box-shadow:0 12px 30px #0003}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.access-shell{width:min(560px,100%);min-height:100dvh;padding:calc(34px + env(safe-area-inset-top)) 24px calc(34px + env(safe-area-inset-bottom));text-align:center;color:#fff;background:radial-gradient(circle at 50% 0,#315b49,#142a22 46%,#0d1e18);flex-direction:column;justify-content:center;align-items:center;margin:0 auto;display:flex}.access-shell>img{border-radius:28px;width:92px;height:92px;box-shadow:0 20px 55px #00000052}.access-shell>.kicker{color:#ef9c7c;margin:22px 0 4px}.access-shell>h1{margin:8px 0;font-family:Noto Serif SC,serif;font-size:31px}.access-shell>p:not(.kicker){color:#ffffffa6;max-width:390px;margin:0 0 20px;font-size:12px;line-height:1.8}.access-shell>small{color:#ffffff7a;align-items:center;gap:6px;margin-top:18px;font-size:9px;display:flex}.access-shell>small svg{width:14px}.access-tabs{background:#ffffff14;border-radius:15px;grid-template-columns:1fr 1fr;width:min(430px,100%);padding:4px;display:grid}.access-tabs button{color:#ffffff8c;background:0 0;border:0;border-radius:11px;padding:10px;font-size:11px}.access-tabs button.active{color:var(--green);background:#f8f2e9;font-weight:700}.access-card{width:min(430px,100%);color:var(--ink);text-align:left;background:#fffaf3;border-radius:24px;margin-top:12px;padding:21px;box-shadow:0 28px 70px #00000047}.access-card label{color:#79746c;margin-top:12px;font-size:10px;font-weight:700;display:block}.access-card label:first-child{margin-top:0}.access-card input{width:100%;color:var(--ink);background:#fff;border:1px solid #dfd5c9;border-radius:13px;outline:none;margin-top:6px;padding:12px 13px}.access-card input:focus{border-color:#789887;box-shadow:0 0 0 3px #385e4b1a}.cloud-loader{color:#ef9c7c;background:#ffffff14;border-radius:50%;place-items:center;width:48px;height:48px;animation:1.4s ease-in-out infinite pulse-cloud;display:grid}.cloud-loader svg{width:24px}@keyframes pulse-cloud{50%{opacity:.55;transform:translateY(-5px)}}.space-code-card{color:#fff;text-align:center;background:linear-gradient(135deg,#274b3b,#193328);border-radius:22px;margin-top:16px;padding:20px}.space-code-card small{color:#ffffff8c;letter-spacing:.12em;font-size:9px;display:block}.space-code-card strong{color:#f2a083;letter-spacing:.14em;margin:7px 0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:25px;display:block}.space-code-card p{color:#ffffff94;margin:0;font-size:10px;line-height:1.65}.signout-button{color:#9b5e52;background:0 0;border:0;justify-content:center;align-items:center;gap:7px;width:100%;margin-top:14px;padding:12px;font-size:10px;display:flex}.signout-button svg{width:15px}@media (width>=700px){.app-shell{border-radius:32px;min-height:calc(100dvh - 40px);margin-top:20px;margin-bottom:20px;overflow:hidden}.bottom-nav{border-radius:0 0 32px 32px;bottom:20px}}
