:root{
  --bg:#fffdfa;--card:#ffffff;--ink:#2e2a25;--sub:#5e584e;--accent:#b0825a;--accent-text:#8a5f36;--sage:#7fa08a;--blush:#fdeeea;--line:#f0e6dc;
  --serif:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
  --en:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
:root{color-scheme:light}
html{scroll-padding-top:env(safe-area-inset-top,0px);scroll-behavior:smooth}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--serif);font-weight:500;line-height:1.9;font-size:18px;-webkit-text-size-adjust:100%}
section{max-width:640px;margin:0 auto;padding:72px 24px;text-align:center}
h2{font-family:var(--en);font-weight:600;font-size:34px;letter-spacing:.2em;margin:0 0 4px;color:var(--accent-text)}
.jp{font-size:14px;letter-spacing:.3em;color:var(--sub);margin:0 0 36px}
.orn{width:48px;height:1px;background:var(--accent);margin:0 auto 40px;position:relative}
.orn::after{content:"";position:absolute;left:50%;top:-3px;width:7px;height:7px;background:var(--accent);transform:translateX(-50%) rotate(45deg)}
.hero{min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px 24px;
  background:radial-gradient(ellipse at 20% 0%,var(--blush),transparent 60%),radial-gradient(ellipse at 90% 100%,color-mix(in srgb,var(--sage) 16%,transparent),transparent 55%)}
.frame{border:1px solid var(--accent);outline:1px solid var(--line);outline-offset:8px;background:rgba(255,255,255,.7);padding:56px 28px;width:100%;max-width:480px;margin:0 auto}
.arch{display:block;width:400px;max-width:70%;aspect-ratio:400/520;object-fit:cover;margin:0 auto 32px;border-radius:999px 999px 0 0}
.photo{max-width:640px;margin:0 auto;padding:0 24px}
.photo img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;padding:8px;background:var(--card);border:1px solid var(--line);box-shadow:0 6px 24px rgba(176,130,90,.14)}
.photo figcaption{font-family:var(--en);font-weight:600;letter-spacing:.3em;font-size:15px;color:var(--sub);margin-top:12px;text-align:center}
.lead{font-family:var(--en);font-weight:600;letter-spacing:.35em;font-size:15px;color:var(--sub);text-transform:uppercase;margin:0 0 28px}
.names{font-family:var(--en);font-size:clamp(38px,11vw,56px);line-height:1.2;font-weight:600;margin:0;white-space:nowrap}
.names span{display:inline-block;font-size:.6em;font-style:italic;color:var(--accent);margin:0 .35em}
.date{font-family:var(--en);font-weight:600;font-size:24px;letter-spacing:.2em;margin:32px 0 4px}
.place{font-size:15px;letter-spacing:.1em;text-wrap:balance;word-break:auto-phrase;color:var(--sub);margin:0}
.msg p{margin:0 0 1.6em}
.sign{color:var(--sub);font-size:16px}
dl{display:grid;grid-template-columns:90px 1fr;gap:0;text-align:left;margin:0;border-top:1px solid var(--line)}
dt,dd{margin:0;padding:16px 8px;border-bottom:1px solid var(--line)}
dt{font-size:15px;letter-spacing:.2em;font-weight:600;color:var(--accent-text)}
.btn{display:inline-block;margin-top:24px;padding:12px 32px;border:1px solid var(--accent-text);color:var(--accent-text);text-decoration:none;font-weight:600;font-size:16px;letter-spacing:.2em;background:transparent;font-family:var(--serif);cursor:pointer}
.btn:hover{background:var(--accent-text);color:#fff}
.tl{list-style:none;margin:0;padding:0;text-align:left}
.tl li{display:grid;grid-template-columns:84px 1fr;padding:12px 0;border-bottom:1px dashed var(--line)}
.tl time{font-family:var(--en);font-weight:600;font-size:22px;color:var(--accent-text)}
.rsvp{background:var(--blush);max-width:none}
.rsvp>div{max-width:560px;margin:0 auto}
form{text-align:left;margin-top:8px}
label,.lbl{display:block;font-size:15px;letter-spacing:.15em;color:var(--sub);margin:24px 0 8px}
input[type=text],select,textarea{width:100%;padding:12px;border:1px solid #d9cbbb;background:var(--bg);color:var(--ink);font:inherit;border-radius:2px}
textarea{min-height:96px;resize:vertical}
::placeholder{color:var(--sub);opacity:.75}
.radios{display:flex;gap:12px}
.radios label{flex:1;margin:0;background:var(--bg);border:1px solid var(--accent);padding:16px 12px;font-size:18px;font-weight:600;text-align:center;cursor:pointer;color:var(--ink);letter-spacing:.1em}
.radios input{width:20px;height:20px;margin:0 8px 0 0;vertical-align:-4px;accent-color:var(--accent-text)}
.radios label:has(input:checked){background:var(--accent-text);border-color:var(--accent-text);color:#fff}
.radios label:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}
.req{margin-left:6px;color:#b5483a;font-weight:600}
.note{font-size:14px;color:var(--sub);margin-top:16px;text-align:center}
#done{display:none;color:var(--sage);margin-top:20px;text-align:center}
footer{padding:48px 24px 64px;text-align:center;font-family:var(--en);font-weight:600;letter-spacing:.3em;color:var(--sub);font-size:15px}

.btn.primary{background:var(--accent-text);color:#fff;padding:16px 44px;font-size:18px}
.btn.primary:hover{opacity:.85}
.cta{max-width:none;background:var(--blush)}
.subhead{max-width:640px;margin:0 auto;padding:32px 24px 0;text-align:left}
.back{color:var(--accent-text);text-decoration:none;font-size:15px;letter-spacing:.1em;font-weight:600}
.back:hover{text-decoration:underline}
