.elementor-200 .elementor-element.elementor-element-9530aa7{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-200 .elementor-element.elementor-element-79cf056{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-200 .elementor-element.elementor-element-79cf056.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-200 .elementor-element.elementor-element-2d57ab0{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}:root{--page-title-display:none;}@media(max-width:767px){.elementor-200 .elementor-element.elementor-element-79cf056{--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );}}@media(max-width:1024px) and (min-width:768px){.elementor-200 .elementor-element.elementor-element-79cf056{--width:673px;}}/* Start custom CSS for shortcode, class: .elementor-element-403d375 *//* Einsatzanalyse – Feuerwehr Dassel Stil (Marineblau & Rot) */
.evw-analyse-box {
  border: 2px solid #1c2a38;
  border-radius: 10px;
  background: #263544; /* Marineblau Hintergrund */
  color: #f5f7fa;
  overflow: hidden;
  box-shadow: 0 4px 14px rgba(0,0,0,.25);
  margin: 1rem 0;
}

.evw-analyse-box .evw-head {
  background: #263544; /* Gleicher Hintergrund wie Box */
  color: #fff;
  padding: .75rem 1rem;
  display: flex;
  gap: .75rem;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  border-bottom: 3px solid #9E2020; /* Roter Trennstrich */
}

.evw-analyse-box .evw-title {
  font-weight: 700;
  letter-spacing: .3px;
}

.evw-analyse-box .evw-meta {
  opacity: .95;
  font-size: .95rem;
}

.evw-analyse-box .evw-body {
  padding: 1rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}

@media (max-width: 680px) {
  .evw-analyse-box .evw-body {
    grid-template-columns: 1fr;
  }
}

.evw-analyse-box h4 {
  margin: .2rem 0 .6rem;
  color: #ffcccc;
}

.evw-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: .4rem;
}

.evw-list li {
  background: rgba(255, 255, 255, .05);
  padding: .5rem .6rem;
  border-left: 4px solid #9E2020; /* roter Balken links */
  border-radius: 6px;
}

.evw-badge {
  display: inline-block;
  min-width: 2ch;
  text-align: center;
  background: #9E2020;
  color: #fff;
  font-weight: 700;
  border-radius: 999px;
  padding: .1rem .5rem;
  margin-right: .5rem;
}

.evw-time {
  font-size: 1.6rem;
  font-weight: 800;
  background: #9E2020;
  color: #fff;
  display: inline-block;
  padding: .2rem .6rem;
  border-radius: 8px;
}

.evw-sub {
  font-size: .9rem;
  opacity: .8;
  margin-top: .4rem;
}

