/* Weddings by Moe v3.17: shared component standards, loaded after page styles. */
:root {
  --bg:#faf9f6; --bg-alt:#f4f2ef; --dk:#111111; --dk-surface:#111111;
  --mut:#5c5c5c; --bdr:#e5e2dd; --acc:#806637;
  --gold-hd:#a48246; --gold:#bfa06a; --gold-hover:#d8b67f;
}
::selection { background:#806637; color:#fff; }
input,select,textarea { accent-color:var(--acc); }

/* Shared navigation, including a scrollable drawer for short screens. */
.hd-inner { gap:24px; }
.logo { flex-shrink:0; }
.dnav { display:flex; align-items:center; gap:18px; }
.dnav a { font-size:12px; line-height:1.4; font-weight:500; letter-spacing:.08em; text-transform:uppercase; white-space:nowrap; padding:12px 0; }
.dnav a:hover,.dnav a.active { color:var(--acc); }
.dnav .cta { display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:12px 18px; border:1px solid var(--dk); }
.mbtn { display:none; min-width:44px; min-height:44px; align-items:center; justify-content:center; }
.mm { position:fixed; top:0; right:0; bottom:0; width:min(340px,90vw); background:#fff; z-index:52; display:flex; flex-direction:column; overflow-y:auto; overscroll-behavior:contain; transform:translateX(100%); visibility:hidden; transition:transform .3s,visibility .3s; box-shadow:-8px 0 30px rgba(0,0,0,.1); }
.mm-hd { flex-shrink:0; display:flex; align-items:center; justify-content:space-between; padding:16px 24px; border-bottom:1px solid var(--bdr); }
.mm-hd span { font-family:var(--ser); font-size:20px; font-style:italic; }
.mm-cls { display:flex; align-items:center; justify-content:center; width:44px; height:44px; background:none; border:0; color:var(--dk); cursor:pointer; }
.mm nav { flex-shrink:0; display:flex; flex-direction:column; padding:16px 24px; }
.mm nav a { font-family:var(--ser); font-weight:400; font-size:21px; line-height:1.4; min-height:44px; padding:10px 0; border-bottom:1px solid var(--bdr); }
.mm nav [aria-current="page"] { color:var(--acc); }
.mm-cta { flex-shrink:0; margin-top:auto; padding:16px 24px 24px; display:flex; flex-direction:column; gap:12px; }
.mm-p { background:var(--dk); color:#fff; }
.mm-s { border:1px solid var(--bdr); color:var(--dk); }
.service-jump { max-width:1400px; margin:0 auto; padding:16px 48px; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px 32px; border-bottom:1px solid var(--bdr); }
.service-jump a,.pkg-jump a { display:inline-flex; align-items:center; min-height:44px; font-size:12px; line-height:1.5; letter-spacing:.1em; text-transform:uppercase; }
.service-jump a:hover { color:var(--acc); }

/* Role-based type sizes. The existing photographic hero stays distinctive. */
.sec-title,.sec-hd h2,.pkg-hd h2,.rev-hd h2,.faq-hd h2,.more-hd h2,.cta-sec h2,.story-cta h2 { font-size:clamp(30px,3.3vw,44px); line-height:1.15; }
.about-hero h1,.page-hero h1,.bh h1 { line-height:1.12; }
.service-heading { font-family:var(--ser); font-weight:400; font-size:clamp(28px,3vw,40px); line-height:1.2; margin-top:32px; margin-bottom:16px; }
.hero-cta { min-height:44px; font-size:12px; line-height:1.5; }
.frm-lbl,.frm-lbl span,.ft-col-hd,.ft-contact>p,.label,.cat,.tag,.badge,.pkg-meta,.story-side .cat,.story-facts dt,.story-side-nav a,.more-all,.lb-hint,.lb-count { font-size:12px; }
.story-img .caption p,.story-card p,.more-card p,.gbm p,.gbd p { font-size:12px; line-height:1.5; letter-spacing:.08em; }
.story-img .caption p,.more-card p { color:rgba(255,255,255,.85); }
.story-img .overlay { background:linear-gradient(to top,rgba(0,0,0,.78),transparent 65%); }
.rev-f .gg,.ft-bot,.float-cta,.cta-note { font-size:12px; line-height:1.6; }
.faq-a p,.story-side .intro,.story-tips,.blog-article p,.blog-article li { font-size:16px; line-height:1.8; }
.faq-item.active .faq-a { max-height:none; }
.story-h2 em { color:var(--acc); }
.story-img { border-radius:0; }

/* Consistent action sizing, while retaining outlined and dark-section variants. */
.btn,.btn-outline,.cta-btn,.story-cta-btn,.pkg-btn,.frm-sub,.mm-cta a,.sticky a { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:48px; padding:14px 24px; font-size:12px; line-height:1.5; font-weight:500; letter-spacing:.1em; text-transform:uppercase; text-align:center; }
.cta-btn,.frm-sub,.sticky a,.pkg-btn { background:var(--dk); border:1px solid var(--dk); color:#fff; }
.btn-outline { border:1px solid var(--dk); background:transparent; color:var(--dk); }
.btn:hover,.btn-outline:hover,.cta-btn:hover,.frm-sub:hover,.pkg-btn:hover,.dnav .cta:hover { background:var(--gold); border-color:var(--gold); color:var(--dk); }
.story-cta-btn,.pkg-feat .pkg-btn { background:var(--gold); border:1px solid var(--gold); color:var(--dk); }
.story-cta-btn:hover,.pkg-feat .pkg-btn:hover { background:var(--gold-hover); border-color:var(--gold-hover); color:var(--dk); opacity:1; }
.frm-sub,.pkg-btn,.sticky a { width:100%; }
.float-cta { min-height:48px; padding:14px 20px; background:var(--dk); color:#fff; border-radius:0; box-shadow:0 4px 16px rgba(0,0,0,.15); }
.float-cta:hover { background:var(--gold); color:var(--dk); }

/* One package-card system on service pages and the packages page. */
.pkgs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; align-items:stretch; }
.pkg { display:flex; flex-direction:column; min-width:0; padding:32px; background:#fff; border:1px solid var(--bdr); border-radius:0; text-align:left; position:relative; }
.pkg-top { margin-bottom:24px; padding-bottom:24px; border-bottom:1px solid var(--bdr); }
.pkg-top h3 { font-family:var(--ser); font-weight:400; font-size:24px; line-height:1.2; margin-bottom:8px; text-align:left; }
.pkg-top .price { display:block; font-size:20px; line-height:1.5; font-weight:300; color:#444; text-align:left; }
.pkg-top .savings { text-align:left; font-size:14px; }
.pkg-meta { display:flex; justify-content:flex-start; flex-wrap:wrap; gap:6px 10px; margin-bottom:24px; font-size:12px; line-height:1.6; letter-spacing:.08em; color:var(--mut); }
.pkg-list { margin-bottom:32px; }
.pkg-list li { font-size:15px; line-height:1.7; }
.pkg-btn { margin-top:auto; }
.pkg-feat { background:var(--dk); border-color:var(--dk); color:#fff; --acc:var(--gold); transform:none; box-shadow:none; }
.pkg-feat .pkg-top { border-color:rgba(255,255,255,.2); }
.pkg-feat .pkg-top h3 { color:var(--gold); }
.pkg-feat .pkg-top .price,.pkg-feat .pkg-meta,.pkg-feat .pkg-list li { color:rgba(255,255,255,.8); }
.pkg .badge { white-space:nowrap; font-size:12px; letter-spacing:.1em; line-height:1.5; color:var(--dk); background:var(--gold); }
#cityhall .pkgs { grid-template-columns:minmax(0,1fr); max-width:420px; margin-left:auto; margin-right:auto; }
.stories-more { text-align:center; margin-top:32px; }

/* Center each inquiry and keep the existing complete terms in normal flow. */
.wbm-contact .page { display:flex; flex-direction:column; align-items:center; justify-content:flex-start; padding:140px 48px 80px; }
.wbm-contact .ct { width:100%; max-width:640px; min-width:0; }
.wbm-contact .frm { padding:32px; }
.wbm-contact .terms-band { width:100%; max-width:640px; margin-top:40px; padding:32px 0 0; }
.frm-inp,.frm-sel,.frm-txt { border-color:#888; min-height:48px; }
.frm-inp:focus,.frm-sel:focus,.frm-txt:focus { outline:2px solid var(--acc); outline-offset:2px; }
.frm-lbl { line-height:1.6; }

/* Story text scrolls with the page; longer narrative has a native disclosure. */
.story-layout { grid-template-columns:minmax(280px,360px) minmax(0,1fr); }
.story-side { position:static; max-height:none; overflow:visible; padding:32px; min-width:0; }
.story-details { margin-top:24px; border-top:1px solid var(--bdr); padding-top:8px; text-align:left; }
.story-details summary { cursor:pointer; padding:12px 0; min-height:44px; font-size:14px; font-weight:500; }
.story-details summary::marker { color:var(--acc); }
.story-details[open] summary { margin-bottom:12px; }
.story-side .story-quote { margin-left:0; margin-right:0; }
.story-side-nav { gap:24px; }

/* A subtle boundary keeps a dark CTA from merging into the footer. */
.story-cta { border-bottom:1px solid rgba(255,255,255,.24); }
.story-cta-card { --acc:var(--gold); }
.ft { margin-top:auto; background:var(--dk); color:#fff; padding:64px 48px 32px; --acc:var(--gold); }
.ft-inner,.ft>.mx { max-width:1400px; margin:0 auto; padding:0; }
.ft-top { display:flex; flex-direction:row; justify-content:space-between; gap:32px; margin-bottom:32px; padding-bottom:32px; border-bottom:1px solid rgba(255,255,255,.15); }
.ft-top>div:first-child { flex:0 1 250px; }
.ft-links { display:flex; flex-wrap:wrap; gap:32px; }
.ft-col { min-width:130px; }
.ft-col-hd { font-size:12px; line-height:1.5; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.8); margin-bottom:12px; }
.ft-col a { display:block; font-size:14px; line-height:1.6; font-weight:300; color:rgba(255,255,255,.7); margin-bottom:4px; padding:4px 0; }
.ft-col a:hover { color:var(--gold); }
.ft-contact a { display:flex; align-items:center; gap:10px; min-height:44px; overflow-wrap:anywhere; }
.ft-contact svg { flex-shrink:0; }
.ft-bot { display:flex; flex-direction:row; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; }

@media(min-width:768px) {
  .sec,.rev-sec { padding-top:80px; padding-bottom:80px; }
}
@media(max-width:1199px) {
  .dnav { display:none!important; }
  .mbtn { display:flex!important; }
}
@media(min-width:900px) and (max-width:1099px) {
  .pkgs { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:899px) {
  .pkgs { grid-template-columns:minmax(0,1fr); max-width:640px; margin-left:auto; margin-right:auto; }
  .pkg { padding:24px; }
  .pkg+.pkg { margin-top:8px; }
  .ft-top { flex-direction:column; }
  .ft-top>div:first-child { flex-basis:auto; }
  .ft-links { justify-content:space-between; }
  .story-layout { display:block; padding-top:0; }
  .story-side { padding:112px 32px 32px; border-right:0; border-bottom:1px solid var(--bdr); text-align:center; }
  .story-side-content { max-width:640px; margin:auto; }
  .story-facts { text-align:left; }
  .story-side-nav { max-width:640px; margin-left:auto; margin-right:auto; }
  .more { padding-left:32px; padding-right:32px; }
}
@media(min-width:768px) and (max-width:1199px) {
  .mx,.hd-inner { padding-left:32px; padding-right:32px; }
  .ft { padding-left:32px; padding-right:32px; }
  .sec,.rev-sec { padding-top:64px; padding-bottom:64px; }
  .revs { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .rev { padding:24px; }
  .hero-grid { gap:32px; }
}
@media(max-width:767px) {
  .sec,.rev-sec { padding-top:56px; padding-bottom:56px; }
  .service-jump { padding:12px 24px; gap:4px 20px; }
  .pkg-top h3 { font-size:24px; }
  .wbm-contact .page { padding:112px 24px 56px; }
  .wbm-contact .frm { padding:24px; }
  .ft { padding:48px 24px 96px; }
  .ft-links { flex-direction:column; gap:24px; }
  .ft-bot { flex-direction:column; text-align:center; }
  .story-side { padding:112px 24px 32px; }
  .story-side-nav { display:flex; }
  .story-details { max-width:550px; margin-left:auto; margin-right:auto; }
  .more { padding-left:24px; padding-right:24px; }
}
@media(max-width:359px) {
  .mx,.hd-inner { padding-left:20px; padding-right:20px; }
  .wbm-contact .page { padding-left:20px; padding-right:20px; }
  .wbm-contact .frm { padding:20px; }
}
@media(prefers-reduced-motion:reduce) {
  .mm { transition:none; }
}
@media print {
  .story-details:not([open])>* { display:block; }
  .story-details summary,.service-jump { display:none; }
}
