/* A short, photo-led introduction to the groom's hometown. */
#invite .hometown-home { margin-top:18px; }
.hometown-entry { position:relative; display:grid; grid-template-columns:78px minmax(0,1fr) 22px; align-items:center; gap:15px; width:100%; min-height:106px; padding:12px 16px 12px 12px; border:1px solid #e5e5e4; border-radius:18px; background:#fff; color:#292735; text-align:left; overflow:hidden; transition:transform .2s; }
.hometown-entry-photo { display:block; width:78px; height:82px; overflow:hidden; border-radius:11px; background:#f4f3f1; }
.hometown-entry-photo img { display:block; width:100%; height:100%; object-fit:cover; }
.hometown-entry-copy { display:flex; flex-direction:column; gap:6px; min-width:0; }
.hometown-entry-copy small { color:#9d6254; font:10px/1.5 var(--sans); letter-spacing:.08em; }
.hometown-entry-copy strong { font:650 18px/1.5 var(--sans); }
.hometown-entry-copy>span { color:#75716f; font:11px/1.7 var(--sans); }
.hometown-entry-arrow { font:23px/1 var(--sans); color:#b52a3e; }
.hometown-entry:active { transform:scale(.985); }
.hometown-entry:focus-visible { outline:2px solid var(--red-ink); outline-offset:4px; }

#hometown-dialog { width:min(100%,620px); max-width:100%; height:100vh; height:100dvh; max-height:100vh; max-height:100dvh; margin:0 auto; padding:0; border:0; border-radius:0; background:#fffdfd; color:#302c30; overflow:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; scrollbar-width:thin; scrollbar-color:#dbbcc1 #fffdfd; }
#hometown-dialog:not([open]) { display:none; }
#hometown-dialog::backdrop { background:#24191dc2; }
#hometown-dialog[open] { animation:hometown-arrive .3s cubic-bezier(.2,.7,.2,1); }
#hometown-dialog.is-fallback-modal[open] { display:block; position:fixed; inset:0; z-index:200; box-shadow:0 0 0 100vmax #24191dc2; }
.hometown-toolbar { position:sticky; z-index:5; top:0; display:flex; align-items:center; justify-content:space-between; min-height:65px; gap:15px; padding:max(10px,env(safe-area-inset-top)) 22px 10px; background:#fffdfdf5; font:12px/1.5 var(--sans); color:#797079; }
.hometown-toolbar button { display:flex; align-items:center; gap:8px; min-height:44px; padding:0; color:#302c30; font:14px/1.5 var(--sans); }
.hometown-toolbar button>span { font:22px/1 var(--sans); }
.hometown-cover { position:relative; margin:0; background:#5b6b5c; isolation:isolate; }
.hometown-cover>img { display:block; width:100%; height:310px; object-fit:cover; }
.hometown-cover:after { content:''; position:absolute; inset:0; z-index:0; background:linear-gradient(180deg,#1623160a 25%,#162316ad); pointer-events:none; }
.hometown-cover-copy { position:absolute; z-index:1; left:25px; right:25px; bottom:27px; color:#fff; }
.hometown-cover-copy>span { font:11px/1.6 var(--sans); letter-spacing:.1em; }
.hometown-cover-copy h2 { margin:7px 0 9px; font:600 64px/1.2 var(--sans); letter-spacing:.06em; outline:none; }
.hometown-cover-copy p { margin:0; font:14px/1.8 var(--sans); }
.hometown-photo-credit { padding:7px 24px 0; text-align:right; color:#8c8087; font:9px/1.6 var(--sans); }
.hometown-photo-credit a { color:inherit; text-underline-offset:3px; }
.hometown-intro { padding:25px 25px 0; }
.hometown-intro>p { margin:0; font:15px/1.9 var(--sans); }
.hometown-intro>p+p { margin-top:10px; font-size:12px; color:#797079; }
.hometown-jump { display:flex; gap:24px; margin:22px 0 0; padding:0 0 17px; border-bottom:1px solid #eee4e6; }
.hometown-jump a { display:flex; align-items:center; gap:6px; min-height:36px; color:#a8344b; font:13px/1.5 var(--sans); text-decoration:none; }
.hometown-jump a>span { font-size:17px; }
.hometown-section { margin:0; padding:32px 25px 0; scroll-margin-top:76px; }
.hometown-section-kicker { color:#a75962; font:10px/1.5 var(--sans); letter-spacing:.1em; }
.hometown-section h3 { margin:7px 0 17px; font:650 24px/1.5 var(--sans); letter-spacing:-.03em; }
.hometown-history { display:grid; grid-template-columns:66px minmax(0,1fr); gap:16px; padding:19px 0; border-block:1px solid #eee4e6; }
.hometown-history-mark { display:flex; flex-direction:column; gap:5px; color:#a8344b; font:600 29px/1.1 Georgia,serif; }
.hometown-history-mark>small { font:11px/1.6 var(--sans); letter-spacing:.04em; }
.hometown-history p { margin:0; color:#61575d; font:13px/1.9 var(--sans); }
.hometown-history p+p { margin-top:10px; }
.hometown-places { display:flex; flex-direction:column; gap:26px; }
.hometown-place { margin:0; }
.hometown-place>figure { margin:0 0 16px; }
.hometown-place img { display:block; width:100%; aspect-ratio:1.7; object-fit:cover; border-radius:12px; background:#f3ecec; }
.hometown-place figcaption { margin:5px 0 0; text-align:right; color:#8c8087; font:9px/1.6 var(--sans); }
.hometown-place figcaption a { color:inherit; text-underline-offset:3px; }
.hometown-place-heading { display:flex; gap:12px; align-items:baseline; }
.hometown-place-heading>span { color:#b78991; font:italic 19px/1.3 Georgia,serif; }
.hometown-place h4 { margin:0; font:650 19px/1.5 var(--sans); }
.hometown-place p { margin:8px 0 0; font:13px/1.9 var(--sans); color:#61575d; }
.hometown-place .hometown-place-tip { color:#9d5867; font-size:11px; }
.hometown-place-link { display:inline-flex; align-items:center; min-height:40px; gap:8px; color:#a8344b; font:12px/1.5 var(--sans); text-decoration:none; }
.hometown-food-list { margin:0; }
.hometown-food-list>div { display:grid; grid-template-columns:65px minmax(0,1fr); gap:16px; padding:18px 0; border-bottom:1px solid #eee4e6; }
.hometown-food-list>div:first-child { padding-top:0; }
.hometown-food-list dt { color:#a8344b; font:650 17px/1.6 var(--sans); }
.hometown-food-list dd { margin:0; color:#61575d; font:13px/1.9 var(--sans); }
.hometown-plan { padding:19px 20px; border-radius:14px; background:#fff1f4; }
.hometown-plan h4 { margin:0 0 6px; font:650 15px/1.7 var(--sans); }
.hometown-plan p { margin:0; font:13px/1.9 var(--sans); color:#61575d; }
.hometown-plan p+h4 { margin-top:19px; }
.hometown-arrival { margin-top:18px; padding-left:12px; border-left:2px solid #d67d90; }
.hometown-arrival strong { font:650 14px/1.7 var(--sans); }
.hometown-arrival p { margin:6px 0 0; font:12px/1.9 var(--sans); color:#797079; }
.hometown-end { padding:30px 25px 0; }
.hometown-end>p { margin:0 0 18px; font:14px/1.9 var(--sans); }
.hometown-rsvp { display:flex; align-items:center; justify-content:space-between; gap:14px; min-height:52px; width:100%; padding:13px 16px; border:0; border-radius:12px; background:#f42c26; color:#fff; font:600 14px/1.6 var(--sans); }
.hometown-rsvp>span:last-child { font-size:21px; }
.hometown-home-back { display:block; min-height:44px; margin:12px auto 0; padding:0 10px; font:12px/1.7 var(--sans); color:#797079; text-decoration:underline; text-underline-offset:5px; }
.hometown-sources { padding:18px 25px max(30px,env(safe-area-inset-bottom)); color:#8c8087; font:10px/1.8 var(--sans); }
.hometown-sources summary { min-height:36px; padding-top:7px; cursor:pointer; }
.hometown-sources ul { margin:8px 0; padding-left:17px; }
.hometown-sources a { color:#8c6570; text-underline-offset:3px; }
.hometown-toolbar button:focus-visible,.hometown-jump a:focus-visible,.hometown-rsvp:focus-visible,.hometown-home-back:focus-visible { outline:2px solid var(--red-ink); outline-offset:4px; }
body.hometown-open .music-dock { visibility:hidden; pointer-events:none; }
body.hometown-open>:not(#hometown-dialog) { pointer-events:none; }
@keyframes hometown-arrive { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:none; } }
@media (hover:hover) and (pointer:fine) { .hometown-entry:hover { transform:translateY(-2px); } }
@media (max-width:360px) {
  .hometown-entry { grid-template-columns:64px minmax(0,1fr) 18px; gap:12px; padding-right:13px; }
  .hometown-entry-photo { width:64px; height:77px; }
  .hometown-entry-copy strong { font-size:16px; }
  .hometown-entry-copy>span { font-size:10px; }
  .hometown-cover>img { height:260px; }
  .hometown-cover-copy { left:21px; right:21px; }
  .hometown-cover-copy h2 { font-size:55px; }
  .hometown-toolbar { padding-left:20px; padding-right:20px; }
  .hometown-intro,.hometown-section,.hometown-end { padding-left:21px; padding-right:21px; }
  .hometown-intro>p { font-size:14px; }
  .hometown-jump { gap:18px; }
  .hometown-history { grid-template-columns:55px minmax(0,1fr); gap:12px; }
  .hometown-food-list>div { gap:12px; }
}
@media (prefers-reduced-motion:reduce) { #hometown-dialog[open] { animation:none; } .hometown-entry { transition:none; } }
