/* Parish Schedule Engine 1.0.4
   Structural defaults only. Final visual design belongs to the theme/Divi. */
.pse-schedule{--pse-gap:1rem}
.pse-item{box-sizing:border-box}
.pse-schedule--vertical,.pse-schedule--detailed{display:grid;gap:var(--pse-gap)}
.pse-item--horizontal{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start}
.pse-item--compact .pse-when,.pse-next-line{display:flex;gap:.35em;align-items:baseline;flex-wrap:wrap}
.pse-status{display:flex;align-items:center;gap:.45em}
.pse-status__dot{width:.55em;height:.55em;border-radius:50%;background:currentColor;display:inline-block}
.pse-meta{display:flex;gap:.6em;flex-wrap:wrap}
.pse-language{white-space:nowrap}
.pse-groups{display:grid;gap:1rem}
.pse-group__items{display:flex;gap:.35em .55em;flex-wrap:wrap;align-items:baseline}
.pse-grouped-time:not(:last-child)::after{content:","}
.pse-is-empty{display:none}

.pse-groups--schedule .pse-group__items{display:block}
.pse-groups--schedule .pse-grouped-time{display:inline}
.pse-groups--schedule .pse-grouped-time:not(:last-child)::after{content:", "}
.pse-schedule-rule{margin:.2em 0}
.pse-rule-days{font-weight:600}


/* 1.0.9 Hero — layout only.
   Colours, backgrounds and typography are intentionally inherited from Divi/theme. */
.pse-schedule--hero{width:100%}
.pse-hero{width:100%;box-sizing:border-box}
.pse-hero__live{display:flex;align-items:center;gap:.55em;flex-wrap:wrap}
.pse-hero__live-status{display:inline-flex;align-items:center;gap:.4em}
.pse-hero__live-dot{display:inline-block;width:.55em;height:.55em;border-radius:50%;background:currentColor}
.pse-hero__next{display:grid;gap:.65em}
.pse-hero--live .pse-hero__next{margin-top:.75em}
.pse-hero__main{display:flex;align-items:center;gap:.65em;flex-wrap:wrap}
.pse-hero__clock{display:flex;align-items:center;justify-content:center}
.pse-hero__icon{display:block;width:1.25em;height:1.25em;flex:0 0 auto}
.pse-hero__meta{display:flex;align-items:center;gap:.75em;flex-wrap:wrap}
.pse-hero__location{display:inline-flex;align-items:center;gap:.4em}
.pse-hero__description{display:block}
.pse-hero__empty{min-height:100%;display:flex;align-items:center;justify-content:center;text-align:center}
.pse-hero__empty-content{width:100%}
.pse-hero__empty-content > :first-child{margin-top:0}
.pse-hero__empty-content > :last-child{margin-bottom:0}

/* 1.0.10 Hero semantic hooks — structural only. */
.pse-hero__service{display:block}
.pse-hero__time{display:inline-flex;align-items:baseline;gap:.2em}
.pse-hero__time-prefix,.pse-hero__time-value{display:inline}


