/* ==========================================================
   VereinOnline Connector – Di4 e.V.
   Design analog zum „Di4 Theme v3“ in VereinOnline (vereinonline.org/di4)
   bzw. di4.org: Roboto, Di4-Blau, hellgraue Flächen mit „Di4-Ecke“
   (oben rechts abgerundet) und Pill-Buttons.
   ========================================================== */

@font-face {
  font-family: 'Di4 Roboto';
  src: url('Roboto-VariableFont.ttf') format('truetype-variations'),
       url('Roboto-VariableFont.ttf') format('truetype');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --di4-blue:   #2076BB;   /* Di4 Dark Blue – Primär */
  --di4-light:  #2CA9E1;   /* Di4 Light Blue – Akzent */
  --di4-grey:   #606372;   /* Di4 Grey */
  --di4-black:  #000000;
  --di4-text:   #444444;
  --di4-dark:   #1F1E23;
  --di4-line:   #E3E3E3;
  --di4-soft:   #F2F2F2;
  --di4-corner: 0 40px 0 0; /* Di4-Ecke */
  --di4-font:   'Roboto', 'Di4 Roboto', Arial, sans-serif;
}

/* Gemeinsame Schrift für alle Plugin-Bausteine */
.di4-board, .di4-person-card, .di4-person-overlay, .di4-person-list,
.di4-group-profile-grid, .di4-events-grid, .di4-events-list,
.di4-blog-grid, .di4-blog-list, .di4-vcard, .di4-vcard-error, .di4-group-error {
  font-family: var(--di4-font);
  color: var(--di4-text);
  -webkit-font-smoothing: antialiased;
}

/* ============================================================
   Basis-Bausteine
============================================================ */

/* Pill-Button wie auf di4.org (2px Rand, Hover = Outline) */
a.di4-btn,
a.di4-btn:visited {
  display: inline-block;
  margin-top: 10px;
  padding: 6px 20px;
  border: 2px solid var(--di4-blue);
  border-radius: 25px;
  background: var(--di4-blue);
  color: #fff !important;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.4;
  text-decoration: none !important;
  transition: background .15s, color .15s, border-color .15s;
}
a.di4-btn:hover,
a.di4-btn:focus {
  background: transparent;
  color: var(--di4-blue) !important;
}

/* Heller Button auf Fotos */
a.di4-btn--light,
a.di4-btn--light:visited {
  background: #fff;
  border-color: #fff;
  color: var(--di4-blue) !important;
}
a.di4-btn--light:hover,
a.di4-btn--light:focus {
  background: transparent;
  color: #fff !important;
}

/* Textlink mit Pfeil */
a.di4-link-arrow {
  color: var(--di4-blue) !important;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none !important;
}
a.di4-link-arrow::after { content: " \2192"; }
a.di4-link-arrow:hover { color: var(--di4-light) !important; }

/* Hellblauer Punkt vor Ort-Angaben */
.di4-dot { position: relative; padding-left: 14px; }
.di4-dot::before {
  content: "";
  position: absolute;
  left: 0;
  top: .62em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--di4-light);
}

.di4-group-error {
  padding: 10px 14px;
  border-left: 3px solid var(--di4-light);
  background: rgba(44,169,225,.12);
  color: var(--di4-dark);
  border-radius: 0 8px 8px 0;
  font-size: 14px;
}

/* ============================================================
   Ansprechpartner / Vorstand ([di4])
============================================================ */

