/* KHFF — Elementor layer. Loaded after styles.css. Makes native Elementor
   widget markup obey the same rules as the source design. */
.elementor-widget { margin: 0; }
.elementor-widget-container > p:last-child,
.elementor-widget-container > .elementor-heading-title { margin-bottom: 0; }
.elementor-widget-text-editor > .elementor-widget-container > p:first-child { margin-top: 0; }

/* A KHFF text class sits on the widget wrapper — make the inner tag obey it. */
.khff-t .elementor-heading-title,
.khff-t .elementor-widget-container > p,
.khff-t .elementor-widget-container { font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; margin: 0; }
.khff-t .elementor-widget-container > p + p { margin-top: var(--space-4); }

.elementor-widget-heading .elementor-heading-title { margin: 0; color: inherit; }

/* Buttons — mirror .btn / .btn--ghost */
.elementor-button {
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: var(--tracking-over); text-transform: uppercase;
  background: var(--color-accent); color: var(--color-on-accent);
  border: 1px solid var(--color-accent); border-radius: var(--radius-sm);
  padding: var(--space-4) var(--space-6); min-height: 48px;
  text-decoration: none; transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
}
.elementor-button:hover, .elementor-button:focus-visible { background: var(--color-accent-hi); border-color: var(--color-accent-hi); color: var(--color-on-accent); text-decoration: none; }
.khff-ghost .elementor-button { background: transparent; color: var(--color-text); border-color: var(--color-line); }
.khff-ghost .elementor-button:hover { background: transparent; color: var(--color-accent); border-color: var(--color-accent); }

/* Accordion — mirror the details/summary treatment */
.khff-accordion .elementor-accordion { border: 0; }
.khff-accordion .elementor-accordion-item { border: 0; border-bottom: var(--border-hairline); }
.khff-accordion .elementor-accordion-item:first-child { border-top: var(--border-hairline); }
.khff-accordion .elementor-tab-title {
  background: transparent; border: 0; padding: var(--space-5) 0;
  font-family: var(--font-display); font-size: 1.1875rem; line-height: 1.35;
  color: var(--color-text); display: flex; align-items: baseline; gap: var(--space-6);
}
.khff-accordion .elementor-tab-title a { color: inherit; text-decoration: none; }
.khff-accordion .elementor-tab-title:hover, .khff-accordion .elementor-tab-title.elementor-active { color: var(--color-accent); }
.khff-accordion .elementor-accordion-icon { margin-left: auto; order: 2; color: var(--color-accent); }
.khff-accordion .elementor-accordion-icon svg { width: 13px; height: 13px; fill: currentColor; }
.khff-accordion .elementor-tab-content {
  background: transparent; border: 0; padding: 0 0 var(--space-6);
  color: var(--color-text-muted); max-width: var(--measure);
}
.khff-accordion .elementor-tab-content p { color: inherit; }

.khff-frame img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: var(--radius-md); }
.e-con.e-con--boxed > .e-con-inner { max-width: var(--container); padding-left: var(--gutter); padding-right: var(--gutter); margin: 0 auto; }
/* ---- text roles used by the converted pages ---- */
.khff-meta-label { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-over); text-transform: uppercase; color: var(--color-text-faint); }
.khff-meta-val { font-family: var(--font-mono); font-size: var(--size-body); color: var(--color-text); font-variant-numeric: tabular-nums; }
.khff-meta-val--plain { font-family: var(--font-body); }
.khff-body { color: var(--color-text-muted); }
.khff-body .elementor-widget-container > p { max-width: var(--measure); }

/* timeline mark as a widget wrapper */
.elementor-widget.timeline__mark {
  flex: none; width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-accent); border-radius: var(--radius-pill);
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.06em; color: var(--color-accent);
}
.elementor-widget.timeline__mark .elementor-widget-container { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }
.elementor-widget.timeline__mark--now { background: var(--color-ember); border-color: var(--color-ember); color: #fff; }
.timeline__date--now { color: var(--color-ember-hi); }

/* stat cells: the class carries the skin, Elementor carries the layout */
.elementor-element.stat { background: var(--color-bg); }
.elementor-element.stats { background: var(--color-line); border: var(--border-hairline); border-radius: var(--radius-md); overflow: hidden; }

/* cards */
.elementor-element.card { background: var(--color-surface); border: var(--border-hairline); border-radius: var(--radius-md); }
.elementor-element.card .card__foot { margin-top: auto; padding-top: var(--space-4); border-top: var(--border-hairline); }

/* section-head supporting column keeps the stack rhythm */
.khff-t.muted .elementor-widget-container > p { color: var(--color-text-muted); }
/* ---- keep the page dark: Astra and Elementor both paint a light wrapper ---- */
html, body { background: var(--color-bg); }
#page, #content, .site, .site-content, .ast-container, .entry-content,
.elementor, .elementor-inner, .elementor-section-wrap,
[data-elementor-type="wp-page"] { background: transparent; }
body.elementor-page #main,
body.elementor-page .site-content { background: var(--color-bg); }
.e-con { background-color: transparent; }
/* ---- footer sits outside #main, so paint it explicitly ---- */
.site-footer { background: var(--color-bg); }
body { background: var(--color-bg) !important; }

/* ---- buttons: beat Elementor's kit defaults on specificity ---- */
.elementor-widget-button .elementor-button,
.elementor-widget-button .elementor-button:visited {
  background-color: var(--color-accent);
  border: 1px solid var(--color-accent);
  color: var(--color-on-accent);
  fill: var(--color-on-accent);
}
.elementor-widget-button .elementor-button:hover,
.elementor-widget-button .elementor-button:focus {
  background-color: var(--color-accent-hi);
  border-color: var(--color-accent-hi);
  color: var(--color-on-accent);
}
.elementor-widget-button.khff-ghost .elementor-button,
.elementor-widget-button.khff-ghost .elementor-button:visited {
  background-color: transparent;
  border-color: var(--color-line);
  color: var(--color-text);
}
.elementor-widget-button.khff-ghost .elementor-button:hover,
.elementor-widget-button.khff-ghost .elementor-button:focus {
  background-color: transparent;
  border-color: var(--color-accent);
  color: var(--color-accent);
}
.elementor-button .elementor-button-content-wrapper { gap: 0; }
.elementor-button .elementor-button-text { font: inherit; letter-spacing: inherit; }
/* ------------------------------------------------------------------
   Typography parity — re-assert the source values at a specificity
   the theme and Elementor kit cannot override.
   ------------------------------------------------------------------ */
.elementor .elementor-widget-heading .elementor-heading-title,
.elementor .elementor-widget-heading h1,
.elementor .elementor-widget-heading h2,
.elementor .elementor-widget-heading h3,
.elementor .elementor-widget-heading h4 {
  font-family: var(--font-display);
  font-weight: 500;
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-display);
  color: var(--color-text);
  margin: 0;
  text-wrap: pretty;
}
.elementor .elementor-widget-heading h1.elementor-heading-title { font-size: var(--size-h1); }
.elementor .elementor-widget-heading h2.elementor-heading-title { font-size: var(--size-h2); }
.elementor .elementor-widget-heading h3.elementor-heading-title { font-size: var(--size-h3); }
.elementor .hero .elementor-widget-heading h1.elementor-heading-title { font-size: var(--size-display); }