/* 1.0.13 Hero LIVE strip */
.pse-hero__live{--pse-live-progress:0%;position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;width:100%;box-sizing:border-box;column-gap:22px;padding:14px 20px;background:rgba(0,0,0,.15);border-bottom:1px solid rgba(255,255,255,.15);font-size:1em;line-height:1.2}
.pse-hero__live-status,.pse-hero__live-service,.pse-hero__live-location{display:flex;align-items:center;min-height:1.5em;font-size:1em;line-height:1.2}
.pse-hero__live-status{gap:9px;padding-right:22px;border-right:1px solid rgba(255,255,255,.22);white-space:nowrap}
.pse-hero__live-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:#72c66b;box-shadow:0 0 0 4px rgba(114,198,107,.12)}
.pse-hero__live-label{color:#72c66b;font-size:1em;font-weight:700;line-height:1.2;text-transform:uppercase;letter-spacing:.03em}
.pse-hero__live-service{min-width:0;font-weight:500}
.pse-hero__live-service-name,.pse-hero__live-from{font-size:1em;line-height:1.2}
.pse-hero__live-from{margin-left:.28em;white-space:nowrap}
.pse-hero__live-location{justify-self:end;gap:8px;white-space:nowrap}
.pse-hero__live-location-icon{display:inline-flex;align-items:center;justify-content:center;font-family:ETmodules;font-size:1.15em;line-height:1}
.pse-hero__live-location-icon::before{content:"\1d"}
.pse-hero__live-location-name{font-size:1em;line-height:1.2}
.pse-hero__live::after{content:"";position:absolute;z-index:1;left:0;bottom:-1px;width:var(--pse-live-progress);height:2px;background:rgba(255,255,255,.25);transition:width .4s ease}

/* 1.0.14 Hero refinement */
.pse-hero__live-label{font-size:.85em;font-weight:500}
.pse-hero__live-location-icon::before{content:"\e081"}
.pse-hero__live::after{background:var(--gcid-secondary-color)}
.pse-hero__next{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:18px;row-gap:7px;padding:14px 20px;box-sizing:border-box}
.pse-hero--live .pse-hero__next{margin-top:0}
.pse-hero__eyebrow,.pse-hero__service,.pse-hero__description{grid-column:1/-1}
.pse-hero__eyebrow{margin:0}
.pse-hero__eyebrow-label{font-size:.85em;font-weight:400;line-height:1.2;opacity:.75}
.pse-hero__service{margin:0;font-size:1.15em;font-weight:500;line-height:1.2}
.pse-hero__main{display:flex;align-items:center;gap:.5em;min-width:0;margin:0}
.pse-hero__clock{display:flex;align-items:center;justify-content:center;margin:0}
.pse-hero__icon--clock{width:1.45em;height:1.45em;color:var(--gcid-secondary-color)}
.pse-hero__when{font-size:1em;font-weight:500;white-space:nowrap;margin:0}
.pse-hero__time{display:inline-flex;align-items:baseline;gap:.25em;margin:0;padding-left:.65em;border-left:1px solid rgba(255,255,255,.2)}
.pse-hero__time-prefix{opacity:.7}
.pse-hero__time-value{font-size:1.55em;line-height:1;font-weight:500;font-variant-numeric:tabular-nums}
.pse-hero__meta{display:flex;align-items:center;justify-content:flex-end;gap:.7em;flex-wrap:wrap;margin:0}
.pse-hero__location{display:inline-flex;align-items:center;gap:.4em;margin:0;white-space:nowrap}
.pse-hero__icon--location{width:1.25em;height:1.25em;color:var(--gcid-secondary-color)}
.pse-hero__language{display:inline-flex;align-items:center;padding:.15em .4em;border:1px solid currentColor;border-radius:3px;font-size:.78em;font-weight:500;line-height:1.2;margin:0}
.pse-hero__description{margin:.25em 0 0;padding-top:.6em;border-top:1px solid rgba(255,255,255,.12);font-size:.85em;line-height:1.35;opacity:.75}
@media(max-width:767px){.pse-hero__next{grid-template-columns:1fr;padding:11px 13px;row-gap:6px}.pse-hero__eyebrow,.pse-hero__service,.pse-hero__description{grid-column:1}.pse-hero__meta{justify-content:flex-start}.pse-hero__time-value{font-size:1.35em}}


/* 1.0.15 Hero finalisation */
.pse-hero__live{background:rgba(0,0,0,.25)}
.pse-hero__live-location-icon{font-size:1em;color:var(--gcid-secondary-color)}
.pse-hero__live-location-icon::before{content:"\1d"}
.pse-hero__service{font-size:3em;line-height:1;font-weight:500;margin:.08em 0 .18em}
.pse-hero__next{display:block;padding:14px 20px}
.pse-hero__eyebrow{margin:0 0 .35em}
.pse-hero__eyebrow-label{font-size:.85em;opacity:.75}
.pse-hero__main{display:flex;align-items:center;gap:.5em;flex-wrap:wrap;margin:0}
.pse-hero__icon--clock{width:1.8em;height:1.8em;color:var(--gcid-secondary-color)}
.pse-hero__when{font-size:1.65em;line-height:1;font-weight:500}
.pse-hero__time{display:inline-flex;align-items:baseline;gap:.3em;border:0;padding:0;margin:0}
.pse-hero__time-prefix{font-size:1.15em;opacity:.7}
.pse-hero__time-value{font-size:2.75em;line-height:1;font-weight:500}
.pse-hero__language{margin-left:.2em;padding:.15em .4em;font-size:.78em;line-height:1.2}
.pse-hero__details{display:flex;align-items:center;gap:1em;margin-top:1em;padding-top:.75em;border-top:1px solid rgba(255,255,255,.12)}
.pse-hero__location,.pse-hero__description{display:flex;align-items:center;gap:.45em;margin:0;padding:0;border:0;font-size:.85em;line-height:1.3;opacity:.8}
.pse-hero__location{white-space:nowrap}
.pse-hero__location + .pse-hero__description{padding-left:1em;border-left:1px solid rgba(255,255,255,.18)}
.pse-hero__icon--location{width:1em;height:1em;color:var(--gcid-secondary-color)}
.pse-hero__description-text{display:inline}
@media(max-width:767px){.pse-hero__next{padding:11px 13px}.pse-hero__service{font-size:2.15em}.pse-hero__when{font-size:1.25em}.pse-hero__time-value{font-size:2em}.pse-hero__icon--clock{width:1.45em;height:1.45em}.pse-hero__details{flex-wrap:wrap;gap:.6em}.pse-hero__location + .pse-hero__description{padding-left:0;border-left:0;width:100%}}

/* 1.0.17 Hero fluid typography
   Scale is based on the actual Hero module width, not the viewport width.
   1.0.15 sizes remain the fallback for browsers without container query units. */
.pse-schedule--hero{
    container-type:inline-size;
    container-name:pse-hero;
}

@supports (font-size:1cqi){
    .pse-hero{
        --pse-hero-fs-live:clamp(.88em,1.55cqi,1em);
        --pse-hero-fs-eyebrow:clamp(.78em,1.45cqi,.9em);
        --pse-hero-fs-service:clamp(2.15em,5.8cqi,3.6em);
        --pse-hero-fs-when:clamp(1.25em,3.4cqi,1.95em);
        --pse-hero-fs-time-prefix:clamp(1em,2.15cqi,1.25em);
        --pse-hero-fs-time:clamp(2em,5.5cqi,3.15em);
        --pse-hero-fs-meta:clamp(.78em,1.5cqi,.9em);
        --pse-hero-clock-size:clamp(1.45em,3.4cqi,2em);
        --pse-hero-next-py:clamp(11px,2cqi,20px);
        --pse-hero-next-px:clamp(13px,2.6cqi,28px);
    }

    .pse-hero__live{
        padding:var(--pse-hero-next-py) var(--pse-hero-next-px);
        font-size:var(--pse-hero-fs-live);
        column-gap:clamp(12px,2.2cqi,22px);
    }
    .pse-hero__live-label,
    .pse-hero__live-service-name,
    .pse-hero__live-from,
    .pse-hero__live-location-name{font-size:1em}

    .pse-hero__next{
        padding:var(--pse-hero-next-py) var(--pse-hero-next-px);
    }
    .pse-hero__eyebrow{margin-bottom:clamp(.28em,.75cqi,.42em)}
    .pse-hero__eyebrow-label{font-size:var(--pse-hero-fs-eyebrow)}

    .pse-hero__service{
        font-size:var(--pse-hero-fs-service);
        line-height:1.02;
        margin:.06em 0 clamp(.14em,.45cqi,.22em);
        text-wrap:balance;
    }

    .pse-hero__main{
        gap:clamp(.35em,1.15cqi,.65em);
        row-gap:clamp(.3em,.8cqi,.5em);
    }
    .pse-hero__icon--clock{
        width:var(--pse-hero-clock-size);
        height:var(--pse-hero-clock-size);
    }
    .pse-hero__when{
        font-size:var(--pse-hero-fs-when);
        line-height:1;
    }
    .pse-hero__time{
        gap:clamp(.2em,.55cqi,.34em);
    }
    .pse-hero__time-prefix{
        font-size:var(--pse-hero-fs-time-prefix);
        line-height:1;
    }
    .pse-hero__time-value{
        font-size:var(--pse-hero-fs-time);
        line-height:.95;
    }
    .pse-hero__language{
        font-size:clamp(.72em,1.35cqi,.82em);
    }

    .pse-hero__details{
        gap:clamp(.65em,1.7cqi,1.1em);
        margin-top:clamp(.7em,1.7cqi,1.05em);
        padding-top:clamp(.55em,1.25cqi,.8em);
    }
    .pse-hero__location,
    .pse-hero__description{
        font-size:var(--pse-hero-fs-meta);
    }
    .pse-hero__icon--location{
        width:clamp(.9em,1.75cqi,1.05em);
        height:clamp(.9em,1.75cqi,1.05em);
    }
}

/* Safety for very narrow Divi columns: preserve hierarchy without overflow. */
@container pse-hero (max-width:430px){
    .pse-hero__main{align-items:baseline}
    .pse-hero__clock{align-self:center}
    .pse-hero__details{flex-wrap:wrap}
    .pse-hero__location + .pse-hero__description{
        width:100%;
        padding-left:0;
        border-left:0;
    }
}

/* 1.0.18 — cache-safe Hero hydration and container-aware LIVE strip. */
.pse-hero__loading{
    display:flex;
    align-items:center;
    gap:.6em;
    box-sizing:border-box;
    padding:14px 20px;
    font-size:.9em;
    line-height:1.35;
    opacity:.78;
}
.pse-hero__loading-dot{
    display:inline-block;
    width:.5em;
    height:.5em;
    flex:0 0 .5em;
    border-radius:50%;
    background:var(--gcid-secondary-color,currentColor);
    animation:pse-loading-pulse 1.2s ease-in-out infinite;
}
@keyframes pse-loading-pulse{0%,100%{opacity:.35}50%{opacity:1}}

.pse-hero--hydrated{animation:pse-hero-reveal .24s ease-out both}
@keyframes pse-hero-reveal{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){
    .pse-hero--hydrated,.pse-hero__loading-dot{animation:none}
}

/* The browser animates a percentage, never a pixel width. Resizing or rotating
   the device therefore keeps the same temporal progress automatically. */
.pse-hero__live.pse-live-progress--running::after{
    animation:pse-live-progress-run var(--pse-live-progress-duration,0ms) linear forwards;
}
@keyframes pse-live-progress-run{
    from{width:var(--pse-live-progress-start,var(--pse-live-progress,0%))}
    to{width:100%}
}

/* LIVE location now uses the same inline SVG as NEXT; no ETmodules dependency. */
.pse-hero__live-location .pse-hero__icon--location{
    width:1em;
    height:1em;
    flex:0 0 1em;
    color:var(--gcid-secondary-color);
}

/* 1.0.28 — Divi Text preset isolation.
   Never reset every descendant with `*`: that also cancels intentional PSE
   spacing (notably the eyebrow/service margins). Neutralise Divi only on the
   structural/inline parts whose spacing is owned by PSE. */
.home-nabozenstwa .pse-schedule--hero :where(
    .pse-hero__live,
    .pse-hero__live-stage,
    .pse-hero__live-slide,
    .pse-hero__live-status,
    .pse-hero__live-service,
    .pse-hero__live-location,
    .pse-hero__next,
    .pse-hero__main,
    .pse-hero__clock,
    .pse-hero__when,
    .pse-hero__time,
    .pse-hero__language,
    .pse-hero__details,
    .pse-hero__location,
    .pse-hero__description,
    .pse-hero__loading,
    .pse-hero__sizer,
    span, svg
){
    margin-block-end:0!important;
}

/* These two elements intentionally carry vertical rhythm. Re-assert the
   component values explicitly so Divi's logical margin cannot override them. */
.home-nabozenstwa .pse-schedule--hero .pse-hero__eyebrow{
    margin-block-end:.35em!important;
}
.home-nabozenstwa .pse-schedule--hero .pse-hero__service{
    margin-block-end:.18em!important;
}
@supports (font-size:1cqi){
    .home-nabozenstwa .pse-schedule--hero .pse-hero__eyebrow{
        margin-block-end:clamp(.28em,.75cqi,.42em)!important;
    }
    .home-nabozenstwa .pse-schedule--hero .pse-hero__service{
        margin-block-end:clamp(.14em,.45cqi,.22em)!important;
    }
}

@supports (font-size:1cqi){
    .pse-hero__loading{
        padding:var(--pse-hero-next-py) var(--pse-hero-next-px);
        font-size:clamp(.82em,1.5cqi,.92em);
    }
}



/* 1.0.24 — one LIVE row, any number of simultaneous CURRENT events.
   Slides occupy the same grid area, so crossfade never changes row height. */
.pse-hero__live{
    display:block;
    position:relative;
    z-index:auto;
    overflow:hidden;
    padding:0;
    transform-origin:center top;
}
.pse-hero__live-stage{
    display:grid;
    width:100%;
}
.pse-hero__live-slide{
    grid-area:1 / 1;
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    column-gap:clamp(12px,2.8cqi,20px);
    width:100%;
    box-sizing:border-box;
    padding:9px 13px;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .8s ease, visibility 0s linear .8s;
}
.pse-hero__live-slide.is-active{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
    transition-delay:0s;
}
.pse-hero__live-status,
.pse-hero__live-service,
.pse-hero__live-location,
.pse-hero__live-service-name,
.pse-hero__live-from,
.pse-hero__live-location-name{white-space:nowrap}
.pse-hero__live-slide.pse-live-fit--no-status-label .pse-hero__live-label{display:none}
.pse-hero__live-slide.pse-live-fit--no-status-label .pse-hero__live-status{padding-right:0;border-right:0}
.pse-hero__live-slide.pse-live-fit--no-location{grid-template-columns:auto minmax(0,1fr)}
.pse-hero__live-slide.pse-live-fit--no-location .pse-hero__live-location{display:none}
.pse-hero__live-slide.pse-live-fit--no-time .pse-hero__live-from{display:none}
.pse-hero__live.pse-live--entering{
    height:0;
    opacity:0;
    transform:translateY(-6px);
    will-change:height,opacity,transform;
}
.pse-hero__live.pse-live--entering.pse-live--motion-active{
    height:var(--pse-live-motion-height);
    opacity:1;
    transform:translateY(0);
    transition:height .42s cubic-bezier(.22,.61,.36,1),opacity .28s ease .04s,transform .42s cubic-bezier(.22,.61,.36,1);
}
.pse-hero__live.pse-live--leaving{
    height:var(--pse-live-motion-height);
    opacity:1;
    transform:translateY(0);
    will-change:height,opacity,transform;
}
.pse-hero__live.pse-live--leaving.pse-live--motion-active{
    height:0;
    opacity:0;
    transform:translateY(-6px);
    transition:height .42s cubic-bezier(.4,0,.2,1),opacity .24s ease,transform .42s cubic-bezier(.4,0,.2,1);
}
.pse-hero__live-dot.pse-live-dot--attention{
    animation:pse-live-dot-attention .9s ease-out 1;
}
@keyframes pse-live-dot-attention{
    0%{box-shadow:0 0 0 0 rgba(114,198,107,.45)}
    55%{box-shadow:0 0 0 8px rgba(114,198,107,0)}
    100%{box-shadow:0 0 0 4px rgba(114,198,107,.12)}
}
@media(prefers-reduced-motion:reduce){
    .pse-hero__live-slide{transition:none}
}

/* The lower information band always remains one line. */
.pse-hero__details{
    display:flex;
    flex-wrap:nowrap;
    min-width:0;
    overflow:hidden;
}
.pse-hero__location{
    flex:0 0 auto;
    min-width:0;
}
.pse-hero__description{
    flex:1 1 auto;
    min-width:0;
    overflow:hidden;
    white-space:nowrap;
}
.pse-hero__description-text{
    display:block;
    flex:1 1 auto;
    min-width:0;
    overflow:hidden;
    white-space:nowrap;
    text-overflow:clip;
    will-change:transform,opacity;
}
.pse-hero__description.is-overflowing{
    -webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 18px),transparent 100%);
    mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 18px),transparent 100%);
}


