/* The section owns the frame; block families own only their interior composition. */
.st-section{--pb-overlay-ink:#111827;position:relative;isolation:isolate;--st-width:var(--st-page-width,1240px);--st-align:left;--st-items:start;--st-flex:flex-start;--st-axis:1.5rem;scroll-margin-top:calc(var(--pb-header-h,72px) + 1rem)}
.st-section.st-align--center{--st-align:center;--st-items:center;--st-flex:center;--st-axis:50%}
.st-section.st-align--right{--st-align:right;--st-items:end;--st-flex:flex-end;--st-axis:calc(100% - 1.5rem)}
.pb-block.st-section>.st-inner{position:relative;z-index:1;box-sizing:border-box;width:100%;max-width:calc(var(--st-width) + var(--pb-px,var(--st-gutter,clamp(1.25rem,4vw,3rem)))*2);margin-inline:auto;padding:var(--pb-pt,var(--st-space-normal,clamp(2.5rem,6vw,5rem))) var(--pb-px,var(--st-gutter,clamp(1.25rem,4vw,3rem))) var(--pb-pb,var(--st-space-normal,clamp(2.5rem,6vw,5rem)));text-align:var(--st-align);min-width:0}
/* Full width expands the backdrop; copy still uses the shared frame. */
.st-section.st-section--full>.st-inner{max-width:calc(var(--st-page-width,1240px) + var(--st-gutter,clamp(1.25rem,4vw,3rem))*2)}
.st-section.st-section--full:is([data-section-native-background=true],.st-section--full_bleed_half,.st-section--marquee)>.st-inner{max-width:none;padding-inline:0}
/* These are section shells, never cards or copy/media columns. */
.pb-block.st-section>.st-inner>:is(div,section,article):not([role=dialog]),.st-section .pb-l,.st-section .pb-p2,.st-section .pb-p3,.st-section .p4{padding:0!important;max-width:none;max-inline-size:none;background-color:transparent!important}
.st-section :is(.pb-l__wrap,.pb-p2__wrap,.pb-p3__wrap){width:100%;max-width:none;max-inline-size:none;margin-inline:auto}
.st-section :is(.pb-l__head,.pb-p2__head,.pb-p3__head,.p4-heading){max-width:none;max-inline-size:none}
.st-section :is(.prose,.pb-p3__prose){max-width:65ch;max-inline-size:65ch}
.st-align--center :is(.prose,.pb-p3__prose){margin-inline:auto}
.st-align--right :is(.prose,.pb-p3__prose){margin-inline-start:auto}
.st-section :is(.pb-l__head,.pb-p2__head,.pb-p3__head,.p4-heading)>p{max-width:65ch;margin-inline:0}
.st-align--center :is(.pb-l__head,.pb-p2__head,.pb-p3__head,.p4-heading)>p{margin-inline:auto}
.st-section :is(.pb-l__head,.pb-p2__head,.pb-p3__head,.p4-heading){text-align:var(--pb-head-align,var(--st-align));justify-items:var(--st-items)}
.st-section :is(.pb-feat-item,.pb-p3__card-copy,.pbstep--place-top,.pb-hero-inner){text-align:var(--st-align)!important;align-items:var(--st-flex)!important}
.st-section :is(.pb-l__actions,.pb-p2__actions,.pb-p3__actions,.pb-p3__link-row),.st-section :is(div,p):has(>.pb-btn){justify-content:var(--st-flex)!important;text-align:var(--st-align)}
.st-section .pb-feat-item>svg,.st-section .pb-feat-item>div:first-child{margin-inline:0}
.st-align--center .pb-feat-item>svg,.st-align--center .pb-feat-item>div:first-child{margin-inline:auto}
.st-section .pbstep--place-top::after{left:var(--st-axis)!important}
/* A named background is resolved on the section, not separately by each family. */
.st-background-video,.st-video-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}
@media(prefers-reduced-motion:reduce){.st-background-video{display:none}}
@media(max-width:767px){.st-section[data-hide-phone=true]{display:none}.pb-block.st-section>.st-inner{padding-top:var(--pb-pt)!important;padding-bottom:var(--pb-pb)!important}}
@media(min-width:768px){.st-section[data-hide-desktop=true]{display:none}}

