:root{--paper:#f8f5ef;--ink:#352f29;--muted:#716557;--line:#d9d0c2;--accent:#806443;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0}html{scroll-behavior:smooth}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #86602c;outline-offset:5px}.wrap{width:min(1160px,calc(100% - 96px));margin:auto}header{padding:30px 0;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:25px}.brand{font-family:Georgia,serif;font-size:20px;letter-spacing:.08em}.brand span{display:block;font-family:Arial,sans-serif;font-size:10px;letter-spacing:.2em;margin-top:8px}nav a{font-size:13px}nav span{margin-left:15px}.hero{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:95px;padding:65px 0 85px}.portrait{padding:14px;background:#fffdf8;box-shadow:0 12px 40px #39270b0c;border:1px solid #e2d9cc;transform:rotate(-2deg)}.portrait img{display:block;width:100%;height:auto;max-height:615px;object-fit:contain;background:#e8dfd2;image-orientation:from-image}.photo-note{display:block;font-family:Georgia,serif;font-style:italic;text-align:center;font-size:17px;padding:18px 0 8px;color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:.22em;font-weight:600;margin:0 0 25px}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-size:clamp(64px,7vw,98px);font-weight:400;line-height:.98;letter-spacing:-.055em;margin-bottom:28px}.dot{color:#967955}.dates{font-size:13px;line-height:1.9;display:flex;gap:12px;flex-wrap:wrap;color:var(--muted)}.rule{height:1px;width:50px;background:#a18a6b;margin:28px 0}.dedication{font-family:Georgia,serif;font-size:31px;line-height:1.35;letter-spacing:-.02em;margin-bottom:20px}.dedication em,.closing em{color:var(--accent);font-weight:400}.intro{font-size:16px;line-height:1.8;max-width:340px;color:var(--muted);margin-bottom:28px}.button{display:inline-flex;justify-content:center;align-items:center;gap:28px;background:var(--ink);color:#fffdf8;border:1px solid var(--ink);padding:16px 21px;min-height:48px;font-size:14px;cursor:pointer;border-radius:2px;font-family:inherit}.button:hover{background:#554737}.button.secondary{background:transparent;color:var(--ink)}.memory-section{background:#eee8de;padding:72px 0 85px;border-top:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:35px}.section-heading .eyebrow{margin-bottom:15px}h2{font-family:Georgia,serif;font-weight:400;font-size:43px;letter-spacing:-.035em;margin-bottom:0}.section-heading>p{font-family:Georgia,serif;font-style:italic;color:var(--muted);font-size:18px;line-height:1.6;margin:0}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.memory-card{margin:0;background:#fffdf8;padding:12px 12px 20px}.memory-card img{width:100%;height:340px;object-fit:contain;background:#e8dfd2;display:block}.memory-card figcaption{padding:20px 12px 0}h3{font-family:Georgia,serif;font-weight:400;font-size:23px;margin-bottom:10px}.memory-card p{font-size:14px;line-height:1.7;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:0}.memory-card time{display:block;font-size:12px;color:var(--muted);margin-bottom:10px}.closing{text-align:center;padding:80px 0}.ornament{display:block;color:var(--accent);font-size:28px;margin-bottom:20px}.closing p{font-family:Georgia,serif;font-size:37px;line-height:1.4;margin-bottom:0}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:30px 0;font-size:12px;color:var(--muted);gap:20px}footer p{line-height:1.9;margin:0}footer strong{font-weight:400;color:var(--ink)}footer a{text-decoration:underline;text-underline-offset:5px}.skip{position:absolute;top:-100px;background:white;padding:15px;z-index:10}.skip:focus{top:8px}.admin{max-width:700px;padding:65px 0}.admin h1{font-size:50px;margin-bottom:20px}.admin>p{line-height:1.7;color:var(--muted)}form{margin-top:35px}label{display:block;font-size:14px;margin:22px 0 9px}input,textarea{width:100%;font:inherit;color:var(--ink);background:white;border:1px solid #ac9c86;padding:13px;border-radius:2px}textarea{min-height:130px;resize:vertical}.hint{font-size:13px;line-height:1.7;color:var(--muted)}form .button{margin-top:22px}#preview{max-height:300px;max-width:100%;margin-top:20px}#upload-status{line-height:1.6;padding-top:15px}button:disabled{opacity:.6;cursor:wait}[hidden]{display:none!important}@media(max-width:900px){.wrap{width:calc(100% - 48px)}.hero{gap:45px}.dates{display:block}.dates span{padding:0 8px}.gallery{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.wrap{width:calc(100% - 40px)}header{padding:22px 0}.brand{font-size:16px}nav a{font-size:12px}nav span{display:none}.hero{grid-template-columns:1fr;gap:40px;padding:42px 0 55px}.portrait{max-width:420px;margin:auto;transform:rotate(-1deg)}.portrait img{max-height:480px}.hero-copy{padding:0 6px}h1{font-size:68px}h1 br{display:none}h1 br:after{content:' '}.dates{font-size:13px}.hero-copy .eyebrow{margin-bottom:18px}.section-heading{display:block}.section-heading>p{margin-top:20px}.section-heading>p br{display:none}h2{font-size:36px}.gallery{grid-template-columns:1fr}.memory-card img{height:auto;max-height:450px}.memory-section{padding:50px 0}.closing{padding:55px 0}.admin h1{font-size:41px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