@media(prefers-reduced-motion:reduce){
    .pse-hero__live.pse-live--entering,
    .pse-hero__live.pse-live--leaving,
    .pse-hero__live-dot.pse-live-dot--attention{animation:none}
    .pse-hero__live.pse-live--entering,
    .pse-hero__live.pse-live--leaving{height:auto;opacity:1;transform:none;transition:none;will-change:auto}
    .pse-hero__description-text{will-change:auto}
}


/* 1.0.21 — intrinsic four-row Hero geometry.
   Do not guess the box height in pixels. The cached loading state contains an
   invisible copy of the same four responsive rows as the hydrated Hero, so the
   browser calculates the required height from the actual container width,
   typography, line-height and spacing. */
.pse-hero,
.pse-hero__next{
    --pse-hero-base-height:auto;
}
.pse-hero__next{
    min-height:0;
}
.pse-hero__next--loading{
    position:relative;
    display:block;
    min-height:0;
}
.pse-hero__sizer{
    visibility:hidden;
    pointer-events:none;
    user-select:none;
}
.pse-hero__next--loading > .pse-hero__loading{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    box-sizing:border-box;
}
/* The basic Hero always owns a fourth metadata row. Empty metadata reserves
   only that row's natural line box; it never creates the large blank area that
   the old min-height produced. */
