/* Media grids */
.kf-media-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 2rem);
}

.kf-media-grid > * { min-width: 0; }
.kf-media-grid figure,
.kf-container-media > figure,
.kf-container-immersive > figure { margin: 0; }

.kf-media-grid img,
.kf-container-media > .wp-block-image img,
.kf-container-immersive > .wp-block-image img {
  display: block;
  width: 100%;
}

/* Text and media */
.kf-text-media-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: center;
  gap: clamp(2rem, 5vw, 6rem);
}

.kf-text-media-grid > * { min-width: 0; }
.kf-section__media { margin: 0; }
.kf-section__media img { display: block; width: 100%; }

/* Immersive media */
.kf-parallax {
  min-height: min(75svh, 52rem);
  background-attachment: fixed;
}

@media (max-width: 48rem) {
  .kf-media-grid,
  .kf-text-media-grid { grid-template-columns: 1fr; }

  .kf-section-text-media.is-image-right .kf-section__media { order: -1; }
}

@media (prefers-reduced-motion: reduce) {
  .kf-parallax { background-attachment: scroll; }
}


/* Reusable editorial components */
.kf-grid-2, .kf-grid-3, .kf-grid-4 { display:grid; gap:var(--kf-space-m); }
.kf-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.kf-grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.kf-grid-4 { grid-template-columns:repeat(4,minmax(0,1fr)); }
.kf-card { padding:var(--kf-space-m); background:var(--kf-color-surface); border:1px solid var(--kf-color-border); border-radius:var(--kf-radius); }
.kf-kpi { display:grid; gap:var(--kf-space-xs); }
.kf-kpi strong { font-family:var(--wp--preset--font-family--heading-serif); font-size: var(--kf-font-size-h2); font-weight:400; line-height:1; }
.kf-cta { display:flex; align-items:center; justify-content:space-between; gap:var(--kf-space-m); padding:var(--kf-space-l); border:1px solid var(--kf-color-border); border-radius:var(--kf-radius); }
.kf-cta--accent { background:var(--kf-color-primary); color:var(--wp--preset--color--white); border-color:transparent; }
.kf-logo-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(8rem,1fr)); align-items:center; gap:var(--kf-space-m); }
.kf-logo-grid img { max-height:4rem; width:auto; margin-inline:auto; object-fit:contain; }
.kf-post-navigation { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--kf-space-m); }
.kf-post-navigation a { display:block; padding:var(--kf-space-m); border:1px solid var(--kf-color-border); border-radius:var(--kf-radius); text-decoration:none; }
.kf-post-navigation__next { text-align:right; }
.kf-article-cta { margin-top:var(--kf-space-l); }

@media (max-width: 60rem) { .kf-grid-4 { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 48rem) {
  .kf-grid-2,.kf-grid-3,.kf-grid-4,.kf-post-navigation { grid-template-columns:1fr; }
  .kf-cta { align-items:flex-start; flex-direction:column; }
  .kf-post-navigation__next { text-align:left; }
}

/* Scroll motion ---------------------------------------------------------- */
.kf-reveal,
.kf-image-reveal {
  --kf-motion-duration: 780ms;
  --kf-motion-easing: cubic-bezier(.22, 1, .36, 1);
}

.kf-motion-ready .kf-reveal {
  opacity: 0;
  transform: translate3d(0, 1.25rem, 0);
  transition:
    opacity var(--kf-motion-duration) var(--kf-motion-easing) var(--kf-reveal-delay, 0ms),
    transform var(--kf-motion-duration) var(--kf-motion-easing) var(--kf-reveal-delay, 0ms);
}

.kf-motion-ready .kf-reveal.is-visible {
  opacity: 1;
  transform: none;
}

.kf-image-reveal {
  position: relative;
  overflow: hidden;
}

.kf-motion-ready .kf-image-reveal {
  clip-path: inset(0 100% 0 0);
  transform: translate3d(-1.25rem, 0, 0);
  transition:
    clip-path 1050ms var(--kf-motion-easing),
    transform 1050ms var(--kf-motion-easing);
  will-change: clip-path, transform;
}

.kf-motion-ready .kf-image-reveal.is-visible {
  clip-path: inset(0 0 0 0);
  transform: none;
}

.kf-image-reveal img {
  transition: transform 1200ms var(--kf-motion-easing);
}

.kf-motion-ready .kf-image-reveal:not(.is-visible) img {
  transform: scale(1.035);
}

@media (prefers-reduced-motion: reduce) {
  .kf-reveal,
  .kf-image-reveal,
  .kf-image-reveal img {
    opacity: 1 !important;
    clip-path: none !important;
    transform: none !important;
    transition: none !important;
  }
}

/* News and agenda ------------------------------------------------------- */
.kf-listing {
  display: grid;
  gap: var(--kf-space-l);
}

.kf-listing__heading {
  margin: 0;
}

.kf-news-grid,
.kf-event-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(2.75rem, 5vw, 4.5rem) clamp(1.75rem, 3vw, 3rem);
}