.st-section :is(.pb-l__card,.pb-p3__grid-card,.p4-choice){text-align:var(--st-align)}
.st-section :is(.pb-l__icon,.pb-p3__icon,.pb-design-icon){align-self:var(--st-items)}
.st-align--center :is(.pb-l__card,.pb-p3__grid-card)>svg{margin-inline:auto}
/* Avatars and logo/action rows follow the same alignment as their labels. */
.st-section .tm-card{text-align:var(--st-align)!important}
.st-section :is(.tm-socials,.pb-cols.flex){justify-content:var(--st-flex)!important}
.st-align--left :is(.tm-photo,.tm-initials){margin-inline:0 auto!important}
.st-align--center :is(.tm-photo,.tm-initials){margin-inline:auto!important}
.st-align--right :is(.tm-photo,.tm-initials){margin-inline:auto 0!important}
.st-section[data-block-type=logos] .grid>.flex{justify-content:var(--st-flex)!important}

/* Edge-to-edge media keeps its copy on the site's standard content frame. */
.st-section--full :is(.pb-l--hero-full_bleed,.pb-l--stats-over_photo,.pb-l--statement-photo)>.pb-l__wrap,
.st-section--full.st-section--image[data-block-type=cta]>.st-inner>div>div,
.st-section--full .pb-hero-inner{
    box-sizing:border-box;width:100%;max-width:calc(var(--st-page-width,1240px) + var(--st-gutter,clamp(1.25rem,4vw,3rem))*2);margin-inline:auto;padding-inline:var(--st-gutter,clamp(1.25rem,4vw,3rem))
}

/* Header space moves with the copy, never outside a native hero backdrop. */
.pb-block.st-section[style*="--st-header-clearance"]>.st-inner{padding-top:calc(var(--pb-pt,0px) + var(--st-header-clearance,0px))!important}
.pb-block.st-section.st-section--hero.st-section--full_bleed>.st-inner{padding-block:0!important}
.st-section--hero.st-section--full_bleed .pb-l--hero-full_bleed>.pb-l__wrap{padding-top:calc(var(--pb-pt,0px) + var(--st-header-clearance,0px));padding-bottom:var(--pb-pb,0px)}

/* A block that paints its own backdrop (photo, video, slideshow) owns the whole
   section height: the frame's vertical space goes INSIDE that backdrop, never
   around it, or the photo shows as a band between two empty strips. */
.pb-block.st-section[data-section-native-background=true]:not(.st-section--full_bleed)>.st-inner{padding-block:0!important}
.pb-block.st-section[data-section-native-background=true]:not(.st-section--full_bleed)>.st-inner>:is(div,section,article):not([role=dialog]){padding-top:calc(var(--pb-pt,var(--st-space-normal,clamp(2.5rem,6vw,5rem))) + var(--st-header-clearance,0px))!important;padding-bottom:var(--pb-pb,var(--st-space-normal,clamp(2.5rem,6vw,5rem)))!important}

/* Each section is its own stacking layer, so an open dialog inside one (team
   bios) must lift its section above the sections that follow it. */
.st-section:has([role=dialog].is-open,[aria-modal=true].is-open){z-index:9000}

/* Older spacing rules pad every direct child of a block; the section's own
   background video and overlay are layers, not content, so they never get it
   (padding shrinks a video's object-fit box into a strip). */
.pb-theme .pb-block.st-section>:is(.st-background-video,.st-video-overlay),.pb-block.st-section>:is(.st-background-video,.st-video-overlay){padding:0!important;margin:0!important}
/* The tone reset clears every direct child's background; the overlay's own color must survive it. */
.pb-block.st-section[data-design-tone]>.st-video-overlay,.pb-block.st-section>.st-video-overlay{background:var(--st-scrim-color)!important}

/* One height treatment for native heroes. The frame still owns all spacing,
   including space INSIDE native backdrops. Minimums never clip longer copy. */
