/* Sitewide 2027 language: opaque reading paper, original artwork outside copy.
   Shared front end/editor classes. No page IDs or client-side rebuilding. */
body :is(.elementor .e-con.card,.elementor .e-con.sloff-poster-surface,
.sloff-passes__card,.sloff-passes__preview-card,.sloff-passes__closed,.sloff-passes__helper,.sloff-passes__perks,.sloff-passes__comparison,.sloff-passes__faq,.sloff-passes__member-note,
.sloff-lineup-card,.sloff-lineup-archive__card,.sloff-film-heading,.sloff-film-section,.sloff-showtime,
.sloff-schedule__card,.sloff-schedule-meanwhile__card,.sloff-now-next__venue,
.sloff-venue-card,.sloff-awards__item,.sloff-sponsors__item,.sloff-content__empty,
.sloff-archive__award-group,.sloff-archive__tile,.sloff-archive__film,.sloff-archive-index__link,.sloff-archive-film__body,
.sloff-account__card,.sloff-theme-404,.sloff-post-content,
.sloff-theme-news .elementor-post,.sloff-theme-search .elementor-post){
--sloff-text:var(--sloff-ink);--sloff-text-body:var(--sloff-ink);--sloff-text-muted:#332f25;--sloff-text-faint:#534d3f;
--sloff-surface-1:var(--sloff-fest-paper);--sloff-surface-2:var(--sloff-fest-cream);--sloff-surface-3:var(--sloff-fest-cream);
--sloff-line:rgba(0,0,0,.28);--sloff-line-strong:rgba(0,0,0,.5);--sloff-line-input:rgba(0,0,0,.65);
--sloff-fest-accent:var(--sloff-ink);--sloff-fest-accent-hover:#332f25;--sloff-fest-accent-ink:var(--sloff-fest-paper);
--sloff-fest-highlight:var(--sloff-ink);--sloff-fest-highlight-ink:var(--sloff-fest-paper);
--sloff-palm-orange:var(--sloff-ink);--sloff-palm-orange-ink:var(--sloff-fest-paper);--sloff-focus:var(--sloff-ink);
--sloff-card-accent:var(--sloff-ink);--sloff-card-accent-ink:var(--sloff-fest-paper);
color:var(--sloff-ink);background-color:var(--sloff-fest-paper);border-color:var(--sloff-ink)}
/* Beats the kit's white h1–h6 (.elementor-kit-N h2); per-widget Elementor colors still win. */
body .elementor :where(.e-con.card,.e-con.sloff-poster-surface,
.sloff-passes__card,.sloff-passes__preview-card,.sloff-passes__closed,.sloff-passes__helper,.sloff-passes__perks,.sloff-passes__comparison,.sloff-passes__faq,.sloff-passes__member-note,
.sloff-lineup-card,.sloff-lineup-archive__card,.sloff-film-heading,.sloff-film-section,.sloff-showtime,
.sloff-schedule__card,.sloff-schedule-meanwhile__card,.sloff-now-next__venue,
.sloff-venue-card,.sloff-awards__item,.sloff-sponsors__item,.sloff-content__empty,
.sloff-archive__award-group,.sloff-archive__tile,.sloff-archive__film,.sloff-archive-index__link,.sloff-archive-film__body,
.sloff-account__card,.sloff-theme-404,.sloff-post-content,
.sloff-theme-news .elementor-post,.sloff-theme-search .elementor-post) :is(h1,h2,h3,h4,h5,h6){color:var(--sloff-text)}
/* The kit's white links (teal on hover) vanish on paper. */
body .elementor :where(.e-con.card,.e-con.sloff-poster-surface,.sloff-post-content,.sloff-theme-404) .elementor-widget-text-editor a{color:var(--sloff-text)}
body .elementor :where(.e-con.card,.e-con.sloff-poster-surface,.sloff-post-content,.sloff-theme-404) .elementor-widget-text-editor a:hover{color:var(--sloff-text);text-decoration:underline}
/* Photo links keep white text on their black scrim. Not --sloff-fest-paper: a dark year Look sets paper to #111 (Home recap tiles were black on black). */
body .sloff-content.sloff-archive--compact a.sloff-archive__link--photo{--sloff-text:#fff}
body .elementor .e-con.sloff-poster-surface{position:relative;isolation:isolate;overflow:hidden;border-radius:var(--sloff-radius-card);--sloff-poster-strip:48px}
body .elementor .e-con.sloff-poster-surface.sloff-tile{--sloff-poster-strip:96px}
@media(max-width:767px){body .elementor .e-con.sloff-poster-surface:not(.sloff-tile){--sloff-poster-strip:40px}}
/* Padding reserves a separate original-art footer below arbitrary-length copy. */
body .elementor .e-con.sloff-poster-surface:has(>.sloff-poster-texture){padding-bottom:calc(var(--padding-bottom,var(--sloff-space-5)) + var(--sloff-poster-strip))}
/* Home submit buttons: equal space to deadlines and footer art; capture the card's
   padding here because Elementor resets --padding-bottom on the nested row. */
.sloff-hero-panel-twin .card{--sloff-submit-space:var(--padding-bottom,var(--sloff-space-5))}
.sloff-hero-panel-twin .card>.elementor-widget-sloff-deadlines+.e-con{margin-top:calc(var(--sloff-submit-space) - var(--row-gap,12px));justify-content:center}
body .elementor .sloff-poster-surface>.elementor-widget-sloff-brand-art.sloff-poster-texture{position:absolute;inset:auto 0 0;width:100%;max-width:none;height:var(--sloff-poster-strip);z-index:-1;pointer-events:none;margin:0}
/* The app promo carries its own poster-art panel (approved app-promo mockup). */
body .elementor .e-con.sloff-poster-surface:has(>.elementor-widget-sloff-app-promo):has(>.sloff-poster-texture){padding-top:var(--padding-top,var(--sloff-space-5));padding-bottom:var(--padding-bottom,var(--sloff-space-5))}
body .elementor .e-con.sloff-poster-surface:has(>.elementor-widget-sloff-app-promo)>.sloff-poster-texture{display:none}
.sloff-poster-texture :is(picture,img,.elementor-widget-container){display:block;width:100%;height:100%}
/* festival-base.css (.sloff-brand-art img: contain) can load later; the band must fill its width. */
body .sloff-poster-texture img{object-fit:cover}
:where(body .elementor .sloff-poster-surface) .elementor-heading-title{color:var(--sloff-ink);font-weight:800;line-height:1.25;letter-spacing:0}
:where(body .elementor .sloff-poster-surface) .elementor-widget-text-editor{font-size:var(--sloff-fs-16);line-height:1.65}
/* Separate paragraphs read as blocks, not as one more line. Row patterns space themselves. */
body .elementor .elementor-widget-text-editor:not(.sloff-rules,.sloff-prizes,.sloff-chips) :is(p,ul,ol){margin-block:0}
body .elementor .elementor-widget-text-editor:not(.sloff-rules,.sloff-prizes,.sloff-chips) :is(p,ul,ol)+:is(p,ul,ol){margin-top:var(--sloff-space-4)}
body .elementor .e-con.sloff-poster-surface>.elementor-widget-heading+.elementor-widget-text-editor{margin-top:var(--sloff-space-2)}
body .elementor .sloff-poster-surface .elementor-widget-heading.eyebrow .elementor-heading-title{color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .elementor-widget-button:is(.btn-primary,.btn-secondary,.btn-orange,.btn-pink) a.elementor-button{background:var(--sloff-ink);border-color:var(--sloff-ink);color:var(--sloff-fest-paper);white-space:normal}
body .elementor .sloff-poster-surface .elementor-widget-button.btn-secondary a.elementor-button{background:transparent;color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .elementor-widget-button a.elementor-button:hover{background:var(--sloff-fest-cream);color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .sloff-app-promo :is(p,.sloff-app-promo__heading){color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .elementor-field-label{color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .elementor-field{background:var(--sloff-fest-paper);border-color:var(--sloff-ink);color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .elementor-widget-sloff-brand-art.sloff-poster-decoration{position:absolute;right:12px;bottom:0;width:140px;height:var(--sloff-poster-strip);z-index:0;pointer-events:none;margin:0}
body .elementor .sloff-poster-decoration :is(picture,img){width:100%;height:100%;object-fit:contain;object-position:bottom right}
/* Staff-selected membership art stays intact in normal flow. */
body .elementor .sloff-poster-surface:has(>.elementor-widget-image.sloff-tile-art img:not([src*="placeholder.png"]))>.sloff-poster-decoration{display:none}
/* The intro card sits in the same 1260 px column as the cards below it, not edge to edge.
   Outranks elementor-bridge.css's top-level section padding. Phones and tablets keep the text inset. */
body .elementor .e-con.e-con-full.sloff-poster-intro.sloff-poster-intro{box-sizing:border-box;width:calc(100% - 2 * var(--sloff-gutter));max-width:var(--sloff-content-max,1260px);margin-inline:auto;margin-top:calc(var(--sloff-space-4) * 2);margin-bottom:var(--sloff-space-5);padding-top:var(--sloff-space-6);--padding-left:var(--sloff-space-6);--padding-right:var(--sloff-space-6);padding-left:var(--padding-left);padding-right:var(--padding-right)}
@media(max-width:767px){body .elementor .e-con.e-con-full.sloff-poster-intro.sloff-poster-intro{margin-top:var(--sloff-space-4);--padding-left:var(--sloff-space-5);--padding-right:var(--sloff-space-5)}}
/* One top gap for every page: the distance from the bottom of the header to the first content (eyebrow, title or card edge).
   --sloff-page-top is the only number; change it here. Desktop 48 px, phones/small tablets 24 px (Ryan, 2026-10-30).
   Sets Elementor's own padding var on a page's first top-level container (boxed or full) and the margin on a first intro band; archive pages
   and film pages use the same var in archive.css. Hero pages draw their own frame and keep theirs. */
:root{--sloff-page-top:48px}
@media(max-width:767px){:root{--sloff-page-top:24px}}
body .elementor[data-elementor-type]:not([data-elementor-type="header"],[data-elementor-type="footer"])>.e-con:first-child:not(.sloff-poster-intro,:has(.sloff-hero)){--padding-top:var(--sloff-page-top);--padding-block-start:var(--sloff-page-top)}
body .elementor[data-elementor-type]:not([data-elementor-type="header"],[data-elementor-type="footer"])>.e-con.e-con-full.sloff-poster-intro.sloff-poster-intro:first-child{margin-top:var(--sloff-page-top)}
body .elementor[data-elementor-type]:not([data-elementor-type="header"],[data-elementor-type="footer"])>.e-con.e-con-full.sloff-poster-intro.sloff-poster-band:first-child{padding-top:0}
/* On a transparent intro (poster-band: Visit, Get Involved, Press, Sponsors...) the eyebrow, title and lead start at the column's
   left edge, flush with the cards below, on every width (DECISIONS: Ryan's move.jpg). An intro that is a visible card keeps its padding.
   Phones/tablets: containers nested in the band (Press puts the whole page there) drop Elementor's default 10 px too. */
/* Flush intro text must not inherit the poster surface's rounded clipping mask: it cuts into the first eyebrow letter. */
body .elementor .e-con.e-con-full.sloff-poster-intro.sloff-poster-band{--padding-left:0px;--padding-right:0px;border-radius:0;overflow:visible}
@media(max-width:1024px){body .elementor .e-con.sloff-poster-intro.sloff-poster-band>.e-con:not(.card,.sloff-poster-surface){--padding-left:0px;--padding-right:0px}}
/* Link cards pad their children for the arrow (elementor-bridge.css); the art strip still runs edge to edge. */
body .elementor .e-con.card.sloff-link-card>.elementor-element.sloff-poster-texture{padding-right:0}
/* News archive: phone gutter like every other page (template pads 24), filter pills flush with the heading. */
@media(max-width:767px){body .elementor .e-con.sloff-theme-news{--padding-left:var(--sloff-gutter,16px);--padding-right:var(--sloff-gutter,16px)}}
body .elementor .sloff-theme-news .e-con.sloff-news-filters{--padding-left:0px;--padding-right:0px}
/* My account: its page section pads 24; phones use the site gutter like every other page. */
@media(max-width:767px){body .elementor .e-con.e-parent:has(>.e-con-inner>.elementor-widget-sloff-account-tabs){--padding-left:var(--sloff-gutter,16px);--padding-right:var(--sloff-gutter,16px)}}
/* Phone numbers never break across lines. */
body a[href^="tel:"]{white-space:nowrap}
body:not(.elementor-editor-active):has(.sloff-hero--poster-2027.sloff-hero--panel) .sloff-hero-panel-twin{display:none}
body .elementor .sloff-poster-surface :is(.sloff-palm,.sloff-archive,.sloff-deadlines){color:var(--sloff-ink)}
/* Home module rhythm (Ryan, 2026-10-30): use the narrowest existing module gap, 24 px,
   at every width. Identify Home by its hero widget, never a page/Elementor ID. Each
   section owns the gap above it, so hidden phase sections cannot double the gap.
   Keep card interiors, mosaic gutters and the Get Involved artwork inset intact. */
body .elementor[data-elementor-type="wp-page"]:has(>.e-con>.elementor-widget-sloff-festival-hero){--sloff-home-gap:24px;padding-bottom:var(--sloff-home-gap)}
body .elementor[data-elementor-type="wp-page"]:has(>.e-con>.elementor-widget-sloff-festival-hero)>.e-con:not(:has(>.elementor-widget-sloff-festival-hero)){--padding-top:var(--sloff-home-gap);--padding-bottom:0px;--padding-block-start:var(--sloff-home-gap);--padding-block-end:0px;margin-block:0}

/* Shared artwork behind four separate Home cards. The section's own padding stays outside the backdrop,
   so the band keeps the same gap to its neighbours as the other Home sections. */
body .elementor .e-con.sloff-poster-band:has(>.e-con.sloff-poster-band){padding-block:calc(var(--padding-top,0px) + var(--sloff-space-6)) calc(var(--padding-bottom,0px) + var(--sloff-space-6))}
body .elementor .e-con.sloff-poster-band:has(>.e-con.sloff-poster-band)>.sloff-poster-texture{height:100%}
/* The backdrop spans the module width (inside the section's gutter padding), like the other Home modules. */
body .elementor .e-con.sloff-poster-band:has(>.e-con.sloff-poster-band){background:transparent;border-radius:0;overflow:visible;padding-inline:calc(var(--padding-left,var(--sloff-gutter)) + var(--sloff-space-5))}
body .elementor .e-con.sloff-poster-band:has(>.e-con.sloff-poster-band)>.elementor-widget-sloff-brand-art.sloff-poster-texture{inset:var(--padding-top,0px) var(--padding-right,var(--sloff-gutter)) var(--padding-bottom,0px) var(--padding-left,var(--sloff-gutter));width:auto;height:auto;overflow:hidden;border-radius:var(--sloff-radius-card);background:var(--sloff-fest-paper)}
body .elementor .e-con.sloff-poster-band:has(>.sloff-tile){background:transparent;padding:0;overflow:visible}
body .elementor .e-con.sloff-poster-band:has(>.sloff-tile)>.sloff-poster-texture{display:none}
body .elementor .e-con.sloff-tile{min-height:300px;padding:24px 22px 142px;border:1px solid var(--sloff-ink);background:var(--sloff-fest-paper)}
body .elementor .e-con.sloff-tile>.sloff-poster-texture{height:116px}
body .elementor .e-con.sloff-tile>.sloff-poster-decoration{width:70%;height:106px;right:0}
body .elementor .e-con.sloff-tile .elementor-heading-title{font-weight:800;line-height:1.25}
body .elementor .e-con.sloff-tile .elementor-widget-text-editor{font-size:var(--sloff-fs-16);line-height:1.65}
/* Field rules also cover saved Elementor Pro selectors. */
body .elementor .sloff-poster-surface .elementor-element.elementor-widget-form.sloff-newsletter-form .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper){background:var(--sloff-fest-paper);color:var(--sloff-ink);border-color:var(--sloff-ink)}
body .elementor .sloff-poster-surface .elementor-widget-form.sloff-newsletter-form .elementor-field-group>label.elementor-field-label{color:var(--sloff-ink)}
/* Data-heavy screens use quiet panels; photos and historical-year art are retained. */
body :is(.sloff-film-heading,.sloff-film-section){padding:var(--sloff-space-5);border-radius:var(--sloff-radius-card)}
body :is(.sloff-archive-film__body,.sloff-post-content){padding:var(--sloff-space-5);border-radius:var(--sloff-radius-card)}
body .sloff-archive-film__badge{background:var(--sloff-fest-cream);color:#000}
body .sloff-schedule__card{padding:var(--sloff-space-4);border:1px solid var(--sloff-ink);border-radius:var(--sloff-radius-card)}
body :is(.sloff-venue-card){border-top:8px solid var(--sloff-fest-cream)}
body :is(.sloff-lineup-card,.sloff-lineup-archive__card) h3{font-size:var(--sloff-fs-16)}
body :is(.sloff-lineup-card,.sloff-lineup-archive__card) p{font-size:var(--sloff-fs-14)}
body :is(.sloff-film-heading,.sloff-film-section,.sloff-showtime) .btn-secondary{color:var(--sloff-ink)}
body :is(.sloff-film-heading,.sloff-film-section) .sloff-film-favorite[aria-pressed=true]{background:var(--sloff-fest-cream);color:#111}
body :is(.sloff-theme-news,.sloff-theme-search) .elementor-post{padding:var(--sloff-space-4);border-radius:var(--sloff-radius-card)}
body .sloff-theme-news .elementor-post__text{padding:var(--sloff-space-3)}
body .sloff-schedule-meanwhile__card{border-color:var(--sloff-ink)}
body :is(.sloff-passes__card,.sloff-account__card,.sloff-venue-card) a:focus-visible{outline:3px solid var(--sloff-ink);outline-offset:3px}
@media(max-width:1024px) and (min-width:768px){body .elementor .e-con.sloff-poster-band:has(>.sloff-tile){display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}body .elementor .e-con.sloff-poster-band>.sloff-tile{width:auto}}
@media(max-width:767px){body .elementor .e-con.sloff-tile{min-height:245px;padding:22px 20px 114px}body .elementor .e-con.sloff-tile>.sloff-poster-texture{height:92px}body .elementor .e-con.sloff-tile>.sloff-poster-decoration{height:82px}}
/* Approved Home newsletter: native editable widgets in a cream reading column, supplied art at right.
   Loads with the card's brand-art widgets. A Follow widget kept by a design-only update stays hidden. */
body .elementor .e-con.sloff-newsletter-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(90px,22%);grid-template-rows:auto auto auto auto;gap:0;position:relative;isolation:isolate;overflow:hidden;padding:0;--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;border:0;border-radius:var(--sloff-radius-panel);background:color-mix(in srgb,var(--sloff-fest-cream) 55%,var(--sloff-text));color:var(--sloff-ink)}
body .elementor .sloff-newsletter-card>.elementor-widget:not(.sloff-newsletter-art,.sloff-newsletter-bird){grid-column:1;min-width:0;width:auto;margin-inline:32px}
body .elementor .sloff-newsletter-card>.sloff-newsletter-eyebrow{grid-row:1;margin-top:34px;margin-bottom:15px}
body .elementor .sloff-newsletter-card .sloff-newsletter-eyebrow .elementor-heading-title{font-size:var(--sloff-fs-11);font-weight:var(--sloff-fw-extrabold);letter-spacing:var(--sloff-ls-eyebrow);text-transform:uppercase;color:var(--sloff-ink)}
body .elementor .sloff-newsletter-card>.sloff-newsletter-heading{grid-row:2}
body .elementor .sloff-newsletter-card .sloff-newsletter-heading .elementor-heading-title.elementor-heading-title{font-size:clamp(32px,4vw,48px);font-weight:var(--sloff-fw-extrabold);letter-spacing:-.045em;line-height:1.06;text-transform:none;color:var(--sloff-ink)}
body .elementor .sloff-newsletter-card>.sloff-newsletter-description{grid-row:3;margin-top:17px;margin-bottom:22px;font-size:var(--sloff-fs-15);line-height:1.65;color:var(--sloff-ink)}
body .elementor .sloff-newsletter-card .sloff-newsletter-description p{margin:0;max-width:45ch}
body .elementor .sloff-newsletter-card>.sloff-newsletter-form{grid-row:4;margin-bottom:36px}
body .elementor .sloff-newsletter-card .elementor-widget-form.sloff-newsletter-form .elementor-field-group>label.elementor-field-label{color:var(--sloff-ink);margin-bottom:8px}
body .elementor .sloff-newsletter-card .elementor-element.elementor-widget-form.sloff-newsletter-form .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper){background:color-mix(in srgb,var(--sloff-fest-cream) 25%,var(--sloff-text));border-color:color-mix(in srgb,var(--sloff-ink) 55%,transparent);color:var(--sloff-ink)}
body .elementor .sloff-newsletter-card .elementor-field::placeholder{color:color-mix(in srgb,var(--sloff-ink) 65%,transparent);opacity:1}
body .elementor .sloff-newsletter-card .elementor-button{border-color:var(--sloff-ink)}
body .elementor .sloff-newsletter-card>.elementor-widget-sloff-brand-art.sloff-newsletter-art{grid-column:2;grid-row:1 / 5;align-self:stretch;height:100%;width:100%;margin:0;contain:size}
body .elementor .sloff-newsletter-art :is(.elementor-widget-container,.sloff-brand-art,picture,img){display:block;width:100%;height:100%;object-fit:cover}
body .elementor .sloff-newsletter-card>.sloff-newsletter-bird{position:absolute;right:5%;bottom:20px;width:12%;max-width:110px;margin:0;pointer-events:none}
body .elementor .sloff-newsletter-card>.elementor-widget-sloff-social-follow{display:none}
@media(max-width:767px){body .elementor .e-con.sloff-newsletter-card{grid-template-columns:minmax(0,1fr) 70px}body .elementor .sloff-newsletter-card>.elementor-widget:not(.sloff-newsletter-art,.sloff-newsletter-bird){margin-inline:22px}body .elementor .sloff-newsletter-card>.sloff-newsletter-eyebrow{margin-top:28px}body .elementor .sloff-newsletter-card>.sloff-newsletter-form{margin-bottom:28px}body .elementor .sloff-newsletter-card .elementor-field-type-submit,body .elementor .sloff-newsletter-card .elementor-button{width:100%}body .elementor .sloff-newsletter-card .elementor-field{font-size:var(--sloff-fs-16)}body .elementor .sloff-newsletter-card>.sloff-newsletter-bird{right:6px;width:58px}}
@media(max-width:360px){body .elementor .e-con.sloff-newsletter-card{grid-template-columns:minmax(0,1fr)}body .elementor .sloff-newsletter-card>.elementor-widget-sloff-brand-art.sloff-newsletter-art{grid-column:1;grid-row:5;height:48px}body .elementor .sloff-newsletter-card>.sloff-newsletter-bird{display:none}}
/* Icon-list links ("On this page", resource lists): at least 24 px tall on every screen (WCAG 2.5.8; they were 22.5 px on phones). The desktop rail adds its own padding. */
body .elementor .elementor-widget-icon-list .elementor-icon-list-item>a{min-height:24px}

/* Visit lists all venues directly: one 24 px gap after the intro, rather than additive padding/margin.
   Structural global classes also cover the already-saved Elementor layout. */
body .elementor .e-con.e-con-full.sloff-poster-intro.sloff-poster-band:has(+.e-con .elementor-widget-sloff-venues){margin-bottom:0;padding-bottom:0;--padding-bottom:0px;--padding-block-end:0px}
body .elementor .sloff-poster-intro+.e-con:has(.elementor-widget-sloff-venues){padding-top:24px;--padding-top:24px;--padding-block-start:24px}
