{"id":48,"date":"2025-04-10T14:43:14","date_gmt":"2025-04-10T13:43:14","guid":{"rendered":"https:\/\/wagenhofer.ch\/me\/?page_id=48"},"modified":"2026-06-04T20:12:10","modified_gmt":"2026-06-04T19:12:10","slug":"my-activities","status":"publish","type":"page","link":"https:\/\/wagenhofer.ch\/me\/my-activities\/","title":{"rendered":"My sport activities"},"content":{"rendered":"<div id=\"sa-root\">\n<style>\n#sa-root{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#1a1a2e;max-width:920px;margin:0 auto;padding:28px 16px 80px}\n.sa-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:28px}\n.sa-sc{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px 18px}\n.sa-sc .sv{font-size:22px;font-weight:800;color:#fc4c02;line-height:1.1}\n.sa-sc .sl{font-size:11px;color:#6b7280;margin-top:4px;text-transform:uppercase;letter-spacing:.5px}\n.sa-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}\n.sa-fb{background:#fff;border:1.5px solid #e5e7eb;border-radius:999px;padding:6px 16px;font-size:13px;font-weight:600;cursor:pointer;color:#374151;transition:all .15s}\n.sa-fb:hover{border-color:#fc4c02;color:#fc4c02}\n.sa-fb.on{background:#fc4c02;border-color:#fc4c02;color:#fff}\n.sa-list{display:flex;flex-direction:column;gap:12px}\n.sa-card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:18px 20px;transition:box-shadow .15s}\n.sa-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}\n.sa-ch{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}\n.sa-cn{font-size:15px;font-weight:700;margin:0 0 3px}\n.sa-cm{font-size:12px;color:#6b7280}\n.sa-badge{display:inline-flex;align-items:center;gap:4px;background:#fff0eb;color:#fc4c02;font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;flex-shrink:0}\n.sa-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}\n.sa-st{text-align:center}\n.sa-st .v{font-size:16px;font-weight:700}\n.sa-st .l{font-size:11px;color:#6b7280;margin-top:2px;text-transform:uppercase;letter-spacing:.4px}\n.sa-zbar{margin-top:2px;margin-bottom:10px}\n.sa-zl{font-size:11px;color:#6b7280;margin-bottom:4px;text-transform:uppercase;letter-spacing:.4px}\n.sa-ztrack{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:1px}\n.sa-zseg{height:100%}\n.sa-zleg{display:flex;gap:10px;margin-top:5px;flex-wrap:wrap}\n.sa-zli{font-size:11px;color:#6b7280;display:flex;align-items:center;gap:3px}\n.sa-zdot{width:8px;height:8px;border-radius:50%;flex-shrink:0}\n\/* Photo strip *\/\n.sa-photos{display:flex;gap:6px;overflow-x:auto;margin:10px 0;padding-bottom:4px;scrollbar-width:thin;scrollbar-color:#e5e7eb transparent}\n.sa-photos::-webkit-scrollbar{height:4px}\n.sa-photos::-webkit-scrollbar-track{background:transparent}\n.sa-photos::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:2px}\n.sa-photo-wrap{position:relative;flex-shrink:0}\n.sa-photo{width:100px;height:100px;object-fit:cover;border-radius:8px;cursor:zoom-in;display:block;transition:all .15s;border:1px solid #e5e7eb}\n.sa-photo:hover{opacity:.88;transform:scale(1.03)}\n.sa-photo-del{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;border:none;cursor:pointer;font-size:14px;line-height:20px;padding:0;text-align:center;opacity:0;transition:opacity .15s;z-index:1}\n.sa-photo-wrap:hover .sa-photo-del{opacity:1}\n.sa-photo-del:hover{background:rgba(220,30,30,.85)}\n\/* Lightbox *\/\n.sa-lb{display:none;position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:99999;align-items:center;justify-content:center;cursor:zoom-out}\n.sa-lb.open{display:flex}\n.sa-lb img{max-width:82vw;max-height:92vh;object-fit:contain;border-radius:6px;box-shadow:0 8px 40px rgba(0,0,0,.6);user-select:none;cursor:default}\n.sa-lb-close{position:absolute;top:16px;right:20px;color:#fff;font-size:28px;cursor:pointer;line-height:1;opacity:.8;background:none;border:none;padding:4px 8px}\n.sa-lb-close:hover{opacity:1}\n.sa-lb-nav{position:absolute;top:50%;transform:translateY(-50%);color:#fff;font-size:52px;line-height:1;cursor:pointer;opacity:.7;background:none;border:none;padding:8px 18px;user-select:none;transition:opacity .15s}\n.sa-lb-nav:hover{opacity:1}\n.sa-lb-prev{left:8px}\n.sa-lb-next{right:8px}\n.sa-lb-nav:disabled{opacity:.18;cursor:default}\n.sa-lb-counter{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.7);font-size:13px;font-family:inherit;letter-spacing:.5px}\n.sa-foot{display:flex;justify-content:flex-end;margin-top:10px}\n.sa-slink{font-size:12px;color:#fc4c02;text-decoration:none;font-weight:600}\n.sa-slink:hover{text-decoration:underline}\n.sa-more{text-align:center;margin-top:24px}\n.sa-mbtn{background:#fff;border:1.5px solid #e5e7eb;border-radius:999px;padding:10px 28px;font-size:14px;font-weight:600;cursor:pointer;color:#374151;transition:all .15s}\n.sa-mbtn:hover{border-color:#fc4c02;color:#fc4c02}\n.sa-mbtn:disabled{opacity:.4;cursor:default}\n.sa-msg{text-align:center;padding:40px;color:#6b7280;font-size:14px}\n.sa-spin{display:inline-block;width:18px;height:18px;border:2px solid #e5e7eb;border-top-color:#fc4c02;border-radius:50%;animation:saspin .7s linear infinite;margin-right:8px;vertical-align:middle}\n@keyframes saspin{to{transform:rotate(360deg)}}\n.sa-ytd-wrap{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:18px 22px;margin-bottom:20px;display:none}\n.sa-ytd-wrap.ready{display:block}\n.sa-ytd-hdr{font-size:11px;font-weight:700;color:#9ca3af;text-transform:uppercase;letter-spacing:.6px;margin-bottom:14px}\n.sa-ytd-grid{display:grid;grid-template-columns:1fr 1px 1fr;gap:0 20px;align-items:start}\n.sa-ytd-divider{background:#e5e7eb;align-self:stretch}\n.sa-ytd-col-hdr{font-size:13px;font-weight:700;color:#fc4c02;margin-bottom:10px}\n.sa-ytd-prev .sa-ytd-col-hdr{color:#9ca3af}\n.sa-ytd-row{display:flex;align-items:baseline;gap:6px;margin-bottom:8px;flex-wrap:wrap}\n.sa-ytd-v{font-size:19px;font-weight:800;color:#1a1a2e;line-height:1}\n.sa-ytd-prev .sa-ytd-v{font-size:16px;font-weight:600;color:#6b7280}\n.sa-ytd-lbl{font-size:11px;color:#9ca3af;text-transform:uppercase;letter-spacing:.4px}\n.sa-ytd-delta{font-size:11px;font-weight:700;margin-left:2px}\n.sa-ytd-delta.up{color:#10b981}.sa-ytd-delta.dn{color:#f87171}.sa-ytd-delta.eq{color:#9ca3af}\n.sa-since{display:none;align-items:center;gap:6px;justify-content:center;margin:-4px 0 18px;font-size:11px;color:#9ca3af;letter-spacing:.3px}\n.sa-since.ready{display:flex}\n.sa-since-dot{width:6px;height:6px;border-radius:50%;background:#e5e7eb;flex-shrink:0}\n.sa-since strong{color:#6b7280;font-weight:600}\n@media(max-width:600px){.sa-stats{grid-template-columns:repeat(2,1fr)}.sa-row{grid-template-columns:repeat(2,1fr)}.sa-photo{width:80px;height:80px}}\n<\/style>\n<div class=\"sa-ytd-wrap\" id=\"sa-ytd-wrap\">\n  <div class=\"sa-ytd-hdr\">Year-to-date \u00b7 <span id=\"sa-ytd-from\">\u2014<\/span> through <span id=\"sa-ytd-through\">\u2014<\/span><\/div>\n  <div class=\"sa-ytd-grid\">\n    <div class=\"sa-ytd-cur\">\n      <div class=\"sa-ytd-col-hdr\" id=\"sa-ytd-cur-y\">\u2014<\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-c-km\">\u2014<\/span><span class=\"sa-ytd-lbl\">km<\/span><span class=\"sa-ytd-delta\" id=\"ytd-d-km\"><\/span><\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-c-acts\">\u2014<\/span><span class=\"sa-ytd-lbl\">activities<\/span><span class=\"sa-ytd-delta\" id=\"ytd-d-acts\"><\/span><\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-c-elev\">\u2014<\/span><span class=\"sa-ytd-lbl\">m elev<\/span><span class=\"sa-ytd-delta\" id=\"ytd-d-elev\"><\/span><\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-c-hr\">\u2014<\/span><span class=\"sa-ytd-lbl\">avg HR runs<\/span><\/div>\n    <\/div>\n    <div class=\"sa-ytd-divider\"><\/div>\n    <div class=\"sa-ytd-prev\">\n      <div class=\"sa-ytd-col-hdr\" id=\"sa-ytd-prv-y\">\u2014<\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-p-km\">\u2014<\/span><span class=\"sa-ytd-lbl\">km<\/span><\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-p-acts\">\u2014<\/span><span class=\"sa-ytd-lbl\">activities<\/span><\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-p-elev\">\u2014<\/span><span class=\"sa-ytd-lbl\">m elev<\/span><\/div>\n      <div class=\"sa-ytd-row\"><span class=\"sa-ytd-v\" id=\"ytd-p-hr\">\u2014<\/span><span class=\"sa-ytd-lbl\">avg HR runs<\/span><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n<div class=\"sa-since\" id=\"sa-since\"><span class=\"sa-since-dot\"><\/span>Tracking since <strong id=\"sa-since-date\">\u2014<\/strong><\/div>\n<div class=\"sa-stats\">\n  <div class=\"sa-sc\"><div class=\"sv\" id=\"sa-km\">\u2014<\/div><div class=\"sl\">Total km<\/div><\/div>\n  <div class=\"sa-sc\"><div class=\"sv\" id=\"sa-acts\">\u2014<\/div><div class=\"sl\">Activities<\/div><\/div>\n  <div class=\"sa-sc\"><div class=\"sv\" id=\"sa-elev\">\u2014<\/div><div class=\"sl\">Elevation m<\/div><\/div>\n  <div class=\"sa-sc\"><div class=\"sv\" id=\"sa-hr\">\u2014<\/div><div class=\"sl\">Avg HR \u00b7 Runs<\/div><\/div>\n<\/div>\n<div class=\"sa-filters\">\n  <button class=\"sa-fb on\" data-t=\"\">All<\/button>\n  <button class=\"sa-fb\" data-t=\"Run\">Run<\/button>\n  <button class=\"sa-fb\" data-t=\"Hike\">Hike<\/button>\n  <button class=\"sa-fb\" data-t=\"AlpineSki\">Alpine Ski<\/button>\n  <button class=\"sa-fb\" data-t=\"EBikeRide\">E-Bike<\/button>\n  <button class=\"sa-fb\" data-t=\"Ride\">Ride<\/button>\n<\/div>\n<div class=\"sa-list\" id=\"sa-list\"><div class=\"sa-msg\"><span class=\"sa-spin\"><\/span>Loading\u2026<\/div><\/div>\n<div class=\"sa-more\" id=\"sa-more\" style=\"display:none\"><button class=\"sa-mbtn\" id=\"sa-mbtn\">Load more<\/button><\/div>\n<\/div>\n<!-- Lightbox overlay -->\n<div class=\"sa-lb\" id=\"sa-lb\" role=\"dialog\" aria-modal=\"true\">\n  <button class=\"sa-lb-close\" id=\"sa-lb-close\" aria-label=\"Close\">&#x2715;<\/button>\n  <button class=\"sa-lb-nav sa-lb-prev\" id=\"sa-lb-prev\" aria-label=\"Previous\">&#x2039;<\/button>\n  <img decoding=\"async\" id=\"sa-lb-img\" src=\"\" alt=\"Activity photo\">\n  <button class=\"sa-lb-nav sa-lb-next\" id=\"sa-lb-next\" aria-label=\"Next\">&#x203a;<\/button>\n  <div class=\"sa-lb-counter\" id=\"sa-lb-counter\"><\/div>\n<\/div>\n<script>\n(function(){\nvar BASE='https:\/\/wagenhofer.ch\/me\/wp-json\/strava\/v1',KEY='pw-strava-2026',PAGE=20,off=0,type='',busy=false;\nvar SHOW_PHOTOS=true;\nvar PHOTO_TYPES=[\"TrailRun\",\"Run\"];\nvar IS_ADMIN=false;\nvar HIDE_NONCE='bc256fa886';\nvar HIDE_URL='https:\/\/wagenhofer.ch\/me\/wp-json\/strava\/v1\/photo-hide';\nvar ICONS={Run:'\ud83c\udfc3',TrailRun:'\ud83c\udfc3',Hike:'\ud83e\udd7e',AlpineSki:'\u26f7\ufe0f',EBikeRide:'\ud83d\udeb4',Ride:'\ud83d\udeb4',Workout:'\ud83d\udcaa',Kayaking:'\ud83d\udef6'};\nvar ZCOL=['#94a3b8','#60a5fa','#34d399','#fbbf24','#f87171'];\nvar ZNAME=['Z1','Z2','Z3','Z4','Z5'];\nvar ZTHR=[140,164,177,188];\n\n\/\/ Lightbox\nvar lb=ge('sa-lb'),lbImg=ge('sa-lb-img'),lbPrevBtn=ge('sa-lb-prev'),lbNextBtn=ge('sa-lb-next'),lbCounter=ge('sa-lb-counter');\nvar lbPhotos=[],lbIdx=0;\nfunction lbGo(i){\n  lbIdx=i;\n  lbImg.src=lbPhotos[i].url;\n  var multi=lbPhotos.length>1;\n  lbPrevBtn.style.display=multi?'':'none';\n  lbNextBtn.style.display=multi?'':'none';\n  lbPrevBtn.disabled=(i===0);\n  lbNextBtn.disabled=(i===lbPhotos.length-1);\n  lbCounter.textContent=multi?(i+1)+' \/ '+lbPhotos.length:'';\n}\nfunction lbOpen(photos,idx){\n  lbPhotos=photos;document.body.style.overflow='hidden';lb.classList.add('open');lbGo(idx);\n}\nfunction lbClose(){lb.classList.remove('open');document.body.style.overflow='';lbImg.src='';lbPhotos=[];}\nge('sa-lb-close').addEventListener('click',lbClose);\nlbPrevBtn.addEventListener('click',function(e){e.stopPropagation();if(lbIdx>0)lbGo(lbIdx-1);});\nlbNextBtn.addEventListener('click',function(e){e.stopPropagation();if(lbIdx<lbPhotos.length-1)lbGo(lbIdx+1);});\nlb.addEventListener('click',function(e){if(e.target===lb||e.target===lbImg)lbClose();});\ndocument.addEventListener('keydown',function(e){\n  if(!lb.classList.contains('open'))return;\n  if(e.key==='Escape')lbClose();\n  if(e.key==='ArrowLeft'&&lbIdx>0)lbGo(lbIdx-1);\n  if(e.key==='ArrowRight'&&lbIdx<lbPhotos.length-1)lbGo(lbIdx+1);\n});\n\n\/\/ IntersectionObserver: load photos when card scrolls into view\nvar photoObs=(SHOW_PHOTOS&&window.IntersectionObserver)?new IntersectionObserver(function(entries){\n  entries.forEach(function(e){\n    if(e.isIntersecting){\n      photoObs.unobserve(e.target);\n      var sid=e.target.dataset.sid;\n      if(sid)loadPhotos(e.target,sid);\n    }\n  });\n},{rootMargin:'200px'}):null;\n\nfetch(BASE+'\/stats?key='+KEY).then(function(r){return r.json();}).then(function(d){\n  ge('sa-km').textContent=fmt(d.total_km||0,0)+' km';\n  ge('sa-acts').textContent=d.total_activities||'\u2014';\n  ge('sa-elev').textContent=fmt(d.total_elevation_m||0,0)+' m';\n  var rhr=d.by_type&&d.by_type.Run&&d.by_type.Run.avg_hr?Math.round(d.by_type.Run.avg_hr)+' bpm':'\u2014';\n  ge('sa-hr').textContent=rhr;\n}).catch(function(){});\n\n\nfetch(BASE+'\/ytd?key='+KEY).then(function(r){return r.json();}).then(function(d){\n  function delta(cur,prev,el){\n    if(!prev)return;\n    var pct=Math.round((cur-prev)\/prev*100);\n    el.textContent=(pct>0?'\u25b2':pct<0?'\u25bc':'=')+Math.abs(pct)+'%';\n    el.className='sa-ytd-delta '+(pct>0?'up':pct<0?'dn':'eq');\n  }\n  ge('sa-since-date').textContent=d.from_full;\n  ge('sa-since').classList.add('ready');\n  ge('sa-ytd-from').textContent=d.from;\n  ge('sa-ytd-through').textContent=d.through;\n  ge('sa-ytd-cur-y').textContent=d.year;\n  ge('sa-ytd-prv-y').textContent=d.year-1;\n  var c=d.current,p=d.previous;\n  ge('ytd-c-km').textContent=fmt(c.km,0)+' km';\n  ge('ytd-c-acts').textContent=c.activities;\n  ge('ytd-c-elev').textContent=fmt(c.elevation_m,0)+' m';\n  ge('ytd-c-hr').textContent=c.avg_hr_runs?c.avg_hr_runs+' bpm':'\u2014';\n  ge('ytd-p-km').textContent=fmt(p.km,0)+' km';\n  ge('ytd-p-acts').textContent=p.activities;\n  ge('ytd-p-elev').textContent=fmt(p.elevation_m,0)+' m';\n  ge('ytd-p-hr').textContent=p.avg_hr_runs?p.avg_hr_runs+' bpm':'\u2014';\n  delta(c.km,p.km,ge('ytd-d-km'));\n  delta(c.activities,p.activities,ge('ytd-d-acts'));\n  delta(c.elevation_m,p.elevation_m,ge('ytd-d-elev'));\n  ge('sa-ytd-wrap').classList.add('ready');\n}).catch(function(){});\n\ndocument.querySelectorAll('.sa-fb').forEach(function(b){\n  b.addEventListener('click',function(){\n    if(busy)return;\n    document.querySelectorAll('.sa-fb').forEach(function(x){x.classList.remove('on');});\n    b.classList.add('on');type=b.getAttribute('data-t');off=0;\n    ge('sa-list').innerHTML='<div class=\"sa-msg\"><span class=\"sa-spin\"><\/span>Loading\u2026<\/div>';\n    ge('sa-more').style.display='none';load(true);\n  });\n});\nge('sa-mbtn').addEventListener('click',function(){load(false);});\n\nfunction load(replace){\n  if(busy)return;\n  busy=true;ge('sa-mbtn').disabled=true;\n  var lim=off+PAGE;\n  var url=BASE+'\/activities?key='+KEY+'&limit='+lim;\n  if(type)url+='&type='+encodeURIComponent(type);\n  fetch(url).then(function(r){return r.json();}).then(function(d){\n    var acts=d.activities||[],page=acts.slice(off,off+PAGE);\n    if(replace)ge('sa-list').innerHTML='';\n    if(!page.length){\n      if(replace)ge('sa-list').innerHTML='<div class=\"sa-msg\">No activities found.<\/div>';\n      ge('sa-more').style.display='none';\n    } else {\n      page.forEach(function(a){renderCard(a);});\n      off+=page.length;\n      var more=acts.length>=lim&&page.length===PAGE;\n      ge('sa-more').style.display=more?'block':'none';\n      ge('sa-mbtn').disabled=false;\n    }\n    busy=false;\n  }).catch(function(){\n    if(replace)ge('sa-list').innerHTML='<div class=\"sa-msg\">Could not load activities.<\/div>';\n    busy=false;\n  });\n}\n\nfunction renderCard(a){\n  var icon=ICONS[a.sport_type]||ICONS[a.type]||'\ud83c\udfcb\ufe0f';\n  var dt=a.date?new Date(a.date+'T12:00:00').toLocaleDateString('de-CH',{day:'2-digit',month:'short',year:'numeric'}):'';\n  var stats='';\n  if(a.distance_km)stats+=st(a.distance_km.toFixed(2)+' km','Distance');\n  if(a.moving_time)stats+=st(a.moving_time,'Time');\n  if(a.pace_per_km)stats+=st(a.pace_per_km+' \/km','Pace');\n  else if(a.avg_watts)stats+=st(a.avg_watts+' W','Power');\n  if(a.avg_hr)stats+=st(a.avg_hr+' bpm','Avg HR');\n  var n=(stats.match(\/sa-st\/g)||[]).length;\n  if(n<4&&a.elevation_m)stats+=st(a.elevation_m+' m','Elev \u2191');\n  if(n<4&&a.calories)stats+=st(a.calories+' kcal','Calories');\n\n  var card=document.createElement('div');\n  card.className='sa-card';\n  if(a.strava_id)card.dataset.sid=a.strava_id;\n  card.innerHTML=\n    '<div class=\"sa-ch\">'+\n      '<div><div class=\"sa-cn\">'+esc(a.name||'Untitled')+'<\/div>'+\n      '<div class=\"sa-cm\">'+esc(dt)+(a.device?' \u00b7 '+esc(a.device):'')+'<\/div><\/div>'+\n      '<span class=\"sa-badge\">'+icon+' '+esc(a.sport_type||a.type||'')+'<\/span>'+\n    '<\/div>'+\n    '<div class=\"sa-row\">'+stats+'<\/div>'+\n    zoneBar(a)+\n    '<div class=\"sa-photos-wrap\"><\/div>'+\n    '<div class=\"sa-foot\"><a class=\"sa-slink\" href=\"'+esc(a.strava_url||'')+'\" target=\"_blank\" rel=\"noopener\">View on Strava \u2192<\/a><\/div>';\n\n  ge('sa-list').appendChild(card);\n\n  \/\/ Queue photo loading via IntersectionObserver (or immediately if unsupported)\n  var sport=a.sport_type||a.type||'';\n  var typeMatch=!PHOTO_TYPES.length||PHOTO_TYPES.indexOf(sport)!==-1;\n  var photoCutoff=sport==='Run'?'2026-06-01':'2026-01-01';\n  var yearMatch=a.date&&a.date>=photoCutoff;\n  if(SHOW_PHOTOS&&typeMatch&&yearMatch&&a.strava_id){\n    if(photoObs){photoObs.observe(card);}\n    else{loadPhotos(card,a.strava_id);}\n  }\n}\n\nfunction loadPhotos(card, sid){\n  fetch(BASE+'\/activity\/'+sid+'\/photos?key='+KEY)\n    .then(function(r){return r.json();})\n    .then(function(d){\n      if(!d.photos||!d.photos.length)return;\n      var wrap=card.querySelector('.sa-photos-wrap');\n      if(!wrap)return;\n      var strip=document.createElement('div');\n      strip.className='sa-photos';\n      d.photos.forEach(function(p,i){\n        var wrap=document.createElement('div');\n        wrap.className='sa-photo-wrap';\n        var img=document.createElement('img');\n        img.className='sa-photo';\n        img.src=p.thumb_url;\n        img.alt='Activity photo';\n        img.loading='lazy';\n        img.title='Click to enlarge';\n        img.addEventListener('click',(function(idx){return function(){lbOpen(d.photos,idx);};})(i));\n        wrap.appendChild(img);\n        if(IS_ADMIN){\n          var del=document.createElement('button');\n          del.className='sa-photo-del';\n          del.title='Hide this photo';\n          del.textContent='\u00d7';\n          del.addEventListener('click',(function(filename,w,photos,idx){return function(e){\n            e.stopPropagation();\n            if(!confirm('Hide \"'+filename+'\"? You can restore it later in Settings \u2192 Strava.'))return;\n            fetch(HIDE_URL,{method:'POST',headers:{'Content-Type':'application\/json','X-WP-Nonce':HIDE_NONCE},body:JSON.stringify({filename:filename})})\n              .then(function(r){\n                if(r.ok){\n                  w.style.transition='opacity .25s';w.style.opacity='0';\n                  setTimeout(function(){w.remove();},260);\n                  photos.splice(idx,1);\n                }\n              });\n          };})(p.filename,wrap,d.photos,i));\n          wrap.appendChild(del);\n        }\n        strip.appendChild(wrap);\n      });\n      wrap.appendChild(strip);\n    })\n    .catch(function(){});\n}\n\nfunction zoneBar(a){\n  if(!a.avg_hr)return '';\n  var avg=a.avg_hr,maxhr=a.max_hr||(avg+20);\n  var lo=Math.max(0,avg-(maxhr-avg)*1.3),hi=maxhr,span=hi-lo;\n  if(span<=0)return '';\n  var bounds=[0].concat(ZTHR).concat([999]);\n  var segs='',leg='',any=false;\n  for(var i=0;i<5;i++){\n    var ov=Math.max(0,Math.min(bounds[i+1],hi)-Math.max(bounds[i],lo));\n    var p=Math.round(ov\/span*100);\n    if(p>0){\n      segs+='<div class=\"sa-zseg\" style=\"flex:'+p+';background:'+ZCOL[i]+'\"><\/div>';\n      leg+='<span class=\"sa-zli\"><span class=\"sa-zdot\" style=\"background:'+ZCOL[i]+'\"><\/span>'+ZNAME[i]+' ~'+p+'%<\/span>';\n      any=true;\n    }\n  }\n  return any?'<div class=\"sa-zbar\"><div class=\"sa-zl\">Est. HR zones<\/div><div class=\"sa-ztrack\">'+segs+'<\/div><div class=\"sa-zleg\">'+leg+'<\/div><\/div>':'';\n}\n\nfunction st(v,l){return '<div class=\"sa-st\"><div class=\"v\">'+esc(String(v))+'<\/div><div class=\"l\">'+l+'<\/div><\/div>';}\nfunction ge(id){return document.getElementById(id);}\nfunction esc(s){return String(s||'').replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');}\nfunction fmt(n,d){return Number(n).toLocaleString('de-CH',{maximumFractionDigits:d});}\nload(true);\n})();\n<\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-48","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/pages\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":6,"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/pages\/48\/revisions"}],"predecessor-version":[{"id":79,"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/pages\/48\/revisions\/79"}],"wp:attachment":[{"href":"https:\/\/wagenhofer.ch\/me\/wp-json\/wp\/v2\/media?parent=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}