:root{--sky-top:#8db8f0;--sky-mid:#c7dcf7;--sky-bottom:#f6f9fe;--warm-glow:#ffd6aa73;--cloud:#ffffffd9;--glass-bg:#ffffffb3;--glass-border:#ffffffe6;--glass-shadow:0 10px 30px #1b2a4a14, 0 1px 2px #1b2a4a0a;--radius:28px;--primary:#3160c2;--accent:#d64131;--text:#1b2a4a;--label:#5a6e94;--pill:#1b2a4a12;--paper:#f5ecdc;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, monospace;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--sky-top:#0b1530;--sky-mid:#18284f;--sky-bottom:#2a3a66;--warm-glow:#8c6ec840;--cloud:#aabeeb29;--glass-bg:#1c284899;--glass-border:#ffffff1f;--glass-shadow:0 10px 30px #00000059;--primary:#6f97f0;--accent:#f06a5a;--text:#eef3ff;--label:#9fb0d4;--pill:#ffffff1a;--paper:#3a3428;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--sky-top:#0b1530;--sky-mid:#18284f;--sky-bottom:#2a3a66;--warm-glow:#8c6ec840;--cloud:#aabeeb29;--glass-bg:#1c284899;--glass-border:#ffffff1f;--glass-shadow:0 10px 30px #00000059;--primary:#6f97f0;--accent:#f06a5a;--text:#eef3ff;--label:#9fb0d4;--pill:#ffffff1a;--paper:#3a3428;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation}button,.tabbar,.label{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--sky-bottom);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}.sky{z-index:0;pointer-events:none;background:radial-gradient(60% 40% at 100% 35%, var(--warm-glow), transparent 70%), linear-gradient(180deg, var(--sky-top) 0%, var(--sky-mid) 45%, var(--sky-bottom) 100%);position:fixed;inset:0;overflow:hidden}.cloud{background:var(--cloud);filter:blur(28px);border-radius:50%;animation:60s ease-in-out infinite alternate drift;position:absolute}@keyframes drift{to{transform:translate(40px)}}.stars{opacity:0;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 28% 8%,#fff 50%,#0000 51%),radial-gradient(1.2px 1.2px at 44% 26%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 63% 12%,#fff 50%,#0000 51%),radial-gradient(1.6px 1.6px at 81% 22%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 90% 6%,#fff 50%,#0000 51%),radial-gradient(1.2px 1.2px at 7% 40%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 36% 46%,#fff 50%,#0000 51%),radial-gradient(1.3px 1.3px at 72% 38%,#fff 50%,#0000 51%),radial-gradient(1px 1px at 55% 58%,#fff 50%,#0000 51%);transition:opacity .6s;animation:5s ease-in-out infinite alternate twinkle;position:absolute;inset:0 0 45%}@keyframes twinkle{0%{filter:brightness(.7)}to{filter:brightness(1.2)}}:root[data-theme=dark] .stars{opacity:.8}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .stars{opacity:.8}}.app{z-index:1;flex-direction:column;height:100%;display:flex;position:relative}.screen{-webkit-overflow-scrolling:touch;padding:calc(var(--safe-top) + 20px) 16px calc(var(--safe-bottom) + 110px);flex:1;overflow-y:auto}.title{letter-spacing:-.02em;margin:4px 0 2px;font-size:34px;font-weight:800}.subtitle{color:var(--label);margin:0 0 20px;font-size:15px}.label{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--label);font-size:11px}.card{background:var(--glass-bg);-webkit-backdrop-filter:blur(20px)saturate(160%);backdrop-filter:blur(20px)saturate(160%);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--glass-shadow);padding:18px}.btn-primary{background:var(--primary);color:#fff;width:100%;height:56px;box-shadow:0 8px 20px color-mix(in srgb, var(--primary) 35%, transparent);border-radius:999px;font-size:17px;font-weight:700}.btn-primary:active{transform:scale(.98)}.tabbar{z-index:10;left:16px;right:16px;bottom:calc(var(--safe-bottom) + 12px);border-radius:999px;justify-content:space-around;max-width:420px;margin:0 auto;padding:6px;display:flex;position:fixed}.tab{color:var(--label);border-radius:999px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:8px 0;font-size:11px;font-weight:600;display:flex}.tab svg{width:24px;height:24px}.tab[aria-selected=true]{color:var(--primary);background:var(--pill)}.stats{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;display:grid}.stat-value{margin-top:6px;font-size:30px;font-weight:800}.stat-value.red{color:var(--accent)}.envelopes{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;display:grid}.envelope{aspect-ratio:3/4;border-radius:var(--radius);border:2px dashed var(--primary);background:color-mix(in srgb, var(--glass-bg) 60%, transparent);flex-direction:column;justify-content:space-between;padding:16px;display:flex}.envelope.partner{border-color:var(--accent)}.envelope .label{color:var(--primary)}.envelope.partner .label{color:var(--accent)}.envelope-empty{font-size:18px;font-weight:700}.envelope-hint{color:var(--label);font-size:13px}.cta-hint{text-align:center;color:var(--label);margin-top:10px;font-size:13px}.avatars{justify-content:center;margin:8px 0 14px;display:flex}.avatar{color:#fff;border:3px solid var(--glass-border);border-radius:50%;place-items:center;width:72px;height:72px;font-size:28px;font-weight:800;display:grid}.avatar+.avatar{margin-left:-14px}.row{justify-content:space-between;align-items:center;padding:14px 0;display:flex}.row+.row{border-top:1px solid var(--pill)}.row-value{color:var(--label)}.theme-switch{background:var(--pill);border-radius:999px;padding:3px;display:flex}.theme-switch button{color:var(--label);border-radius:999px;padding:6px 12px;font-size:14px}.theme-switch button[aria-pressed=true]{background:var(--glass-bg);color:var(--text);font-weight:600}.center-screen{padding-bottom:calc(var(--safe-bottom) + 32px);flex-direction:column;justify-content:center;width:100%;max-width:480px;margin:0 auto;display:flex}.brand{align-items:center;gap:8px;margin-bottom:24px;font-size:20px;font-weight:800;display:flex}.brand-heart{color:var(--accent);font-size:26px}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.input{height:50px;font:inherit;color:var(--text);background:var(--pill);appearance:none;border:1px solid #0000;border-radius:16px;outline:none;width:100%;padding:0 16px;font-size:17px}.input:focus{border-color:var(--primary)}.code-input{font-family:var(--mono);letter-spacing:.4em;text-align:center;font-size:26px}.form-error{color:var(--accent);margin:0;font-size:14px}.form-info{color:var(--primary);margin:0;font-size:14px}.btn-primary:disabled{opacity:.55}.auth-links{flex-direction:column;align-items:center;gap:10px;margin-top:18px;display:flex}.link-btn{color:var(--label);padding:6px;font-size:15px}.link-btn.strong{color:var(--primary);font-weight:600}.link-btn.danger{color:var(--accent);font-weight:600}.choice{text-align:left;align-items:center;gap:14px;width:100%;margin-bottom:12px;display:flex}.choice strong{font-size:17px;display:block}.choice small{color:var(--label);margin-top:2px;font-size:14px;display:block}.choice-icon{background:var(--pill);border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;font-size:26px;display:grid}.code-block{font-family:var(--mono);background:var(--pill);white-space:pre-wrap;word-break:break-all;border-radius:12px;padding:12px;font-size:12px}.spinner{border:3px solid var(--pill);border-top-color:var(--primary);border-radius:50%;width:32px;height:32px;margin:0 auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.invite-card{text-align:center;flex-direction:column;align-items:center;gap:8px;margin-bottom:16px;display:flex}.invite-code{font-family:var(--mono);letter-spacing:.3em;color:var(--primary);padding-left:.3em;font-size:34px;font-weight:700}.write-overlay{z-index:50;background:linear-gradient(180deg, var(--sky-top) 0%, var(--sky-mid) 40%, var(--sky-bottom) 100%);flex-direction:column;animation:.32s cubic-bezier(.2,.8,.2,1) slide-up;display:flex;position:fixed;inset:0}@keyframes slide-up{0%{transform:translateY(100%)}}.write-header{padding:calc(var(--safe-top) + 12px) 16px 8px;align-items:center;gap:12px;display:flex}.icon-btn{background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);width:40px;height:40px;color:var(--text);border-radius:50%;flex-shrink:0;place-items:center;font-size:20px;display:grid}.progress{background:var(--pill);border-radius:999px;flex:1;height:6px;overflow:hidden}.progress-fill{background:var(--primary);border-radius:999px;height:100%;transition:width .3s}.write-body{flex:1;width:100%;max-width:520px;margin:0 auto;padding:16px 16px 24px;animation:.25s fade-in;overflow-y:auto}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}}.write-title{letter-spacing:-.02em;margin:6px 0 10px;font-size:28px;font-weight:800;line-height:1.15}.write-footer{padding:8px 16px calc(var(--safe-bottom) + 14px);width:100%;max-width:520px;margin:0 auto}.write-step-label{text-align:center;margin-top:10px}.emoji-box{cursor:text;align-items:center;min-height:110px;display:flex}.emoji-input{width:100%;color:var(--text);letter-spacing:4px;background:0 0;border:0;outline:none;font-family:inherit;font-size:44px;line-height:1.3}.emoji-input::placeholder{opacity:.25}.quick-emojis{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin-top:16px;display:grid}.quick-emojis button{aspect-ratio:1;background:var(--pill);border-radius:12px;min-width:0;padding:0;font-size:22px}.quick-emojis button:active{transform:scale(.9)}.photo-frame{aspect-ratio:4/5;place-items:center;max-height:46vh;margin:0 auto 16px;padding:8px;display:grid;overflow:hidden}.photo-frame img{object-fit:cover;border-radius:20px;width:100%;height:100%}.photo-placeholder{opacity:.5;font-size:72px}.photo-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.btn-secondary{background:var(--glass-bg);border:1px solid var(--glass-border);height:50px;color:var(--primary);border-radius:999px;font-size:16px;font-weight:600}.paper-input{resize:none;width:100%;min-height:220px;font:inherit;color:#3a2f22;background:var(--paper);box-shadow:inset 0 1px 0 #fff9, var(--glass-shadow);background-image:repeating-linear-gradient(#0000 0 26px,#785a3214 26px 27px);background-position:0 20px;border:0;border-radius:22px;outline:none;padding:20px;font-size:18px;line-height:1.5}:root[data-theme=dark] .paper-input{color:#f1e6d2}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .paper-input{color:#f1e6d2}}.connection-card{text-align:center}.hearts{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.heart{aspect-ratio:1;place-items:center;display:grid}.heart svg{fill:#0000;width:40px;height:40px;stroke:var(--accent);stroke-width:1.6px;transition:transform .15s,fill .15s}.heart.on svg{fill:var(--accent)}.heart:active svg{transform:scale(.85)}.hearts-labels{color:var(--label);justify-content:space-between;margin-top:8px;font-size:13px;display:flex}.connection-value{color:var(--accent);margin-top:10px;font-size:34px;font-weight:800}.write-sent{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.write-sent-icon{font-size:72px;animation:.5s cubic-bezier(.2,1.4,.4,1) pop}@keyframes pop{0%{opacity:0;transform:scale(.3)}}.envelope.filled{color:#fff;border-style:solid;position:relative;overflow:hidden}.envelope.filled .label{color:#ffffffd9}.envelope.filled.mine{background:linear-gradient(160deg, #4a7be0, var(--primary));border-color:#ffffff80}.envelope.filled.partner{background:linear-gradient(160deg, #ec6a5b, var(--accent));border-color:#ffffff80}.envelope-flap{pointer-events:none;height:55%;position:absolute;top:0;left:0;right:0}.envelope-pill{color:#1b2a4a;background:#ffffffeb;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex}.envelope.filled .envelope-empty{color:#fff}.envelope.filled .envelope-hint{color:#ffffffd9}.env{aspect-ratio:3/4;text-align:left;perspective:600px;color:#fff;width:100%;padding:0;position:relative}.env:disabled{cursor:default;opacity:1}.env-body{border-radius:var(--radius);z-index:2;border:1px solid #ffffff73;height:74%;position:absolute;bottom:0;left:0;right:0;overflow:hidden;box-shadow:0 12px 28px #1b2a4a2e}.env.mine .env-body{background:linear-gradient(160deg, #5a88e8, var(--primary))}.env.partner .env-body{background:linear-gradient(160deg, #ef7767, var(--accent))}.env.sealed .env-body{height:100%}.env-flap{clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;background:#ffffff29;height:52%;transition:transform .45s;position:absolute;top:0;left:0;right:0}.env-content{flex-direction:column;justify-content:space-between;height:100%;padding:14px;display:flex;position:relative}.env .label{color:#ffffffe0}.env .envelope-empty{color:#fff}.env .envelope-hint{color:#ffffffd9}.env .envelope-pill{margin-top:8px}.env-photo{z-index:1;aspect-ratio:4/5;background:#fff;border:4px solid #fff;border-radius:14px;place-items:center;width:64%;transition:transform .55s cubic-bezier(.2,.8,.2,1);display:grid;position:absolute;top:0;left:50%;overflow:hidden;transform:translate(-50%)rotate(-4deg);box-shadow:0 8px 20px #1b2a4a33}.env.partner .env-photo{transform:translate(-50%)rotate(4deg)}.env-photo img{object-fit:cover;width:100%;height:100%}.env-photo span{width:100%;height:100%;color:var(--label);background:linear-gradient(180deg, var(--sky-mid), #fff);justify-content:center;padding-top:6px;font-size:30px;font-weight:800;display:flex}.env.ready:active .env-body{transform:scale(.98)}.env.opening .env-flap{transform:rotateX(180deg)}.env.opening .env-photo{z-index:3;transform:translate(-50%)translateY(-30%)scale(1.08)rotate(0)}.env.opening .env-body{animation:.6s forwards env-sink}@keyframes env-sink{to{opacity:.6;transform:translateY(12%)}}.letter-head-title{text-align:center;flex:1}.letter-body{flex-direction:column;display:flex}.letter-photo{aspect-ratio:4/5;background:#fff;border:5px solid #fff;border-radius:22px;width:62%;max-width:260px;margin:4px auto 14px;animation:.45s cubic-bezier(.2,1.3,.4,1) pop;overflow:hidden;transform:rotate(-2deg);box-shadow:0 14px 34px #1b2a4a38}.letter-photo img{object-fit:cover;width:100%;height:100%;display:block}.letter-photo span{color:#fff;place-items:center;width:100%;height:100%;font-size:64px;font-weight:800;display:grid}.letter-meta{text-align:center;margin-bottom:14px}.letter-meta strong{font-size:22px;display:block}.letter-meta span{color:var(--label);font-size:14px}.stat-value small{color:var(--label);font-size:16px;font-weight:600}.letter-emojis{text-align:center;letter-spacing:4px;word-break:break-all;margin-bottom:12px;padding:12px;font-size:34px}.paper-card{background:var(--paper);color:#3a2f22;border-radius:var(--radius);box-shadow:var(--glass-shadow), inset 0 1px 0 #fff9;flex-direction:column;min-height:260px;padding:20px;display:flex}:root[data-theme=dark] .paper-card{color:#f1e6d2}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .paper-card{color:#f1e6d2}}.paper-label{color:#785a32cc}.paper-question{margin:8px 0 12px;font-size:20px;line-height:1.3}.paper-answer{white-space:pre-wrap;flex:1;margin:0;font-size:17px;line-height:1.55}.paper-answer.empty{opacity:.55;font-style:italic}.paper-nav{justify-content:space-between;align-items:center;margin-top:16px;display:flex}.paper-arrow{width:40px;height:40px;color:inherit;background:#785a321f;border-radius:50%;font-size:24px;line-height:1}.paper-arrow:disabled{opacity:.3}.dots{gap:6px;display:flex}.dot{background:#785a3240;border-radius:50%;width:7px;height:7px;transition:all .2s}.dot.on{background:var(--accent);border-radius:999px;width:18px}.sheet-backdrop{z-index:60;padding:12px 12px calc(var(--safe-bottom) + 12px);background:#0a142859;align-items:flex-end;animation:.2s fade-in;display:flex;position:fixed;inset:0}.sheet{background:var(--sky-bottom);width:100%;max-width:480px;margin:0 auto;animation:.25s slide-up}.sheet-title{margin:0 0 6px;font-size:22px}.btn-danger{background:var(--accent);color:#fff;border-radius:999px;width:100%;height:52px;font-size:17px;font-weight:700}.btn-danger:disabled{opacity:.6}.row-btn{text-align:left;width:100%}.row-btn:active{opacity:.6}.row-value{text-align:right}.couple-title{justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.couple-title .title{text-align:center}.pencil{color:var(--label);font-size:18px}.question-edit{margin-bottom:12px;padding:14px}.question-edit-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.question-edit-moves{gap:6px;display:flex}.question-edit-moves button{background:var(--pill);width:34px;height:34px;color:var(--primary);border-radius:50%;font-size:16px}.question-edit-moves button:disabled{opacity:.3}.question-input{resize:none;height:auto;min-height:64px;padding:12px 14px;font-size:16px;line-height:1.35}.danger-card{border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.timeline{flex-direction:column;gap:14px;margin-top:18px;display:flex}.memories-head{justify-content:space-between;align-items:flex-end;display:flex}.memories-head .icon-btn{margin-bottom:6px}.icon-btn.active{background:var(--primary);color:#fff;border-color:#0000}.cloud-day{background:var(--glass-bg);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(20px)saturate(160%);backdrop-filter:blur(20px)saturate(160%);box-shadow:var(--glass-shadow);border-radius:34px;margin-top:14px;padding:14px 14px 10px;position:relative}.cloud-day:before,.cloud-day:after{content:"";z-index:-1;background:var(--glass-bg);border-top:1px solid var(--glass-border);border-radius:50%;position:absolute}.cloud-day:before{width:90px;height:60px;top:-18px;left:22%}.cloud-day:after{width:64px;height:44px;top:-12px;left:46%}.cloud-date{margin:0 0 6px 4px}.entry{text-align:left;border-radius:18px;align-items:flex-start;gap:12px;width:100%;padding:10px 4px;display:flex}.entry+.entry{border-top:1px solid var(--pill)}button.entry:active{background:var(--pill)}.entry-avatar{color:#fff;background:var(--primary);border-radius:50%;flex-shrink:0;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.entry-avatar.partner{background:var(--accent)}.entry-main{flex:1;min-width:0}.entry-top{justify-content:space-between;gap:8px;display:flex}.entry-top span{color:var(--label);font-size:13px}.entry-emojis{letter-spacing:2px;white-space:nowrap;text-overflow:ellipsis;margin:2px 0;font-size:20px;overflow:hidden}.entry-preview{color:var(--label);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:2px 0 0;font-size:14px;line-height:1.35;display:-webkit-box;overflow:hidden}.entry.locked .entry-preview{font-style:italic}.entry-score{color:var(--primary);flex-direction:column;flex-shrink:0;align-items:center;min-width:28px;display:flex}.entry-score.partner{color:var(--accent)}.entry-score b{font-size:22px;line-height:1}.entry-score span{font-size:12px}.chart-card{padding:16px 14px 12px}.chart-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.theme-switch.small button{padding:4px 9px;font-size:12px}.chart{touch-action:manipulation;width:100%;height:auto;display:block}.chart-grid{stroke:var(--pill);stroke-width:1px}.chart-axis{fill:var(--label);font-size:10px;font-family:var(--mono)}.chart-cursor{stroke:var(--label);stroke-width:1px;stroke-dasharray:3 3}.chart-empty{color:var(--label);text-align:center;margin:0;padding:28px 0;font-size:14px}.chart-legend{color:var(--label);flex-wrap:wrap;gap:14px;margin-top:6px;font-size:13px;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-legend i{border-radius:50%;width:10px;height:10px;display:inline-block}.chart-legend b{color:var(--text)}.chart-sel-date{font-family:var(--mono);margin-left:auto}.switch{appearance:none;background:var(--pill);cursor:pointer;border-radius:999px;flex-shrink:0;width:50px;height:30px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:26px;height:26px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 2px 4px #0003}.switch:checked{background:#34c759}.switch:checked:after{transform:translate(20px)}.empty-day{border:2px dashed color-mix(in srgb, var(--label) 50%, transparent);border-radius:var(--radius);color:var(--label);justify-content:space-between;padding:18px;display:flex}.time-input{text-align:center;width:110px;height:40px;padding:0 10px;font-size:16px}