.pse-hero__details--empty{
    visibility:hidden;
    min-height:1.3em;
}

/* 1.0.20 had a hard fallback min-height at the end of the cascade. Neutralise
   it explicitly after all legacy/mobile rules. */
.pse-hero{--pse-hero-base-height:auto!important}
.pse-hero__next{min-height:0!important}



/* 1.0.26 — NEXT metadata is information, never progressive-disclosure content.
   Location and note remain present at every container width. Only the note text
   may perform the measured one-time horizontal reveal when it truly overflows. */
.pse-hero__details{
    display:flex;
    flex-wrap:nowrap;
    align-items:center;
    min-width:0;
    overflow:hidden;
}
.pse-hero__location,
.pse-hero__description{
    display:flex;
    align-items:center;
    min-width:0;
    white-space:nowrap;
}
.pse-hero__location{
    flex:0 0 auto;
    max-width:none;
}
.pse-hero__description{
    flex:1 1 auto;
    overflow:hidden;
}
.pse-hero__details:not(.has-description) .pse-hero__location{flex:0 0 auto;max-width:100%}
.pse-hero__details:not(.has-location) .pse-hero__description{flex:1 1 100%;max-width:100%}
.pse-hero__location-text{
    white-space:nowrap;
}
.pse-hero__description-text{
    display:block;
    flex:1 1 auto;
    min-width:0;
    overflow:hidden;
    white-space:nowrap;
    text-overflow:clip;
}
.pse-hero__icon--note{
    width:1em;
    height:1em;
    flex:0 0 1em;
    color:var(--gcid-secondary-color);
}