.st-section[data-hero-height]>.st-inner>:is(.pb-l,.pb-p2,.pb-hero-shell){box-sizing:border-box;min-height:max(0px,calc(var(--st-hero-min) - var(--pb-pt,0px) - var(--pb-pb,0px) - var(--st-header-clearance,0px)));align-content:center}
.st-section[data-hero-height]:is([data-section-native-background=true],.st-section--full_bleed)>.st-inner>:is(.pb-l,.pb-p2,.pb-hero-shell){min-height:var(--st-hero-min)}
.st-section[data-hero-height] .pb-l--hero-full_bleed{align-items:center}
.st-section[data-hero-height] .pb-hero-shell{display:grid}
.st-section[data-hero-height] :is(.pb-side-media,.pb-p2__media):before{aspect-ratio:auto;height:var(--st-hero-media);max-height:none}
.st-section[data-hero-height] :is(.pb-l__two,.pb-p2__split,.pb-p2__centerpiece){align-items:stretch}
.st-section[data-hero-height] :is(.pb-l__hero-copy,.pb-p2__copy,.pb-p2__aside){align-self:center}
/* Collage/stack minimums belong to the composition, not every overlapping crop. */
.st-section[data-hero-height] :is(.pb-side-collage,.pb-p2__stack){min-height:var(--st-hero-media)}
.st-section[data-hero-height] :is(.pb-side-collage,.pb-p2__stack) :is(.pb-side-media,.pb-p2__media):before{height:0}
.st-section[data-hero-height] .pb-p2__stack{grid-template-rows:repeat(6,minmax(0,1fr))}
.st-section[data-hero-height] .pb-p2--photo_times_plaque{position:relative}
.st-section[data-hero-height] .pb-p2__plaque{margin-block-start:0}
.st-section[data-hero-height] .pb-p2__plaque-photo{position:static;min-height:var(--st-hero-media);display:grid;align-items:center}
.st-section[data-hero-height] .pb-p2__plaque-photo>.pb-p2__media:before{height:0}
/* Short removes ornamental offsets, retaining all photos and editorial notes. */
.st-section[data-hero-height=short] .pb-p2__strip>.pb-p2__media{margin-block:0}
.st-section[data-hero-height=short] .pb-p2__doors{margin-top:1rem}
.st-section[data-hero-height=short] .pb-p2__doors .pb-p2__media:before{height:calc(var(--st-hero-media)*.6)}
.st-section[data-hero-height=short] .pb-p2--headline_card .pb-p2__wrap{padding:clamp(1rem,2vw,1.5rem)}
.st-section[data-hero-height=short] .pb-p2__action-bar{margin:1rem 0 0}
@container(max-width:48rem){
    .st-section[data-hero-height] :is(.pb-side-media,.pb-p2__media):before{height:min(var(--st-hero-media),16rem)}
    .st-section[data-hero-height] :is(.pb-side-collage,.pb-p2__stack){min-height:min(var(--st-hero-media),20rem)}
    .st-section[data-hero-height] :is(.pb-side-collage,.pb-p2__stack) :is(.pb-side-media,.pb-p2__media):before{height:0}
    .st-section[data-hero-height] .pb-p2__stack{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:auto;gap:.5rem;min-height:0}
    .st-section[data-hero-height] .pb-p2__stack>.pb-p2__media{grid-area:auto;transform:none;border:0}
    .st-section[data-hero-height] .pb-p2__stack>.pb-p2__media:before{height:10rem}
    .st-section[data-hero-height] .pb-p2__plaque-photo{display:block;padding:0}
    .st-section[data-hero-height] .pb-p2__plaque-photo>.pb-p2__media{position:relative}
    .st-section[data-hero-height] .pb-p2__plaque-photo>.pb-p2__media:before{height:min(var(--st-hero-media),16rem)}
    .st-section[data-hero-height] .pb-p2__plaque{margin:0;width:100%}
}