/* body copy */
.elementor .elementor-widget-text-editor,
.elementor .elementor-widget-text-editor .elementor-widget-container,
.elementor .elementor-widget-text-editor p {
  font-family: var(--font-body);
  font-weight: 300;
  line-height: var(--leading-body);
}
.elementor .elementor-widget-text-editor p { font-size: var(--size-body); margin: 0; }
.elementor .elementor-widget-text-editor p + p { margin-top: var(--space-4); }

/* the wrapper-class roles win over the generic body rule */
.elementor .khff-t .elementor-widget-container,
.elementor .khff-t .elementor-widget-container > p,
.elementor .khff-t .elementor-heading-title {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  margin: 0;
}
.elementor .khff-t .elementor-widget-container > p + p { margin-top: var(--space-4); }

.elementor .khff-t.lede { font-size: clamp(1.1rem, 2.2vw, 1.375rem); line-height: 1.5; color: var(--color-text-muted); font-family: var(--font-body); font-weight: 300; max-width: 52ch; }
.elementor .khff-t.overline { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: var(--tracking-over); text-transform: uppercase; color: var(--color-accent); line-height: 1.5; }
.elementor .khff-t.overline--ember { color: var(--color-ember-hi); }
.elementor .khff-t.muted, .elementor .khff-t.khff-body { font-family: var(--font-body); font-size: var(--size-body); font-weight: 300; line-height: var(--leading-body); color: var(--color-text-muted); }

/* accordion title matches the source summary */
.elementor .khff-accordion .elementor-tab-title { font-family: var(--font-display); font-weight: 500; font-size: 1.1875rem; line-height: 1.35; letter-spacing: var(--tracking-display); }
.elementor .khff-accordion .elementor-tab-content p { font-family: var(--font-body); font-size: var(--size-body); font-weight: 300; line-height: var(--leading-body); }
/* ghost button — highest specificity, after the parity block */
.elementor .elementor-widget-button.khff-ghost .elementor-button,
.elementor .elementor-widget-button.khff-ghost .elementor-button:visited,
.elementor .elementor-element.khff-ghost a.elementor-button {
  background-color: transparent;
  background-image: none;
  border: 1px solid var(--color-line);
  color: var(--color-text);
}
.elementor .elementor-widget-button.khff-ghost .elementor-button:hover,
.elementor .elementor-element.khff-ghost a.elementor-button:hover {
  background-color: transparent;
  border-color: var(--color-accent);
  color: var(--color-accent);
}
/* tighten the hero stack so it lands in one screen */
.elementor .hero .elementor-widget-heading h1.elementor-heading-title { margin: 0; }
/* ------------------------------------------------------------------
   Section skins WITHOUT padding, so Elementor keeps control of spacing.
   (.hero / .cta-band in styles.css set padding-block, which outranks
   Elementor's padding variables and broke the spacing controls.)
   ------------------------------------------------------------------ */
.khff-hero-bg {
  border-bottom: var(--border-hairline);
  background:
    radial-gradient(120% 120% at 78% 0%, rgba(226, 114, 31, 0.10), transparent 62%),
    radial-gradient(80% 70% at 8% 100%, rgba(168, 58, 34, 0.08), transparent 60%);
}
.khff-cta-bg {
  background: var(--color-bg-alt);
  border-top: var(--border-hairline);
  border-bottom: var(--border-hairline);
}
.khff-ruled { border-top: var(--border-hairline); }
.elementor .khff-hero-bg .elementor-widget-heading h1.elementor-heading-title { font-size: var(--size-display); }
/* ---- one accent only: the deep red is never used for text ---- */
.elementor .khff-t.overline--ember { color: var(--color-accent); }
.elementor .khff-accordion .elementor-tab-title,
.elementor .khff-accordion .elementor-tab-title a { color: var(--color-text); }
.elementor .khff-accordion .elementor-tab-title:hover,
.elementor .khff-accordion .elementor-tab-title:hover a,
.elementor .khff-accordion .elementor-tab-title.elementor-active,
.elementor .khff-accordion .elementor-tab-title.elementor-active a { color: var(--color-accent); }
.elementor .khff-accordion .elementor-accordion-icon,
.elementor .khff-accordion .elementor-accordion-icon svg { color: var(--color-accent); fill: var(--color-accent); }
/* the festival dates row keeps the red — the one exception */
.elementor .khff-t.timeline__date--now { color: var(--color-ember-hi); }
/* ---- page header skin (no padding, Elementor owns spacing) ---- */
.khff-pagehead-bg {
  border-bottom: var(--border-hairline);
  background: radial-gradient(110% 100% at 88% 0%, rgba(226, 114, 31, 0.08), transparent 60%);
}