/* 1.0.27 — LIVE information hierarchy and spacing refinement.
   The status label is the least important visible item. The dot carries LIVE
   semantics on narrow containers; reclaimed width is spent on event, time and
   location. Geometry is based on the Hero container, never the viewport. */
.pse-hero__live-status{
    gap:6px;
    padding-right:0;
    border-right:0;
}
.pse-hero__live-service{
    display:flex;
    align-items:center;
    min-width:0;
    gap:.48em;
}
.pse-hero__live-from{
    margin-left:0;
}
.pse-hero__live-location{
    gap:.32em;
    padding-left:.28em;
}
.pse-hero__live-location .pse-hero__icon--location{
    margin:0;
}
/* JavaScript also applies the same rule from measured clientWidth. This CSS
   makes the first frame consistent before/while fitting is evaluated. */
@container pse-hero (max-width:430px){
    .pse-hero__live-slide .pse-hero__live-label{display:none}
    .pse-hero__live-slide .pse-hero__live-status{padding-right:0;border-right:0}
}

/* 1.0.29 — measured NEXT description reveal.
   The note icon and viewport stay fixed. Only the max-content text track moves,
   exactly by the measured excess width. This separates clipping from animation;
   the previous implementation made the animated text its own clipping box. */
.pse-hero__description{
    overflow:hidden;
    -webkit-mask-image:none;
    mask-image:none;
}
.pse-hero__description-viewport{
    display:block;
    flex:1 1 auto;
    min-width:0;
    overflow:hidden;
    white-space:nowrap;
}
.pse-hero__description-text{
    display:inline-block;
    width:max-content;
    min-width:max-content;
    max-width:none;
    overflow:visible;
    white-space:nowrap;
    text-overflow:clip;
    will-change:transform;
}
.pse-hero__description.is-overflowing .pse-hero__description-viewport{
    -webkit-mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 18px),transparent 100%);
    mask-image:linear-gradient(to right,#000 0,#000 calc(100% - 18px),transparent 100%);
}
.pse-hero__description.is-overflowing.is-revealing .pse-hero__description-viewport{
    -webkit-mask-image:none;
    mask-image:none;
}
@media(prefers-reduced-motion:reduce){
    .pse-hero__description-text{will-change:auto}
}