.evw-empty .evw-head {
  border-bottom: 3px solid #555; /* neutrale Linie bei leeren Daten */
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-9530aa7 */<?php
/*
 Shortcode: [einsatz_insights 
   year="2025" 
   taxonomy="einsatzart"          (ODER leer lassen)
   meta_key="einsatz_alarmierungsart"  (nur wenn keine Taxonomie)
   date_key="einsatz_datum"       (Meta-Feld mit Datum, z.B. 2025-11-07)
   time_key="einsatz_uhrzeit"     (Meta-Feld mit Uhrzeit, z.B. 16:38)
   cpt="einsatz"
   show_chart="yes"               (yes/no)
 ]
 Ausgabe: 3 Kacheln (Top-Arten), Peak-Zeit + Mini-Stundenbalken
*/
function fw_einsatz_insights_shortcode($atts){
  $a = shortcode_atts([
    'year'       => date('Y'),
    'taxonomy'   => '',                 // z.B. einsatzart
    'meta_key'   => '',                 // z.B. einsatz_alarmierungsart (falls keine Taxonomie)
    'date_key'   => 'einsatz_datum',    // Datums-Meta (YYYY-MM-DD)
    'time_key'   => 'einsatz_uhrzeit',  // Uhrzeit-Meta (HH:MM)
    'cpt'        => 'einsatz',
    'show_chart' => 'yes',
  ], $atts);

  // Alle Einsätze holen (IDs)
  $q = new WP_Query([
    'post_type'      => $a['cpt'],
    'post_status'    => 'publish',
    'fields'         => 'ids',
    'nopaging'       => true,
    'meta_query'     => $a['date_key'] ? [[ 'key' => $a['date_key'], 'compare' => 'EXISTS' ]] : []
  ]);
  $ids = $q->posts;
  wp_reset_postdata();

  // Filter: nur gewünschtes Jahr (über Meta-Datum, sonst Beitragsjahr)
  $ids_year = [];
  foreach ($ids as $pid){
    $d = $a['date_key'] ? get_post_meta($pid, $a['date_key'], true) : get_the_date('Y-m-d', $pid);
    if ($d && preg_match('/^\d{4}/', $d)) {
      $y = substr($d,0,4);
      if ((string)$y === (string)$a['year']) $ids_year[] = $pid;
    }
  }

  // Zähler vorbereiten
  $by_kind = [];                 // Einsatzarten (Taxonomie ODER Meta)
  $by_hour = array_fill(0,24,0); // Stunden 0..23

  foreach ($ids_year as $pid){
    // Einsatzart
    if ($a['taxonomy'] && taxonomy_exists($a['taxonomy'])) {
      $terms = wp_get_post_terms($pid, $a['taxonomy'], ['fields'=>'names']);
      if (!is_wp_error($terms) && $terms) {
        foreach ($terms as $t) {
          $key = trim($t);
          if ($key==='') continue;
          $by_kind[$key] = ($by_kind[$key] ?? 0) + 1;
        }
      }
    } elseif (!empty($a['meta_key'])) {
      $val = get_post_meta($pid, $a['meta_key'], true);
      if (is_array($val)) $val = implode(' ', $val);
      $key = trim((string)$val);
      if ($key!=='') $by_kind[$key] = ($by_kind[$key] ?? 0) + 1;
    } else {
      // kein Kategorisierungsfeld → alles als "Sonstig"
      $by_kind['Sonstiger Einsatz'] = ($by_kind['Sonstiger Einsatz'] ?? 0) + 1;
    }

    // Uhrzeit
    $t = $a['time_key'] ? get_post_meta($pid, $a['time_key'], true) : get_the_date('H:i', $pid);
    if ($t && preg_match('/^\d{1,2}:\d{2}/', $t)) {
      $h = intval(substr($t,0,2));
      if ($h >=0 && $h <=23) $by_hour[$h]++;
    }
  }

  // Top 3 Einsatzarten
  arsort($by_kind);
  $top = array_slice($by_kind, 0, 3, true);

  // Peak-Stunde(n)
  $maxH = max($by_hour);
  $peak_hours = [];
  if ($maxH > 0) {
    foreach ($by_hour as $h=>$v) if ($v===$maxH) $peak_hours[] = $h;
  }

  // Hilfsformat
  $fmt_hour = function($h){
    $h = intval($h);
    return sprintf('%02d:00–%02d:59', $h, $h);
  };

  ob_start(); ?>
  <div class="einsatz-insights" data-year="<?php echo esc_attr($a['year']); ?>">
    <div class="einsatz-insights__header">
      <h3>Einsatzanalyse <?php echo esc_html($a['year']); ?></h3>
      <span class="einsatz-insights__meta">
        Datengrundlage: <?php echo number_format_i18n(count($ids_year)); ?> Einsätze
      </span>
    </div>

    <div class="einsatz-insights__cards">
      <?php 
      $i=0;
      foreach ($top as $label=>$count): 
        $i++;
        $mod = $i===1 ? 'primary' : ($i===2 ? 'secondary' : 'tertiary');
      ?>
        <div class="einsatz-i-card einsatz-i-card--<?php echo esc_attr($mod); ?>">
          <div class="einsatz-i-card__label"><?php echo esc_html($label); ?></div>
          <div class="einsatz-i-card__value"><?php echo intval($count); ?></div>
        </div>
      <?php endforeach; ?>

      <?php if ($maxH>0): ?>
        <div class="einsatz-i-card einsatz-i-card--time">
          <div class="einsatz-i-card__label">Häufigste Zeit</div>
          <div class="einsatz-i-card__value">
            <?php echo esc_html(implode(' · ', array_map($fmt_hour, $peak_hours))); ?>
          </div>
        </div>
      <?php endif; ?>
    </div>

    <?php if (strtolower($a['show_chart'])==='yes'): ?>
      <div class="einsatz-insights__hours" aria-label="Verteilung über den Tag">
        <?php 
          $max = max(1,$maxH);
          for ($h=0; $h<24; $h++):
            $val = $by_hour[$h];
            $w = round($val/$max*100,1);
        ?>
          <div class="einsatz-hour">
            <span class="einsatz-hour__label"><?php echo sprintf('%02d', $h); ?></span>
            <span class="einsatz-hour__bar"><i style="width: <?php echo $w; ?>%"></i></span>
            <span class="einsatz-hour__val"><?php echo intval($val); ?></span>
          </div>
        <?php endfor; ?>
      </div>
    <?php endif; ?>
  </div>
  <?php
  return ob_get_clean();
}
add_shortcode('einsatz_insights', 'fw_einsatz_insights_shortcode');/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-79cf056 *//* === Feuerwehr Dassel – Finale Einsatzliste mit Footer === */
.elementor-200 .elementor-element.elementor-element-79cf056 {
  background: #263544; /* blauer Grundton */
  border: none;
  border-radius: 16px; /* Runde Ecken */
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.25);
  overflow: hidden;
  color: #fff;
  font-family: "Inter", "Roboto", system-ui, sans-serif;
}