.di4-board { margin-bottom: 24px; }
.di4-board__title {
  color: var(--di4-black);
  font-family: var(--di4-font);
  font-size: 20px;
  font-weight: 600;
  margin: 0 0 16px;
}
.di4-board__grid { display: grid; gap: 24px; }
.di4-board__grid--card    { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.di4-board__grid--overlay { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }

/* ============================================================
   Personen-Karte (Kreisfoto + Text)
============================================================ */

.di4-person-card {
  display: flex;
  gap: 20px;
  align-items: center;
  padding: 24px 28px;
  background: var(--di4-soft);
  border-radius: var(--di4-corner);
  transition: background .2s, box-shadow .2s, transform .2s;
}
.di4-person-card:hover {
  background: #fff;
  box-shadow: 0 14px 34px rgba(31,30,35,.12);
  transform: translateY(-2px);
}
.di4-person-card img.di4-person-card__photo {
  flex: 0 0 auto;
  width: 110px !important;
  height: 110px !important;
  max-width: none !important;
  border-radius: 50% !important;
  object-fit: cover;
  background: #fff;
}
.di4-person-card--single img.di4-person-card__photo {
  width: 130px !important;
  height: 130px !important;
}
.di4-person-card__body { min-width: 0; }
.di4-person-card__name {
  color: var(--di4-black);
  font-size: 19px;
  font-weight: 600;
  line-height: 1.25;
}
.di4-person-card--single .di4-person-card__name { font-size: 22px; }
.di4-person-card__company,
.di4-person-card__role {
  color: var(--di4-grey);
  font-size: 14px;
  line-height: 1.5;
  margin-top: 2px;
}

/* ============================================================
   Personen-Overlay (Foto 3:4 mit Verlauf)
============================================================ */

.di4-person-overlay {
  position: relative;
  width: 100%;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  border-radius: var(--di4-corner);
  background: var(--di4-soft);
  color: #fff;
}
.di4-person-overlay img.di4-person-overlay__img {
  position: absolute !important;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  border-radius: 0 !important;
  transition: transform .4s;
}
.di4-person-overlay:hover img.di4-person-overlay__img { transform: scale(1.03); }
.di4-person-overlay__shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(31,30,35,0) 40%, rgba(31,30,35,.85) 100%);
}
.di4-person-overlay__content {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 22px 24px 24px;
}
.di4-person-overlay__content::before {
  content: "";
  display: block;
  width: 36px;
  height: 3px;
  margin-bottom: 12px;
  background: var(--di4-light);
}
.di4-person-overlay__name {
  color: #fff;
  font-size: 21px;
  font-weight: 600;
  line-height: 1.25;
}
.di4-person-overlay__sub {
  color: rgba(255,255,255,.82);
  font-size: 14px;
  margin-top: 2px;
}

/* ============================================================
   Personen-Liste ([di4_group_profile type="list"])
============================================================ */

ul.di4-person-list { list-style: none; margin: 0; padding: 0; }
.di4-person-list__item {
  display: flex;
  gap: 16px;
  align-items: center;
  margin: 0;
  padding: 14px 0;
  border-top: 1px solid var(--di4-line);
}
.di4-person-list__item:first-child { border-top: 0; }
.di4-person-list__item img.di4-person-list__photo {
  flex: 0 0 auto;
  width: 56px !important;
  height: 56px !important;
  max-width: none !important;
  border-radius: 50% !important;
  object-fit: cover;
  background: var(--di4-soft);
}
.di4-person-list__name { color: var(--di4-black); font-size: 16px; font-weight: 600; }
.di4-person-list__role { color: var(--di4-grey); font-size: 13.5px; }

/* ============================================================
   Gruppen-Grid ([di4_group_profile] card/overlay)
   - per data-columns="1"–"5" konfigurierbar (maximale Spaltenzahl)
   - reduziert sich automatisch, wenn der Container zu schmal wird
============================================================ */