/* ---- people: team members and jurors ---- */
.elementor .khff-t.khff-name { font-family: var(--font-display); font-weight: 500; font-size: 1.125rem; line-height: 1.2; color: #FFFFFF; }
.elementor .khff-t.khff-name--lg { font-size: 1.5rem; }
.elementor .khff-t.khff-role { font-family: var(--font-mono); font-weight: 700; font-size: var(--size-micro); letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-accent); line-height: 1.5; }
.elementor .khff-t.khff-bio { font-family: var(--font-body); font-weight: 300; font-size: var(--size-small); line-height: var(--leading-body); color: var(--color-text-muted); }

.khff-photo-ph {
  border: var(--border-hairline); border-radius: var(--radius-md);
  background: var(--color-surface); text-align: center;
}
.khff-photo-ph .elementor-widget-container,
.khff-photo-ph p {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--color-text-faint); line-height: 1.9;
}
.khff-photo img { border-radius: var(--radius-md); object-fit: cover; width: 100%; }
.khff-photo--team img { aspect-ratio: 3 / 4; }
.khff-photo--juror img { aspect-ratio: 4 / 5; }
.khff-photo--wide img { aspect-ratio: 16 / 9; }

/* ---- label / value detail rows ---- */
.khff-dl { border-top: var(--border-hairline); }
.khff-dl-row { border-bottom: var(--border-hairline); }
.elementor .khff-t.khff-dl-label { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-faint); line-height: 1.5; }
.elementor .khff-t.khff-dl-value { font-family: var(--font-body); font-weight: 300; font-size: var(--size-body); line-height: var(--leading-body); color: var(--color-text); }
.elementor .khff-t.khff-dl-value a { color: var(--color-accent); text-decoration: none; display: block; }
.elementor .khff-t.khff-dl-value a:hover { color: var(--color-accent-hi); text-decoration: underline; }

/* ---- map ---- */
.khff-map iframe, .khff-map .elementor-custom-embed {
  filter: grayscale(0.55) contrast(1.05) brightness(0.82);
  border: 0; display: block; width: 100%;
}
.khff-map { border: var(--border-hairline); border-radius: var(--radius-md); overflow: hidden; }
/* ---- coming-soon notice ---- */
.khff-notice-bg { background: var(--color-surface); border: var(--border-hairline); border-left: 2px solid var(--color-ember); border-radius: var(--radius-md); max-width: 62ch; }
.elementor .khff-t.khff-notice-body { font-family: var(--font-display); font-weight: 500; font-size: 1.625rem; line-height: 1.35; letter-spacing: var(--tracking-display); color: var(--color-text); }
.elementor .khff-t.faint { font-family: var(--font-body); font-weight: 300; font-size: var(--size-small); line-height: var(--leading-body); color: var(--color-text-faint); }

/* ---- newsfeed rows ---- */
.khff-news { border-top: var(--border-hairline); }
.khff-news-row { border-bottom: var(--border-hairline); }
.elementor .khff-t.khff-news-date { font-family: var(--font-mono); font-size: var(--size-small); color: var(--color-text-faint); font-variant-numeric: tabular-nums; line-height: 1.5; }
.elementor .khff-t.khff-news-tag { line-height: 1; }
.elementor .khff-t.khff-news-tag p { display: inline-block; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-accent); border: var(--border-hairline); border-radius: var(--radius-pill); padding: 3px 12px; }
.elementor .khff-news-row .elementor-widget-heading h2.elementor-heading-title { font-size: var(--size-h3); }

/* ---- award rows ---- */
.khff-awards { border-top: var(--border-hairline); }
.khff-award-row { border-bottom: var(--border-hairline); }
.elementor .khff-t.khff-award-name { font-family: var(--font-display); font-weight: 500; font-size: 1.25rem; line-height: 1.3; color: var(--color-text); }
.elementor .khff-award-row--main .khff-t.khff-award-name { color: var(--color-accent); }
.elementor .khff-t.khff-award-meta { font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-faint); line-height: 1.5; }

/* ------------------------------------------------------------------
   Data tables (HTML widgets — no native Elementor equivalent)
   ------------------------------------------------------------------ */
