:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#37253c;background:#f5edf3}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 10% 8%,#ffebe8 0%,transparent 34%),radial-gradient(circle at 88% 90%,#e9dbf8 0%,transparent 35%),#f7f0f4}.shell{width:min(1120px,calc(100% - 36px));min-height:min(760px,calc(100vh - 64px));margin:32px auto;display:grid;grid-template-columns:43% 57%;border-radius:30px;overflow:hidden;background:#fff;box-shadow:0 26px 90px #42264f1c}.hero{min-height:660px;padding:60px 48px;color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;position:relative;isolation:isolate;background:linear-gradient(155deg,#523453,#32243e 65%,#241b35)}.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;z-index:-1}.hero:before{width:340px;height:340px;top:-145px;left:-140px;background:#fd9caa3a;filter:blur(6px)}.hero:after{width:420px;height:420px;right:-230px;bottom:-150px;background:#bd86e42e;filter:blur(15px)}.hearts{font-size:49px;letter-spacing:13px;color:#ffb6c7;opacity:.85}.eyebrow,.section-label{font-size:11px;letter-spacing:3px;font-weight:750}.eyebrow{color:#fac6d1;margin:52px 0 18px}.hero h1{font-family:Georgia,serif;letter-spacing:-2px;font-size:clamp(48px,6vw,77px);line-height:1.05;margin:0}.hero h1 span{display:inline-block;font-size:.38em;vertical-align:top;color:#ff9cad;margin:4px 0 0 13px}.subtitle{font-size:17px;line-height:1.6;max-width:260px;color:#ecdae8}.hero-footer{position:absolute;bottom:39px;font-family:Georgia,serif;font-style:italic;color:#cdb3d0;font-size:15px}.workspace{min-width:0;display:flex;flex-direction:column;justify-content:center}.login-panel{padding:clamp(30px,6vw,80px)}.section-label{color:#bb7899}.login-panel h2{font-family:Georgia,serif;font-size:clamp(27px,3vw,37px);font-weight:500;margin:16px 0}.login-panel h2 span{color:#e69bad}.muted{font-size:14px;line-height:1.65;color:#8c798a;margin:0 0 32px}label{display:block;font-size:13px;font-weight:650;margin:16px 0 9px}input{width:100%;font:inherit;font-size:15px;border:1px solid #e5dce5;border-radius:13px;padding:15px 16px;background:#fffdff;outline:none;transition:border-color .2s,box-shadow .2s}input:focus{border-color:#a870a4;box-shadow:0 0 0 3px #aa7ba321}.primary{width:100%;margin-top:26px;border:0;border-radius:13px;background:#583955;color:#fff;padding:16px 22px;display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700;cursor:pointer}.primary:hover{background:#6d456b}button:disabled{opacity:.65;cursor:not-allowed}.hint,.chat-hint{font-size:12px;line-height:1.5;color:#9e8c9c;margin-top:22px}.error{color:#a12d50;font-size:13px;line-height:1.5}.chat-panel{height:min(760px,calc(100vh - 64px));min-height:490px;display:flex;flex-direction:column}.chat-panel[hidden],.login-panel[hidden]{display:none}.chat-header{display:flex;align-items:center;gap:12px;padding:24px 25px;border-bottom:1px solid #f1e9f0}.avatar{background:#f7e7f2;color:#ad7196;width:44px;height:44px;border-radius:15px;display:grid;place-items:center;font-size:27px}.chat-heading{flex:1;min-width:0}.chat-heading h2{font-family:Georgia,serif;font-size:23px;font-weight:500;margin:0}.chat-heading p{margin:3px 0 0;color:#958596;font-size:12px}.ghost{border:1px solid #e9dfea;border-radius:10px;background:#fff;padding:9px 13px;color:#795b78;cursor:pointer}.chat-notice{text-align:center;font-size:12px;color:#a08ca1;background:#fdf7fa;padding:12px}.messages{min-height:0;flex:1;overflow:auto;padding:26px 24px;display:flex;flex-direction:column;gap:12px}.bubble{max-width:80%;align-self:flex-start;border-radius:17px 17px 17px 4px;background:#f3edf3;padding:11px 14px;overflow-wrap:anywhere;white-space:pre-wrap}.bubble.mine{align-self:flex-end;background:#624462;color:#fff;border-radius:17px 17px 4px 17px}.bubble .meta{display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:10px;opacity:.7;margin-top:7px}.empty{margin:auto;color:#a88da2;text-align:center;font-size:14px}.send-form{display:flex;gap:10px;margin:0 24px}.send-form input{flex:1;min-width:0;border-radius:24px;background:#faf7fa}.send-btn{border:0;border-radius:50%;width:51px;height:51px;background:#624462;color:#fff;font-size:20px;cursor:pointer;flex:none}.chat-error{margin:0 24px 10px}.chat-hint{text-align:center;margin:12px 24px 17px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:760px){.shell{width:100%;margin:0;min-height:100dvh;border-radius:0;display:flex;flex-direction:column}.hero{min-height:174px;flex:none;padding:26px 25px}.hearts{font-size:21px;letter-spacing:5px}.eyebrow{margin:14px 0 6px;font-size:9px}.hero h1{font-size:38px}.subtitle{font-size:12px;margin:6px 0}.hero-footer{display:none}.workspace{flex:1;justify-content:flex-start}.login-panel{padding:35px 26px}.chat-panel{height:calc(100dvh - 174px);min-height:390px}.chat-header{padding:12px 16px}.messages{padding:16px}.send-form{margin:0 14px}.chat-notice{padding:9px}}