/* === Titel mit rotem Akzent === */
.elementor-200 .elementor-element.elementor-element-79cf056 h2,
.elementor-200 .elementor-element.elementor-element-79cf056 h3,
.elementor-200 .elementor-element.elementor-element-79cf056 h4 {
  margin: 0;
  padding: 16px 22px;
  font: 700 1.1rem/1.3 "Inter", "Roboto", system-ui, sans-serif;
  color: #ffffff;
  background: rgba(255, 255, 255, 0.06);
  position: relative;
  border-top-left-radius: 16px;
  border-top-right-radius: 16px;
}

/* Roter Balken unter der Überschrift */
.elementor-200 .elementor-element.elementor-element-79cf056 h2::after,
.elementor-200 .elementor-element.elementor-element-79cf056 h3::after,
.elementor-200 .elementor-element.elementor-element-79cf056 h4::after {
  content: "";
  display: block;
  width: 100%;
  height: 3px;
  background: #c5161b;
  position: absolute;
  bottom: 0;
  left: 0;
  border-bottom-left-radius: 16px;
  border-bottom-right-radius: 16px;
}

/* === Tabelle === */
.elementor-200 .elementor-element.elementor-element-79cf056 table {
  width: 100%;
  border-collapse: collapse;
  background: transparent;
  border: none;
}

