:root { --ink:#24332c; --soft-ink:#657069; --paper:#fbfaf6; --warm:#f0eadc; --line:#dcd5c5; --accent:#536c58; --accent-dark:#344a3b; --danger:#9b4138; --shadow:0 12px 35px rgba(49,53,38,.08); }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
body { margin:0; color:var(--ink); background:radial-gradient(circle at 50% -10%, #fff 0, var(--paper) 46%, var(--warm) 100%); font:16px/1.55 Georgia, "Times New Roman", serif; min-height:100vh; }
main { width:min(100% - 32px, 840px); margin:auto; }
.hero { padding:82px 18px 62px; text-align:center; }
.eyebrow { margin:0 0 12px; color:var(--accent); font:600 12px/1.2 system-ui,sans-serif; letter-spacing:.18em; text-transform:uppercase; }
h1,h2,p { margin-top:0; } h1 { font-size:clamp(3rem,9vw,5.2rem); font-weight:400; letter-spacing:-.04em; line-height:1; margin-bottom:17px; } h2 { font-size:1.65rem; font-weight:400; margin-bottom:5px; }
.date { color:var(--soft-ink); font-size:1.05rem; min-height:1.5em; }.leaf { color:var(--accent); font-size:2rem; margin:18px 0 14px; }.intro { margin:0 auto; max-width:610px; font-size:1.18rem; }.card { background:rgba(255,255,255,.78); border:1px solid rgba(220,213,197,.9); border-radius:18px; box-shadow:var(--shadow); padding:clamp(24px,5vw,44px); }
.quiet,.help,.optional,.section-heading p { color:var(--soft-ink); font:14px/1.4 system-ui,sans-serif; }.quiet { margin-bottom:28px; }.optional { font-weight:400; }.help { margin:8px 0 0; display:block; }
label,.label { display:block; font:600 14px/1.3 system-ui,sans-serif; margin:0 0 20px; } input,textarea { display:block; width:100%; margin-top:8px; border:1px solid var(--line); border-radius:8px; padding:12px; color:var(--ink); background:#fffefb; font:16px/1.5 Georgia,serif; } textarea { resize:vertical; min-height:150px; } input:focus,textarea:focus,button:focus-visible { outline:3px solid rgba(83,108,88,.28); outline-offset:2px; } input[type=file] { padding:9px; font:14px/1.4 system-ui,sans-serif; }
.media-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; }.recording { margin-bottom:20px; }.recording .label { margin-bottom:8px; } audio { width:100%; margin-top:12px; }.primary,.secondary,.text-button { cursor:pointer; border-radius:8px; font:600 14px/1 system-ui,sans-serif; transition:transform .15s,background .15s; }.primary { border:0; background:var(--accent); color:#fff; padding:14px 20px; }.primary:hover { background:var(--accent-dark); transform:translateY(-1px); }.primary:disabled,.secondary:disabled { opacity:.6; cursor:wait; }.secondary { border:1px solid var(--accent); padding:11px 14px; color:var(--accent-dark); background:transparent; }.text-button { display:block; border:0; padding:8px 0 0; color:var(--accent-dark); background:transparent; text-decoration:underline; }.error { color:var(--danger); font:14px/1.4 system-ui,sans-serif; }.thank-you { padding:18px 0; }.memories { padding:78px 0; }.section-heading { text-align:center; margin-bottom:30px; }.section-heading p { margin:0; }.tribute-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:18px; }.tribute { overflow:hidden; background:rgba(255,255,255,.72); border:1px solid var(--line); border-radius:12px; }.tribute-body { padding:21px; }.tribute-name { margin:0 0 9px; font-size:1.1rem; }.tribute-message { margin:0; white-space:pre-wrap; }.tribute time { display:block; color:var(--soft-ink); font:12px system-ui,sans-serif; margin-top:16px; }.tribute img { display:block; width:100%; max-height:360px; object-fit:cover; }.tribute audio { margin:15px 0 0; } .empty { color:var(--soft-ink); text-align:center; grid-column:1/-1; font-style:italic; } footer { padding:0 0 30px; text-align:center; color:var(--soft-ink); font-size:13px; } footer a { color:var(--soft-ink); text-decoration:none; }
@media (max-width:600px) { .hero { padding:60px 8px 45px; }.media-grid { grid-template-columns:1fr; gap:0; } }