.elementor .table-scroll {
  overflow-x: auto;
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}
.elementor .table-scroll table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  margin: 0;
  font-size: var(--size-body);
}
.elementor .table-scroll th,
.elementor .table-scroll td {
  padding: var(--space-4) var(--space-5);
  text-align: left;
  vertical-align: top;
  border-bottom: var(--border-hairline);
}
.elementor .table-scroll thead th {
  font-family: var(--font-mono);
  font-size: var(--size-micro);
  font-weight: 400;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-text-faint);
  background: var(--color-bg-alt);
  white-space: nowrap;
}
.elementor .table-scroll tbody th {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.0625rem;
  color: var(--color-text);
  width: 28%;
  border-right: var(--border-hairline);
}
.elementor .table-scroll tbody td { color: var(--color-text-muted); }
.elementor .table-scroll tbody tr:last-child th,
.elementor .table-scroll tbody tr:last-child td { border-bottom: 0; }
.elementor .table-scroll tbody tr:hover th,
.elementor .table-scroll tbody tr:hover td { background: rgba(226, 114, 31, 0.045); }
.elementor .table-scroll td.mono {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
@media (max-width: 699px) {
  .elementor .table-scroll th,
  .elementor .table-scroll td { padding: var(--space-3) var(--space-4); }
}

/* table footnote */
.elementor .khff-t.khff-note {
  font-family: var(--font-body);
  font-weight: 300;
  font-style: italic;
  font-size: var(--size-small);
  line-height: var(--leading-body);
  color: var(--color-text-faint);
}
/* ---- table emphasis rules: bright frame, strong header underline ---- */
.elementor .table-scroll {
  border-color: rgba(237, 233, 227, 0.55);
}
.elementor .table-scroll thead th {
  border-bottom: 2px solid rgba(237, 233, 227, 0.8);
}
/* ------------------------------------------------------------------
   people: force the inner tag, the generic text-editor rule was
   winning on font-family and size
   ------------------------------------------------------------------ */
.elementor .khff-name > .elementor-widget-container,
.elementor .khff-name > .elementor-widget-container > p {
  font-family: var(--font-display) !important;
  font-weight: 500 !important;
  font-size: 1.125rem !important;
  line-height: 1.2 !important;
  letter-spacing: var(--tracking-display) !important;
  color: #FFFFFF !important;
}
.elementor .khff-name--lg > .elementor-widget-container,
.elementor .khff-name--lg > .elementor-widget-container > p {
  font-size: 1.5rem !important;
}
.elementor .khff-role > .elementor-widget-container,
.elementor .khff-role > .elementor-widget-container > p {
  font-family: var(--font-mono) !important;
  font-weight: 700 !important;
  font-size: var(--size-micro) !important;
  line-height: 1.5 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: var(--color-accent) !important;
}
.elementor .khff-bio > .elementor-widget-container,
.elementor .khff-bio > .elementor-widget-container > p {
  font-family: var(--font-body) !important;
  font-weight: 300 !important;
  font-size: var(--size-small) !important;
  line-height: var(--leading-body) !important;
  color: var(--color-text-muted) !important;
}
.elementor .khff-bio { margin-top: var(--space-3); }

/* portrait placeholders keep their aspect */
.khff-photo-ph { aspect-ratio: 3 / 4; }
.khff-photo-ph--juror { aspect-ratio: 4 / 5; }
/* ------------------------------------------------------------------
   The .elementor-widget-container wrapper may be absent — Elementor
   prints the <p> straight inside the widget element. Every rule below
   therefore covers both shapes.
   ------------------------------------------------------------------ */
.elementor .khff-t > p,
.elementor .khff-t > .elementor-widget-container,
.elementor .khff-t > .elementor-widget-container > p,
.elementor .khff-t .elementor-heading-title {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  margin: 0;
}
.elementor .khff-t > p + p,
.elementor .khff-t > .elementor-widget-container > p + p { margin-top: var(--space-4); }

.elementor .khff-name > p,
.elementor .khff-name > .elementor-widget-container > p {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.125rem;
  line-height: 1.2;
  letter-spacing: var(--tracking-display);
  color: #FFFFFF;
}
.elementor .khff-name--lg > p,
.elementor .khff-name--lg > .elementor-widget-container > p { font-size: 1.5rem; }

.elementor .khff-role > p,
.elementor .khff-role > .elementor-widget-container > p {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: var(--size-micro);
  line-height: 1.5;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent);
}
.elementor .khff-bio > p,
.elementor .khff-bio > .elementor-widget-container > p {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: var(--size-small);
  line-height: var(--leading-body);
  color: var(--color-text-muted);
}

.elementor .lede > p,
.elementor .lede > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300;
  font-size: clamp(1.1rem, 2.2vw, 1.375rem); line-height: 1.5;
  color: var(--color-text-muted);
}
.elementor .overline > p,
.elementor .overline > .elementor-widget-container > p,
.elementor .overline .elementor-heading-title {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: var(--tracking-over); text-transform: uppercase;
  color: var(--color-accent); line-height: 1.5; font-weight: 400;
}
.elementor .muted > p,
.elementor .muted > .elementor-widget-container > p,
.elementor .khff-body > p,
.elementor .khff-body > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300;
  font-size: var(--size-body); line-height: var(--leading-body);
  color: var(--color-text-muted);
}
.elementor .faint > p,
.elementor .faint > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300;
  font-size: var(--size-small); line-height: var(--leading-body);
  color: var(--color-text-faint);
}
.elementor .khff-note > p,
.elementor .khff-note > .elementor-widget-container > p { font-style: italic; }

.elementor .khff-meta-label > p,
.elementor .khff-meta-label > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: var(--tracking-over); text-transform: uppercase;
  color: var(--color-text-faint); line-height: 1.5;
}
.elementor .khff-meta-val > p,
.elementor .khff-meta-val > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: 1.0625rem;
  color: var(--color-text); font-variant-numeric: tabular-nums; line-height: 1.5;
}
.elementor .khff-meta-val--plain > p,
.elementor .khff-meta-val--plain > .elementor-widget-container > p { font-family: var(--font-body); font-weight: 300; }

.elementor .stat__num > p,
.elementor .stat__num > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 3rem;
  line-height: 1; color: var(--color-accent); font-variant-numeric: tabular-nums;
}
.elementor .stat__label > p,
.elementor .stat__label > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-faint); line-height: 1.5;
}
.elementor .card__index > p,
.elementor .card__index > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-accent); line-height: 1.5;
}
.elementor .card__foot > p,
.elementor .card__foot > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-faint); line-height: 1.6;
}

.elementor .timeline__date > p,
.elementor .timeline__date > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-small);
  color: var(--color-accent); font-variant-numeric: tabular-nums; line-height: 1.5;
}
.elementor .timeline__date--now > p,
.elementor .timeline__date--now > .elementor-widget-container > p { color: var(--color-ember-hi); }
.elementor .timeline__title > p,
.elementor .timeline__title > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.25rem;
  line-height: 1.25; color: var(--color-text); letter-spacing: var(--tracking-display);
}
.elementor .timeline__note > p,
.elementor .timeline__note > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  line-height: var(--leading-body); color: var(--color-text-muted); max-width: var(--measure);
}
.elementor .timeline__mark > p,
.elementor .timeline__mark > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro); letter-spacing: 0.06em; color: inherit;
}

.elementor .khff-dl-label > p,
.elementor .khff-dl-label > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-faint); line-height: 1.5;
}
.elementor .khff-dl-value > p,
.elementor .khff-dl-value > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-body);
  line-height: var(--leading-body); color: var(--color-text);
}

.elementor .khff-award-name > p,
.elementor .khff-award-name > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.25rem;
  line-height: 1.3; color: var(--color-text); letter-spacing: var(--tracking-display);
}
.elementor .khff-award-row--main .khff-award-name > p,
.elementor .khff-award-row--main .khff-award-name > .elementor-widget-container > p { color: var(--color-accent); }
.elementor .khff-award-meta > p,
.elementor .khff-award-meta > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-faint); line-height: 1.5;
}

