:root{color:#f4f5f7;font-synthesis:none;letter-spacing:0;text-rendering:optimizelegibility;background:#07080a;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#fff5f8;min-width:320px;min-height:100vh;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.68}.login-shell{color:#34252a;background:radial-gradient(circle at 78% 12%,#ffbfcc57,#0000 28%),radial-gradient(circle at 18% 18%,#ffe1be6b,#0000 26%),linear-gradient(135deg,#fff7f9,#fff3f5);place-items:center;min-height:100vh;padding:22px;display:grid}.login-card{background:#ffffffc7;border:1px solid #ee849933;border-radius:24px;width:min(420px,100%);padding:28px;box-shadow:0 28px 80px #dd708829}.login-mark{color:#e46583;background:#ffd1db99;border:1px solid #ee849942;border-radius:23px;place-items:center;width:62px;height:62px;display:grid;box-shadow:0 16px 36px #dd708829}.login-card p{color:#c66b7d;margin:22px 0 6px;font-size:13px;font-weight:800}.login-card h1{margin:0;font-size:34px;line-height:1.1}.login-card>span{color:#8f727a;margin-top:10px;line-height:1.65;display:block}.login-form{gap:14px;margin-top:24px;display:grid}.login-form label{gap:7px;display:grid}.login-form label span{color:#7b5e67;font-size:13px;font-weight:800}.login-form input{color:#35272b;background:#ffffffdb;border-color:#ee849938;min-height:48px;padding:0 14px}.login-form button{color:#fff;background:#e06c8a;border:0;border-radius:999px;justify-content:center;align-items:center;gap:9px;min-height:48px;font-weight:900;display:inline-flex;box-shadow:0 16px 34px #e06c8a42}.login-error{color:#c44763;background:#ffebefe0;border:1px solid #e053702e;border-radius:16px;padding:10px 12px;font-size:13px;display:block}.app-frame{--accent:#6d9cf8;--partner:#c96f57;--page-bg:radial-gradient(circle at 18% 10%, #9b5de52e, transparent 30%), radial-gradient(circle at 82% 4%, #f0749324, transparent 28%), linear-gradient(145deg, #130b16 0%, #0b0a12 48%, #11101a 100%);--rail-bg:#120c16e6;--panel-bg:#1c141fc7;--panel-strong:#26192ae6;--panel-border:#ffc5d321;--text-main:#fff7fa;--text-muted:#b9a7b0;--text-soft:#8f7e88;--primary:#f07493;--primary-strong:#ff8aa6;--primary-soft:#f0749321;--gold:#f5c76b;--shadow-soft:0 24px 70px #00000057;background:var(--page-bg);min-height:100vh;color:var(--text-main);grid-template-columns:236px minmax(0,1fr);display:grid}.app-frame.light{--page-bg:radial-gradient(circle at 80% 8%, #ffbfcc5c, transparent 28%), radial-gradient(circle at 18% 18%, #ffe1be6b, transparent 26%), linear-gradient(145deg, #fff9fb 0%, #fff1f5 52%, #fff7ec 100%);--rail-bg:#fff8fadb;--panel-bg:#ffffffb8;--panel-strong:#fff7f9e6;--panel-border:#ee849933;--text-main:#34262c;--text-muted:#8c6f78;--text-soft:#a3828c;--primary:#e86486;--primary-strong:#ef6f91;--primary-soft:#e864861c;--gold:#c9953b;--shadow-soft:0 20px 60px #dd708824;color:var(--text-main)}.nav-rail{border-right:1px solid var(--panel-border);background:var(--rail-bg);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);grid-template-rows:auto auto 1fr auto;height:100vh;padding:26px 16px 22px;display:grid;position:sticky;top:0}.brand-block{grid-template-columns:42px 1fr;align-items:center;gap:10px;display:grid}.brand-mark{border:1px solid var(--panel-border);background:linear-gradient(135deg, var(--primary), #ffd0a6);color:#fff;border-radius:50%;place-items:center;width:40px;height:40px;font-weight:800;display:grid;box-shadow:0 12px 28px #f0749342}.brand-copy strong,.brand-copy span,.nav-item span,.utility-button span{display:block}.brand-copy strong{font-size:15px}.brand-copy span{color:var(--text-muted);margin-top:3px;font-size:13px}.collapse-button{border:1px solid var(--panel-border);background:var(--panel-bg);width:40px;height:40px;color:var(--text-muted);border-radius:14px;justify-self:end;margin:28px 0 24px}.main-nav,.nav-bottom{gap:8px;display:grid}.nav-bottom{align-content:end}.nav-item,.utility-button{width:100%;min-height:46px;color:var(--text-muted);text-align:left;background:0 0;border:1px solid #0000;border-radius:18px;grid-template-columns:22px 1fr auto;align-items:center;gap:10px;padding:0 12px;display:grid;position:relative}.nav-item:hover,.utility-button:hover,.collapse-button:hover{background:var(--primary-soft);color:var(--text-main);border-color:#f0749342}.nav-item.active{background:linear-gradient(135deg, #f074933d, #f5c76b21), var(--panel-bg);color:var(--text-main);border-color:#f0749370;box-shadow:0 12px 28px #f0749329}.nav-item small{color:#fff;background:#d75e7d;border-radius:999px;place-items:center;min-width:18px;height:18px;font-size:11px;font-weight:800;display:grid}.nav-heart-burst{right:var(--heart-right);color:#ff7f91;font-size:var(--heart-size);pointer-events:none;text-shadow:0 6px 16px #f074846b;animation:.98s ease-out forwards navHeartPop;animation-delay:var(--heart-delay);font-style:normal;position:absolute;bottom:14px;transform:translate(0)}.app-main{width:min(960px,100% - 40px);margin:28px auto 60px}.heart-card,.panel{border:1px solid var(--panel-border);background:var(--panel-bg);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:22px}.heart-card{background:linear-gradient(135deg, #f074932e, #f5c76b14), var(--panel-strong);border-color:#f0749347;grid-template-columns:58px minmax(0,1fr) minmax(280px,430px);align-items:center;gap:16px;margin-bottom:22px;padding:18px;display:grid}.heart-beat{width:54px;height:54px;color:var(--primary-strong);background:#f074931f;border:1px solid #f0749357;border-radius:22px;place-items:center;animation:1.35s ease-in-out infinite heartPulse;display:grid;position:relative}.heart-beat:after{content:"";border:1px solid #f0748438;border-radius:20px;animation:1.35s ease-out infinite heartRing;position:absolute;inset:-7px}.heart-copy span,.content-head p,.content-head span,.post-card time,.chat-card small,.person-card small,.setting-row span,.bubble time{color:var(--text-muted);font-size:13px}.heart-meta{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.heart-copy strong{min-height:36px;color:var(--text-main);margin-top:5px;font-size:24px;line-height:1.5;animation:.36s textFloat;display:block}.heart-weather{border:1px solid var(--panel-border);max-width:100%;min-height:26px;color:var(--primary-strong);background:#ffffff14;border-radius:999px;align-items:center;gap:6px;margin:0;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.heart-weather em,.heart-weather small{text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.heart-weather small{color:var(--text-muted);font-weight:700}.heart-form{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.heart-form input{min-height:44px;padding:0 13px}.heart-form button{background:linear-gradient(135deg, var(--primary), #f59a80);color:#fff;border:0;border-radius:999px;min-height:44px;padding:0 16px;font-weight:800}.incoming-toast em,.alert-message em{color:#9ca3af;font-size:13px}.setting-action{background:linear-gradient(135deg, var(--primary), #f59a80);color:#fff;border:0;border-radius:999px;justify-content:center;align-items:center;gap:7px;min-height:42px;padding:0 14px;font-weight:800;display:inline-flex}.incoming-toast{z-index:30;color:#d75e7d;text-align:left;background:linear-gradient(135deg,#fff6f8fa,#ffe8edf5),#fff;border:1px solid #f0748447;border-radius:20px;grid-template-columns:36px minmax(0,240px);align-items:center;gap:10px;max-width:calc(100vw - 32px);padding:12px;animation:.26s ease-out toastIn;display:grid;position:fixed;top:22px;right:24px;box-shadow:0 22px 60px #dd708838}.incoming-toast>svg{background:#f074931f;border-radius:50%;width:36px;height:36px;padding:8px;display:grid}.incoming-toast strong,.incoming-toast em{display:block}.incoming-toast em{color:#8e6470;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.ghost-button,.primary-soft,.icon-button,.publish-button,.post-card footer button,.composer button{border-radius:999px;justify-content:center;align-items:center;gap:8px;transition:transform .14s,background .14s,border-color .14s,color .14s;display:inline-flex}.ghost-button,.primary-soft{color:#f0d08b;background:#e5b25d1f;border:1px solid #e5b25d4d;min-height:40px;padding:0 14px}.primary-soft,.publish-button{color:#fff;background:#6d9cf8;border-color:#0000}.content-head{justify-content:space-between;align-items:end;gap:16px;margin:0 0 22px;display:flex}.content-head p{color:#c96f57;text-transform:uppercase;margin:0 0 4px;font-weight:800}.content-head h1{align-items:center;gap:8px;margin:0;font-size:34px;line-height:1.1;display:flex}.title-heart{color:#f07493}.content-head span{margin-top:8px;display:block}.icon-button{border:1px solid var(--panel-border);background:var(--panel-bg);width:42px;height:42px;color:var(--text-muted)}.content-grid{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:18px;display:grid}.content-grid.feed-only{grid-template-columns:minmax(0,1fr)}.feed-column,.settings-list{gap:14px;display:grid}.post-composer{padding:16px}.post-media-preview{width:min(420px,100%);margin-top:14px;position:relative}.post-media-preview img,.post-media-preview video{object-fit:cover;background:#0b0c0f;border-radius:18px;width:100%;max-height:420px;display:block}.post-media-preview button{color:#fff;background:#0c0d10c7;border:0;border-radius:999px;min-height:32px;margin:0;padding:0 10px;position:absolute;top:10px;right:10px}textarea,input{border:1px solid var(--panel-border);width:100%;color:var(--text-main);background:#ffffff0f;border-radius:18px;outline:0}textarea::placeholder,input::placeholder{color:var(--text-soft)}textarea:focus,input:focus{border-color:#f074937a;box-shadow:0 0 0 3px #f0749324}textarea{resize:vertical;min-height:114px;padding:14px;line-height:1.65}.composer-actions{grid-template-columns:1fr auto;gap:10px;margin-top:12px;display:grid}.image-field{background:var(--primary-soft);min-height:40px;color:var(--gold);cursor:pointer;border:1px solid #f0749347;border-radius:16px;grid-template-columns:20px max-content;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-grid;position:relative}.image-field span{white-space:nowrap}.image-field input{opacity:0;cursor:pointer;position:absolute;inset:0}.publish-button{border:0;min-height:40px;padding:0 16px;font-weight:800}.post-card{padding:16px;overflow:hidden}.post-card header,.post-card footer,.chat-card header{align-items:center;display:flex}.post-card header{gap:12px}.post-card header img,.person-card img,.bubble-row img{object-fit:cover;border-radius:50%;width:42px;height:42px}.post-card header svg{color:#8b93a1}.post-manage{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.post-manage button,.post-edit-actions button{color:#d98a9b;background:#ffe8ee14;border:1px solid #f074842e;border-radius:14px;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:0 12px;font-size:13px;font-weight:800;display:inline-flex}.post-manage button:hover,.post-edit-actions button:hover{color:#ff8794;background:#f074841f;border-color:#f0748452}.post-edit-box{gap:12px;margin-top:14px;display:grid}.post-edit-box textarea{min-height:120px}.post-edit-actions{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.post-edit-actions .image-field{flex:180px}.post-edit-actions .soft-action,.post-edit-actions .save-action{min-height:40px;padding:0 14px}.post-edit-actions .save-action{color:#fff;background:#f07484;border-color:#0000}.edit-preview{margin-top:0}.post-card strong,.person-card strong,.setting-row strong{display:block}.post-card p{color:var(--text-main);margin:18px 0;line-height:1.75}.post-image{object-fit:cover;border-radius:18px;width:100%;max-height:420px;display:block}.post-card footer{justify-content:flex-end;gap:12px;margin-top:14px}.post-card footer button{color:#b5bbc5;background:0 0;border:0;min-width:54px;min-height:36px}.post-card footer button:hover,.post-card footer button.liked{color:#f09a9c}.post-comments{background:#ffe8ee0f;border:1px solid #f074841f;border-radius:18px;gap:10px;margin-top:12px;padding:12px;display:grid}.post-comment{grid-template-columns:30px minmax(0,1fr);align-items:start;gap:9px;display:grid}.post-comment img{object-fit:cover;border-radius:50%;width:30px;height:30px}.post-comment strong{color:#f3d4dc;font-size:13px}.post-comment p{color:#e6e8ec;margin:3px 0 2px;line-height:1.55}.post-comment time{color:#9ca3af;font-size:12px}.comment-composer{grid-template-columns:minmax(0,1fr) 38px;gap:8px;margin-top:2px;display:grid}.comment-composer input{border-radius:999px;min-height:38px;padding:0 12px}.comment-composer button{color:#fff;background:#f07493;border:0;border-radius:50%;place-items:center;width:38px;height:38px;display:inline-grid}.empty-state{color:#ff8794;text-align:center;align-content:center;justify-items:center;gap:8px;min-height:180px;padding:24px;display:grid}.empty-state strong{color:#4a3038}.empty-state span{color:#a87a88;font-size:14px}.chat-card{position:relative;overflow:hidden}.chat-card header{justify-content:space-between;gap:12px;padding:16px 18px 14px}.chat-card header span{align-items:center;gap:8px;font-weight:800;display:inline-flex}.chat-topbar{min-height:74px}.chat-pair{align-items:center;gap:12px;min-width:0;display:flex}.chat-pair em{color:#9ca3af;margin-top:4px;font-size:13px;font-style:normal;display:block}.chat-avatars{flex:none;width:58px;height:42px;position:relative}.chat-avatars img{object-fit:cover;border:2px solid #111215;border-radius:50%;width:42px;height:42px;position:absolute;top:0}.chat-avatars img:first-child{left:0}.chat-avatars img:last-child{right:0}.chat-date-chip{color:#9ca3af;background:#ffffff14;border-radius:999px;justify-self:center;padding:5px 12px;font-size:12px}.messages{align-content:start;gap:12px;height:292px;padding:12px 14px 16px;display:grid;position:relative;overflow:auto}.messages>*{z-index:1;position:relative}.messages.tall{align-content:end;gap:10px;height:clamp(280px,100vh - 450px,430px)}.messages::-webkit-scrollbar{width:8px}.messages::-webkit-scrollbar-thumb{background:#2c313a;border-radius:999px}.bubble-row{align-items:end;gap:9px;display:flex}.bubble-row.mine{flex-direction:row-reverse}.bubble-row img{width:30px;height:30px}.bubble{background:#181b21;border:1px solid #ffffff14;border-radius:18px 18px 18px 6px;max-width:min(280px,78%);padding:11px 13px 9px}.bubble-row.mine .bubble{background:var(--accent);color:#fff;border-color:#0000;border-radius:18px 18px 6px}.bubble p{margin:0 0 4px;line-height:1.5}.bubble time{align-items:center;gap:4px;display:inline-flex}.bubble-row.mine time{color:#ffffffb8}.composer{border-top:1px solid #ffffff14;grid-template-columns:1fr 42px;gap:10px;padding:13px 14px 14px;display:grid;position:relative}.composer input{min-height:42px;padding:0 12px}.composer button{color:#fff;background:#6d9cf8;border:0;width:42px;height:42px}.composer-heart{color:#f07493;font-size:var(--composer-heart-size);pointer-events:none;text-shadow:0 7px 18px #ee84995c;transform:translate(var(--composer-heart-x), 0) scale(.65);animation:.98s ease-out forwards composerHeartFloat;animation-delay:var(--composer-heart-delay);font-style:normal;position:absolute;bottom:34px;right:26px}.chat-view{overflow:hidden}.chat-view .chat-card{box-shadow:none;border:0}.chat-empty{color:#f06f94;text-align:center;align-content:center;justify-items:center;gap:8px;min-height:360px;display:grid}.chat-empty strong{color:#4a3038}.chat-empty span{color:#a87a88;font-size:14px}.people-grid{grid-template-columns:repeat(2,minmax(220px,1fr));gap:14px;display:grid}.avatar-notice{color:#f6b8c6;text-align:center;background:#ffe8ee1c;border:1px solid #f074843d;border-radius:14px;grid-column:1/-1;margin:0;padding:10px 14px;font-size:13px}.anniversary-view,.promise-view,.promise-list,.moments-view,.moment-list{gap:14px;display:grid}.promise-notice{color:#f6b8c6;text-align:center;background:#ffe8ee1c;border:1px solid #f074843d;border-radius:14px;margin:0;padding:10px 14px;font-size:13px}.promise-composer,.promise-card,.promise-empty,.moment-card,.moment-composer,.moment-empty{position:relative}.promise-composer,.promise-card,.promise-empty,.moment-card,.moment-empty{padding:16px}.promise-composer{background:linear-gradient(135deg,#ffe2e81a,#fff4de0f),#111215;border-color:#f0748433;overflow:hidden}.promise-composer:before{color:#f074841f;content:"❤";font-size:120px;line-height:1;position:absolute;inset:-22px -18px auto auto;transform:rotate(12deg)}.promise-composer>*{z-index:1;position:relative}.promise-composer header,.promise-card header{align-items:center;gap:12px;margin-bottom:14px;display:flex}.promise-composer header img,.promise-card header img{object-fit:cover;border-radius:50%;width:46px;height:46px}.promise-composer header strong,.promise-card header strong,.promise-empty strong,.moment-card strong,.moment-empty strong{display:block}.promise-composer header span,.promise-card header span,.promise-empty span,.moment-card time,.moment-empty span{color:#9ca3af;font-size:13px}.promise-composer textarea{resize:vertical;min-height:112px}.promise-composer button,.moment-composer button,.moment-file{color:#fff;background:#f07484;border:0;border-radius:16px;justify-content:center;align-items:center;gap:8px;min-height:40px;margin-top:12px;padding:0 14px;font-weight:800;display:inline-flex}.promise-composer button{min-width:128px;box-shadow:0 14px 30px #f0748438}.promise-card{background:#fff7f90a;border-color:#f0748429;position:relative}.promise-pin{color:#e76f86;cursor:pointer;background:linear-gradient(135deg,#ffeef3e6,#ffdbe39e),#ffe8ee2e;border:1px solid #f074843d;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:0 12px;font-size:12px;font-weight:800;transition:transform .16s,box-shadow .16s,background .16s;display:inline-flex;position:absolute;top:16px;right:16px;box-shadow:0 10px 22px #f0748429}.promise-pin:hover{transform:translateY(-1px);box-shadow:0 14px 26px #f0748438}.promise-pin.active{color:#fff;background:linear-gradient(135deg,#f07484fa,#ff99aae0),#f07484;border-color:#e76f865c}.promise-pinned-note{color:#ff8794;background:#f074841a;border-radius:999px;align-items:center;gap:5px;margin:-2px 0 12px;padding:6px 10px;font-size:12px;font-weight:800;display:inline-flex}.promise-card p{color:#e6e8ec;white-space:pre-wrap;background:#ffe8ee14;border:1px solid #f0748424;border-radius:18px;margin:0;padding:14px 16px;line-height:1.8}.promise-empty{color:#ff8794;text-align:center;align-content:center;justify-items:center;gap:8px;min-height:180px;display:grid}.moment-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;display:flex}.moment-file{color:#ffd5dc;cursor:pointer;background:#f0748414;border:1px solid #f0748447}.moment-file input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.moment-preview{width:min(360px,100%);margin-top:14px;position:relative}.moment-preview img,.moment-preview video,.moment-media{object-fit:cover;background:#0b0c0f;border:1px solid #ffffff17;border-radius:18px;width:100%;max-height:420px;display:block}.moment-preview button{color:#fff;background:#0c0d10c7;min-height:32px;margin:0;padding:0 10px;position:absolute;top:10px;right:10px}.moment-composer{padding:16px}.moment-card p{color:#e6e8ec;margin:12px 0 0;line-height:1.7}.moment-media{margin-top:14px}.moment-empty{color:#ff8794;text-align:center;align-content:center;justify-items:center;gap:8px;min-height:180px;display:grid}.moment-empty span{color:#9ca3af}.anniversary-card{background:linear-gradient(135deg,#f074841f,#6d9cf80f),#111215;border-color:#f0748447;grid-template-columns:74px 1fr;align-items:center;gap:18px;min-height:210px;padding:22px;display:grid;position:relative}.anniversary-icon{color:#ff8794;background:#f074841a;border:1px solid #f0748457;border-radius:22px;place-items:center;width:68px;height:68px;display:grid}.anniversary-card span,.stat-card span,.stat-card small{color:#9ca3af}.anniversary-card strong{margin-top:6px;font-size:clamp(34px,6vw,58px);line-height:1.08;display:block}.anniversary-card p{color:#d8dce3;margin:14px 0 0;font-size:20px}.anniversary-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.stat-card{padding:16px;position:relative}.card-heart{color:#f07484b8;position:absolute;top:16px;right:16px}.stat-card strong{margin-top:8px;font-size:34px;line-height:1;display:block}.stat-card small{margin-top:8px;display:block}.person-card{color:#f4f5f7;cursor:pointer;text-align:left;border-color:#ffffff1a;grid-template-columns:92px 1fr 22px;align-items:center;gap:12px;min-height:84px;padding:14px;display:grid}.person-card.active{background:#182033;border-color:#6d9cf86b}.person-card img{width:56px;height:56px}.avatar-edit{justify-items:center;gap:8px;display:grid}.avatar-upload{color:#b9bec7;white-space:nowrap;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1a;border-radius:999px;justify-content:center;align-items:center;gap:5px;min-height:26px;padding:0 8px;font-size:12px;display:inline-flex}.avatar-upload:hover{color:#fff;border-color:#6d9cf85c}.avatar-upload:has(input:disabled){cursor:wait;opacity:.72}.avatar-upload input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.setting-row{grid-template-columns:42px 1fr auto;align-items:center;gap:12px;padding:16px;display:grid}.setting-row>svg{color:#8fb1ff}.alert-list{gap:10px;padding:14px;display:grid}.alert-list header{color:#f07493;align-items:center;gap:8px;display:flex}.alert-message{color:#f4f5f7;text-align:left;background:#ffe8ee0f;border:1px solid #f074841f;border-radius:16px;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:10px;display:grid}.alert-message--post,.alert-message--comment{background:#ffd6b512;border-color:#ffb4702e}.alert-message--comment{background:#ffe8f214;border-color:#f074932e}.alert-message img{object-fit:cover;border-radius:50%;width:38px;height:38px}.alert-message strong,.alert-message em{display:block}.alert-message em{text-overflow:ellipsis;white-space:nowrap;margin-top:3px;overflow:hidden}.alert-message time{color:#9ca3af;font-size:12px}.alert-empty p{color:#9ca3af;margin:0;font-size:14px}button:active{transform:translateY(1px)}.app-frame.collapsed{grid-template-columns:82px minmax(0,1fr)}.app-frame.collapsed .brand-copy,.app-frame.collapsed .nav-item span,.app-frame.collapsed .utility-button span,.app-frame.collapsed .nav-item small{display:none}.app-frame.collapsed .brand-block,.app-frame.collapsed .nav-item,.app-frame.collapsed .utility-button{grid-template-columns:1fr;justify-items:center}.app-frame.light .nav-rail,.app-frame.light .heart-card,.app-frame.light .panel,.app-frame.light .icon-button,.app-frame.light .collapse-button{border-color:var(--panel-border);background:var(--panel-bg);color:var(--text-main);box-shadow:var(--shadow-soft)}.app-frame.light .nav-rail{background:var(--rail-bg)}.app-frame.light .brand-copy span,.app-frame.light .content-head span,.app-frame.light .heart-copy span,.app-frame.light .post-card time,.app-frame.light .person-card small,.app-frame.light .promise-composer header span,.app-frame.light .promise-card header span,.app-frame.light .promise-empty span,.app-frame.light .moment-card time{color:var(--text-muted)}.app-frame.light .brand-mark{color:#7a2f43;background:linear-gradient(135deg,#ff9bb2,#ffd8a8);border-color:#ee849947}.app-frame.light .heart-card{background:linear-gradient(135deg, #ffd5dde6, #fff8ebd1), var(--panel-bg)}.app-frame.light .heart-beat,.app-frame.light .anniversary-icon{color:#ef6f87;background:#ffa6b92e;border-color:#ee849947}.app-frame.light .heart-copy strong,.app-frame.light .content-head h1,.app-frame.light .post-card strong,.app-frame.light .promise-composer header strong,.app-frame.light .promise-card header strong,.app-frame.light .promise-empty strong,.app-frame.light .moment-card strong,.app-frame.light .setting-row strong{color:var(--text-main)}.app-frame.light textarea,.app-frame.light input{border-color:var(--panel-border);color:var(--text-main);background:#ffffffd1}.app-frame.light .alert-message time{color:#8b7280}.app-frame.light .heart-weather{color:var(--primary);background:#ffffff8a;border-color:#ee849933}.app-frame.light .heart-weather small{color:var(--text-muted)}.app-frame.light .alert-list header{color:#c95775}.app-frame.light .alert-message{color:#35272b;background:#fff7f9d1;border-color:#ee849924}.app-frame.light .alert-message--post,.app-frame.light .alert-message--comment{background:#fff4ebdb;border-color:#ef8f662e}.app-frame.light .alert-message em{color:#8f6f79}.app-frame.light .alert-empty p{color:var(--text-muted)}.app-frame.light .image-field{color:var(--text-muted);background:#ffffffd1;border-color:#ee849938}.app-frame.light .post-card p{color:var(--text-main)}.app-frame.light .post-comments{background:#fff7f9c7;border-color:#ee849924}.app-frame.light .post-comment strong{color:#a94f69}.app-frame.light .post-comment p{color:#5a464c}.app-frame.light .post-comment time{color:#a5828d}.app-frame.light .post-manage button,.app-frame.light .post-edit-actions button{color:#c95775;background:#fff5f8d1;border-color:#ee849938}.app-frame.light .post-edit-actions .save-action{color:#fff;background:#f07493;border-color:#0000}.app-frame.light .post-media-preview button{color:#35272b;background:#ffffffdb}.app-frame.light .promise-composer{background:linear-gradient(135deg,#ffe2e8db,#fff9eec7),#ffffffc7}.app-frame.light .promise-card{background:#ffffffb8}.app-frame.light .promise-pin{color:#c95775;background:linear-gradient(135deg,#fffbfcf5,#ffe2e8e6),#fff5f8d1;border-color:#ee849942}.app-frame.light .promise-pin.active{color:#fff;background:linear-gradient(135deg,#ee8499fa,#ffa0b0e6),#ee8499;border-color:#ee849961}.app-frame.light .promise-pinned-note{color:#c95775;background:#ffe2e8b8}.app-frame.light .promise-card p{color:#6a5159;background:#fff8fad1;border-color:#ee849929}.app-frame.light .person-card{color:#35272b}.app-frame.light .anniversary-card{background:linear-gradient(135deg,#ffc7d3b8,#fff6e3c2),#fffc}.app-frame.light .anniversary-card p,.app-frame.light .moment-card p{color:#6a5159}.app-frame.light .chat-view,.app-frame.light .chat-card{background:#ffffffa8}.app-frame.light .chat-view{border-color:#ee849929;box-shadow:0 22px 60px #dd708821}.app-frame.light .chat-card header{background:linear-gradient(90deg,#ffe7ece6,#fff8ecc7),#ffffffb8;border-bottom:1px solid #ee84991f}.app-frame.light .chat-pair em,.app-frame.light .chat-card small{color:#a06f7e}.app-frame.light .chat-avatars img{border-color:#fff8fa;box-shadow:0 8px 18px #cc6d842e}.app-frame.light .messages{background:repeating-linear-gradient(0deg,#fffafbf0 0 31px,#ffe8edb8 32px),linear-gradient(135deg,#fff8faf0,#fff4eae6)}.app-frame.light .messages:before{color:#ee84991a;content:"❤";z-index:0;font-size:92px;line-height:1;position:absolute;inset:26px auto auto 50%;transform:translate(-50%)rotate(-8deg)}.app-frame.light .chat-date-chip{color:#a06f7e;background:#ffffffbd;box-shadow:0 8px 20px #dd70881a}.app-frame.light .bubble{color:#4d3940;background:#fff9fb;border-color:#ee84992e;box-shadow:0 10px 24px #dd70881a}.app-frame.light .bubble-row.mine .bubble{color:#fff;background:linear-gradient(135deg,#f58aa3,#f5a27d);box-shadow:0 12px 26px #ee849938}.app-frame.light .bubble time{color:#9b7b84}.app-frame.light .bubble-row.mine time{color:#ffffffd1}.app-frame.light .composer{background:#fff9fbd1;border-top-color:#ee849929}.app-frame.light .composer input{background:#fff;box-shadow:inset 0 0 0 1px #ffe7ec99}.app-frame.light .avatar-upload{color:#555d68;background:#1f24290a;border-color:#1f24291f}.app-frame.light .avatar-notice{color:#c95775;background:#fff5f8d6;border-color:#ee849938}.app-frame.light .moment-file{color:#d85f7c;background:#ffeff3eb;border-color:#ee849957}.app-frame.light .promise-notice{color:#c95775;background:#fff5f8d6;border-color:#ee849938}.app-frame.light .nav-item,.app-frame.light .utility-button{color:var(--text-muted)}.app-frame.light .nav-item:hover,.app-frame.light .utility-button:hover,.app-frame.light .collapse-button:hover{background:var(--primary-soft);color:var(--text-main)}.app-frame.light .nav-item.active{background:linear-gradient(135deg, #ffc7d6eb, #ffefd6d1), var(--panel-bg);color:#442630;border-color:#ee849985;box-shadow:0 14px 28px #ee849929}.app-frame.light .publish-button,.app-frame.light .composer button,.app-frame.light .promise-composer button,.app-frame.light .moment-composer button,.app-frame.light .heart-form button{background:linear-gradient(135deg, var(--primary), #f59a80);color:#fff}@media (width<=1040px){.content-grid{grid-template-columns:1fr}}@media (width<=760px){body{overflow-x:hidden}.app-frame,.app-frame.collapsed{grid-template-columns:1fr}.nav-rail{z-index:10;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid #ffffff1c;border-right:0;grid-template-rows:auto auto;grid-template-columns:1fr;gap:10px;height:auto;padding:12px 12px 10px;position:sticky;overflow:hidden}.nav-rail:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#fff7f9f5);width:36px;height:76px;position:absolute;bottom:0;right:0}.brand-block{grid-template-columns:36px 1fr;gap:9px}.brand-mark{width:36px;height:36px;font-size:14px}.brand-copy strong{font-size:14px}.brand-copy span{margin-top:2px;font-size:12px}.collapse-button,.nav-bottom{display:none}.main-nav{scrollbar-width:none;scroll-snap-type:x proximity;grid-column:1/-1;grid-template-columns:none;grid-auto-columns:minmax(74px,max-content);grid-auto-flow:column;gap:8px;margin:0 -12px;padding:0 12px 2px;display:grid;overflow-x:auto}.main-nav::-webkit-scrollbar{display:none}.nav-item{scroll-snap-align:start;white-space:nowrap;border-radius:18px;grid-template-columns:1fr;justify-items:center;min-height:56px;padding:8px 10px}.nav-item small{position:absolute;top:5px;right:9px}.nav-item span{font-size:12px}.app-main{width:calc(100% - 24px);margin:10px auto 30px}.heart-card{border-radius:20px;grid-template-columns:48px minmax(0,1fr);gap:12px;margin-bottom:14px;padding:12px}.heart-beat{border-radius:18px;width:46px;height:46px}.heart-copy strong{min-height:50px;margin-top:7px;font-size:18px;line-height:1.45}.heart-meta{gap:6px}.heart-form{grid-column:1/-1;grid-template-columns:minmax(0,1fr) 66px;gap:8px}.heart-form input,.heart-form button{min-height:42px}.heart-form button{padding:0 12px}.heart-weather{max-width:100%;min-height:24px;padding:0 9px;font-size:11px}.heart-weather small{max-width:118px}.incoming-toast{border-radius:18px;grid-template-columns:34px minmax(0,1fr);max-width:none;inset:auto 12px 16px}.content-head{align-items:flex-start;gap:10px;margin-bottom:12px}.content-head h1{font-size:28px}.content-head span{margin-top:6px;font-size:13px;line-height:1.45}.content-head .icon-button{flex:none;width:38px;height:38px}.promise-card header{padding-right:100px}.promise-pin{min-height:32px;padding:0 10px;top:14px;right:14px}.panel,.heart-card{border-radius:20px}.post-composer,.post-card,.promise-composer,.moment-composer,.moment-card,.moment-empty,.promise-empty,.promise-card{padding:14px}textarea{border-radius:16px;min-height:102px}input{border-radius:16px}.post-card header{flex-wrap:wrap;gap:10px}.post-edit-actions{grid-template-columns:1fr 1fr;display:grid}.post-edit-actions .image-field{grid-column:1/-1}.post-card header img,.person-card img{width:40px;height:40px}.post-card p{margin:14px 0}.post-image,.post-media-preview img,.post-media-preview video,.moment-media,.moment-preview img,.moment-preview video{border-radius:16px;max-height:360px}.chat-card header{padding:13px 14px 12px}.chat-topbar{min-height:66px}.chat-avatars{width:52px;height:38px}.chat-avatars img{width:38px;height:38px}.chat-card header span{gap:6px;font-size:14px}.chat-pair em,.chat-card small{font-size:12px}.messages{padding:12px 10px 14px}.messages.tall{height:clamp(220px,100vh - 535px,300px)}.bubble{border-radius:17px 17px 17px 6px;max-width:min(250px,76%)}.bubble-row.mine .bubble{border-radius:17px 17px 6px}.bubble-row img{width:28px;height:28px}.composer{grid-template-columns:minmax(0,1fr) 44px;gap:8px;padding:11px 12px 12px}.composer input,.composer button{height:44px;min-height:44px}.composer button{width:44px}.composer-actions,.moment-actions{grid-template-columns:1fr}.composer-actions{display:grid}.publish-button,.promise-composer button,.moment-composer button,.moment-file{width:100%}.people-grid{grid-template-columns:1fr}.person-card{grid-template-columns:78px 1fr 22px;min-height:82px;padding:12px}.avatar-upload{min-height:24px;padding:0 7px;font-size:11px}.anniversary-card,.anniversary-stats{grid-template-columns:1fr}.anniversary-card{gap:14px;min-height:0;padding:18px}.anniversary-icon{border-radius:18px;width:56px;height:56px}.anniversary-card strong{font-size:34px}.anniversary-card p{font-size:16px;line-height:1.55}.stat-card strong{font-size:30px}.setting-row{grid-template-columns:38px 1fr;padding:14px}.setting-action{grid-column:2;justify-self:start;min-height:38px}.alert-message{grid-template-columns:36px minmax(0,1fr)}.alert-message time{grid-column:2}}@media (width<=420px){.app-main{width:calc(100% - 18px);margin-top:10px}.heart-card{grid-template-columns:42px minmax(0,1fr);padding:12px}.heart-beat{width:40px;height:40px}.heart-copy strong{font-size:18px}.heart-weather small{max-width:92px}.heart-form{grid-template-columns:minmax(0,1fr) 58px}.promise-card header{padding-right:90px}.promise-pin{min-height:30px;padding:0 9px;font-size:11px}.content-head h1{font-size:27px}.chat-card header{align-items:flex-start}.chat-card small{white-space:nowrap}.messages.tall{height:clamp(220px,100vh - 535px,300px)}.bubble{max-width:min(226px,74%)}.post-card footer{justify-content:flex-start}}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes heartPulse{0%,to{transform:scale(1)}34%{transform:scale(1.12)}52%{transform:scale(.98)}}@keyframes heartRing{0%{opacity:.48;transform:scale(.86)}to{opacity:0;transform:scale(1.18)}}@keyframes textFloat{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes navHeartPop{0%{opacity:0;transform:translate(0)scale(.45)rotate(-10deg)}22%{opacity:1;transform:translate(var(--heart-mid-x), var(--heart-mid-y)) scale(1.12) rotate(8deg)}to{opacity:0;transform:translate(var(--heart-end-x), var(--heart-end-y)) scale(.76) rotate(18deg)}}@keyframes composerHeartFloat{0%{opacity:0;transform:translate(var(--composer-heart-x), 0) scale(.55) rotate(-8deg)}20%{opacity:1}to{opacity:0;transform:translate(var(--composer-heart-end-x), var(--composer-heart-end-y)) scale(1.04) rotate(14deg)}}