/* Tabellenkopf */
.elementor-200 .elementor-element.elementor-element-79cf056 thead th {
  font: 600 0.95rem/1.2 "Inter", system-ui, sans-serif;
  color: #ffffff;
  background: linear-gradient(to bottom, #2f4058, #263544);
  padding: 12px 16px;
  border-bottom: 2px solid #c5161b;
  text-align: left;
  white-space: nowrap;
}

/* Tabelleninhalt */
.elementor-200 .elementor-element.elementor-element-79cf056 tbody td {
  padding: 12px 16px;
  color: #ffffff;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
  background: transparent;
  transition: background 0.2s ease;
}

/* Hover-Effekt */
.elementor-200 .elementor-element.elementor-element-79cf056 tbody tr:hover {
  background: rgba(255, 255, 255, 0.08);
}

/* === Links in Rot === */
.elementor-200 .elementor-element.elementor-element-79cf056 a {
  color: #c5161b;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.elementor-200 .elementor-element.elementor-element-79cf056 a:hover {
  color: #ff6b6b;
  border-color: currentColor;
}

/* === Footer-Bereich === */
.elementor-200 .elementor-element.elementor-element-79cf056 .einsatz-footer {
  background: #2f4058;
  padding: 14px 22px;
  color: #cbd5e1;
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 2px solid #c5161b;
  border-bottom-left-radius: 16px;
  border-bottom-right-radius: 16px;
}

.elementor-200 .elementor-element.elementor-element-79cf056 .einsatz-footer span {
  display: inline-block;
}

.elementor-200 .elementor-element.elementor-element-79cf056 .einsatz-footer .right {
  font-weight: 600;
  color: #ffffff;
}

/* Mobile Darstellung */
@media (max-width: 768px) {
  .elementor-200 .elementor-element.elementor-element-79cf056 table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
  .elementor-200 .elementor-element.elementor-element-79cf056 thead th,
  .elementor-200 .elementor-element.elementor-element-79cf056 tbody td {
    font-size: 13px;
    padding: 10px 12px;
  }
  .elementor-200 .elementor-element.elementor-element-79cf056 .einsatz-footer {
    flex-direction: column;
    gap: 8px;
    text-align: center;
  }
}

/* Kopfzeile dunkel halten */
.elementor-200 .elementor-element.elementor-element-79cf056 table thead,
.elementor-200 .elementor-element.elementor-element-79cf056 table > thead > tr,
.elementor-200 .elementor-element.elementor-element-79cf056 table > thead > tr > th,
.elementor-200 .elementor-element.elementor-element-79cf056 table > thead > tr > td {
  background: #2f4058 !important;
  color: #ffffff !important;
  border-color: rgba(255,255,255,0.18) !important;
  background-image: none !important;
}

/* Falls Kopfzeile im tbody sitzt */
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.head,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.header,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.thead,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr:first-child {
  background: #2f4058 !important;
  color: #ffffff !important;
}
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.head th,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.header th,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.thead th,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr:first-child th,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.head td,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.header td,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr.thead td,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr:first-child td {
  background: #2f4058 !important;
  color: #ffffff !important;
  border-color: rgba(255,255,255,0.18) !important;
}

/* Vertikale Trennlinien */
.elementor-200 .elementor-element.elementor-element-79cf056 table thead th,
.elementor-200 .elementor-element.elementor-element-79cf056 table thead td,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr:first-child th,
.elementor-200 .elementor-element.elementor-element-79cf056 table > tbody > tr:first-child td {
  border-right: 1px solid rgba(255,255,255,0.18) !important;
}

/* Sicherheit */
.elementor-200 .elementor-element.elementor-element-79cf056 table tbody td {
  background: transparent !important;
  color: #ffffff !important;
  border-color: rgba(255,255,255,0.15) !important;
}

/* === Lücke zwischen Liste und Footer zuverlässig entfernen === */

/* 1) Tabelle bündig */
.elementor-200 .elementor-element.elementor-element-79cf056 table {
  margin: 0 !important;
  border-collapse: collapse !important;
  border-spacing: 0 !important;
}

/* 2) Eventuelle Wrapper/Container ohne extra Abstand */
.elementor-200 .elementor-element.elementor-element-79cf056 .einsatzliste,
.elementor-200 .elementor-element.elementor-element-79cf056 .einsatzliste table,
.elementor-200 .elementor-element.elementor-element-79cf056 .einsatzliste > *:last-child {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}

/* 3) Elementor-Widget-Abstände neutralisieren (Shortcode + HTML-Widget) */
.elementor-200 .elementor-element.elementor-element-79cf056 .elementor-widget-shortcode,
.elementor-200 .elementor-element.elementor-element-79cf056 .elementor-widget-html,
.elementor-200 .elementor-element.elementor-element-79cf056 .elementor-widget-container {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}

/* 4) Letztes Element vor dem Footer darf keinen Bottom-Margin haben */
.elementor-200 .elementor-element.elementor-element-79cf056 > *:not(.einsatz-footer):last-child {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}

/* 5) Leere Absätze/Breaks killen (falls das Plugin <p><br></p> ausgibt) */
.elementor-200 .elementor-element.elementor-element-79cf056 p:empty,
.elementor-200 .elementor-element.elementor-element-79cf056 p:has(br:only-child) {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* 6) Footer bündig an die Tabelle ziehen */
.elementor-200 .elementor-element.elementor-element-79cf056 .einsatz-footer {
  margin-top: 0 !important;
  padding-top: 14px;
  border-top: 2px solid #c5161b;
}

/* Optional: falls das Plugin eine eigene Footer-/Paginationsleiste ausgibt, Abstand minimieren */
.elementor-200 .elementor-element.elementor-element-79cf056 .einsatzliste-footer,
.elementor-200 .elementor-element.elementor-element-79cf056 .pagination,
.elementor-200 .elementor-element.elementor-element-79cf056 .paging {
  margin-top: 0 !important;
  padding-top: 0 !important;
}/* End custom CSS */