:root {
  --site-width: 1280px;
  --site-gutter: clamp(24px, 5.6vw, 88px);
  --site-body: 'Huninn', 'Noto Sans TC', sans-serif;
  --site-serif: 'Instrument Serif', 'Huninn', Georgia, serif;
  --site-ease: cubic-bezier(.22, 1, .36, 1);
}
html { scroll-padding-top: 100px; }
body.paper-theme { font-family: var(--site-body); -webkit-font-smoothing: antialiased; }
body.paper-theme :is(button,input,textarea,select) { font-family: var(--site-body); }
body.paper-theme :is(h1,h2,h3,h4) { font-synthesis: none; }
body.paper-theme :is(a,button,input,textarea,select,summary):focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 5px; }
body.paper-theme .opening-header,
body.paper-theme .opening-header.header-plain {
  height: 80px;
  padding-inline: var(--site-gutter);
  border-bottom-color: rgb(var(--ui-border-rgb) / .7);
  background: var(--ui-surface);
}
body.paper-theme .opening-header .monogram { gap: 4px; min-width: 76px; }
body.paper-theme .monogram i { font: italic 26px/1 var(--site-serif); }
body.paper-theme .desktop-nav { gap: clamp(16px, 1.8vw, 28px); }
body.paper-theme .desktop-nav :is(a,button,summary) { position: relative; font: 400 14px/1.5 var(--site-body); letter-spacing: 0; }
body.paper-theme .desktop-nav > a::after { content: ''; position: absolute; inset: auto 0 4px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform 300ms var(--site-ease); }
body.paper-theme .desktop-nav > a:hover::after,body.paper-theme .desktop-nav > a[aria-current]::after { transform: scaleX(1); }
body.paper-theme .desktop-nav a[aria-current] { text-decoration: none; }
body.paper-theme .language-toggle,body.paper-theme.admin-page .language-toggle { flex-basis: 44px; width: 44px; height: 44px; min-height: 44px; padding: 0; border: 5px solid transparent; background: var(--ui-blue); background-clip: padding-box; color: var(--ui-text); font: 400 11px/1 var(--site-body); letter-spacing: .04em; }
body.paper-theme .site-menu { background: var(--ui-surface); }
body.paper-theme .site-menu::backdrop { background: var(--ui-surface); }
body.paper-theme .site-menu .menu-links :is(a,button) { font-family: var(--site-body); }
body.paper-theme .site-menu[open] .menu-links > * { animation: island-menu-enter 550ms var(--site-ease) both; animation-delay: calc(var(--menu-order, 0) * 35ms); }
@keyframes island-menu-enter { from { opacity: 0; transform: translateY(12px); } }