.elementor .khff-news-date > p,
.elementor .khff-news-date > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-small);
  color: var(--color-text-faint); font-variant-numeric: tabular-nums; line-height: 1.5;
}
.elementor .khff-news-tag > p,
.elementor .khff-news-tag > .elementor-widget-container > p {
  display: inline-block; font-family: var(--font-mono); font-size: 10px;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-accent);
  border: var(--border-hairline); border-radius: var(--radius-pill); padding: 3px 12px; line-height: 1.5;
}

.elementor .khff-notice-body > p,
.elementor .khff-notice-body > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.625rem;
  line-height: 1.35; letter-spacing: var(--tracking-display); color: var(--color-text);
}
.elementor .khff-photo-ph > p,
.elementor .khff-photo-ph .elementor-widget > p {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--color-text-faint); line-height: 1.9;
}
/* ------------------------------------------------------------------
   Skin-only container classes. The stylesheet versions (.stats, .stat,
   .card) also set padding / gap / flex, which outranks Elementor's
   layout controls and makes the editor sliders do nothing.
   ------------------------------------------------------------------ */
.khff-stats-bg {
  background: var(--color-line);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.khff-stat-bg { background: var(--color-bg); }
.khff-card-bg {
  background: var(--color-surface);
  border: var(--border-hairline);
  border-radius: var(--radius-md);
}
.khff-card-bg .card__foot {
  margin-top: auto;
  padding-top: var(--space-4);
  border-top: var(--border-hairline);
}

/* ---- WPForms inside the shortcode widget ---- */
.khff-form .wpforms-container { max-width: none; margin: 0; }
.khff-form .wpforms-form .wpforms-field { padding: 0 0 var(--space-5) 0; }
.khff-form .wpforms-form .wpforms-field-label {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--color-text-muted); font-weight: 400; margin-bottom: var(--space-2);
}
.khff-form .wpforms-form input[type=text],
.khff-form .wpforms-form input[type=email],
.khff-form .wpforms-form input[type=tel],
.khff-form .wpforms-form select,
.khff-form .wpforms-form textarea {
  width: 100%; background: var(--color-bg-alt); border: var(--border-hairline);
  border-radius: var(--radius-sm); color: var(--color-text);
  font-family: var(--font-body); font-size: var(--size-body);
  padding: var(--space-3) var(--space-4); min-height: 48px;
}
.khff-form .wpforms-form textarea { min-height: 168px; }
.khff-form .wpforms-form input:focus,
.khff-form .wpforms-form select:focus,
.khff-form .wpforms-form textarea:focus {
  outline: none; border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(226, 114, 31, 0.28);
}
.khff-form .wpforms-form .wpforms-field-description {
  color: var(--color-text-faint); font-size: var(--size-small); margin-top: var(--space-2);
}
.khff-form .wpforms-form .wpforms-required-label { color: var(--color-accent); }
.khff-form .wpforms-form button[type=submit] {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: var(--tracking-over); text-transform: uppercase;
  background: var(--color-accent); color: var(--color-on-accent);
  border: 1px solid var(--color-accent); border-radius: var(--radius-sm);
  padding: var(--space-4) var(--space-6); min-height: 48px; cursor: pointer;
}
.khff-form .wpforms-form button[type=submit]:hover {
  background: var(--color-accent-hi); border-color: var(--color-accent-hi);
}
.khff-form .wpforms-form ul.wpforms-field-checkbox { list-style: none; margin: 0; padding: 0; }
.khff-form .wpforms-form .wpforms-field-checkbox label {
  color: var(--color-text-muted); font-size: var(--size-small);
  text-transform: none; letter-spacing: 0; font-family: var(--font-body);
}
/* ---- form field text and placeholders ---- */
.khff-form .wpforms-form input,
.khff-form .wpforms-form select,
.khff-form .wpforms-form textarea,
.khff-form .wpforms-form option {
  color: #FFFFFF;
  -webkit-text-fill-color: #FFFFFF;
}
.khff-form .wpforms-form option { background: var(--color-bg-alt); }
.khff-form .wpforms-form input::placeholder,
.khff-form .wpforms-form textarea::placeholder {
  color: var(--color-text-faint);
  -webkit-text-fill-color: var(--color-text-faint);
  opacity: 1;
}
.khff-form .wpforms-form input:-webkit-autofill,
.khff-form .wpforms-form textarea:-webkit-autofill {
  -webkit-text-fill-color: #FFFFFF;
  -webkit-box-shadow: 0 0 0 100px var(--color-bg-alt) inset;
}
/* ---- submit button, all WPForms shapes ---- */
.khff-form .wpforms-form button[type=submit],
.khff-form .wpforms-form .wpforms-submit,
.khff-form .wpforms-form input[type=submit],
.khff-form .wpforms-submit-container button,
.khff-form div.wpforms-container button[type=submit] {
  font-family: var(--font-mono);
  font-size: var(--size-micro);
  letter-spacing: var(--tracking-over);
  text-transform: uppercase;
  background: var(--color-accent);
  background-color: var(--color-accent);
  background-image: none;
  color: var(--color-on-accent);
  -webkit-text-fill-color: var(--color-on-accent);
  border: 1px solid var(--color-accent);
  border-radius: var(--radius-sm);
  padding: var(--space-4) var(--space-6);
  min-height: 48px;
  cursor: pointer;
  box-shadow: none;
  transition: background 140ms ease, border-color 140ms ease;
}
.khff-form .wpforms-form button[type=submit]:hover,
.khff-form .wpforms-form .wpforms-submit:hover,
.khff-form .wpforms-form input[type=submit]:hover,
.khff-form div.wpforms-container button[type=submit]:hover {
  background: var(--color-accent-hi);
  background-color: var(--color-accent-hi);
  border-color: var(--color-accent-hi);
  color: var(--color-on-accent);
}
.khff-form .wpforms-form button[type=submit]:focus-visible {
  outline: 2px solid var(--color-accent-hi);
  outline-offset: 3px;
}
/* ------------------------------------------------------------------
   WPForms styles its submit via an ID selector (#wpforms-35 ...),
   which outranks any class rule — hence !important here.
   ------------------------------------------------------------------ */