/* Version 0.2: app navigation and home screen */
.app-panel{height:min(760px,calc(100vh - 64px));min-height:490px;display:flex;flex-direction:column;min-width:0}.app-panel[hidden],.app-view[hidden]{display:none!important}.app-top{display:flex;align-items:center;gap:12px;padding:20px 24px;border-bottom:1px solid #f1e9f0;flex:none}.app-heading{flex:1;min-width:0}.app-heading h2{font:500 24px Georgia,serif;margin:5px 0 2px}.app-heading p{font-size:11px;color:#998599;margin:0}.app-heading .section-label{font-size:8px;letter-spacing:1.5px}.app-view{min-height:0;flex:1}.home-view{overflow:auto;padding:25px;background:linear-gradient(180deg,#fff 0%,#fdf8fc 100%)}.welcome-card{border-radius:23px;color:#fff;padding:25px 26px;background:radial-gradient(circle at 100% 0%,#aa7790 0%,transparent 42%),linear-gradient(135deg,#795275,#472d50);position:relative;overflow:hidden}.welcome-card .overline{font-size:9px;letter-spacing:2px;font-weight:750;color:#f6c9da}.welcome-icon{position:absolute;right:24px;top:22px;color:#ffd0de;font-size:38px;opacity:.8}.welcome-card h3{font:normal 36px Georgia,serif;margin:25px 0 10px}.welcome-card p{color:#f7e4f0;font-size:13px;line-height:1.6;max-width:340px}.welcome-action{cursor:pointer;margin-top:12px;border:0;border-radius:12px;background:#fff;color:#603c60;padding:12px 15px;font-weight:700}.welcome-action span{margin-left:15px}.home-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.mini-card{border:1px solid #efe3ec;border-radius:19px;padding:17px;background:#fff;min-height:157px}.card-icon{font-size:21px;color:#aa7c9e}.mini-card h4{margin:12px 0 6px;font:normal 20px Georgia,serif}.mini-card p{font-size:12px;color:#917e91;line-height:1.45;margin:0}.mini-card button{border:0;background:none;padding:0;color:#895b83;font-size:12px;cursor:pointer;margin-top:11px;font-weight:700}.soon{display:inline-block;margin-top:12px;font-size:11px;color:#a693a4}.bottom-nav{height:73px;display:flex;align-items:stretch;flex:none;border-top:1px solid #f1e9f0;background:#fff;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav button{border:0;flex:1;background:transparent;color:#ae9aaf;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px}.bottom-nav button span{font-size:23px;line-height:1}.bottom-nav button small{font-size:11px}.bottom-nav button.active{color:#6c436b;font-weight:750}.chat-view{display:flex;flex-direction:column;overflow:hidden}.chat-view .messages{padding:20px 24px}.placeholder-view{overflow:auto;text-align:center;padding:65px 34px;background:linear-gradient(#fff,#fdf6fc)}.placeholder-glyph{color:#bb8eaf;font-size:57px}.placeholder-view h3{font:normal 32px Georgia,serif;color:#4c344d;margin:18px 0}.placeholder-view p{color:#8b778a;font-size:14px;line-height:1.7}.outline-action{margin-top:18px;padding:12px 18px;border:1px solid #bca4ba;background:#fff;border-radius:12px;color:#694769;cursor:pointer}
@media(max-width:760px){.app-panel{height:calc(100dvh - 174px);min-height:390px}.app-top{padding:11px 14px}.app-heading h2{font-size:20px}.app-heading .section-label{display:none}.home-view{padding:15px}.welcome-card{padding:21px}.welcome-card h3{font-size:30px}.home-grid{gap:9px}.mini-card{padding:13px;min-height:140px}.mini-card h4{font-size:17px}.mini-card p{font-size:11px}.bottom-nav{height:66px}.chat-view .messages{padding:12px}.chat-hint{font-size:10px;margin:7px 10px}}
@media(max-width:390px){.hero{min-height:125px;padding:14px 20px}.hero h1{font-size:28px}.hearts{display:none}.eyebrow{margin:0}.subtitle{margin:2px 0}.app-panel{height:calc(100dvh - 125px)}.app-heading p{font-size:10px}}

/* Version 0.3: memories */
.memory-view{overflow-y:auto;padding:22px 24px 26px;background:linear-gradient(#fff,#fcf6fb)}
.memory-head h3{font:normal 30px Georgia,serif;margin:7px 0;color:#4e3451}.memory-head p{font-size:13px;color:#947f92}.memory-form{background:#fff;border:1px solid #eee3ed;border-radius:20px;padding:18px;margin:18px 0 20px}
.memory-form label{margin:12px 0 8px}.memory-form textarea{width:100%;resize:vertical;min-height:94px;border:1px solid #e5dce5;border-radius:13px;padding:13px;font:inherit;font-size:14px;outline:none}.memory-form textarea:focus{border-color:#a870a4}
.memory-form input[type=file]{padding:10px;font-size:12px}.memory-form .primary{margin-top:17px}
.memory-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.memory-list>.muted{grid-column:1/-1}
.memory-card{border-radius:17px;background:white;border:1px solid #efe4ed;overflow:hidden;box-shadow:0 7px 24px #4b30500c;min-width:0}.memory-picture{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.memory-date{display:block;color:#a47799;font-size:11px;font-weight:bold;margin:13px 14px 5px}.memory-caption{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.5;color:#50374f;margin:4px 14px 15px}
@media(max-width:760px){.memory-view{padding:15px}.memory-list{grid-template-columns:1fr}.memory-head h3{font-size:26px}}

/* Version 0.4: shared important dates */
.dates-view{overflow-y:auto;padding:22px 24px 26px;background:linear-gradient(180deg,#fff,#fcf5fa)}
.dates-heading h3{font:normal 31px Georgia,serif;margin:8px 0;color:#513650}.dates-heading p{font-size:13px;color:#917d90;margin:0}
.date-form{background:#fff;border:1px solid #eee3ed;border-radius:20px;padding:18px;margin:20px 0}
.date-form label{margin:12px 0 7px}.date-form select,.date-form textarea{width:100%;border:1px solid #e5dce5;border-radius:12px;padding:13px;font:inherit;color:#38283e;background:#fff}
.date-form textarea{resize:vertical}.date-form .primary{margin-top:17px}
.dates-list{display:grid;gap:13px}.date-card{border:1px solid #ecdfeb;background:linear-gradient(130deg,#fff,#fdf4fa);border-radius:19px;padding:18px;box-shadow:0 5px 22px #4524490b;min-width:0}
.date-card h4{font:normal 23px Georgia,serif;margin:12px 0 5px;overflow-wrap:anywhere;color:#4e344f}
.date-card-day{color:#9d7697;font-size:13px;margin:0 0 10px}.date-countdown{background:#f4e5ef;color:#80476f;border-radius:40px;padding:7px 11px;font-size:12px;font-weight:750;display:inline-block}
.date-repeat{font-size:11px;color:#997b94}.date-card-note{margin:10px 0 0;font-size:13px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;color:#655368}
.dates-footnote{font-size:11px;line-height:1.55;color:#a390a2}
@media(max-width:760px){.dates-view{padding:15px}.dates-heading h3{font-size:27px}}

/* Version 0.5: record actions */
.record-actions{display:flex;gap:8px;padding:0 14px 14px;flex-wrap:wrap}
.record-actions button,.edit-cancel{border:1px solid #d7bfd3;border-radius:10px;background:#fff;color:#624462;padding:9px 12px;font:600 12px Inter,system-ui,sans-serif;cursor:pointer}
.record-actions .record-delete{border-color:#f2d2dc;color:#a33d60}
.edit-cancel{margin-top:14px;width:100%}
.edit-cancel[hidden]{display:none}
.record-actions button:hover,.edit-cancel:hover{background:#faeff7}
.record-actions button:disabled{opacity:.5}
