:root { --ink:#1c231e; --muted:#6d746e; --paper:#f6f4ef; --plum:#30284f; --lavender:#b7a8ff; --line:#dedfd9; --white:#fff; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:"DM Sans",sans-serif; }
a { color:inherit; text-decoration:none; }
button,input,textarea,select { font:inherit; }
.memorial-header { display:flex; align-items:center; justify-content:space-between; gap:20px; max-width:1180px; height:76px; margin:auto; padding:0 24px; }
.memorial-header>a:last-child,.memorial-public-header button { padding:10px 15px; border:1px solid var(--line); border-radius:999px; background:#fff; color:#4d554f; font-size:12px; font-weight:700; cursor:pointer; }
.memorial-brand { font:800 23px/1 "Manrope",sans-serif; letter-spacing:-1.2px; }
.memorial-brand span { color:#6657db; }
.memorial-form-shell { max-width:900px; margin:0 auto; padding:45px 24px 100px; }
.memorial-form-intro { max-width:750px; margin-bottom:42px; }
.memorial-form-intro>p,.memorial-kicker,.memorial-confirm>p:first-of-type { margin:0 0 11px; color:#6657db; font-size:10px; font-weight:800; letter-spacing:1.8px; }
.memorial-form-intro h1 { margin:0; font:800 clamp(45px,7vw,76px)/.98 "Manrope",sans-serif; letter-spacing:-4px; }
.memorial-form-intro h1 em,.memorial-confirm h1 em { color:#6657db; font-family:Georgia,serif; font-weight:400; }
.memorial-form-intro>span { display:block; max-width:650px; margin-top:19px; color:var(--muted); font-size:16px; line-height:1.65; }
.memorial-builder-form { display:grid; gap:18px; }
.memorial-builder-form>section { padding:30px; border:1px solid var(--line); border-radius:24px; background:#fff; box-shadow:0 12px 35px rgba(40,43,39,.05); }
.memorial-step { display:flex; align-items:flex-start; gap:17px; margin-bottom:25px; }
.memorial-step>b { display:grid; place-items:center; flex:0 0 43px; height:43px; border-radius:14px; background:#ebe7ff; color:#4e43bf; font-size:11px; }
.memorial-step h2 { margin:0 0 4px; font:750 23px/1.1 "Manrope",sans-serif; letter-spacing:-.7px; }
.memorial-step p { margin:0; color:var(--muted); font-size:13px; }
.memorial-fields,.memorial-story-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:17px; }
.memorial-fields label,.memorial-story-fields label { display:flex; min-width:0; flex-direction:column; gap:7px; color:#414943; font-size:12px; font-weight:700; }
.memorial-fields .wide,.memorial-story-fields .wide { grid-column:1/-1; }
.memorial-fields label>span>small,.memorial-story-fields label>span>small { color:#929892; font-weight:500; }
.memorial-fields input,.memorial-fields textarea,.memorial-fields select,.memorial-story-fields input,.memorial-story-fields textarea { width:100%; border:1px solid #d8dcd6; border-radius:12px; outline:0; background:#fbfbf8; color:var(--ink); }
.memorial-fields input,.memorial-fields select,.memorial-story-fields input { height:48px; padding:0 13px; }
.memorial-fields textarea,.memorial-story-fields textarea { padding:13px; resize:vertical; line-height:1.55; }
.memorial-fields input:focus,.memorial-fields textarea:focus,.memorial-fields select:focus,.memorial-story-fields input:focus,.memorial-story-fields textarea:focus { border-color:#7668df; box-shadow:0 0 0 3px rgba(118,104,223,.12); background:#fff; }
.memorial-fields label>small { color:#838a84; font-size:10px; font-weight:500; }
.memorial-inline { display:grid; grid-template-columns:1fr 88px; gap:8px; }
.memorial-upload { padding:16px; border:1px dashed #bbb5dc; border-radius:14px; background:#f9f7ff; }
.memorial-upload input { height:auto; padding:10px; background:#fff; }
.memorial-upload em { color:#7c758b; font-size:10px; font-style:normal; font-weight:500; }
.memorial-slug-field { display:flex; align-items:center; gap:0; overflow:hidden; border:1px solid #d8dcd6; border-radius:12px; background:#fbfbf8; }
.memorial-slug-field b { padding:0 0 0 13px; color:#6657db; font-size:12px; white-space:nowrap; }
.memorial-slug-field input { border:0; background:transparent; box-shadow:none!important; }
.memorial-submit-row { display:flex; align-items:center; justify-content:space-between; gap:25px; padding:20px 4px; }
.memorial-submit-row p { max-width:480px; margin:0; color:var(--muted); font-size:11px; line-height:1.5; }
.memorial-submit-row button,.memorial-story-form>button { min-height:52px; padding:0 22px; border:0; border-radius:14px; background:var(--plum); color:#fff; cursor:pointer; font-weight:800; }
.memorial-submit-row button span,.memorial-story-form>button span { margin-left:15px; }
.memorial-honeypot { position:absolute!important; left:-10000px!important; width:1px!important; height:1px!important; overflow:hidden!important; }
.memorial-errors,.memorial-success { margin:0 0 18px; padding:16px 18px; border-radius:14px; background:#fff0ed; color:#833c31; font-size:12px; }
.memorial-errors ul { margin:7px 0 0; padding-left:18px; }
.memorial-success { background:#e7f7dc; color:#365b23; }
.memorial-confirm-body { display:grid; min-height:100vh; place-items:center; background:radial-gradient(circle at 70% 10%,#e1dcff,transparent 35%),var(--paper); }
.memorial-confirm { width:min(680px,calc(100% - 30px)); padding:44px; border:1px solid var(--line); border-radius:30px; background:#fff; text-align:center; box-shadow:0 30px 80px rgba(45,39,76,.12); }
.memorial-confirm>.memorial-brand { display:inline-block; margin-bottom:45px; }
.memorial-confirm-mark { display:grid; place-items:center; width:64px; height:64px; margin:0 auto 20px; border-radius:20px; background:#d6ff86; font-size:27px; font-weight:800; }
.memorial-confirm h1 { margin:0; font:800 clamp(38px,7vw,58px)/1 "Manrope",sans-serif; letter-spacing:-2.8px; }
.memorial-confirm h2 { margin:20px 0 0; font-size:19px; }
.memorial-future-url { margin:24px 0; padding:20px; border-radius:17px; background:#f1effc; }
.memorial-future-url small,.memorial-future-url span { display:block; color:#777184; font-size:10px; }
.memorial-future-url strong { display:block; overflow-wrap:anywhere; margin:7px 0; color:#5147bd; font-size:16px; }
.memorial-confirm-copy { color:var(--muted); line-height:1.6; }
.memorial-confirm>div:last-child { display:flex; align-items:center; justify-content:center; gap:15px; margin-top:25px; font-size:12px; font-weight:700; }
.memorial-primary-link { padding:13px 17px; border-radius:12px; background:var(--plum); color:#fff; }
.memorial-page-body { background:#f8f7f3; }
.memorial-public-header { max-width:1280px; }
.memorial-hero { padding:65px 24px 75px; background:linear-gradient(135deg,#30284f,#49406d); color:#fff; }
.memorial-hero-inner { display:grid; align-items:center; grid-template-columns:260px minmax(0,1fr); gap:55px; max-width:1050px; margin:auto; }
.memorial-portrait { overflow:hidden; width:260px; aspect-ratio:4/5; border:9px solid rgba(255,255,255,.15); border-radius:130px 130px 24px 24px; background:#e8e3ff; box-shadow:0 25px 65px rgba(0,0,0,.2); }
.memorial-portrait img { width:100%; height:100%; object-fit:cover; }
.memorial-portrait.is-placeholder { display:grid; place-items:center; color:#50449a; font:800 90px "Manrope",sans-serif; }
.memorial-hero p { color:#c8c1f2; font-size:10px; font-weight:800; letter-spacing:2px; }
.memorial-hero h1 { margin:9px 0; font:800 clamp(48px,7vw,86px)/.95 "Manrope",sans-serif; letter-spacing:-4px; }
.memorial-hero h2 { margin:0; color:#d9d5ec; font-size:16px; font-weight:500; }
.memorial-hero blockquote { max-width:530px; margin:32px 0 0; color:#e8e5f3; font:italic 20px/1.5 Georgia,serif; }
.memorial-content { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(280px,.75fr); gap:55px; max-width:1050px; margin:auto; padding:80px 24px; }
.memorial-obituary h2,.memorial-gallery h2,.memorial-section-head h2,.memorial-share-copy h2 { margin:7px 0 20px; font:800 clamp(32px,5vw,48px)/1.05 "Manrope",sans-serif; letter-spacing:-2px; }
.memorial-obituary>div { color:#4e5650; font:17px/1.85 Georgia,serif; }
.memorial-service-card { align-self:start; padding:27px; border-radius:22px; background:#ebe7ff; }
.memorial-service-card small { color:#6657db; font-size:9px; font-weight:850; letter-spacing:1.3px; }
.memorial-service-card h2 { margin:10px 0 22px; font:750 25px/1.1 "Manrope",sans-serif; }
.memorial-service-card strong,.memorial-service-card span { display:block; }
.memorial-service-card span,.memorial-service-card p { color:#656173; font-size:13px; line-height:1.55; }
.memorial-gallery,.memorial-stories { max-width:1100px; margin:auto; padding:20px 24px 80px; }
.memorial-gallery>div:last-child { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.memorial-gallery img { width:100%; aspect-ratio:1; border-radius:17px; object-fit:cover; }
.memorial-section-head { display:flex; align-items:end; justify-content:space-between; gap:20px; }
.memorial-section-head a { margin-bottom:22px; padding:12px 16px; border-radius:12px; background:var(--plum); color:#fff; font-size:12px; font-weight:800; }
.memorial-story-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.memorial-story-grid article,.memorial-story-empty { padding:25px; border:1px solid var(--line); border-radius:20px; background:#fff; }
.memorial-story-grid blockquote { margin:0 0 20px; color:#3f4741; font:17px/1.65 Georgia,serif; }
.memorial-story-grid footer strong,.memorial-story-grid footer span { display:block; }
.memorial-story-grid footer span,.memorial-story-empty span { color:var(--muted); font-size:12px; }
.memorial-story-images { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:18px; }
.memorial-story-images img { width:100%; aspect-ratio:1; border-radius:9px; object-fit:cover; }
.memorial-story-empty { display:flex; flex-direction:column; gap:5px; }
.memorial-share-section { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:55px; padding:75px max(24px,calc((100% - 1050px)/2)); background:#ece9f8; }
.memorial-share-copy>p:last-child { color:#656173; line-height:1.65; }
.memorial-story-form { padding:25px; border-radius:22px; background:#fff; }
.memorial-story-form>button { width:100%; margin-top:18px; }
.memorial-story-form>small { display:block; margin-top:9px; color:var(--muted); text-align:center; font-size:10px; }
.memorial-footer { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:30px max(24px,calc((100% - 1100px)/2)); background:#201c36; color:#fff; }
.memorial-footer>span,.memorial-footer>a:last-child { color:#c9c4de; font-size:11px; }
@media (max-width:720px) {
    .memorial-header { height:64px; padding:0 16px; }
    .memorial-form-shell { padding:28px 14px 70px; }
    .memorial-form-intro { margin-bottom:27px; padding:0 4px; }
    .memorial-form-intro h1 { font-size:43px; letter-spacing:-2.6px; }
    .memorial-form-intro>span { font-size:14px; }
    .memorial-builder-form>section { padding:20px 16px; border-radius:19px; }
    .memorial-step h2 { font-size:19px; }
    .memorial-fields,.memorial-story-fields { grid-template-columns:1fr; gap:14px; }
    .memorial-fields .wide,.memorial-story-fields .wide { grid-column:auto; }
    .memorial-slug-field { display:block; padding-top:10px; }
    .memorial-slug-field b { display:block; }
    .memorial-submit-row { align-items:stretch; flex-direction:column; }
    .memorial-submit-row button { width:100%; }
    .memorial-confirm { padding:30px 18px; border-radius:23px; }
    .memorial-confirm>.memorial-brand { margin-bottom:34px; }
    .memorial-confirm>div:last-child { flex-direction:column; }
    .memorial-hero { padding:35px 18px 50px; }
    .memorial-hero-inner { grid-template-columns:1fr; gap:28px; text-align:center; }
    .memorial-portrait { width:180px; margin:auto; }
    .memorial-hero h1 { font-size:49px; letter-spacing:-2.8px; }
    .memorial-hero blockquote { margin:24px auto 0; font-size:17px; }
    .memorial-content { grid-template-columns:1fr; gap:32px; padding:55px 18px; }
    .memorial-obituary>div { font-size:16px; }
    .memorial-gallery,.memorial-stories { padding:0 18px 55px; }
    .memorial-gallery>div:last-child { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .memorial-section-head { align-items:flex-start; flex-direction:column; }
    .memorial-section-head a { margin:0 0 10px; }
    .memorial-story-grid { grid-template-columns:1fr; }
    .memorial-share-section { grid-template-columns:1fr; gap:25px; padding:55px 14px 75px; }
    .memorial-share-copy { padding:0 4px; }
    .memorial-story-form { padding:19px 15px; border-radius:18px; }
    .memorial-footer { align-items:flex-start; flex-direction:column; }
}
