{"id":251,"date":"2025-10-15T21:31:31","date_gmt":"2025-10-15T19:31:31","guid":{"rendered":"https:\/\/theakefalonia.com\/?page_id=251"},"modified":"2026-10-04T09:40:07","modified_gmt":"2026-10-04T07:40:07","slug":"livecam","status":"publish","type":"page","link":"https:\/\/theakefalonia.com\/en\/livecam\/","title":{"rendered":""},"content":{"rendered":"<style>\n  .thea-livecam {\n    max-width: 900px;\n    margin: -155px auto 32px !important;\n    font-family: Arial, sans-serif;\n    color: #17211d;\n  }\n\n  .thea-livecam-header {\n    text-align: center;\n    margin-bottom: 22px;\n  }\n\n  .thea-livecam-kicker {\n    margin: 0 0 8px;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: .12em;\n    text-transform: uppercase;\n    color: #45685e;\n  }\n\n  .thea-livecam h2 {\n    margin: 0 0 14px;\n    font-size: 30px;\n    line-height: 1.15;\n    letter-spacing: -.03em;\n    color: #14241f;\n  }\n\n  .thea-livecam-intro {\n    max-width: 760px;\n    margin: 0 auto 12px;\n    font-size: 16px;\n    line-height: 1.65;\n    color: #46534e;\n  }\n\n  .thea-livecam-tagline {\n    margin: 0;\n    font-family: Georgia, serif;\n    font-size: 18px;\n    font-style: italic;\n    color: #60706a;\n  }\n\n  .thea-video-card {\n    margin-top: 24px;\n    border: 1px solid #dfe4e0;\n    border-radius: 20px;\n    overflow: hidden;\n    background: #17211d;\n    box-shadow: 0 14px 38px rgba(24,40,34,.10);\n  }\n\n  .thea-video {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 16 \/ 9;\n    background: #17211d;\n  }\n\n  .thea-video iframe {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n  }\n\n  .thea-video-footer {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 12px;\n    padding: 11px 15px;\n    background: #fff;\n    font-size: 12px;\n    color: #68756f;\n  }\n\n  .thea-live-indicator {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    font-weight: 700;\n    color: #284f43;\n  }\n\n  .thea-live-dot {\n    width: 7px;\n    height: 7px;\n    border-radius: 50%;\n    background: #58aa79;\n    box-shadow: 0 0 0 4px rgba(88,170,121,.13);\n  }\n\n  \/* WEATHER *\/\n\n  .tw-now {\n    margin: 15px auto 0;\n    color: #17211d;\n  }\n\n  .tw-card {\n    border: 1px solid #dfe4e0;\n    border-radius: 18px;\n    background: #fff;\n    padding: 16px 18px;\n    box-shadow: 0 9px 28px rgba(24,40,34,.06);\n  }\n\n  .tw-head {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 14px;\n    margin-bottom: 13px;\n  }\n\n  .tw-title {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n  }\n\n  .tw-title strong {\n    font-size: 14px;\n  }\n\n  .tw-title span {\n    font-size: 11px;\n    color: #758079;\n  }\n\n  .tw-dot {\n    width: 7px;\n    height: 7px;\n    border-radius: 50%;\n    background: #58aa79;\n    box-shadow: 0 0 0 4px rgba(88,170,121,.13);\n    flex: 0 0 auto;\n  }\n\n  .tw-dot.stale {\n    background: #d6974d;\n    box-shadow: 0 0 0 4px rgba(214,151,77,.13);\n  }\n\n  .tw-link {\n    font-size: 12px;\n    font-weight: 700;\n    text-decoration: none;\n    color: #163c34;\n    white-space: nowrap;\n  }\n\n  .tw-link:hover {\n    text-decoration: underline;\n  }\n\n  .tw-grid {\n    display: grid;\n    grid-template-columns: 1.25fr repeat(5, 1fr);\n    align-items: center;\n  }\n\n  .tw-item {\n    padding: 2px 15px;\n    border-left: 1px solid #e6eae7;\n    min-width: 0;\n  }\n\n  .tw-item:first-child {\n    border-left: 0;\n    padding-left: 0;\n  }\n\n  .tw-label {\n    display: block;\n    margin-bottom: 4px;\n    font-size: 10px;\n    text-transform: uppercase;\n    letter-spacing: .07em;\n    color: #7a837e;\n  }\n\n  .tw-value {\n    font-size: 18px;\n    font-weight: 600;\n    white-space: nowrap;\n  }\n\n  .tw-main .tw-value {\n    font-size: 30px;\n    letter-spacing: -.04em;\n  }\n\n  .tw-sub {\n    margin-top: 2px;\n    font-size: 10px;\n    color: #7a837e;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n\n  .tw-error {\n    padding: 6px 0;\n    font-size: 12px;\n    color: #7a837e;\n  }\n\n  \/* TABLET *\/\n\n  @media (max-width: 900px) {\n    .thea-livecam {\n      margin: -120px auto 28px !important;\n      padding: 0 16px;\n      box-sizing: border-box;\n    }\n  }\n\n  @media (max-width: 760px) {\n    .thea-livecam h2 {\n      font-size: 26px;\n    }\n\n    .thea-livecam-intro {\n      font-size: 15px;\n    }\n\n    .tw-grid {\n      grid-template-columns: repeat(3, 1fr);\n      gap: 14px 0;\n    }\n\n    .tw-item {\n      border-left: 1px solid #e6eae7;\n    }\n\n    .tw-item:nth-child(3n+1) {\n      border-left: 0;\n      padding-left: 0;\n    }\n\n    .tw-main .tw-value {\n      font-size: 24px;\n    }\n  }\n\n  \/* SMARTPHONE *\/\n\n  @media (max-width: 600px) {\n    .thea-livecam {\n      margin: -70px auto 24px !important;\n      padding: 0 12px;\n    }\n  }\n\n  @media (max-width: 520px) {\n    .thea-livecam h2 {\n      font-size: 24px;\n    }\n\n    .thea-livecam-kicker {\n      font-size: 10px;\n    }\n\n    .thea-livecam-tagline {\n      font-size: 16px;\n    }\n\n    .thea-video-card {\n      border-radius: 15px;\n    }\n\n    .thea-video-footer {\n      flex-direction: column;\n      align-items: flex-start;\n      gap: 5px;\n    }\n\n    .tw-card {\n      padding: 14px;\n    }\n\n    .tw-head {\n      align-items: flex-start;\n    }\n\n    .tw-grid {\n      grid-template-columns: 1fr 1fr;\n    }\n\n    .tw-item,\n    .tw-item:nth-child(3n+1) {\n      border-left: 1px solid #e6eae7;\n      padding-left: 12px;\n    }\n\n    .tw-item:nth-child(odd) {\n      border-left: 0;\n      padding-left: 0;\n    }\n\n    .tw-link {\n      white-space: normal;\n      text-align: right;\n    }\n  }\n<\/style>\n\n\n<div class=\"thea-livecam\">\n\n  <div class=\"thea-livecam-header\">\n\n    <p class=\"thea-livecam-kicker\">\n      Live from Thea \u00b7 Sarlata, Kefalonia\n    <\/p>\n\n    <h2>\n      Live-Webcam \u2013 Kefalonia Airport &amp; Ionisches Meer\n    <\/h2>\n\n    <p class=\"thea-livecam-intro\">\n      On the left you can see <strong>Ammes<\/strong> and beginning of\n      <strong>Piste 32<\/strong>, in der Mitte den\n      <strong>Flughafen von Kefalonia<\/strong> \u2013 und rechts den traumhaften\n      Strand <strong>Megali Ammos bei Minies<\/strong>.\n      Dieses Panorama geniessen Sie jeden Tag direkt von Thea.\n    <\/p>\n\n    <p class=\"thea-livecam-tagline\">\n      Von Ammes bis Megali Ammos \u2013 Ihr Blick \u00fcber das Ionische Meer.\n    <\/p>\n\n  <\/div>\n\n\n  <!-- LIVE VIDEO -->\n\n  <div class=\"thea-video-card\">\n\n    <div class=\"thea-video\">\n\n      <iframe\n        src=\"https:\/\/stream.theakefalonia.com\/thea-web\/?autoplay=true&#038;muted=true&#038;controls=true&#038;playsinline=true\"\n        title=\"Live Webcam Thea Kefalonia\"\n        allow=\"autoplay; fullscreen; picture-in-picture\"\n        allowfullscreen\n loading=\"eager\">\n      <\/iframe>\n\n    <\/div>\n\n    <div class=\"thea-video-footer\">\n\n      <span class=\"thea-live-indicator\">\n        <span class=\"thea-live-dot\"><\/span>\n        LIVE\n      <\/span>\n\n      <span>\n        Live-\u00dcbertragung aus Sarlata \u00b7 Kefalonia\n      <\/span>\n\n    <\/div>\n\n  <\/div>\n\n\n  <!-- LIVE WEATHER -->\n\n  <div id=\"thea-weather-now\" class=\"tw-now\" aria-live=\"polite\">\n\n    <div class=\"tw-card\">\n\n      <div class=\"tw-head\">\n\n        <div class=\"tw-title\">\n\n          <i id=\"tw-dot\" class=\"tw-dot\"><\/i>\n\n          <div>\n            <strong>Wetter bei Thea<\/strong><br>\n            <span id=\"tw-updated\">\n              Verbindung mit unserer Wetterstation\u2026\n            <\/span>\n          <\/div>\n\n        <\/div>\n\n        <a\n          class=\"tw-link\"\n          href=\"https:\/\/theakefalonia.com\/en\/weather\/\">\n          Detailliertes Wetter &amp; Verlauf \u2192\n        <\/a>\n\n      <\/div>\n\n\n      <div id=\"tw-content\" class=\"tw-grid\" hidden>\n\n        <div class=\"tw-item tw-main\">\n          <span class=\"tw-label\">Aktuell<\/span>\n\n          <div class=\"tw-value\">\n            <span id=\"tw-temp\">\u2014<\/span><span id=\"tw-temp-unit\">\u00b0C<\/span>\n          <\/div>\n\n          <div id=\"tw-feels\" class=\"tw-sub\">\n            Gef\u00fchlt \u2014\n          <\/div>\n        <\/div>\n\n\n        <div class=\"tw-item\">\n          <span class=\"tw-label\">Luftfeuchte<\/span>\n\n          <div class=\"tw-value\">\n            <span id=\"tw-humidity\">\u2014<\/span>%\n          <\/div>\n\n          <div id=\"tw-dew\" class=\"tw-sub\">\n            Taupunkt \u2014\n          <\/div>\n        <\/div>\n\n\n        <div class=\"tw-item\">\n          <span class=\"tw-label\">Wind<\/span>\n\n          <div class=\"tw-value\">\n            <span id=\"tw-wind\">\u2014<\/span>\n            <span id=\"tw-wind-unit\">km\/h<\/span>\n          <\/div>\n\n          <div id=\"tw-gust\" class=\"tw-sub\">\n            B\u00f6e \u2014\n          <\/div>\n        <\/div>\n\n\n        <div class=\"tw-item\">\n          <span class=\"tw-label\">UV<\/span>\n\n          <div class=\"tw-value\" id=\"tw-uv\">\n            \u2014\n          <\/div>\n\n          <div class=\"tw-sub\">\n            Lokal gemessen\n          <\/div>\n        <\/div>\n\n\n        <div class=\"tw-item\">\n          <span class=\"tw-label\">Regen heute<\/span>\n\n          <div class=\"tw-value\">\n            <span id=\"tw-rain\">\u2014<\/span>\n            <span id=\"tw-rain-unit\">mm<\/span>\n          <\/div>\n\n          <div id=\"tw-rate\" class=\"tw-sub\">\n            \u2014 mm\/h aktuell\n          <\/div>\n        <\/div>\n\n\n        <div class=\"tw-item\">\n          <span class=\"tw-label\">Luftdruck<\/span>\n\n          <div class=\"tw-value\">\n            <span id=\"tw-pressure\">\u2014<\/span>\n          <\/div>\n\n          <div class=\"tw-sub\" id=\"tw-pressure-unit\">\n            hPa\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n\n      <div id=\"tw-error\" class=\"tw-error\">\n        Wetterdaten werden geladen\u2026\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n\n<script>\n(() => {\n\n  const q = id => document.getElementById(id);\n\n  const f = (v, d = 0) =>\n    v == null || v === ''\n      ? '\u2014'\n      : Number(v).toFixed(d);\n\n\n  const defaults = {\n    temperature: 'c',\n    wind: 'kmh',\n    pressure: 'hpa',\n    rain: 'mm'\n  };\n\n  let u = {...defaults};\n\n  try {\n\n    const saved = JSON.parse(\n      localStorage.getItem('theaWeatherUnits') || '{}'\n    );\n\n    u = {...u, ...saved};\n\n  } catch (e) {}\n\n\n  const temperature = v =>\n    v == null\n      ? null\n      : u.temperature === 'f'\n        ? Number(v) * 9 \/ 5 + 32\n        : Number(v);\n\n\n  const wind = v =>\n    v == null\n      ? null\n      : u.wind === 'kn'\n        ? Number(v) \/ 1.852\n        : u.wind === 'ms'\n          ? Number(v) \/ 3.6\n          : Number(v);\n\n\n  const pressure = v =>\n    v == null\n      ? null\n      : u.pressure === 'inhg'\n        ? Number(v) * 0.0295299830714\n        : Number(v);\n\n\n  const rainfall = v =>\n    v == null\n      ? null\n      : u.rain === 'in'\n        ? Number(v) \/ 25.4\n        : Number(v);\n\n\n  const tempUnit = () =>\n    u.temperature === 'f'\n      ? '\u00b0F'\n      : '\u00b0C';\n\n\n  const windUnit = () =>\n    u.wind === 'kn'\n      ? 'kn'\n      : u.wind === 'ms'\n        ? 'm\/s'\n        : 'km\/h';\n\n\n  const pressureUnit = () =>\n    u.pressure === 'inhg'\n      ? 'inHg'\n      : 'hPa';\n\n\n  const rainUnit = () =>\n    u.rain === 'in'\n      ? 'in'\n      : 'mm';\n\n\n  function ageText(seconds) {\n\n    seconds = Number(seconds || 0);\n\n    if (seconds < 60) {\n\n      return `vor ${Math.max(\n        0,\n        Math.round(seconds)\n      )} Sek.`;\n\n    }\n\n    const minutes = Math.floor(seconds \/ 60);\n\n    if (minutes === 1) {\n      return 'vor 1 Min.';\n    }\n\n    return `vor ${minutes} Min.`;\n  }\n\n\n  async function loadWeather() {\n\n    try {\n\n      const response = await fetch(\n        'https:\/\/theakefalonia.com\/weather\/api\/current.php',\n        {\n          cache: 'no-store'\n        }\n      );\n\n      const json = await response.json();\n\n      if (!json.ok || !json.data) {\n        throw new Error('No weather data');\n      }\n\n      const d = json.data;\n\n\n      \/* TEMPERATUR *\/\n\n      q('tw-temp').textContent =\n        f(\n          temperature(d.temperature_c),\n          1\n        );\n\n      q('tw-temp-unit').textContent =\n        tempUnit();\n\n      q('tw-feels').textContent =\n        `Gef\u00fchlt ${f(\n          temperature(d.feels_like_c),\n          1\n        )}${tempUnit()}`;\n\n\n      \/* LUFTFEUCHTIGKEIT *\/\n\n      q('tw-humidity').textContent =\n        f(\n          d.humidity_pct\n        );\n\n      q('tw-dew').textContent =\n        `Taupunkt ${f(\n          temperature(d.dewpoint_c),\n          1\n        )}${tempUnit()}`;\n\n\n      \/* WIND *\/\n\n      q('tw-wind').textContent =\n        f(\n          wind(d.wind?.speed_kmh),\n          1\n        );\n\n      q('tw-wind-unit').textContent =\n        windUnit();\n\n      q('tw-gust').textContent =\n        `${d.wind?.direction || '\u2014'} \u00b7 B\u00f6e ${f(\n          wind(d.wind?.gust_kmh),\n          1\n        )} ${windUnit()}`;\n\n\n      \/* UV *\/\n\n      q('tw-uv').textContent =\n        f(\n          d.uv_index,\n          1\n        );\n\n\n      \/* REGEN *\/\n\n      const rainDecimals =\n        u.rain === 'in'\n          ? 2\n          : 1;\n\n      q('tw-rain').textContent =\n        f(\n          rainfall(d.rain?.today_mm),\n          rainDecimals\n        );\n\n      q('tw-rain-unit').textContent =\n        rainUnit();\n\n      q('tw-rate').textContent =\n        `${f(\n          rainfall(d.rain?.rate_mm_h),\n          rainDecimals\n        )} ${rainUnit()}\/h aktuell`;\n\n\n      \/* LUFTDRUCK *\/\n\n      q('tw-pressure').textContent =\n        f(\n          pressure(d.pressure_hpa),\n          u.pressure === 'inhg'\n            ? 2\n            : 0\n        );\n\n      q('tw-pressure-unit').textContent =\n        pressureUnit();\n\n\n      \/* STATUS *\/\n\n      q('tw-updated').textContent =\n        `In Sarlata gemessen \u00b7 aktualisiert ${ageText(\n          d.age_seconds\n        )}`;\n\n      q('tw-dot').classList.toggle(\n        'stale',\n        !!d.stale\n      );\n\n\n      q('tw-content').hidden = false;\n      q('tw-error').hidden = true;\n\n    } catch (error) {\n\n      q('tw-content').hidden = true;\n      q('tw-error').hidden = false;\n\n      q('tw-error').textContent =\n        'Wetterdaten sind momentan nicht verf\u00fcgbar.';\n    }\n  }\n\n\n  loadWeather();\n\n  setInterval(\n    loadWeather,\n    60000\n  );\n\n})();\n<\/script>","protected":false},"excerpt":{"rendered":"<p>Live from Thea \u00b7 Sarlata, Kefalonia Live-Webcam \u2013 Kefalonia Airport &amp; Ionisches Meer Links sehen Sie den Strand Ammes und den Beginn der Piste 32, in der Mitte den Flughafen von Kefalonia \u2013 und rechts den traumhaften Strand Megali Ammos bei Minies. Dieses Panorama geniessen Sie jeden Tag direkt von Thea. Von Ammes bis Megali [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"ngg_post_thumbnail":0,"footnotes":""},"class_list":["post-251","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/pages\/251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/comments?post=251"}],"version-history":[{"count":10,"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/pages\/251\/revisions"}],"predecessor-version":[{"id":361,"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/pages\/251\/revisions\/361"}],"wp:attachment":[{"href":"https:\/\/theakefalonia.com\/en\/wp-json\/wp\/v2\/media?parent=251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}