.wpforms-container button[type=submit],
.wpforms-container input[type=submit],
.wpforms-container .wpforms-submit,
.wpforms-submit-container button {
  font-family: var(--font-mono) !important;
  font-size: var(--size-micro) !important;
  font-weight: 400 !important;
  letter-spacing: var(--tracking-over) !important;
  text-transform: uppercase !important;
  background: var(--color-accent) !important;
  background-color: var(--color-accent) !important;
  background-image: none !important;
  color: var(--color-on-accent) !important;
  -webkit-text-fill-color: var(--color-on-accent) !important;
  border: 1px solid var(--color-accent) !important;
  border-radius: var(--radius-sm) !important;
  padding: var(--space-4) var(--space-6) !important;
  min-height: 48px !important;
  box-shadow: none !important;
  cursor: pointer;
}
.wpforms-container button[type=submit]:hover,
.wpforms-container input[type=submit]:hover,
.wpforms-container .wpforms-submit:hover,
.wpforms-submit-container button:hover {
  background: var(--color-accent-hi) !important;
  background-color: var(--color-accent-hi) !important;
  border-color: var(--color-accent-hi) !important;
  color: var(--color-on-accent) !important;
}
.wpforms-container button[type=submit]:focus-visible {
  outline: 2px solid var(--color-accent-hi) !important;
  outline-offset: 3px;
}

/* consent checkbox in the brand palette */
.wpforms-container input[type=checkbox] {
  accent-color: var(--color-accent);
  width: 18px; height: 18px;
}
/* ------------------------------------------------------------------
   The sticky header must clear the WordPress admin bar, which is
   fixed at the top of the viewport for logged-in users. Without this
   the header slides under it on scroll and the logo looks cropped.
   ------------------------------------------------------------------ */
body.admin-bar .site-header { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar .site-header { top: 46px; }
}
/* keep the header a fixed height at every scroll position */
.site-header__inner { align-items: center; }
@media (max-width: 699px) {
  .site-header__inner { align-items: center; }
}
/* ---- hero photo backdrop, filling the first screen ---- */
.khff-hero-bg {
  min-height: calc(100vh - var(--header-h));
  justify-content: center;
  border-bottom: var(--border-hairline);
  background:
    radial-gradient(120% 90% at 78% 0%, rgba(226, 114, 31, 0.10), transparent 62%),
    radial-gradient(80% 70% at 8% 100%, rgba(168, 58, 34, 0.08), transparent 60%),
    linear-gradient(90deg, rgba(11, 10, 8, 0.94) 0%, rgba(11, 10, 8, 0.88) 42%, rgba(11, 10, 8, 0.62) 72%, rgba(11, 10, 8, 0.58) 100%),
    linear-gradient(180deg, rgba(11, 10, 8, 0.45) 0%, rgba(11, 10, 8, 0.30) 45%, rgba(11, 10, 8, 0.80) 100%),
    url("https://ktmhorrorfilmfest.com/wp-content/uploads/2026/08/khff-hero-wide.webp") 30% center / cover no-repeat,
    var(--color-bg);
}
body.admin-bar .khff-hero-bg { min-height: calc(100vh - var(--header-h) - 32px); }
@media screen and (max-width: 782px) {
  body.admin-bar .khff-hero-bg { min-height: calc(100vh - var(--header-h) - 46px); }
}


/* ---- stacked section headers ---- */
.section-head { display: flex; flex-direction: column; align-items: flex-start; }
.section-head > * { width: 100%; max-width: none; }

/* ---- in-section photo ---- */
.section-figure, .section-figure img { min-width: 0; }
.section-figure img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border: var(--border-hairline);
  border-radius: var(--radius-md);
}

/* flex columns must be allowed to shrink below their content's intrinsic width */
.e-con-full > .elementor-widget-image, .e-con > .elementor-widget-image { min-width: 0; }
.khff-photo img, .media-frame img { min-width: 0; }

/* ---- About: photo behind the page header (section height unchanged) ---- */
.khff-pagehead-photo {
  border-bottom: var(--border-hairline);
  background:
    radial-gradient(110% 100% at 88% 0%, rgba(226, 114, 31, 0.08), transparent 60%),
    linear-gradient(90deg, rgba(11, 10, 8, 0.93) 0%, rgba(11, 10, 8, 0.86) 45%, rgba(11, 10, 8, 0.60) 75%, rgba(11, 10, 8, 0.55) 100%),
    linear-gradient(180deg, rgba(11, 10, 8, 0.50) 0%, rgba(11, 10, 8, 0.38) 45%, rgba(11, 10, 8, 0.78) 100%),
    url("https://ktmhorrorfilmfest.com/wp-content/uploads/2026/08/khff-about-audience.webp") center 42% / cover no-repeat,
    var(--color-bg);
}
@media (max-width: 899px) {
  .khff-pagehead-photo {
    background:
      radial-gradient(110% 100% at 88% 0%, rgba(226, 114, 31, 0.08), transparent 60%),
      linear-gradient(180deg, rgba(11, 10, 8, 0.84) 0%, rgba(11, 10, 8, 0.80) 50%, rgba(11, 10, 8, 0.90) 100%),
      url("https://ktmhorrorfilmfest.com/wp-content/uploads/2026/08/khff-about-audience.webp") center 42% / cover no-repeat,
      var(--color-bg);
  }
}

/* ---- archive: poster cards + gallery track ---- */
.khff-poster img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 27 / 40;
  object-fit: cover;
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  min-width: 0;
}
.elementor .khff-poster-title > p,
.elementor .khff-poster-title > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.125rem;
  line-height: 1.2; color: var(--color-text);
}
.elementor .khff-poster-meta > p,
.elementor .khff-poster-meta > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-faint);
  line-height: 1.5;
}
.khff-gallery-slot {
  aspect-ratio: 3 / 2;
  border: var(--border-hairline);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}
