body.has-app-navigation { padding-bottom: calc(86px + env(safe-area-inset-bottom)); }
/* App content scrolls independently. The tab bar is a layout row, not an iOS
   fixed-position layer that can retain a stale keyboard viewport offset. */
html:has(body.wedding-app-page) { height: 100%; overflow: hidden; }
body.wedding-app-page.has-app-navigation { min-height: 0; height: 100vh; height: 100dvh; overflow: hidden; display: flex; flex-direction: column; padding-bottom: 0; margin: 0; }
.wedding-app-page > header, .wedding-app-page > .wedding-guest-toolbar { flex-shrink: 0; }
.wedding-app-page > main { flex: 1 1 0; min-height: 0; width: 100%; overflow-y: auto; overscroll-behavior-y: contain; -webkit-overflow-scrolling: touch; }
.wedding-app-page.has-app-navigation > .wedding-app-nav { position: relative; inset: auto; flex: 0 0 auto; }
.wedding-app-page.app-editing > .wedding-app-nav { display: none; }
.wedding-app-nav { position: fixed; z-index: 95; inset: auto 0 0; display: flex; padding: 9px max(12px, env(safe-area-inset-left)) calc(9px + env(safe-area-inset-bottom)); background: rgba(249,250,247,.97); border-top: 1px solid #d9dfdd; box-shadow: 0 -5px 25px #25333b0a; justify-content: center; gap: 6px; }
.wedding-app-nav a { display: grid; justify-items: center; align-content: center; gap: 3px; min-height: 48px; width: min(20%,130px); border-radius: 14px; text-decoration: none; color: #52656f; font: 650 11px/1.3 system-ui,sans-serif; }
.wedding-app-nav a span { font: 22px/1 system-ui,sans-serif; }
.wedding-app-nav a[aria-current="page"] { background: #e1eaf0; color: #243540; }
.wedding-guest-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: min(1100px, calc(100% - 40px)); margin: 20px auto 0; color: #657780; font: 600 12px/1.5 var(--sans,system-ui,sans-serif); }
.wedding-guest-toolbar[hidden], .wedding-section-unavailable[hidden] { display: none; }
.wedding-guest-back { display: inline-flex; align-items: center; min-height: 44px; color: #344751; text-decoration: none; }
.wedding-guest-toolbar > span { text-align: right; }
.wedding-guest-toolbar:not([hidden]) ~ .portal-shell, .wedding-guest-toolbar:not([hidden]) ~ .quiz-shell { padding-top: 28px; }
.wedding-section-header { display: none; }
.wedding-section-view { scroll-padding-top: 100px; }
.wedding-section-view .site-header, .wedding-section-view .mobile-upload-button, .wedding-section-view #main > :not(.guest-section-selected) { display: none !important; }
.wedding-section-view .wedding-section-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 20px clamp(20px,4vw,54px); min-height: 76px; border-bottom: 1px solid var(--line); background: var(--ivory); }
.wedding-section-header a { text-decoration: none; color: var(--ink); font: 650 .8rem var(--sans); }
.wedding-section-header a:first-child { font: 1.55rem var(--serif); letter-spacing: .1em; }
.wedding-section-view .guest-section-selected { padding-block: 36px 56px; min-height: 0; scroll-margin-top: 150px; }
.wedding-section-view .guest-section-selected .reveal { opacity: 1; transform: none; }
.wedding-section-view .gallery__head { align-items: start; }
.wedding-section-view .guest-section-selected h2 { font-size: clamp(2rem,4vw,3.6rem); }
.wedding-section-view .memories__intro .lead, .wedding-section-view .memories__intro .trust-list { display: none; }
.wedding-section-view .memories__intro { margin-bottom: 24px; color: var(--ink); }
.wedding-section-view .memories__intro h2 { color: var(--ink); }
.wedding-section-view .memories__intro .eyebrow { color: #617985; }
.wedding-section-view .memories__layout { display: block; max-width: 820px; }
.wedding-section-view .memories { background: var(--ivory); color: var(--ink); }
.wedding-section-view .upload-panel { width: 100%; }
.wedding-section-view .site-footer { padding-block: 24px; }
.wedding-section-view .site-footer__inner > :not(.footer-links), .wedding-section-view .footer-links a[href="#start"] { display: none; }
.wedding-section-unavailable { width: min(900px, calc(100% - 40px)); margin: 40px auto; padding: 24px; background: #edf3f8; border-radius: 18px; }
.has-app-navigation .mobile-upload-button { bottom: calc(90px + env(safe-area-inset-bottom)); }
.has-app-navigation .portal-header { min-height: 76px; }
.has-app-navigation .portal-header nav { gap: 12px; }
.has-app-navigation .portal-header nav a { white-space: nowrap; }
.wedding-network { position: fixed; z-index: 101; top: 0; left: 0; right: 0; padding: 10px 20px; background: #f7ebd2; color: #524320; text-align: center; font: 600 13px system-ui,sans-serif; }
.portal-header nav a.wedding-open-website { display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--ink);text-decoration:none;font:650 .78rem var(--sans); }
.account-indicator { display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:9px 13px;border:1px solid var(--line);border-radius:24px;background:var(--blue-pale);color:var(--ink);text-decoration:none;font:650 .78rem var(--sans);white-space:nowrap; }
.account-indicator[hidden] { display:none !important; }
.account-indicator strong { max-width:170px;overflow:hidden;text-overflow:ellipsis; }
@media (max-width: 600px) {
  .has-app-navigation .portal-header { gap: 14px; padding: 14px 20px; }
  .has-app-navigation .portal-brand { gap: 8px; }
  .has-app-navigation .portal-brand small { max-width: 100px; font-size: .6rem; }
  .wedding-app-page .portal-header { align-items: center; }
  .wedding-app-page .portal-brand { flex-direction: column; gap: 0; }
  .wedding-app-page .portal-brand small { display: block; }
  .wedding-app-page .portal-header nav { gap:7px; }
  .account-indicator { min-height:40px;padding:8px 10px; }
  .account-indicator strong { max-width:92px; }
  .wedding-section-view .gallery__head { flex-direction: column; }
  .wedding-section-view .gallery__head .filter-group { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) { .wedding-app-nav * { transition: none; } }
.wedding-app-nav a{font-size:13px;min-height:54px}.wedding-guest-toolbar{font-size:15px}.wedding-app-nav a:focus-visible,.wedding-guest-back:focus-visible{outline:3px solid #397ca3;outline-offset:2px}