body.paper-theme .paper-button,
body.paper-theme :is(.community-primary,.community-outline,.game-button) { border-radius: 5px; box-shadow: none; font-family: var(--site-body); font-weight: 400; transition: background-color 240ms var(--site-ease), border-color 240ms var(--site-ease), color 240ms var(--site-ease), box-shadow 240ms var(--site-ease); }
body.paper-theme .paper-button-primary,
body.paper-theme .song-card .paper-button-primary,
body.paper-theme :is(.community-primary,.game-button-primary) { border-color: var(--ui-accent); background: var(--ui-accent); color: #fff; }
body.paper-theme .paper-button-primary:hover:not(:disabled),
body.paper-theme .song-card .paper-button-primary:hover:not(:disabled),
body.paper-theme :is(.community-primary,.game-button-primary):hover:not(:disabled) { border-color: var(--ui-text); background: var(--ui-text); color: #fff; box-shadow: none; }
body.paper-theme .song-card .song-search-line [data-search] { border-color: var(--ui-accent); background: var(--ui-accent); color: #fff; }
body.paper-theme .song-card .song-search-line [data-search]:hover:not(:disabled) { border-color: var(--ui-text); background: var(--ui-text); color: #fff; }
body.paper-theme :is(.song-search-line,.trip-place-search > div,.community-search,.chat-search-label) { border-color: var(--ui-border-strong); border-radius: 6px; box-shadow: 0 4px 20px rgb(var(--ui-text-rgb) / .025); }
body.paper-theme :is(.song-search-line,.trip-place-search > div,.community-search,.chat-search-label):hover { border-color: var(--ui-accent-border); box-shadow: 0 6px 24px rgb(var(--ui-text-rgb) / .04); }
body.paper-theme :is(.song-search-line,.trip-place-search > div,.community-search,.chat-search-label):focus-within { border-color: var(--ui-accent); box-shadow: 0 0 0 3px rgb(var(--ui-accent-rgb) / .08); }
body.paper-theme .section-kicker,body.paper-theme .community-eyebrow { font: 400 12px/1.6 var(--site-body); letter-spacing: .08em; }

.home-chapters { position: fixed; top: 50%; right: 20px; z-index: 5; display: grid; gap: 8px; transform: translateY(-50%); }
.home-chapters a { display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-width: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; transform: none; color: var(--ui-muted); font: 400 10px/1 var(--site-body); text-decoration: none; font-variant-numeric: tabular-nums; }
.home-chapters a:is(:hover,:active) { background: transparent; box-shadow: none; transform: none; }
.home-chapters a::after { content: ''; width: 10px; height: 1px; background: var(--ui-border-strong); transition: width 300ms var(--site-ease), background-color 300ms var(--site-ease); }
.home-chapters a:is(:hover,[aria-current=location]) { color: var(--ui-text); }
.home-chapters a:is(:hover,[aria-current=location])::after { width: 22px; background: var(--ui-accent); }
body.paper-theme.home-page .opening {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 100svh;
  margin: 0;
  padding: 128px var(--site-gutter) 100px;
  background: var(--ui-surface);
}
body.paper-theme.home-page .opening-content { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: center; gap: clamp(36px, 5vw, 80px); width: min(100%, var(--site-width)); min-height: 0; margin: 0 auto; padding: 0; }
body.paper-theme.home-page .opening-copy { position: relative; z-index: 1; min-width: 0; padding: 0; text-align: left; animation: none; }
body.paper-theme.home-page .opening-recipient { margin: 0 0 28px; color: var(--ui-muted); font: 400 clamp(18px, 1.7vw, 23px)/1.6 var(--site-body); letter-spacing: .015em; animation: none; }
body.paper-theme.home-page #names { display: flex; align-items: baseline; gap: .035em; margin: 0; color: var(--ui-text); font: 400 clamp(68px, 8.1vw, 128px)/1.2 var(--site-body); letter-spacing: -.075em; white-space: nowrap; }
body.paper-theme.home-page #names .name-letter { display: inline-block; animation: none; }
body.paper-theme.home-page #names i { margin: 0 .1em 0 .15em; color: var(--ui-accent); font: italic .7em/1 var(--site-serif); letter-spacing: -.04em; }
body.paper-theme.home-page .opening-announcement { margin: 24px 0 0; color: var(--ui-text); font: 400 clamp(21px, 2.3vw, 32px)/1.6 var(--site-body); letter-spacing: .025em; animation: none; }
body.paper-theme.home-page .opening-english { display: block; margin: 12px 0 0; color: var(--ui-muted); font: 400 clamp(22px, 2.1vw, 30px)/1.35 var(--site-serif); letter-spacing: .015em; animation: none; }
body.paper-theme.home-page .opening-english .name-readable { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
body.paper-theme.home-page .opening-english .name-visual { display: block; animation: none; color: inherit; }
body.paper-theme.home-page .opening-link { display: inline-flex; align-items: center; justify-content: space-between; gap: 28px; min-height: 50px; margin: 38px 0 0; padding: 0 0 8px; border: 0; border-bottom: 1px solid var(--ui-accent-border); background: transparent; color: var(--ui-text); font: 400 15px/1.6 var(--site-body); text-decoration: none; animation: none; }
body.paper-theme.home-page .opening-link > span { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--ui-blue); font: 400 17px/1 var(--site-body); animation: none; transition: transform 300ms var(--site-ease), background-color 300ms var(--site-ease); }
body.paper-theme.home-page .opening-link:hover > span { background: var(--ui-selected); transform: translateY(3px); }
body.paper-theme.home-page .opening-portrait { position: relative; width: min(100%, 420px, max(270px, calc((100svh - 240px) * .75))); max-width: none; height: auto; max-height: none; aspect-ratio: 3 / 4; margin: 0 0 0 auto; overflow: hidden; border: 0; border-radius: 240px 240px 8px 8px; background: var(--ui-blue); box-shadow: none; transform: none; animation: none; mask-image: none; -webkit-mask-image: none; will-change: auto; }
body.paper-theme.home-page #names i.name-letter { top: 0; padding: 0; font-style: italic; }
body.paper-theme.home-page .opening-portrait picture { display: block; width: 100%; height: 100%; }
body.paper-theme.home-page .opening-portrait :is(img.opening-photo,.opening-motion) { width: 100%; height: 100%; object-fit: contain; object-position: bottom center; filter: none; mix-blend-mode: normal; mask-image: none; -webkit-mask-image: none; }
body.paper-theme.home-page .opening-portrait .opening-motion { position: absolute; inset: 0; transform: none; }
.opening-footer { position: absolute; right: var(--site-gutter); bottom: 28px; left: var(--site-gutter); display: flex; align-items: center; justify-content: space-between; gap: 20px; width: min(calc(100% - 2 * var(--site-gutter)), var(--site-width)); margin: auto; padding-top: 18px; border-top: 1px solid var(--ui-border); color: var(--ui-muted); }
.opening-footer p { margin: 0; font: 400 13px/1.6 var(--site-body); }
.opening-footer > span { font: italic 21px/1.2 var(--site-serif); letter-spacing: .02em; }

body.paper-theme.home-page .wedding-gather { display: grid; align-items: center; min-height: calc(100svh - 80px); padding: 32px var(--site-gutter); background: var(--ui-soft); scroll-margin-top: 80px; }
body.paper-theme.home-page .invitation-backdrop img { object-position: center 44%; opacity: .55; filter: saturate(.55); }
body.paper-theme.home-page .invitation-backdrop::after { background: rgb(var(--ui-surface-rgb) / .86); }
body.paper-theme.home-page .wedding-gather-stage { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr) minmax(0, .75fr); align-items: center; gap: 26px clamp(28px, 4vw, 64px); width: min(100%, var(--site-width)); }
.invitation-preface .section-kicker { margin: 0 0 24px; }
.invitation-preface h2 { margin: 0; font: 400 clamp(30px, 3vw, 44px)/1.5 var(--site-body); letter-spacing: -.02em; text-wrap: balance; }
.invitation-preface > p:last-child { max-width: 15em; margin: 24px 0 0; color: var(--ui-muted); font: 400 15px/1.9 var(--site-body); }
body.paper-theme.home-page .letter-card { width: min(100%, 416px, max(240px, calc((100svh - 216px) * .704762))); margin-inline: auto; border-color: rgb(var(--ui-border-rgb) / .8); box-shadow: 0 16px 48px rgb(var(--ui-text-rgb) / .07); }
body.paper-theme.home-page .invitation-tools { min-width: 0; margin: 0; text-align: left; }
body.paper-theme.home-page .invitation-keepsake { margin-bottom: 24px; font: 400 19px/1.6 var(--site-body); }
body.paper-theme.home-page .invitation-actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; }
body.paper-theme.home-page .invitation-action { justify-content: space-between; min-height: 50px; padding: 12px 0; border: 0; border-bottom: 1px solid var(--ui-border-strong); border-radius: 0; background: transparent; color: var(--ui-text); box-shadow: none; text-align: left; font-size: 14px; }
body.paper-theme.home-page .invitation-action::after { content: '+'; color: var(--ui-accent); font: 400 19px/1 var(--site-body); transition: transform 300ms var(--site-ease); }
body.paper-theme.home-page .invitation-action:hover { background: transparent; box-shadow: none; border-color: var(--ui-accent); }
body.paper-theme.home-page .invitation-action:hover::after { transform: rotate(90deg); }
body.paper-theme.home-page .invitation-export-status:empty { display: none; }
body.paper-theme.home-page .invitation-next { grid-column: 1 / -1; min-height: 44px; margin: 0 auto; padding: 4px 14px; font-size: 13px; }
body.paper-theme.home-page #home-assistant-stage > .home-assistant { min-height: calc(100svh - 80px); padding: 80px var(--site-gutter); background: var(--ui-surface); }
body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-inner { width: min(100%, 760px); }
body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-heading .section-kicker { margin: 0 0 22px; }
body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-heading h2 { font: 400 clamp(34px, 4.4vw, 60px)/1.4 var(--site-body); letter-spacing: -.025em; }
body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-heading > p:not(.section-kicker) { font-size: 16px; }
body.paper-theme.home-page #home-assistant-stage > .home-assistant #place-search-form { min-height: 76px; padding: 14px 16px 14px 24px; border-color: var(--ui-border-strong); border-radius: 8px; box-shadow: 0 8px 30px rgb(var(--ui-text-rgb) / .035); }
body.paper-theme.home-page #home-assistant-stage > .home-assistant #place-search-form:focus-within { border-color: var(--ui-accent); box-shadow: 0 0 0 3px rgb(var(--ui-accent-rgb) / .07); }
body.paper-theme.home-page .assistant-prompts .paper-button { min-height: 44px; border-color: transparent; background: var(--ui-soft); font-size: 13px; }
body.paper-theme.home-page #home-assistant-stage > .home-assistant.has-conversation { min-height: 0; padding-block: 24px; }
body.paper-theme.home-page #home-assistant-stage > .home-assistant.has-conversation .home-assistant-heading h2 { font-size: clamp(24px, 3vw, 32px); }
body.paper-theme.home-page #home-assistant-stage > .home-assistant.has-conversation .section-kicker { display: none; }

body.paper-theme.home-page :is(.schedule,.countdown-section,.page,.songs-section) { width: min(var(--site-width), calc(100% - 2 * var(--site-gutter))); max-width: var(--site-width); }
body.paper-theme.home-page .schedule { display: grid; grid-template-columns: minmax(0, .75fr) minmax(0, 1.4fr); align-items: start; gap: clamp(40px, 7vw, 112px); margin-inline: auto; padding: 100px 0; border-top: 1px solid var(--ui-border); }
body.paper-theme.home-page .schedule h2 { position: sticky; top: 120px; margin: 0; font: 400 clamp(36px, 4vw, 54px)/1.5 var(--site-body); letter-spacing: -.025em; }
body.paper-theme.home-page .wedding-timeline { display: block; margin: 0; padding: 0; border: 0; list-style: none; }
body.paper-theme.home-page .wedding-timeline::before { display: none; }
body.paper-theme.home-page .wedding-timeline > li::after { display: none; }
body.paper-theme.home-page .wedding-timeline > li { display: block; min-height: 0; margin: 0; padding: 25px 0; border: 0; border-top: 1px solid var(--ui-border); background: transparent; box-shadow: none; }
body.paper-theme.home-page .wedding-timeline > li:first-child { padding-top: 0; border-top: 0; }
body.paper-theme.home-page .wedding-timeline :is(.timeline-stem,.timeline-dot) { display: none; }
body.paper-theme.home-page .timeline-caption { display: grid; opacity: 1; grid-template-columns: 120px minmax(0, 1fr); gap: 3px 20px; margin: 0; padding: 0; transform: none; text-align: left; }
body.paper-theme.home-page .timeline-caption .timeline-time { grid-column: 1; grid-row: 1 / 3; align-self: start; padding-top: 3px; color: var(--ui-accent); font: 400 15px/1.8 var(--site-body); }
body.paper-theme.home-page .timeline-caption h3 { grid-column: 2; margin: 0; font: 400 25px/1.5 var(--site-body); }
body.paper-theme.home-page .timeline-caption p { grid-column: 2; max-width: none; margin: 0; color: var(--ui-muted); font: 400 14px/1.8 var(--site-body); }
body.paper-theme.home-page .countdown-section { display: grid; grid-template-columns: 1.35fr 1fr; align-items: center; gap: 64px; padding: 56px 0 76px; border-top: 0; border-bottom: 1px solid var(--ui-border); }
body.paper-theme.home-page .countdown { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
body.paper-theme.home-page .countdown > div { display: flex; flex-direction: column; gap: 7px; align-items: flex-start; padding: 0; }
body.paper-theme.home-page .countdown [data-countdown] { min-width: 0; font: 400 clamp(44px, 5.8vw, 80px)/1 var(--site-serif); letter-spacing: -.035em; }
body.paper-theme.home-page .countdown small { color: var(--ui-muted); font: 400 13px/1.6 var(--site-body); }
body.paper-theme.home-page .countdown-copy p { font: 400 17px/1.9 var(--site-body); }
body.paper-theme.home-page .dress-code { display: grid; grid-template-columns: minmax(0, .75fr) minmax(0, 1.4fr); align-items: center; gap: clamp(40px, 7vw, 112px); padding: 100px 0; border: 0; }
body.paper-theme.home-page .dress-code h3 { font: 400 clamp(34px, 4vw, 52px)/1.5 var(--site-body); letter-spacing: -.025em; }
body.paper-theme.home-page .dress-code-colors { margin-top: 32px; gap: 28px; }
body.paper-theme.home-page .dress-code-colors li > span { width: 48px; height: 48px; border-radius: 50%; }
body.paper-theme.home-page .dress-code-photo { margin: 0; }
body.paper-theme.home-page .dress-code-photo picture { display: block; border-radius: 4px; }
body.paper-theme.home-page .dress-code-photo img { display: block; width: 100%; aspect-ratio: 1672 / 941; object-fit: contain; }
body.paper-theme.home-page .dress-code-photo figcaption { font-size: 13px; }
body.paper-theme.home-page .page .songs-section { width: 100%; }
body.paper-theme.home-page .songs-section { margin: 0 auto; padding: 0 0 100px; }
body.paper-theme.home-page .songs-section-frame { padding: clamp(28px, 4vw, 56px); border: 1px solid var(--ui-border); border-radius: 8px; background: #fff; }
body.paper-theme.home-page .songs-section-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 32px; }
body.paper-theme.home-page .songs-section-intro h2 { font: 400 clamp(32px, 3.6vw, 48px)/1.5 var(--site-body); letter-spacing: -.025em; }
body.paper-theme.home-page .songs-section-intro > p { max-width: 20em; font: 400 15px/1.9 var(--site-body); }
body.paper-theme.home-page .song-tabs { gap: 32px; margin-top: 32px; }
body.paper-theme.home-page .song-tabs button { min-height: 56px; font: 400 16px/1.6 var(--site-body); }
body.paper-theme.home-page .songs-grid .songs-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: 48px; }
body.paper-theme.home-page .songs-grid .songs-invitation { min-width: 0; min-height: 260px; }
body.paper-theme.home-page .songs-grid .songs-invitation > h2 { min-height: 3.3em; font: 400 clamp(24px, 2.5vw, 32px)/1.65 var(--site-body); }
body.paper-theme.home-page .songs-grid .songs-collection { min-width: 0; margin: 0; padding: 0 0 0 36px; border-top: 0; border-left: 1px solid var(--ui-border); }
body.paper-theme.home-page .songs-grid .song-list { max-height: 320px; }
body.paper-theme .site-footer { width: min(var(--site-width), calc(100% - 2 * var(--site-gutter))); padding: 48px 0 64px; gap: 32px; background: var(--ui-surface); }
body.paper-theme .site-footer .footer-signature { font: 400 clamp(24px, 3vw, 38px)/1.5 var(--site-body); letter-spacing: -.04em; }
body.paper-theme .site-footer .footer-copyright { font: 400 12px/1.6 var(--site-body); }
body.paper-theme .site-footer .footer-top { border: 1px solid var(--ui-border); border-radius: 50%; }

body.paper-theme :is(.travel-main,.community-main,.game-main) { width: min(var(--site-width), calc(100% - 2 * var(--site-gutter))); max-width: var(--site-width); margin-inline: auto; }
body.paper-theme :is(.travel-hero,.community-intro,.game-hero) { padding-top: 32px; padding-bottom: 40px; }
body.paper-theme :is(.travel-hero h1,.community-intro h1,.game-hero h1) { margin-top: 14px; color: var(--ui-text); font: 400 clamp(42px, 5.8vw, 76px)/1.3 var(--site-body); letter-spacing: -.045em; }
body.paper-theme :is(.travel-dates,.game-eyebrow) { color: var(--ui-accent); font-family: var(--site-body); letter-spacing: .06em; }
body.paper-theme .travel-page-nav { gap: 28px; }
body.paper-theme .travel-page-nav a { min-height: 44px; padding: 10px 0; font: 400 15px/1.6 var(--site-body); }
body.paper-theme .travel-fold > summary { padding-block: 24px; font-family: var(--site-body); }
body.paper-theme .trip-view-tabs button { min-height: 50px; padding: 10px 16px; border-radius: 4px; font: 400 14px/1.6 var(--site-body); }
body.paper-theme .trip-view-tabs button[aria-selected=true] { background: var(--ui-blue); color: var(--ui-text); }
body.paper-theme .trip-day-button { border-radius: 5px; }
body.paper-theme .trip-map-pane { overflow: hidden; border: 1px solid var(--ui-border); border-radius: 8px; background: #fff; }
body.paper-theme .trip-map-toolbar { padding: 12px 16px; }
body.paper-theme .trip-map-caption,body.paper-theme .trip-route-links { padding-inline: 16px; }
body.paper-theme :is(.trip-dialog,.community-dialog,.account-panel) { border-color: var(--ui-border-strong); border-radius: 10px; box-shadow: 0 24px 80px rgb(var(--ui-text-rgb) / .1); }
body.paper-theme :is(.trip-calendar-event,.personal-event-card) { box-shadow: none; }
body.paper-theme .personal-event-card > span { line-height: 1.4; }
body.paper-theme .community-tabs { background: var(--ui-surface); }
body.paper-theme .community-tabs button { min-height: 52px; padding-inline: 2px; font: 400 17px/1.6 var(--site-body); }
body.paper-theme .community-person { border-color: var(--ui-border); border-radius: 8px; background: #fff; box-shadow: none; }
body.paper-theme .community-person-name { font-family: var(--site-body); }
body.paper-theme .community-photo { overflow: hidden; border-radius: 5px; }
body.paper-theme .game-hero-note { border-color: var(--ui-border); border-radius: 6px; background: var(--ui-soft); box-shadow: none; }
body.paper-theme .drawing-workshop { border-color: var(--ui-border); border-radius: 8px; background: #fff; box-shadow: none; }
body.paper-theme .assistant-launcher { box-shadow: 0 5px 20px rgb(var(--ui-text-rgb) / .09); }
body.paper-theme .gate-main { min-height: 100svh; padding: 80px 24px; background: var(--ui-surface); }
body.paper-theme .gate-main .gate-card { width: min(100%, 430px); padding: 0; text-align: left; }
.gate-brand { display: block; width: 44px; height: 44px; margin: 0 0 48px; }
.gate-heading { margin: 0 0 32px; font: 400 clamp(34px, 6vw, 46px)/1.5 var(--site-body); letter-spacing: -.04em; }
body.paper-theme .gate-main .gate-card .gate-label { color: var(--ui-muted); font: 400 14px/1.6 var(--site-body); }
body.paper-theme .gate-main .gate-card input:not([type=radio]) { min-height: 56px; font-family: var(--site-body); }
body.paper-theme .gate-main .gate-card button { justify-content: space-between; width: 100%; min-height: 52px; padding: 12px 18px; border: 1px solid var(--ui-accent); border-radius: 5px; background: var(--ui-accent); color: #fff; box-shadow: none; transform: none; font: 400 15px/1.6 var(--site-body); }
body.paper-theme .gate-main .gate-card button:hover { background: var(--ui-text); border-color: var(--ui-text); }

html.lenis,html.lenis body { height: auto; }
html.lenis.lenis-smooth { scroll-behavior: auto !important; }
html.lenis.lenis-stopped { overflow: hidden; }
html.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
html.lenis.lenis-scrolling iframe { pointer-events: none; }

html[lang=en] body.paper-theme.home-page #names { font-family: var(--site-body); }
html[lang=en] body.paper-theme :is(.invitation-preface h2,.home-assistant-heading h2,.schedule h2,.dress-code h3,.songs-section-intro h2,.travel-hero h1,.community-intro h1,.game-hero h1,.gate-heading) { font-family: var(--site-serif); letter-spacing: -.025em; }
html[lang=en] body.paper-theme.home-page .opening-announcement { max-width: 17em; font-family: var(--site-serif); font-size: clamp(26px, 3vw, 40px); }
html[lang=en] body.paper-theme .site-footer .footer-signature { font-family: var(--site-body); }

@media (min-width: 1600px) { .home-chapters { right: max(24px, calc((100vw - 1450px) / 2)); } }
@media (max-width: 1359px) { .home-chapters { display: none; } }
@media (max-width: 1100px) {
  body.paper-theme.home-page .wedding-gather-stage { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); column-gap: 40px; }
  .invitation-preface { grid-column: 1; grid-row: 1; align-self: end; }
  body.paper-theme.home-page .letter-card { grid-column: 2; grid-row: 1 / 3; }
  body.paper-theme.home-page .invitation-tools { grid-column: 1; grid-row: 2; align-self: start; }
  body.paper-theme.home-page .invitation-keepsake { display: none; }
  .invitation-preface > p:last-child { margin-top: 14px; }
  body.paper-theme.home-page .songs-section-intro { align-items: flex-start; flex-direction: column; gap: 8px; }
  body.paper-theme.home-page .songs-section-intro > p { max-width: none; }
}
@media (max-width: 760px) {
  :root { --site-gutter: 22px; }
  html { scroll-padding-top: 84px; }
  body.paper-theme .opening-header,body.paper-theme .opening-header.header-plain { height: calc(68px + env(safe-area-inset-top)); padding: env(safe-area-inset-top) var(--site-gutter) 0; }
  body.paper-theme .opening-header .monogram { min-width: 64px; }
  body.paper-theme.home-page .opening { padding: calc(98px + env(safe-area-inset-top)) var(--site-gutter) 82px; }
  body.paper-theme.home-page .opening-content { grid-template-columns: minmax(0, 1fr); gap: 28px; justify-items: center; }
  body.paper-theme.home-page .opening-copy { width: 100%; text-align: center; }
  body.paper-theme.home-page .opening-recipient { margin-bottom: 18px; font-size: 17px; }
  body.paper-theme.home-page #names { justify-content: center; font-size: clamp(46px, 12.4vw, 76px); }
  body.paper-theme.home-page .opening-announcement { margin-top: 12px; font-size: 20px; }
  body.paper-theme.home-page .opening-english { margin-top: 7px; font-size: 22px; }
  body.paper-theme.home-page .opening-link { margin-top: 20px; min-height: 44px; padding-bottom: 4px; font-size: 14px; }
  body.paper-theme.home-page .opening-portrait { width: min(56vw, 280px); min-width: 190px; margin: 0; }
  .opening-footer { bottom: 22px; padding-top: 14px; }
  .opening-footer p { font-size: 12px; }
  .opening-footer > span { font-size: 18px; }
  body.paper-theme.home-page .wedding-gather { padding: 24px var(--site-gutter) 28px; min-height: calc(100svh - 68px); scroll-margin-top: 68px; }
  body.paper-theme.home-page .wedding-gather-stage { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .invitation-preface { display: flex; align-items: center; justify-content: center; gap: 16px; grid-column: 1; grid-row: auto; }
  .invitation-preface .section-kicker { margin: 0; font-size: 11px; }
  .invitation-preface h2 { min-width: 0; font-size: clamp(21px, 5.8vw, 24px); }
  .invitation-preface h2 br { display: none; }
  .invitation-preface > p:last-child { display: none; }
  body.paper-theme.home-page .letter-card { grid-column: 1; grid-row: auto; width: min(100%, 350px, max(212px, calc((100svh - 338px) * .704762))); }
  body.paper-theme.home-page .invitation-tools { grid-column: 1; grid-row: auto; width: min(100%, 420px); margin: 0 auto; }
  body.paper-theme.home-page .invitation-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
  body.paper-theme.home-page #invitation-print { grid-column: auto; }
  body.paper-theme.home-page .invitation-action { min-height: 44px; padding-block: 9px; font-size: 13px; }
  body.paper-theme.home-page .invitation-next { margin-top: 0; }
  body.paper-theme.home-page #home-assistant-stage > .home-assistant { min-height: calc(100svh - 68px); padding: 60px var(--site-gutter); }
  body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-heading h2 { font-size: clamp(26px, 6.8vw, 32px); }
  body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-heading p { display: none; }
  body.paper-theme.home-page #home-assistant-stage > .home-assistant.has-conversation { padding-block: 16px; }
  body.paper-theme.home-page #home-assistant-stage > .home-assistant .home-assistant-heading > p:not(.section-kicker) { font-size: 14px; }
  body.paper-theme.home-page #home-assistant-stage > .home-assistant #place-search-form { min-height: 68px; padding: 10px 12px 10px 16px; }
  body.paper-theme.home-page .schedule { grid-template-columns: minmax(0, 1fr); gap: 36px; padding: 64px 0; }
  body.paper-theme.home-page .schedule h2 { position: static; font-size: 36px; }
  body.paper-theme.home-page .timeline-caption { grid-template-columns: 92px minmax(0, 1fr); gap: 3px 14px; }
  body.paper-theme.home-page .timeline-caption .timeline-time { font-size: 13px; }
  body.paper-theme.home-page .timeline-caption h3 { font-size: 22px; }
  body.paper-theme.home-page .timeline-caption p { font-size: 13px; }
  body.paper-theme.home-page .countdown-section { grid-template-columns: minmax(0, 1fr); gap: 28px; padding: 20px 0 56px; }
  body.paper-theme.home-page .countdown { gap: 12px; }
  body.paper-theme.home-page .countdown [data-countdown] { font-size: clamp(44px, 12vw, 64px); }
  body.paper-theme.home-page .countdown-copy p { font-size: 16px; }
  body.paper-theme.home-page .dress-code { grid-template-columns: minmax(0, 1fr); gap: 32px; padding: 64px 0; }
  body.paper-theme.home-page .dress-code h3 { font-size: 36px; }
  body.paper-theme.home-page .dress-code-colors { margin-top: 24px; }
  body.paper-theme.home-page .songs-section { padding-bottom: 64px; }
  body.paper-theme.home-page .songs-section-frame { padding: 24px 20px; border-radius: 6px; }
  body.paper-theme.home-page .songs-section-intro h2 { font-size: 30px; }
  body.paper-theme.home-page .songs-section-intro > p { font-size: 14px; }
  body.paper-theme.home-page .song-tabs { gap: 20px; margin-top: 20px; }
  body.paper-theme.home-page .song-tabs button { font-size: 14px; }
  body.paper-theme.home-page .songs-grid .songs-layout { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  body.paper-theme.home-page .songs-grid .songs-invitation { min-height: 0; }
  body.paper-theme.home-page .songs-grid .songs-invitation > h2 { min-height: 3.3em; font-size: 25px; }
  body.paper-theme.home-page .songs-grid .songs-collection { padding: 24px 0 0; border-left: 0; border-top: 1px solid var(--ui-border); }
  body.paper-theme .site-footer { padding: 36px 0 calc(90px + env(safe-area-inset-bottom)); gap: 12px 20px; }
  body.paper-theme .site-footer .footer-signature { font-size: 27px; }
  body.paper-theme :is(.travel-hero,.community-intro,.game-hero) { padding-top: 12px; padding-bottom: 28px; }
  body.paper-theme :is(.travel-hero h1,.community-intro h1,.game-hero h1) { font-size: 46px; }
  body.paper-theme .travel-page-nav { gap: 16px; flex-wrap: wrap; }
  body.paper-theme .travel-page-nav a { font-size: 14px; }
  body.paper-theme .trip-view-tabs { gap: 0; }
  body.paper-theme .trip-view-tabs button { padding-inline: 10px; font-size: 13px; }
  body.paper-theme .trip-map-toolbar { padding: 8px 12px; }
  html[lang=en] body.paper-theme.home-page .opening-announcement { margin-inline: auto; font-size: 27px; }
}
@media (max-width: 760px) and (max-height: 740px) {
  body.paper-theme.home-page .opening { padding-top: 92px; padding-bottom: 68px; }
  body.paper-theme.home-page .opening-content { gap: 18px; }
  body.paper-theme.home-page .opening-recipient { margin-bottom: 10px; }
  body.paper-theme.home-page .opening-portrait { width: 180px; min-width: 0; }
  body.paper-theme.home-page .opening-link { margin-top: 12px; }
  .opening-footer { bottom: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  body.paper-theme :is(.opening-header,.paper-button,.community-primary,.community-outline,.game-button,.opening-link > span),
  .home-chapters a::after,
  body.paper-theme .desktop-nav > a::after,
  body.paper-theme .invitation-action::after { transition: none; }
  body.paper-theme .site-menu[open] .menu-links > * { animation: none; }
}
@media print {
  .home-chapters,.opening-footer,.invitation-preface { display: none !important; }
  body.paper-theme.home-page .letter-card { width: 148mm !important; max-width: none !important; box-shadow: none !important; }
}
