:root{color:#2e332d;font-synthesis:none;--ink:#2e332d;--muted:#6e756b;--paper:#fffdf8;--sage:#6e8068;--sage-dark:#4f6250;--line:#dedbd2;--peach:#e8bca3;background:#f7f3ec;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#f7f3ec;min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #d79873}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.eyebrow{color:#8c654f;letter-spacing:.14em;text-transform:uppercase;margin:0 0 .45rem;font-size:.72rem;font-weight:700}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,Times New Roman,serif;font-weight:400}.primary,.secondary{cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.55rem;min-height:46px;padding:.75rem 1.2rem;font-weight:700;display:inline-flex}.primary{background:var(--sage-dark);color:#fff;box-shadow:0 8px 18px #4f625033}.primary:hover{background:#405342}.primary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.secondary{color:#704f3d;background:#ecdfd3}.secondary svg,.primary svg{width:18px}.auth-shell{background:radial-gradient(circle at 15% 10%,#f0d9c8 0,#0000 32%),radial-gradient(circle at 85% 90%,#dce4d5 0,#0000 35%),#f7f3ec;place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8e8;border:1px solid #fff9;border-radius:28px;width:min(100%,430px);padding:2.4rem;box-shadow:0 24px 70px #4c55442b}.brand-mark{background:var(--sage-dark);color:#fff;border-radius:20px;place-items:center;width:58px;height:58px;margin:0 auto 1.25rem;display:grid;transform:rotate(-4deg)}.brand-mark svg{width:28px;transform:rotate(4deg)}.auth-card h1{margin-bottom:.55rem;font-size:clamp(2.5rem,9vw,3.35rem)}.lede{color:var(--muted);line-height:1.55}.setup-note{color:#665d50;background:#f2eadf;border-radius:14px;margin:1.35rem 0;padding:.85rem;font-size:.86rem;line-height:1.45}.auth-card form{text-align:left;gap:1rem;display:grid}.auth-card label{gap:.4rem;font-size:.8rem;font-weight:700;display:grid}.auth-card input{border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;min-height:48px;padding:.7rem .85rem}.text-button{color:var(--sage-dark);background:0 0;border:0;padding:1rem;font-weight:700}.preview-link{color:#865f49;margin:.25rem 0 1rem;font-weight:700;display:block}.privacy-note{color:#8a8f87;margin:.4rem 0 0;font-size:.72rem}.notice{color:#665d50;background:#f2eadf;border-radius:12px;margin:1rem 0;padding:.8rem .9rem;font-size:.85rem;line-height:1.45}.notice.error{color:#813e38;background:#f9e4e1}.notice.success{color:#3f6242;background:#e4eee1}.page-notice{width:min(100% - 2.5rem,1120px);margin:1rem auto -1rem}.loading-screen{min-height:100vh;color:var(--muted);place-content:center;justify-items:center;gap:.75rem;display:grid}.loading-screen>svg{width:42px;height:42px;color:var(--sage-dark)}.app-shell{min-height:100vh}.topbar{z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8dd;border-bottom:1px solid #e5e1d8;grid-template-columns:1fr auto 1fr;align-items:center;height:72px;padding:0 max(1.25rem,50vw - 590px);display:grid;position:sticky;top:0}.brand{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.7rem;font-family:Georgia,Times New Roman,serif;font-size:1.25rem;display:flex}.brand small{color:var(--muted);letter-spacing:.04em;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:.6rem;display:block}.brand-mark.small{border-radius:12px;width:37px;height:37px;margin:0}.brand-mark.small svg{width:19px}.topbar nav{gap:.35rem;display:flex}.topbar nav button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:.45rem;padding:.55rem .8rem;font-weight:600;display:flex}.topbar nav button.nav-active{color:var(--sage-dark);background:#e9eee5}.topbar nav svg{width:17px}.icon-button{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:50%;justify-self:end;place-items:center;width:42px;height:42px;display:grid}.icon-button svg{width:18px}.welcome,.pet-hero,.pet-strip,.timeline-section{width:min(100% - 2.5rem,1120px);margin-inline:auto}.welcome{justify-content:space-between;align-items:end;gap:2rem;min-height:325px;padding:4.6rem 0 3rem;display:flex}.welcome h1{letter-spacing:-.02em;margin-bottom:.8rem;font-size:clamp(2.6rem,6vw,5rem);line-height:.98}.welcome p:not(.eyebrow){max-width:610px;color:var(--muted);line-height:1.65}.pet-strip{background:#ebe5da;border-radius:20px;gap:.75rem;padding:1rem;display:flex;overflow-x:auto}.pet-strip>button{text-align:left;cursor:pointer;background:#fffdf8;border:1px solid #0000;border-radius:14px;align-items:center;gap:.7rem;min-width:180px;padding:.65rem .75rem;display:flex}.pet-strip>button.selected{border-color:var(--sage);box-shadow:0 0 0 2px #6e806822}.pet-strip small{color:var(--muted);margin-top:.12rem;font-size:.72rem;display:block}.pet-strip .add-pet{background:0 0;border:1px dashed #aaa89e}.add-pet>svg{background:#f7f3ec;border-radius:50%;width:38px;height:38px;padding:9px}.pet-avatar{color:#405342;background:linear-gradient(145deg,#d3dfcc,#a8bea1);border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:1.1rem;font-weight:700;display:grid;position:relative;overflow:hidden}.pet-avatar svg{opacity:.12;width:28px;position:absolute;bottom:-4px;right:-5px}.pet-avatar img{object-fit:cover;width:100%;height:100%}.pet-avatar.large{border:5px solid #fffdf8;width:100px;height:100px;font-size:2.1rem;box-shadow:0 12px 30px #4c55442e}.timeline-section{padding:3.2rem 0 5rem}.section-heading{justify-content:space-between;align-items:end;gap:1rem;display:flex}.section-heading h2{margin:0;font-size:clamp(2rem,4vw,3rem)}.filters{align-items:center;gap:.8rem;margin:1.7rem 0;display:flex}.search{border:1px solid var(--line);background:var(--paper);border-radius:12px;flex:1;align-items:center;gap:.55rem;min-height:45px;padding:0 .85rem;display:flex}.search svg{width:18px;color:var(--muted)}.search input{background:0 0;border:0;outline:0;width:100%}.segmented{border:1px solid var(--line);background:#ede8df;border-radius:11px;padding:3px;display:flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:.6rem .75rem;font-size:.78rem;font-weight:700}.segmented button.active{background:var(--paper);color:var(--ink);box-shadow:0 2px 7px #4c55441a}.filter-button{border:1px solid var(--line);background:var(--paper);border-radius:11px;align-items:center;gap:.4rem;min-height:45px;padding:.6rem .75rem;font-weight:700;display:flex}.filter-button svg{width:17px}.timeline-list{gap:1rem;padding-left:34px;display:grid;position:relative}.timeline-list:before{content:"";background:#d1cec5;width:1px;position:absolute;top:0;bottom:0;left:12px}.timeline-card{background:var(--paper);border:1px solid #e6e1d8;border-radius:18px;padding:1.25rem 1.35rem;position:relative;box-shadow:0 8px 24px #4c55440c}.timeline-dot{color:#fff;background:#d9a98c;border-radius:50%;place-items:center;width:25px;height:25px;display:grid;position:absolute;top:25px;left:-34px;box-shadow:0 0 0 5px #f7f3ec}.card-head{grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;display:grid}.card-head h3{margin-bottom:0;font-family:Georgia,Times New Roman,serif;font-size:1.35rem;font-weight:400}.event-meta{color:#8c654f;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.15rem;font-size:.68rem;font-weight:700}.card-head time{color:var(--muted);font-size:.77rem}.timeline-card>p{color:#5f665d;margin:1rem 0 0 56px;line-height:1.58}.photo-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin:1rem 0 0 56px;display:grid}.photo-grid img{aspect-ratio:4/3;object-fit:cover;border-radius:12px;width:100%;max-height:420px}.empty{text-align:center;color:var(--muted);padding:3.5rem 1rem}.empty>svg{opacity:.45;width:36px;height:36px}.pet-hero{padding:2rem 0 1.25rem}.back-button{color:var(--sage-dark);cursor:pointer;background:0 0;border:0;align-items:center;gap:.2rem;padding:.5rem 0;font-weight:700;display:flex}.back-button svg{width:19px}.pet-intro{align-items:center;gap:1.25rem;display:flex}.pet-intro h1{margin:.1rem 0 0;font-size:3.4rem;line-height:1}.pet-intro p{color:var(--muted);margin:.35rem 0 0}.status{text-transform:uppercase;letter-spacing:.07em;border-radius:999px;padding:.24rem .55rem;font-size:.62rem;font-weight:800;display:inline-block}.status.living{color:#476047;background:#dfeadc}.status.deceased{color:#746d67;background:#ece6df}.biography{max-width:680px;color:var(--muted);margin:1rem 0 0 125px;line-height:1.55}footer{text-align:center;border-top:1px solid var(--line);color:#858b82;padding:1.5rem;font-size:.72rem}.modal-backdrop{z-index:40;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#20251f99;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border-radius:22px;width:min(100%,650px);max-height:calc(100vh - 2rem);overflow-y:auto;box-shadow:0 28px 80px #1118}.modal>header{z-index:1;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffdf8f2;justify-content:space-between;align-items:center;padding:1.2rem 1.3rem;display:flex;position:sticky;top:0}.modal>header h2{margin:0;font-size:1.8rem}.editor-form{gap:1rem;padding:1.25rem;display:grid}.form-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.editor-form label{color:#555c53;gap:.4rem;font-size:.78rem;font-weight:700;display:grid}.editor-form label span{color:var(--muted);font-weight:400}.editor-form input,.editor-form select,.editor-form textarea{border:1px solid var(--line);width:100%;min-height:44px;color:var(--ink);background:#fff;border-radius:11px;padding:.65rem .75rem}.editor-form textarea{resize:vertical}.editor-form input[type=file]{padding:.55rem}.editor-form .primary{justify-self:end;min-width:150px}@media (width<=720px){.app-shell{padding-bottom:calc(62px + env(safe-area-inset-bottom))}.topbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:#fffdf8;grid-template-columns:1fr auto;height:62px;padding:0 1rem}.topbar nav{z-index:12;height:calc(62px + env(safe-area-inset-bottom));padding:6px 20%;padding-bottom:calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffdf8ee;justify-content:space-around;position:fixed;bottom:0;left:0;right:0}.topbar nav button{flex-direction:column;gap:0;font-size:.62rem}.brand small{display:none}.welcome,.pet-hero,.pet-strip,.timeline-section{width:min(100% - 1.5rem,1120px)}.welcome{min-height:275px;padding:3rem 0 2rem;display:block}.welcome h1{font-size:3.1rem}.welcome .primary{width:100%;margin-top:.5rem}.pet-strip{border-radius:0;width:100%;padding-left:.75rem}.pet-strip>button{min-width:155px}.timeline-section{padding-top:2.4rem;padding-bottom:6rem}.section-heading{align-items:center}.section-heading .secondary{border-radius:50%;width:45px;height:45px;padding:0}.section-heading .secondary svg{margin:0}.section-heading .secondary{font-size:0}.filters{flex-wrap:wrap}.search{flex-basis:100%}.segmented{flex:1;overflow-x:auto}.segmented button{white-space:nowrap;flex:1;padding-inline:.55rem}.filter-button{font-size:0}.timeline-list{padding-left:25px}.timeline-list:before{left:8px}.timeline-dot{width:21px;height:21px;left:-27px}.timeline-dot svg{width:12px}.timeline-card{padding:1rem}.card-head{grid-template-columns:auto 1fr}.card-head time{grid-column:2;margin-top:-.45rem}.timeline-card>p{margin-left:0}.photo-grid{grid-template-columns:1fr;margin-left:0}.pet-intro h1{font-size:2.7rem}.pet-avatar.large{width:82px;height:82px}.biography{margin-left:0}.auth-card{border-radius:22px;padding:1.6rem}.modal-backdrop{align-items:end;padding:0}.modal{border-radius:22px 22px 0 0;max-height:92vh}.form-grid{grid-template-columns:1fr}.editor-form .primary{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
