@import"https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,300;1,9..144,400&family=Manrope:wght@300;400;500;600&display=swap";*{box-sizing:border-box}body{margin:0}.memorial-root{font-family:Manrope,system-ui,sans-serif;color:#2c2620;background:#f7f2ea;min-height:100vh;line-height:1.65;-webkit-font-smoothing:antialiased}.serif{font-family:Fraunces,Georgia,serif}audio{width:100%;height:40px}.grain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:.35;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.18'/%3E%3C/svg%3E")}.divider{width:40px;height:1px;background:#a89c89;margin:0 auto}.eyebrow{font-size:11px;letter-spacing:.4em;text-transform:uppercase;color:#8a7a68;font-weight:500}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp 1.4s cubic-bezier(.2,.7,.2,1) both}@keyframes scrollNudge{0%,to{transform:translateY(0);opacity:.7}50%{transform:translateY(6px);opacity:1}}.scroll-cue svg{animation:scrollNudge 2.2s ease-in-out infinite;animation-delay:3.5s}@keyframes recPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.65)}}.rec-dot{width:12px;height:12px;border-radius:50%;background:#c34a3f;display:inline-block;animation:recPulse 1.3s ease-in-out infinite}.section{position:relative;z-index:10}.hero{position:relative;z-index:10;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:96px 24px;background:radial-gradient(ellipse at 50% 30%,#fdf9f2,#f7f2ea 55%,#ece3d2)}@media(max-width:640px){.hero{padding:52px 24px 80px;justify-content:flex-start}}.hero__inner{text-align:center;max-width:672px;width:100%}.hero__portrait{width:clamp(180px,40vw,240px);height:clamp(180px,40vw,240px);margin:0 auto 40px;border-radius:50%;overflow:hidden;box-shadow:0 20px 60px -25px #3c2d1e59,0 4px 18px -8px #3c2d1e2e}.hero__portrait img{width:100%;height:100%;object-fit:cover;display:block}.hero__eyebrow{margin-bottom:20px}.hero__name{font-size:clamp(56px,11vw,112px);font-weight:300;letter-spacing:-.02em;line-height:1.02;color:#1f1a14;margin:0 0 24px}.hero__dates{font-style:italic;font-size:18px;color:#6b5d50;margin-bottom:64px}.hero__epitaph{font-style:italic;font-size:19px;color:#5a4f44;line-height:1.65;max-width:460px;margin:0 auto;white-space:pre-line}.hero__epitaph-divider{width:40px;height:1px;background:#a89c89;margin:0 auto 28px}.scroll-cue{position:absolute;bottom:40px;left:50%;transform:translate(-50%)}.tribute{padding:120px 24px 100px}.tribute__inner{max-width:640px;margin:0 auto}.tribute__eyebrow{margin-bottom:32px;text-align:center}.tribute__body{font-size:21px;line-height:1.7;color:#3d352c}.tribute__body p{margin-bottom:24px}.tribute__divider{width:40px;height:1px;background:#a89c89;margin:64px auto 0}.dedications{padding:80px 24px 100px;background:#fffdf880}.dedications__inner{max-width:720px;margin:0 auto}.dedications__header{text-align:center;margin-bottom:56px}.dedications__title{font-size:clamp(36px,6vw,56px);font-weight:300;color:#1f1a14;margin:12px 0 0}.dedications__intro{font-style:italic;font-size:17px;line-height:1.65;color:#6b5d50;max-width:480px;margin:28px auto 0}.dedications__list{display:flex;flex-direction:column;gap:40px;margin-bottom:72px}.dedications__empty{font-style:italic;color:#a89c89;text-align:center;padding:32px 0}.dedications__loading{font-style:italic;color:#a89c89;text-align:center}.cta-pill{display:inline-block;font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:#6b5d50;border:1px solid #c2b39a;padding:10px 24px;cursor:pointer;font-weight:500;text-decoration:none;background:transparent;font-family:inherit;transition:background .3s ease,color .3s ease}.cta-pill:hover{background:#2c2620;color:#f7f2ea}.btn{display:block;width:100%;text-align:center;padding:14px 20px;border:1px solid #6b5d50;background:transparent;font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:#2c2620;cursor:pointer;font-family:inherit;font-weight:500;transition:background .3s ease,color .3s ease}.btn:hover{background:#2c2620;color:#f7f2ea}.btn:disabled{opacity:.35;cursor:not-allowed}.btn:disabled:hover{background:transparent;color:#2c2620}.btn-ghost{background:transparent;border:1px solid #c2b39a;padding:14px 32px;font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:#2c2620;cursor:pointer;font-family:inherit;font-weight:500;transition:background .3s ease,color .3s ease}.btn-ghost:hover{background:#2c2620;color:#f7f2ea}.field{width:100%;background:transparent;border:0;border-bottom:1px solid #d6cdbe;padding:10px 0;font-size:15px;color:#2c2620;font-family:inherit;transition:border-color .3s ease}.field:focus{outline:none;border-bottom-color:#6b5d50}.field::placeholder{color:#a89c89}.field--message{font-size:17px;line-height:1.6;resize:none}.card{background:#fffdf8;border:1px solid #e8ddc8;padding:28px}.card--bare{background:#fffdf8;border:1px solid #e8ddc8;overflow:hidden;padding:0}.card__body{padding:28px}.card__photo-frame{position:relative;height:360px;background:#ece3d2}.card__photo{width:100%;height:100%;object-fit:contain;display:block;cursor:zoom-in}.card__message{font-size:19px;line-height:1.7;color:#3d352c;margin:0;white-space:pre-wrap;font-weight:400}.read-more{margin-top:12px;background:transparent;border:0;color:#6b5d50;font-size:11px;letter-spacing:.25em;text-transform:uppercase;cursor:pointer;font-family:inherit;font-weight:500;padding:0 0 3px;border-bottom:1px solid #c2b39a}.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:50%;background:#14100c8c;border:0;color:#f7f2ea;font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;font-family:inherit;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:0}.carousel-arrow--prev{left:12px}.carousel-arrow--next{right:12px}.carousel-dots{position:absolute;bottom:14px;left:50%;transform:translate(-50%);display:flex;gap:7px;padding:7px 11px;background:#14100c73;border-radius:14px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.carousel-dot{width:6px;height:6px;border-radius:50%;background:#f7f2ea59;transition:background .3s ease}.carousel-dot--active{background:#f7f2eaf2}.photo-uploader{display:block;text-align:center;padding:16px 20px;border:1px dashed #c2b39a;color:#8a7a68;font-size:11px;letter-spacing:.25em;text-transform:uppercase;cursor:pointer;margin-bottom:24px;font-family:inherit;font-weight:500;transition:color .3s ease,border-color .3s ease}.photo-uploader[data-busy=true]{color:#a89c89;cursor:wait}.photo-preview{position:relative;overflow:hidden;border:1px solid #e8ddc8;background:#faf6ee}.photo-preview img{width:100%;display:block}.photo-preview__remove{position:absolute;top:10px;right:10px;background:#14100cb3;color:#f7f2ea;border:0;padding:8px 14px;cursor:pointer;font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-family:inherit;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.audio-preview{border:1px solid #e8ddc8;background:#faf6ee;padding:16px;margin-bottom:24px}.audio-preview audio{display:block;margin-bottom:12px}.audio-recorder{border:1px solid #c34a3f;background:#c34a3f0d;padding:22px 20px;text-align:center;margin-bottom:24px}.audio-recorder__display{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:18px}.audio-recorder__time{font-size:22px;color:#3d352c;font-variant-numeric:tabular-nums;letter-spacing:.05em;font-weight:300}.audio-recorder__time-max{font-size:11px;color:#a89c89;letter-spacing:.15em;text-transform:uppercase}.audio-prompt{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:16px 20px;border:1px dashed #c2b39a;background:transparent;color:#8a7a68;font-size:11px;letter-spacing:.25em;text-transform:uppercase;cursor:pointer;font-family:inherit;font-weight:500}.audio-attach-link{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#a89c89;cursor:pointer;border-bottom:1px solid #d6cdbe;padding-bottom:2px}.icon-button-text{background:transparent;border:0;color:#8a7a68;font-size:11px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer;font-family:inherit;padding:0}.footer{position:relative;z-index:10;text-align:center;padding:64px 24px 80px}.footer__divider{width:40px;height:1px;background:#a89c89;margin:0 auto 24px}.footer__line-primary{font-style:italic;color:#6b5d50;font-size:14px;margin-bottom:8px}.footer__line-secondary{font-size:11px;color:#a89c89;letter-spacing:.05em}.confirm-step{border-top:1px solid #e8ddc8;padding-top:24px}.confirm-step__text{font-style:italic;font-size:15px;line-height:1.6;color:#6b5d50;text-align:center;margin:0 0 20px}.confirm-step__actions{display:flex;gap:12px}.confirm-step__actions>button{flex:1;padding:14px 20px}.confirm-step__cancel{padding-top:14px;padding-bottom:14px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#14100cf0;display:flex;align-items:center;justify-content:center;padding:24px}.lightbox__inner{max-width:900px;width:100%}.lightbox__image{width:100%;max-height:78vh;object-fit:contain;display:block}.lightbox__caption{text-align:center;color:#f7f2ea8c;font-size:12px;margin-top:16px;letter-spacing:.15em;text-transform:uppercase}.lightbox__counter{margin-left:14px;color:#f7f2ea66}.lightbox__arrow{position:absolute;top:50%;transform:translateY(-50%);background:#f7f2ea14;border:0;color:#f7f2ead9;width:52px;height:52px;border-radius:50%;font-size:28px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center}.lightbox__arrow--prev{left:20px}.lightbox__arrow--next{right:20px}.lightbox__close{position:absolute;top:24px;right:28px;background:transparent;border:0;color:#f7f2eab3;font-size:36px;cursor:pointer;line-height:1}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#f7f2ea;overflow-y:auto}.modal__header{position:sticky;top:0;background:#f7f2ea;border-bottom:1px solid #e8ddc8;z-index:1;padding:20px 24px;display:flex;align-items:center;justify-content:space-between}.modal__title{font-size:20px;color:#1f1a14;font-weight:400}.modal__close{background:transparent;border:0;color:#2c2620;font-size:32px;cursor:pointer;line-height:1;padding:0;font-family:inherit}.modal__body{max-width:720px;margin:0 auto;padding:40px 24px 80px}