/* 1.0.30 — natural NEXT metadata sizing and reliable measured reveal.
   Location consumes only its intrinsic content width; the note receives every
   remaining pixel. No 1/3–2/3 split is used. The viewport is therefore the
   authoritative width for overflow measurement at every container size. */
.pse-hero__details{
    gap:clamp(.8em,2.2cqi,1.15em);
}
.pse-hero__location,
.pse-hero__description{
    font-size:1em;
    line-height:1.32;
}
.pse-hero__location{
    flex:0 0 auto;
    max-width:none;
    overflow:visible;
}
.pse-hero__description{
    flex:1 1 0;
    min-width:0;
    max-width:none;
}
.pse-hero__description-viewport{
    flex:1 1 0;
    min-width:0;
    width:auto;
    max-width:100%;
}


/* 1.0.32 — Divi bottom-padding isolation + reliable NEXT note reveal.
   Divi's default Text preset emits a very broad descendant rule containing
   `padding-bottom: unset`. PSE now owns the final bottom edge explicitly, so
   the generated Divi rule cannot create/restore unwanted trailing space. */
.home-nabozenstwa .preset--module--divi-text--default .et_pb_text_inner .pse-schedule .pse-hero__next,
.home-nabozenstwa.preset--module--divi-text--default .et_pb_text_inner .pse-schedule .pse-hero__next{
    padding-bottom:0!important;
}

