/* 3.47 – one coordinated wave system for all frontpage sections. */
.front347-section{position:relative;min-width:0;background:var(--front343-bg,#fff)}
.front347-section>.cards-section,.front347-section>.events-section,
.front347-section>.story-band,.front347-section>.info-section{background:var(--front343-bg)!important}
.front347-section>.hero{background-color:var(--front343-bg)}
/* Legacy ornaments are superseded, preventing overlapping or mismatched waves. */
.front347-section .hero-wave,.front347-section .story-wave-top,.front347-section .events-wave-top{display:none!important}
.front347-wave{position:absolute;left:0;right:0;height:74px;z-index:4;pointer-events:none;line-height:0;overflow:hidden}
.front347-wave svg{display:block;width:100%;height:100%}
.front347-wave-top{top:0}
.front347-wave-top path{fill:var(--front347-prev,#fff)}
.front347-wave-bottom{bottom:0}
.front347-wave-bottom path{fill:var(--front347-next,#fff)}
/* Reserve room for waves without altering fixed header or hero. */
.front347-section:not(.front343-hero)>.cards-section,
.front347-section:not(.front343-hero)>.events-section,
.front347-section:not(.front343-hero)>.story-band,
.front347-section:not(.front343-hero)>.info-section{position:relative;z-index:2;margin-top:0;padding-top:82px;padding-bottom:82px}
.front347-section.front343-cards>.cards-section{padding-top:82px;padding-bottom:82px}
.front347-section.front343-story>.story-band{margin-top:0}
.front347-section.front343-events>.events-section{padding-top:86px}
.front347-section.front343-hero>.hero{position:relative}
.front347-section.front343-hero>.hero>.hero-panel{padding-bottom:148px}
/* Wave ends are entirely inside sections; no negative offsets or 1px seams. */
@media(max-width:860px){
 .front347-wave{height:44px}
 .front347-section:not(.front343-hero)>.cards-section,
 .front347-section:not(.front343-hero)>.events-section,
 .front347-section:not(.front343-hero)>.story-band,
 .front347-section:not(.front343-hero)>.info-section{padding-top:52px;padding-bottom:52px}
 .front347-section.front343-hero>.hero>.hero-panel{padding-bottom:104px}
}

/* 3.48: keep the waves contained and remove seams caused by fractional pixels. */
.front347-section{isolation:isolate}
.front347-wave{height:clamp(42px,5vw,74px);transform:translateZ(0)}
.front347-wave svg{display:block;min-width:100%;width:100%;height:calc(100% + 2px)}
.front347-wave-top{top:-1px}
.front347-wave-bottom{bottom:-1px}
/* The wave is in the section, so protect content and avoid oversized blank bands. */
.front347-section:not(.front343-hero)>.cards-section,
.front347-section:not(.front343-hero)>.events-section,
.front347-section:not(.front343-hero)>.story-band,
.front347-section:not(.front343-hero)>.info-section{padding-top:clamp(54px,6vw,78px);padding-bottom:clamp(54px,6vw,78px)}
.front347-section.front343-hero>.hero>.hero-panel{padding-bottom:clamp(110px,11vw,148px)}
@media(max-width:860px){
 .front347-wave{height:42px}
 .front347-section:not(.front343-hero)>.cards-section,
 .front347-section:not(.front343-hero)>.events-section,
 .front347-section:not(.front343-hero)>.story-band,
 .front347-section:not(.front343-hero)>.info-section{padding-top:55px;padding-bottom:55px}
}
@media(max-width:560px){
 .front347-wave{height:34px}
 .front347-section:not(.front343-hero)>.cards-section,
 .front347-section:not(.front343-hero)>.events-section,
 .front347-section:not(.front343-hero)>.story-band,
 .front347-section:not(.front343-hero)>.info-section{padding-top:43px;padding-bottom:43px}
 .front347-section.front343-hero>.hero>.hero-panel{padding-bottom:105px}
}