.elementor .khff-gallery-slot .khff-t > p,
.elementor .khff-gallery-slot .khff-t > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--color-text-faint); line-height: 1.9; text-align: center;
}
.khff-gallery img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; border: var(--border-hairline); border-radius: var(--radius-md); min-width: 0; }
/* ---- archive: award label + programme rows ---- */
.elementor .khff-poster-award > p,
.elementor .khff-poster-award > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--color-accent); line-height: 1.5;
}
.khff-films { border-top: var(--border-hairline); }
.khff-film-row { border-bottom: var(--border-hairline); }
.elementor .khff-film-title > p,
.elementor .khff-film-title > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.25rem;
  line-height: 1.3; color: var(--color-text);
}
.elementor .khff-film-dir > p,
.elementor .khff-film-dir > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  color: var(--color-text-muted); line-height: var(--leading-body);
}
.elementor .khff-film-country > p,
.elementor .khff-film-country > .elementor-widget-container > p,
.elementor .khff-film-note > p,
.elementor .khff-film-note > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.5;
}
.elementor .khff-film-country > p,
.elementor .khff-film-country > .elementor-widget-container > p { color: var(--color-text-faint); }
.elementor .khff-film-note > p,
.elementor .khff-film-note > .elementor-widget-container > p { color: var(--color-accent); }
/* ---- archive: day-by-day programme ---- */
.khff-day-head { border-bottom: 1px solid var(--color-accent); }
.elementor .khff-day-num > p,
.elementor .khff-day-num > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.5rem;
  line-height: 1.2; color: var(--color-text);
}
.elementor .khff-day-date > p,
.elementor .khff-day-date > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-accent); line-height: 1.5;
}
.elementor .khff-slot-time > p,
.elementor .khff-slot-time > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-small);
  color: var(--color-text-faint); font-variant-numeric: tabular-nums; line-height: 1.5;
}
.khff-film-row { border-bottom: var(--border-hairline); }
.khff-slot-films > .e-con:first-child, .khff-slot-films > .e-child:first-child { border-top: var(--border-hairline); }
.elementor .khff-film-title > p,
.elementor .khff-film-title > .elementor-widget-container > p {
  font-family: var(--font-display); font-weight: 500; font-size: 1.25rem;
  line-height: 1.3; color: var(--color-text);
}
.elementor .khff-film-dir > p,
.elementor .khff-film-dir > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  color: var(--color-text-muted); line-height: var(--leading-body);
}
.elementor .khff-film-country > p,
.elementor .khff-film-country > .elementor-widget-container > p,
.elementor .khff-film-mins > p,
.elementor .khff-film-mins > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--color-text-faint); line-height: 1.5;
}
.elementor .khff-film-mins > p,
.elementor .khff-film-mins > .elementor-widget-container > p { font-variant-numeric: tabular-nums; }
.elementor .khff-poster-dir > p,
.elementor .khff-poster-dir > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  color: #FFFFFF; line-height: var(--leading-body);
}


/* ---- archive gallery: focus + dimmed neighbours, radio-driven (no scroll jump) ---- */
.khff-gal { display: block; position: relative; }
.khff-gal .grad { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }
.khff-gal .gpage { display: none; flex-direction: column; gap: var(--space-4); }
.khff-gal #gr1:checked ~ .gpage:nth-of-type(1),
.khff-gal #gr2:checked ~ .gpage:nth-of-type(2),
.khff-gal #gr3:checked ~ .gpage:nth-of-type(3),
.khff-gal #gr4:checked ~ .gpage:nth-of-type(4),
.khff-gal #gr5:checked ~ .gpage:nth-of-type(5),
.khff-gal #gr6:checked ~ .gpage:nth-of-type(6),
.khff-gal #gr7:checked ~ .gpage:nth-of-type(7),
.khff-gal #gr8:checked ~ .gpage:nth-of-type(8),
.khff-gal #gr9:checked ~ .gpage:nth-of-type(9),
.khff-gal #gr10:checked ~ .gpage:nth-of-type(10),
.khff-gal #gr11:checked ~ .gpage:nth-of-type(11),
.khff-gal #gr12:checked ~ .gpage:nth-of-type(12),
.khff-gal #gr13:checked ~ .gpage:nth-of-type(13),
.khff-gal #gr14:checked ~ .gpage:nth-of-type(14) { display: flex; }
.khff-gal .grow { display: flex; align-items: stretch; }
.khff-gal .gside { flex: 0 0 22%; min-width: 0; filter: blur(3px) saturate(0.6); opacity: 0.4; pointer-events: none; }
.khff-gal .gfocus { flex: 1 1 56%; min-width: 0; position: relative; z-index: 1; }
.khff-gal .garrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-text); background: rgba(11, 10, 8, 0.55);
  border-radius: var(--radius-pill); cursor: pointer;
  transition: color 140ms ease, background 140ms ease;
}
.khff-gal .garrow.prev { left: var(--space-3); }
.khff-gal .garrow.next { right: var(--space-3); }
.khff-gal .garrow svg { width: 24px; height: 24px; }
.khff-gal .garrow:hover { color: var(--color-accent-hi); background: rgba(11, 10, 8, 0.8); }
.khff-gal .grad:focus-visible ~ .gpage .garrow { outline: 2px solid var(--color-accent-hi); outline-offset: 3px; }
.khff-gal .gcount {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; color: var(--color-text-faint);
  font-variant-numeric: tabular-nums; text-align: right; margin: 0;
}
.khff-gal img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border: var(--border-hairline); border-radius: var(--radius-md); }
.khff-gal .gside img { height: 100%; aspect-ratio: auto; }
@media (max-width: 699px) {
  .khff-gal .gside { display: none; }
  .khff-gal .gfocus { flex: 1 1 100%; }
}

/* ---- xpro table, styled as the KHFF data table ---- */
.khff-xtable .xpro-table-wrapper { border: var(--border-hairline); border-radius: var(--radius-md); overflow: hidden; overflow-x: auto; }
.khff-xtable table { width: 100%; border-collapse: collapse; margin: 0; }
.khff-xtable thead th {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--color-text-faint); font-weight: 400;
  background: var(--color-bg-alt); text-align: left;
  padding: var(--space-4) var(--space-5);
  border-bottom: 2px solid rgba(237, 233, 227, 0.8);
}
.khff-xtable tbody td {
  padding: var(--space-4) var(--space-5);
  border-bottom: var(--border-hairline);
  color: var(--color-text-muted);
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-body);
  line-height: var(--leading-body); text-align: left; vertical-align: top;
}
.khff-xtable tbody tr td:first-child {
  font-family: var(--font-display); font-weight: 500; font-size: var(--size-body);
  color: var(--color-text); white-space: nowrap;
}
.khff-xtable tbody tr:last-child td { border-bottom: none; }
.khff-xtable tbody tr:hover td { background: transparent; }