.di4-group-profile-grid { display: grid; gap: 24px; width: 100%; --di4-gap: 24px; }
.di4-group-profile-grid--overlay {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.di4-group-profile-grid--card {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

/* columns="N": Spaltenregeln werden vom Shortcode direkt mit ausgegeben. */

/* In schmalen Spalten: Karte untereinander statt nebeneinander */
.di4-group-profile-grid[data-columns="4"] .di4-person-card,
.di4-group-profile-grid[data-columns="5"] .di4-person-card {
  flex-direction: column;
  text-align: center;
  padding: 24px 18px;
}

/* ============================================================
   Event-Kacheln ([di4_events]) – wie Di4-Veranstaltungskacheln
============================================================ */

.di4-events-grid,
.di4-blog-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 28px;
  margin: 8px 0 32px;
}

a.di4-event-tile,
a.di4-blog-tile {
  display: flex;
  flex-direction: column;
  min-height: 380px;
  overflow: hidden;
  background: var(--di4-soft);
  border-radius: var(--di4-corner);
  color: var(--di4-text) !important;
  text-decoration: none !important;
  transition: transform .2s, box-shadow .2s, background .2s;
}
a.di4-event-tile:hover,
a.di4-blog-tile:hover {
  background: #fff;
  transform: translateY(-4px);
  box-shadow: 0 14px 34px rgba(31,30,35,.12);
}

/* Datum: große Tageszahl in Di4-Blau, Wochentag/Monat klein */
.di4-event-tile__date {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: 6px;
  padding: 26px 28px 0;
}
.di4-event-tile__day {
  color: var(--di4-blue);
  font-size: 46px;
  font-weight: 700;
  line-height: 1;
}
.di4-event-tile__dm {
  color: var(--di4-grey);
  font-size: 12.5px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .06em;
}

.di4-event-tile__body { padding: 14px 28px 0; }
.di4-event-tile__title {
  margin: 0 !important;
  padding: 0 !important;
  color: var(--di4-black) !important;
  font-family: var(--di4-font) !important;
  font-size: 21px !important;
  font-weight: 600 !important;
  line-height: 1.25 !important;
}
.di4-event-tile__meta {
  margin-top: 8px;
  color: var(--di4-grey);
  font-size: 13.5px;
  line-height: 1.5;
}
.di4-event-tile img.di4-event-tile__img,
.di4-blog-tile img.di4-blog-tile__img {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  max-width: none !important;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: #e9e9e9;
}
.di4-event-tile img.di4-event-tile__img {
  margin: 16px 0 0;
  border-radius: 0 20px 0 0 !important;
}
.di4-event-tile__text,
.di4-blog-tile__text {
  margin: 14px 0 0;
  max-height: 7.75em;
  overflow: hidden;
  color: var(--di4-text);
  font-size: 14px;
  line-height: 1.55;
  -webkit-mask-image: linear-gradient(#000 60%, transparent);
          mask-image: linear-gradient(#000 60%, transparent);
}

/* „Details ansehen →“ unten in jeder Kachel */
.di4-event-tile__more,
.di4-blog-tile__more {
  display: block;
  margin-top: auto;
  padding: 18px 28px 26px;
  color: var(--di4-blue);
  font-size: 14px;
  font-weight: 500;
}
a.di4-event-tile:hover .di4-event-tile__more,
a.di4-blog-tile:hover .di4-blog-tile__more { color: var(--di4-light); }

/* ============================================================
   Event-Liste ([di4_events type="list"]) – wie „Nächste Termine“
============================================================ */

.di4-events-list { margin: 0 0 24px; }
.di4-event-list-item {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) auto;
  column-gap: 22px;
  align-items: start;
  padding: 16px 0;
  border-top: 1px solid rgba(0,0,0,.08);
}
.di4-event-list-item:first-child { border-top: 0; padding-top: 4px; }

.di4-event-list-date {
  border-left: 3px solid var(--di4-light);
  padding-left: 12px;
  color: var(--di4-grey);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.5;
}
.di4-event-list-day {
  display: block;
  color: var(--di4-blue);
  font-size: 17px;
  font-weight: 700;
}
.di4-event-list-sub { display: block; }

a.di4-event-list-title {
  color: var(--di4-black) !important;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none !important;
}
a.di4-event-list-title:hover { color: var(--di4-blue) !important; }
.di4-event-list-ort {
  margin-top: 4px;
  color: var(--di4-grey);
  font-size: 13.5px;
}

.di4-event-list-thumb-link { display: block; line-height: 0; }
.di4-event-list-item img.di4-event-list-thumb {
  width: 140px !important;
  height: auto !important;
  max-width: none !important;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: 0 14px 0 0 !important;
  background: var(--di4-soft);
}

@media (max-width: 640px) {
  .di4-event-list-item { grid-template-columns: minmax(0, 1fr); row-gap: 8px; }
  .di4-event-list-thumb-link { display: none; }
}

/* ============================================================
   Blog ([di4_blog]) – Kacheln
============================================================ */

.di4-blog-tile__body { padding: 22px 28px 0; }
.di4-blog-tile__date {
  color: var(--di4-grey);
  font-size: 12.5px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 8px;
}
.di4-blog-tile__title {
  margin: 0 !important;
  padding: 0 !important;
  color: var(--di4-black) !important;
  font-family: var(--di4-font) !important;
  font-size: 21px !important;
  font-weight: 600 !important;
  line-height: 1.25 !important;
}

/* ============================================================
   Blog-Liste ([di4_blog type="list"])
============================================================ */

.di4-blog-list { max-width: 100%; margin: 0 auto; }
.di4-blog-list-item {
  display: flex;
  gap: 28px;
  align-items: flex-start;
  padding: 0 0 24px;
  margin-bottom: 24px;
  border-bottom: 1px solid var(--di4-line);
}
.di4-blog-list-item:last-child { border-bottom: 0; }
.di4-blog-list-thumb-link { flex-shrink: 0; display: block; line-height: 0; width: 340px; }
.di4-blog-list-item img.di4-blog-list-thumb,
.di4-blog-list-thumb--empty {
  width: 340px !important;
  height: auto !important;
  max-width: none !important;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: 0 28px 0 0 !important;
  background: var(--di4-soft);
  display: block;
  flex-shrink: 0;
}
.di4-blog-list-content { flex: 1; min-width: 0; padding-top: 4px; }
.di4-blog-list-title {
  font-size: 26px;
  font-weight: 600;
  line-height: 1.25;
  margin-bottom: 8px;
}
.di4-blog-list-title a { color: var(--di4-black) !important; text-decoration: none !important; }
.di4-blog-list-title a:hover { color: var(--di4-blue) !important; }
.di4-blog-list-meta {
  color: var(--di4-grey);
  font-size: 12.5px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 10px;
}
.di4-blog-list-excerpt {
  color: var(--di4-text);
  font-size: 15px;
  line-height: 1.65;
  margin-bottom: 12px;
}
a.di4-blog-list-link {
  color: var(--di4-blue) !important;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none !important;
}
a.di4-blog-list-link:hover { color: var(--di4-light) !important; }

@media (max-width: 768px) {
  .di4-blog-list-item { flex-direction: column; gap: 14px; }
  .di4-blog-list-thumb-link,
  .di4-blog-list-item img.di4-blog-list-thumb,
  .di4-blog-list-thumb--empty { width: 100% !important; }
  .di4-blog-list-item img.di4-blog-list-thumb { aspect-ratio: 16 / 9; }
  .di4-blog-list-title { font-size: 22px; }
}

/* ============================================================
   Visitenkarte ([di4_vcard])
============================================================ */

.di4-vcard {
  display: flex;
  gap: 28px;
  align-items: flex-start;
  max-width: 780px;
  padding: 30px;
  background: var(--di4-soft);
  border-radius: var(--di4-corner);
}
.di4-vcard__photo img {
  display: block;
  width: 150px !important;
  height: 150px !important;
  max-width: none !important;
  object-fit: cover;
  border-radius: 50% !important;
  background: #fff;
}
.di4-vcard__body { flex: 1; min-width: 0; }
.di4-vcard__name {
  color: var(--di4-black);
  font-size: 26px;
  font-weight: 600;
  line-height: 1.2;
  margin-bottom: 4px;
}
.di4-vcard__meta {
  color: var(--di4-grey);
  font-size: 14px;
  margin-bottom: 18px;
}
.di4-vcard__contacts { display: grid; gap: 8px; }
.di4-vcard__contact {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 8px;
  font-size: 14.5px;
}
.di4-vcard__contact > span {
  color: var(--di4-grey);
  font-size: 12.5px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .06em;
  padding-top: 2px;
}
.di4-vcard__contact a {
  color: var(--di4-blue) !important;
  text-decoration: none !important;
  word-break: break-word;
}
.di4-vcard__contact a:hover { color: var(--di4-light) !important; }
.di4-vcard__contact--socials > span { visibility: hidden; }
.di4-vcard__links { display: flex; flex-direction: column; gap: 4px; }
.di4-vcard__socials { display: flex; align-items: center; gap: 10px; margin-top: 6px; }

a.di4-vcard__social {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--di4-blue);
  border-radius: 50%;
  background: transparent;
  color: var(--di4-blue) !important;
  transition: background .15s, color .15s;
}
a.di4-vcard__social:hover {
  background: var(--di4-blue);
  color: #fff !important;
}
.di4-vcard__social svg { width: 17px; height: 17px; fill: currentColor; }

.di4-vcard-error {
  padding: 10px 14px;
  border-left: 3px solid #C9302C;
  background: #fdf1f0;
  color: #8a1f1c;
  border-radius: 0 8px 8px 0;
  font-size: 14px;
}

@media (max-width: 640px) {
  .di4-vcard { flex-direction: column; padding: 24px; }
  .di4-vcard__photo img { width: 120px !important; height: 120px !important; }
  .di4-vcard__contact { grid-template-columns: 1fr; gap: 0; }
  .di4-vcard__contact--socials > span { display: none; }
}

@media (max-width: 480px) {
  .di4-person-card { flex-direction: column; text-align: center; padding: 24px 20px; }
}