/* 1.0.33 — repeated measured NEXT note reveal.
   JavaScript moves only the inner text track with a fixed linear speed; the
   viewport and metadata icons remain stationary. */
.pse-hero__description-text{transform:translateX(0)}



/* 1.0.34 — NEXT metadata vertical rhythm + quick reveal reset.
   Location and note form one optical line. SVG icons, labels and the note
   viewport share the same vertical centre; the slow outward reading motion is
   controlled in JS, while the return is intentionally a quick UI reset. */
.pse-hero__details{
    align-items:center;
    min-height:1.55em;
}
.pse-hero__location,
.pse-hero__description{
    align-items:center;
    min-height:1.55em;
    line-height:1.25;
}
.pse-hero__location-text,
.pse-hero__description-viewport{
    align-items:center;
    min-height:1.55em;
    line-height:1.25;
}
.pse-hero__description-viewport{
    display:flex;
}
.pse-hero__icon--location,
.pse-hero__icon--note{
    display:block;
    align-self:center;
    margin-block:0;
    flex-shrink:0;
}
.pse-hero__description-text{
    line-height:1.25;
}

/* 1.0.39 — structural styling for the time-only [pse_times] shortcode.
   Typography, colours and surrounding composition remain under Divi control. */
.pse-times--inline,
.pse-times--lines{
    display:inline;
    margin:0;
    padding:0;
}
.pse-times__item,
.pse-times__time,
.pse-times__time-value,
.pse-times__language,
.pse-times__note,
.pse-times__separator{
    display:inline;
}
.pse-times__separator{
    white-space:pre-wrap;
}
.pse-times--list{
    margin-block:0;
}
.pse-times--empty{
    display:none!important;
}

/* Divi may wrap a standalone shortcode in its own paragraph. Reset only that
   paragraph and the immediately preceding paragraph for the inline/lines
   variants; unrelated text modules and normal paragraph rhythm remain intact. */
.et_pb_text_inner p:has(> :is(.pse-times--inline,.pse-times--lines):only-child),
.et_pb_text_inner p:has(+ p > :is(.pse-times--inline,.pse-times--lines):only-child){
    margin-bottom:0!important;
    padding-bottom:0!important;
}