/* ---- footer built from native widgets ---- */
.khff-footer-bg { border-top: var(--border-hairline); }
.elementor .khff-foot-brand .elementor-heading-title {
  font-family: var(--font-display); font-weight: 500; font-size: 1.25rem;
  line-height: 1.2; color: var(--color-text); letter-spacing: var(--tracking-display);
}
.elementor .khff-foot-head .elementor-heading-title {
  font-family: var(--font-mono); font-weight: 400; font-size: var(--size-micro);
  letter-spacing: var(--tracking-over); text-transform: uppercase;
  color: var(--color-text-faint); line-height: 1.5;
}
.elementor .khff-foot-text > p, .elementor .khff-foot-text > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  line-height: var(--leading-body); color: var(--color-text-muted); max-width: 40ch;
}
.elementor .khff-foot-addr > p, .elementor .khff-foot-addr > .elementor-widget-container > p {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  line-height: var(--leading-body); color: var(--color-text-muted);
}
.elementor .khff-foot-addr a { color: var(--color-text-muted); text-decoration: none; }
.elementor .khff-foot-addr a:hover { color: var(--color-accent); text-decoration: underline; }
.khff-foot-links .elementor-icon-list-item > a {
  font-family: var(--font-body); font-weight: 300; font-size: var(--size-small);
  color: var(--color-text-muted); text-decoration: none;
}
.khff-foot-links .elementor-icon-list-item > a:hover { color: var(--color-accent); }
.khff-foot-links .elementor-icon-list-icon { display: none; }
.khff-social .elementor-social-icon {
  width: 44px; height: 44px; background: transparent;
  border: var(--border-hairline); color: var(--color-text-muted);
  transition: color 140ms ease, border-color 140ms ease;
}
.khff-social .elementor-social-icon:hover { background: transparent; border-color: var(--color-accent); color: var(--color-accent); }
.khff-social .elementor-social-icon i, .khff-social .elementor-social-icon svg { font-size: 18px; width: 18px; height: 18px; fill: currentColor; }
.khff-foot-bottom { border-top: var(--border-hairline); }
.elementor .khff-foot-bar > p, .elementor .khff-foot-bar > .elementor-widget-container > p {
  font-family: var(--font-mono); font-size: var(--size-micro);
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--color-text-faint); line-height: 1.5;
}

/* ---- khff-xtable complete frame ---- */
.khff-xtable .xpro-table-wrapper,
.khff-xtable .xpro-table-container {
  border: 1px solid rgba(237, 233, 227, 0.55);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.khff-xtable table { border-collapse: collapse; width: 100%; }
/* vertical divider between the two columns, every row */
.khff-xtable thead th:not(:last-child),
.khff-xtable tbody td:not(:last-child) {
  border-right: 1px solid rgba(237, 233, 227, 0.55);
}
/* keep the rule under the final row so the frame closes */
.khff-xtable tbody tr:last-child td { border-bottom: none; }
.khff-xtable tbody tr td { border-bottom: 1px solid var(--color-line); }
.khff-xtable tbody tr:not(:last-child) td { border-bottom: 1px solid rgba(237, 233, 227, 0.55); }

/* ---- khff-xtable frame v2: border lives on the widget element ---- */
.elementor .khff-xtable {
  border: 1px solid rgba(237, 233, 227, 0.55);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.elementor .khff-xtable > table { border-collapse: collapse; width: 100%; margin: 0; }
.elementor .khff-xtable thead th:not(:last-child),
.elementor .khff-xtable tbody td:not(:last-child) {
  border-right: 1px solid rgba(237, 233, 227, 0.55);
}
.elementor .khff-xtable thead th { border-bottom: 2px solid rgba(237, 233, 227, 0.8); }
.elementor .khff-xtable tbody td { border-bottom: 1px solid rgba(237, 233, 227, 0.55); }
.elementor .khff-xtable tbody tr:last-child td { border-bottom: 0; }

/* ---- accordion double rule: the section head already draws a hairline,
     so the first item's top border left an empty band between them ---- */
.elementor .khff-accordion .elementor-accordion-item:first-child { border-top: 0; }
.elementor .khff-accordion .elementor-accordion { border: 0; }

/* ---- accordion top gap: pull the first item up under the section rule ---- */
.elementor .khff-accordion { margin-top: calc(var(--space-5) * -1); }
.elementor .khff-accordion .elementor-accordion-item:first-child .elementor-tab-title { padding-top: var(--space-5); }

/* ---- accordion title colour: it is an <a>, so it inherited the link colour ---- */
.elementor .khff-accordion .elementor-tab-title,
.elementor .khff-accordion .elementor-tab-title a,
.elementor .khff-accordion .elementor-accordion-title {
  color: var(--color-text);
  font-family: var(--font-display);
  font-weight: 500;
  text-decoration: none;
}
.elementor .khff-accordion .elementor-tab-title:hover,
.elementor .khff-accordion .elementor-tab-title:hover a,
.elementor .khff-accordion .elementor-tab-title.elementor-active,
.elementor .khff-accordion .elementor-tab-title.elementor-active a {
  color: var(--color-accent);
}
.elementor .khff-accordion .elementor-accordion-item:first-child .elementor-tab-title { padding-top: var(--space-5); }

/* ---- empty image placeholders fall back to the KHFF mark ---- */
.khff-photo-ph,
.khff-img-ph {
  position: relative;
  overflow: hidden;
}
.khff-photo-ph::before,
.khff-img-ph::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("https://ktmhorrorfilmfest.com/wp-content/uploads/2026/08/khff-icon-1.png") center / 58% auto no-repeat;
  opacity: 0.55;
  pointer-events: none;
}
.khff-photo-ph .elementor-widget-container,
.khff-photo-ph p,
.khff-img-ph p { display: none; }