/* svh follows the visible phone viewport; vh is the older-browser fallback. */
@supports(height:100svh){.st-section[data-hero-height]:is([data-hero-height=full],[data-hero-height=tall]){--st-hero-min:var(--st-hero-small-min)!important}}
/* Align every text/action part with the section, including legacy utility heads. */
.st-section :is(.st-heading,.st-eyebrow,.st-lead,.st-card,figcaption,.pb-stat-values,.pbstep-item){text-align:var(--st-align)}
.st-section .pbstep-item{align-items:var(--st-flex)!important}
/* Side badges share the rail's fixed top anchor, regardless of text height. */
.st-section.st-section--vertical .pbstep-item.pbstep--place-side{align-items:flex-start!important}
/* The band follows one line of text rather than the normal section rhythm. */
.pb-block.st-section--marquee>.st-inner{padding-block:clamp(1rem,2vw,2rem)!important}
.pb-block.st-section--stats .pb-stat-values{grid-template-columns:repeat(var(--st-stat-columns,4),minmax(0,1fr))}
.pb-block.st-section--stats .pb-stat-values>*{grid-column:auto!important}
@media(max-width:639px){.pb-block.st-section--stats .pb-stat-values{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

.pb-block.st-section--marquee .pb-marquee [data-pb-field]{color:var(--st-marquee-ink,var(--pb-sec-text,var(--pb-text)))!important}
/* Native strips remain above the overlaid header, inside the first viewport. */
.st-section[data-hero-overlay=true][data-hero-height=full]{margin-block-start:calc(-1 * var(--st-hero-strip-height,0px))}

/* Filled card plates use the contrasting surface in every neutral section. */
.pb-block.st-section :is(.pb-p2__plaque,.pb-p3__card-copy,.pb-l__team-info,.lc--boxed){background-color:var(--pb-surface)}

/* A message beside its button reads left, whatever the section alignment;
   centering it inside its own column made it float (owner, 2026-10-19). */
@media(min-width:640px){.st-section .pb-cta-split-copy,.st-section .pb-cta-split-copy :is(.st-heading,.st-lead,.st-eyebrow){text-align:left!important}}

/* The site's own paper and ink, resolved once on the page so dialogs and other
   overlays can use them inside any tinted, dark or photo section. */
.pb-theme{--pb-site-bg:var(--pb-bg,#fff);--pb-site-text:var(--pb-text,#111827)}
/* Shared photo scrim: one site-level darkness, per-section override, AA floor applied server-side. */
.pb-theme,.st-section{--st-scrim-color:color-mix(in srgb,var(--st-scrim-tint,#000) var(--st-scrim,var(--st-site-scrim,60%)),transparent)}
/* Hero photos carry their text darker by default (owner rule); the section's own --st-scrim still wins. */
.st-section[data-block-type=hero]{--st-scrim-color:color-mix(in srgb,var(--st-scrim-tint,#000) var(--st-scrim,var(--st-hero-scrim,60%)),transparent)}
.st-scrim{position:absolute;inset:0;background:var(--st-scrim-color);pointer-events:none}
.st-scrim-card{position:absolute;inset:0;pointer-events:none;background:linear-gradient(to top,color-mix(in srgb,var(--st-scrim-tint,#000) min(100%,calc(var(--st-scrim,60%) + 25%)),transparent) 0%,var(--st-scrim-color) 45%,transparent 85%)}
/* Rhythm: one eyebrow, lead, header and button distance in every block family. */
.pb-theme{--st-gap-eyebrow:.75rem;--st-gap-lead:1rem;--st-gap-head:clamp(2rem,4vw,3.5rem);--st-gap-actions:2rem;--st-gap-buttons:.75rem}
.st-section .st-eyebrow{margin-block:0 var(--st-gap-eyebrow)}
.st-section .st-heading+.st-lead,.st-section .st-heading+p{margin-block-start:var(--st-gap-lead)}
.st-section :is(.pb-l__head,.pb-p2__head,.pb-p3__head,.p4-heading),
.st-section .st-inner div:has(>.st-heading):not(.st-card *,.pb-hero-inner *,.pb-p2__copy *,.pb-l__hero-copy *):has(+*){margin-block-end:var(--st-gap-head)}
.st-section :is(.pb-l__actions,.pb-p2__actions,.pb-p3__actions,[data-pb-field=buttons]){margin-block-start:var(--st-gap-actions);gap:var(--st-gap-buttons)}
/* Split titles align with their aside instead of owning a bottom gap. */
.st-section .pb-p3__title-split>.pb-p3__head{margin-block-end:0}
@media(max-width:767px){.pb-theme{--st-gap-head:2rem;--st-gap-actions:1.5rem}}
/* Owner rule, phones: section padding is always 40px (site 0 and per-section none stay 0); stacked collection items sit 24px apart. */

@media(max-width:767px){.st-section{--st-space-normal:var(--st-space-phone,40px);--st-space-compact:var(--st-space-phone,40px);--st-space-roomy:var(--st-space-phone,40px)}
.st-section :is(.grid.grid-cols-1,.pb-cols.grid-cols-1,.pb-l__days,.p4-gallery-items,.p4-scene-items,.st-composition-items,.st-columns-row,.pb-q2-tiles__grid){row-gap:var(--st-stack-gap,24px)}}
/* Same-backdrop neighbors read as one band; beats the phone rule above and the section's own padding. */
.pb-theme .pb-block.st-section.pb-block--collapse-top>.st-inner{padding-top:0!important}
/* Designed library sections already own their outer spacing. Keep the builder's
   default phone padding from adding a second band around those compositions. */
.pb-theme .pb-block.st-section:has(>.st-inner>:is([data-design-key],[data-bl-articles-faithful],[class*="-faithful"],.bl-pt,.bl-lg,.bl-lst,.bl-gv,.bl-imagery,.bl-offset,.bl-hero-lib,.bl-careers,.bl-sermons-livestream,.bl-search,.bl-pricing:not([data-b9-pricing])))>.st-inner{padding:0!important;max-width:none!important;width:100%}
/* A framework look that is not an edge block expects its section to carry the padding (framework base.css zeroes its own
   --st-space), but the rule above, and bl-content/bl-forms, zero the section too: forms, content and product rows sat flush
   on their neighbors (owner, 2026-11-05). The section's spacing choice comes back, read from data-section-spacing because
   those rules force --pb-pt to 0; the same-color seam rule still drops the top. Heroes and page titles own their spacing. */
.pb-theme .pb-block.st-section:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles)){--sb-sec-room:var(--st-space-normal,clamp(2.5rem,6vw,5rem))}
.pb-theme .pb-block.st-section:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles))[data-section-spacing=compact]{--sb-sec-room:var(--st-space-compact,clamp(2rem,4vw,3rem))}
.pb-theme .pb-block.st-section:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles))[data-section-spacing=roomy]{--sb-sec-room:var(--st-space-roomy,clamp(4rem,8vw,7rem))}
.pb-theme .pb-block.st-section:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles))[data-section-spacing=none]{--sb-sec-room:0px}
.pb-theme .pb-block.st-section:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles))>.st-inner{padding-block:var(--sb-sec-room)!important}
/* A non-edge look sets its .wrap to no width and no side padding because its section is the frame; the section is that frame here too (it was full width, so these looks sat on the screen edge). Full width sections keep no cap: calc(none ...) is invalid and falls back to none. */
.pb-theme .pb-block.st-section:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles))>.st-inner{max-width:calc(var(--st-width) + var(--st-gutter,clamp(1.25rem,4vw,3rem))*2)!important;margin-inline:auto!important;padding-inline:var(--st-gutter,clamp(1.25rem,4vw,3rem))!important}
/* Some of those looks frame themselves with side padding on their own .section; the section is the frame now, so that padding would inset them twice (owner, 2026-11-05: every full section shares one width). */
.pb-theme .pb-block.st-section>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles)>:is(.section,.sec){padding-inline:0!important}
/* Contained heroes and page titles are not framed by the section (they may paint full bleed), and the non-edge rule zeroes their .wrap, so their copy sat on the screen edge; frame the .wrap itself on the site width and gutter. */
.pb-theme .pb-block.st-section>.st-inner>.sb-blk:is(.sb-heroes,.sb-page-titles):not(.sb-edge)>:is(.wrap,.sec>.wrap,.section>.wrap,.blk>.wrap){max-width:calc(var(--st-page-width,1240px) + 2 * var(--st-gutter,clamp(1.25rem,4vw,3rem)))!important;padding-inline:var(--st-gutter,clamp(1.25rem,4vw,3rem))!important;margin-inline:auto!important}
.pb-theme .pb-block.st-section.pb-block--collapse-top:has(>.st-inner>.sb-blk:not(.sb-edge):not(.sb-heroes):not(.sb-page-titles))>.st-inner{padding-top:0!important}

/* One edge for the whole page (owner, 2026-11-07: "why isnt the grid as wide as header an footer", "get it all fixed"):
   header and footer content sit where section content sits, at the larger of the site gutter and half of what the
   screen has beyond the page width. Each chrome design used to cap itself (1152, 1240, 1440 or 1600px). */
.pb-site-header :is(.bl-header__bar,.bl-header__utility,.bl-header__crisis,.bl-editorial-header__bar,.hd-in,.u-in,.mg-in,.max-w-6xl),
.pb-site-footer :is(.bl-footer-report__inner,.max-w-6xl){max-width:none!important;padding-inline:max(var(--st-gutter,clamp(1.25rem,4vw,3rem)),calc((100% - var(--st-page-width,1240px)) / 2))!important}
:is(.pb-site-footer.bl-ft,.pb-site-footer .bl-ft) .wrap{width:min(100% - 2 * var(--st-gutter,clamp(1.25rem,4vw,3rem)),var(--st-page-width,1240px))!important}
:is(.pb-site-footer.bl-ft.f16,.pb-site-footer :is(.bl-ft.f16,.bl-ft .f16)),.pb-site-footer.bl-editorial-footer{padding-inline:max(var(--st-gutter,clamp(1.25rem,4vw,3rem)),calc((100% - var(--st-page-width,1240px)) / 2))!important}
