:root{--bg:#F4EFE6;--ink:#16130F;--mute:#7A7166;--card:#FFFDF8;--line:rgba(22,19,15,.1);--serif:"Fraunces",Georgia,serif;--sans:"Inter Tight",system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,monospace}
[data-theme=dark]{--bg:#0E0D0B;--ink:#F2ECE1;--mute:#8C8478;--card:#171512;--line:rgba(242,236,225,.1)}
*{box-sizing:border-box;margin:0}html{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;transition:background .4s,color .4s}
body{font-family:var(--sans);min-height:100vh}a{color:inherit;text-decoration:none}
.grain{position:fixed;inset:0;pointer-events:none;opacity:.06;z-index:9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.wrap{max-width:560px;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) 20px 40px}
.mono{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}
.topbar{display:flex;align-items:center;gap:12px;margin-bottom:44px}.topbar .mono{flex:1}
.mark{font-family:var(--serif);font-weight:700;font-size:15px;width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--ink);color:var(--bg);font-style:italic}
.kicker{margin-bottom:10px}
h1{font-family:var(--sans);font-weight:800;font-size:clamp(62px,18.5vw,104px);line-height:.9;letter-spacing:-.045em}
h1 span{display:block;overflow:hidden}h1 .dot{font-style:normal;color:#E8590C}
.l1,.l2{animation:rise 1s cubic-bezier(.2,.8,.2,1) both}.l2{animation-delay:.08s}
.bio{font-size:18px;line-height:1.45;margin:22px 0 46px;max-width:30ch;color:var(--ink);opacity:.85}
.sec{display:flex;gap:10px;align-items:center;margin-bottom:14px}.sec span{color:var(--ink)}.sec:after{content:"";flex:1;height:1px;background:var(--line)}
section{margin-bottom:44px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tile{--a:#888;position:relative;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:16px;min-height:168px;display:flex;flex-direction:column;
 transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s;animation:rise .8s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(.15s + var(--i)*.06s);isolation:isolate}
.tile:before{content:"";position:absolute;inset:auto -30% -60% auto;width:170px;height:170px;border-radius:50%;background:var(--a);opacity:.16;filter:blur(30px);z-index:-1;transition:opacity .4s,transform .6s}
.tile:hover,.tile:focus-visible{transform:translateY(-3px);box-shadow:0 18px 40px -18px var(--a)}.tile:hover:before{opacity:.32;transform:scale(1.25)}
.tile:active{transform:scale(.97)}
.tile.big{grid-column:span 2;min-height:150px}
.tile .ic{width:40px;height:40px;border-radius:12px;background:#fff;display:grid;place-items:center;box-shadow:0 0 0 1px var(--line);overflow:hidden}
.tile .ic img{width:26px;height:26px;object-fit:contain}
.tile .tag{position:absolute;top:16px;right:16px;font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--a);border:1px solid color-mix(in srgb,var(--a) 35%,transparent);padding:4px 8px;border-radius:99px}
.tile h3{font-family:var(--serif);font-weight:500;font-size:24px;letter-spacing:-.02em;margin-top:auto;padding-top:18px}
.tile p{font-size:13.5px;line-height:1.35;color:var(--mute);margin-top:4px}
.tile .arr{position:absolute;right:16px;bottom:16px;width:28px;height:28px;border-radius:50%;background:var(--a);color:#fff;display:grid;place-items:center;font-size:14px;transform:scale(.0);transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.tile:hover .arr,.tile:focus-visible .arr{transform:scale(1)}
.tile.big h3{font-size:32px}.tile.big p{max-width:26ch}
.social{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.social a{aspect-ratio:1;border-radius:18px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;transition:transform .25s,background .25s,color .25s}
.social a svg{width:22px;height:22px;fill:currentColor}.social a:hover{background:var(--ink);color:var(--bg);transform:rotate(-4deg) scale(1.04)}
.personal{display:flex;flex-direction:column;gap:4px;padding:18px 20px;border-radius:18px;border:1px solid var(--line);font-family:var(--serif);font-size:20px;font-style:italic;transition:background .25s}
.personal small{font-family:var(--sans);font-style:normal;font-size:13px;color:var(--mute)}.personal:hover{background:var(--card)}
.memorial{text-align:center;padding:30px 10px 10px;border-top:1px solid var(--line)}
.memorial .sprig{font-size:18px;color:var(--mute);opacity:.7}
.memorial a{display:block;margin-top:10px}.memorial h4{font-family:var(--serif);font-weight:400;font-style:italic;font-size:22px}
.memorial p{font-size:14px;color:var(--mute);margin:6px auto 0;max-width:30ch;line-height:1.5}
.memorial a:hover h4{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
footer{text-align:center;margin-top:36px}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.topbar{margin-bottom:22px}
.portrait{position:relative;margin:0 0 26px;border-radius:28px;overflow:hidden;aspect-ratio:600/550;max-height:340px;width:100%;box-shadow:0 30px 60px -30px rgba(0,0,0,.45);animation:rise 1s cubic-bezier(.2,.8,.2,1) both}
.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block;transform:scale(1.04);animation:settle 1.6s cubic-bezier(.2,.8,.2,1) both}
.portrait:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);background:linear-gradient(180deg,transparent 60%,rgba(0,0,0,.35))}
.portrait figcaption{position:absolute;left:16px;bottom:14px;z-index:1;color:#fff;opacity:.9}
@keyframes settle{from{transform:scale(1.12)}to{transform:scale(1.04)}}
.topbar{margin-bottom:16px}
.id{display:flex;align-items:center;gap:16px}
.portrait{flex:0 0 108px;width:108px;height:128px;max-height:none;aspect-ratio:auto;margin:0;border-radius:24px}
.portrait img{object-position:50% 25%}
.id .kicker{margin-bottom:6px}
h1{font-size:clamp(38px,11.4vw,58px);line-height:.92;letter-spacing:-.04em}
.bio{font-size:15.5px;margin:14px 0 26px;max-width:none}
section{margin-bottom:34px}
.tile .ic.ph img{width:100%;height:100%;object-fit:cover;object-position:50% 25%}
.tile h3{font-size:21px}
.tile h3{font-family:var(--sans);font-weight:700;font-size:19px;letter-spacing:-.025em;overflow-wrap:anywhere;line-height:1.1}
.bio{font-size:15px}
.memorial h4{font-family:var(--sans);font-style:normal;font-weight:600;font-size:19px;letter-spacing:-.02em}
.theme{position:relative;display:flex;align-items:center;width:62px;height:32px;padding:0;border-radius:99px;border:1px solid var(--line);background:color-mix(in srgb,var(--ink) 6%,var(--card));cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .3s}
.theme:hover{border-color:color-mix(in srgb,var(--ink) 22%,transparent)}.theme:focus-visible{outline:2px solid #E8590C;outline-offset:2px}
.theme .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.18),0 2px 6px rgba(0,0,0,.12);transition:transform .4s cubic-bezier(.3,1.3,.5,1)}
[data-theme=dark] .theme .knob{transform:translateX(30px)}
.theme .i{position:relative;z-index:1;width:14px;height:14px;margin:0 7px 0 8px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:color .3s,transform .4s}
.theme .moon{margin:0 0 0 auto;margin-right:8px;fill:currentColor;stroke:none}
.theme .sun{color:var(--bg)}.theme .moon{color:var(--mute)}
[data-theme=dark] .theme .sun{color:var(--mute)}[data-theme=dark] .theme .moon{color:var(--bg);transform:rotate(-15deg)}
.church{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:18px;border:1px solid var(--line);background:var(--card);transition:transform .25s,border-color .25s}
.church:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--ink) 22%,transparent)}
.cico{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,#3B82C4 14%,var(--card));color:#3B82C4}
.cico svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ctx{flex:1;display:flex;flex-direction:column;gap:3px}.ctx .mono{font-size:10px}.ctx b{font-weight:600;font-size:16px;letter-spacing:-.015em}
.carr{color:var(--mute);transition:transform .25s}.church:hover .carr{transform:translate(2px,-2px)}