.kf-news-card,
.kf-event-card {
  min-width: 0;
}

.kf-news-card {
  display: grid;
  align-content: start;
  gap: 1rem;
}

.kf-news-card__media {
  display: block;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: var(--kf-color-surface);
}

.kf-news-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 650ms cubic-bezier(.22, 1, .36, 1);
}

.kf-news-card:hover .kf-news-card__image,
.kf-news-card:focus-within .kf-news-card__image {
  transform: scale(1.025);
}

/* WordPress can occasionally leave an empty paragraph around shortcode output.
 * Keep this harmless fallback after the card body and remove its spacing. */
.kf-news-card__body {
  order: 2;
}

.kf-news-card > p:empty {
  order: 3;
  margin: 0;
  padding: 0;
  min-height: 0;
  line-height: 0;
}

.kf-news-card__title,
.kf-event-card__title {
  margin: 0;
  font-size: 1.2rem;
  line-height: 1.25;
}

.kf-news-card__title a,
.kf-event-card__title a {
  position: relative;
  display: inline;
  color: inherit;
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0 .08em;
  transition: background-size var(--kf-transition);
}

.kf-news-card__title a:hover,
.kf-news-card__title a:focus-visible,
.kf-event-card__title a:hover,
.kf-event-card__title a:focus-visible {
  background-size: 100% .08em;
}

.kf-event-card {
  display: grid;
  align-content: start;
  gap: .8rem;
  padding: clamp(1.25rem, 2.4vw, 2rem);
  border-top: 1px solid var(--kf-color-border);
  background: transparent;
  transition: background-color var(--kf-transition), transform var(--kf-transition);
}

.kf-event-card:hover,
.kf-event-card:focus-within {
  background: var(--kf-color-surface);
  transform: translateY(-2px);
}

.kf-event-card__date,
.kf-event-card__location,
.kf-event-detail-meta p {
  margin: 0;
}

.kf-event-card__date {
  font-size: var(--wp--preset--font-size--small);
  font-weight: 600;
  letter-spacing: .02em;
}

.kf-event-card__location,
.kf-event-detail-meta__location {
  display: flex;
  align-items: flex-start;
  gap: .45rem;
  color: color-mix(in srgb, var(--kf-color-text) 82%, transparent);
  font-size: var(--wp--preset--font-size--small);
  font-weight: 500;
}

.kf-icon-pin {
  flex: 0 0 auto;
  margin-top: .08em;
}

.kf-pagination ul {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  margin: var(--kf-space-l) 0 0;
  padding: 0;
  list-style: none;
}

.kf-pagination a,
.kf-pagination .current {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  min-height: 2.5rem;
  padding: .35rem .7rem;
  border: 1px solid var(--kf-color-border);
  border-radius: 999px;
  text-decoration: none;
}

.kf-pagination a:hover,
.kf-pagination a:focus-visible,
.kf-pagination .current {
  border-color: var(--kf-color-primary);
  background: var(--kf-color-primary);
  color: var(--wp--preset--color--white);
}

.kf-back-link {
  margin: 0 0 var(--kf-space-m);
}

.kf-back-link a {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-size: var(--wp--preset--font-size--small);
  text-decoration-thickness: .08em;
  text-underline-offset: .2em;
}

.kf-event-detail-meta {
  display: grid;
  gap: .7rem;
  margin-top: var(--kf-space-m);
  padding-top: var(--kf-space-m);
  border-top: 1px solid var(--kf-color-border);
}

.kf-event-detail-meta__date {
  font-weight: 600;
}

.kf-news-single__image:has(.wp-block-post-featured-image:empty) {
  display: none;
}

.kf-listing-empty {
  margin: 0;
}

@media (max-width: 60rem) {
  .kf-news-grid,
  .kf-event-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 40rem) {
  .kf-news-grid,
  .kf-event-grid {
    grid-template-columns: 1fr;
  }
}
