[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-content-calculateur-exposition-solaire-fr":3,"footer-cities-fr":47},{"slug":4,"title":5,"page_title":6,"description":7,"content_md":8,"local_slug":9,"json_ld":10,"faq":26,"tool_html":42,"source":43,"category":44,"audience":21,"publish_mode":45,"hero_image":46,"hero_image_alt":5},"calculateur-exposition-solaire","Calculateur d'exposition solaire","Calculateur d'exposition solaire : durée maximale et SPF recommandé — Expert Zoom","Calculez votre durée maximale d'exposition au soleil selon votre phototype, l'indice UV et votre protection SPF. Recommandations OMS pour éviter les coups de soleil.","Cet outil calcule en temps réel le temps maximal que vous pouvez passer au soleil sans risquer de coup de soleil, en croisant votre type de peau (phototype I à VI), l'indice UV du moment et votre indice de protection solaire (SPF). Il vous recommande également le SPF adapté à votre situation. Conçu pour les adultes, adolescents et parents soucieux de protéger leur famille lors des sorties estivales.",null,[11],{"name":12,"@type":13,"offers":14,"@context":18,"audience":19,"inLanguage":22,"description":23,"operatingSystem":24,"applicationCategory":25},"Calculateur d'exposition solaire — Durée maximale et SPF","WebApplication",{"@type":15,"price":16,"priceCurrency":17},"Offer","0","EUR","https:\u002F\u002Fschema.org",{"@type":20,"audienceType":21},"Audience","consumer","fr","Calculez votre durée maximale d'exposition au soleil selon votre phototype, l'indice UV et votre indice de protection SPF. Recommandations OMS.","Any","HealthApplication",[27,30,33,36,39],{"a":28,"q":29},"L'outil utilise la dose minimale érythémale (MED) de votre phototype, divisée par l'indice UV, multipliée par le SPF et réduite de 20 % de marge de sécurité. Ainsi, une peau de type II (MED = 150 min au UV=1) avec SPF 30 à UV=6 bénéficie d'environ 6h de protection théorique, ramenée à 4h48 recommandées.","Comment est calculé le temps d'exposition maximal ?",{"a":31,"q":32},"Le phototype (de I à VI selon l'échelle de Fitzpatrick) classe les peaux selon leur réaction au soleil : le type I (roux, très clair) brûle sans jamais bronzer, le type VI (peau très foncée) ne brûle pratiquement jamais. Votre dermatologue peut vous confirmer votre phototype.","Qu'est-ce que le phototype de peau ?",{"a":34,"q":35},"Oui, absolument. L'eau, la sueur, le sable et le frottement réduisent l'efficacité du SPF. Renouvelez toutes les 2 heures et après chaque baignade, même si la protection théorique reste valable.","Faut-il renouveler la crème solaire même si le temps calculé n'est pas écoulé ?",{"a":37,"q":38},"Les enfants de moins de 3 ans ne doivent pas être exposés directement au soleil. Pour les enfants plus grands, choisissez leur phototype et réduisez encore la durée recommandée de 30 %. Privilégiez SPF 50+ pour tous les enfants.","Ce calculateur est-il adapté aux enfants ?",{"a":40,"q":41},"L'indice UV est disponible sur l'application Météo France, les bulletins météo TV et le site meteo.fr. En France métropolitaine, il varie de 0 en hiver à 10+ en été sur le littoral méditerranéen.","Comment connaître l'indice UV du jour ?","\u003C!DOCTYPE html>\n\u003Chtml lang=\"fr\">\n\u003Chead>\n  \u003Cmeta charset=\"utf-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n  \u003Ctitle>Calculateur durée d'exposition solaire\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    :root {\n      --bg: #fafaf9;\n      --card: #ffffff;\n      --accent: #2563eb;\n      --accent-light: #eff6ff;\n      --text: #1c1917;\n      --muted: #78716c;\n      --border: #e7e5e4;\n      --sun: #f59e0b;\n    }\n    * { box-sizing: border-box; margin: 0; padding: 0; }\n    body { font-family: system-ui, -apple-system, sans-serif; background: var(--bg); color: var(--text); font-size: 15px; line-height: 1.5; }\n    .tool-root { max-width: 620px; margin: 0 auto; padding: 20px 16px 32px; }\n    .tool-header { margin-bottom: 20px; }\n    .tool-title { font-size: 20px; font-weight: 700; display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }\n    .tool-subtitle { font-size: 13px; color: var(--muted); }\n    .tab-bar { display: flex; border-bottom: 2px solid var(--border); margin-bottom: 20px; }\n    .tab-btn { background: none; border: none; cursor: pointer; padding: 10px 18px; font-size: 14px; font-weight: 500; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.15s; }\n    .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); }\n    .tab-btn:hover:not(.active) { color: var(--text); }\n    .tab-panel { display: none; }\n    .tab-panel.active { display: block; }\n    .callout { background: var(--accent-light); border-left: 3px solid var(--accent); border-radius: 8px; padding: 10px 14px; font-size: 12.5px; color: #1e40af; margin-bottom: 20px; display: flex; gap: 8px; align-items: flex-start; }\n    .callout svg { flex-shrink: 0; margin-top: 2px; }\n    .field { margin-bottom: 18px; }\n    .field-label { display: flex; justify-content: space-between; font-size: 13px; font-weight: 600; margin-bottom: 8px; }\n    .field-label span { font-weight: 400; color: var(--muted); font-variant-numeric: tabular-nums; }\n    input[type=range] { width: 100%; accent-color: var(--accent); cursor: pointer; height: 6px; }\n    .uv-bar { display: flex; gap: 2px; margin-top: 6px; height: 14px; border-radius: 4px; overflow: hidden; }\n    .uv-seg { flex: 1; display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: white; }\n    .phot-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }\n    .phot-btn { border: 2px solid var(--border); border-radius: 10px; padding: 8px 6px; cursor: pointer; background: white; text-align: center; transition: all 0.15s; }\n    .phot-btn.active { border-color: var(--accent); background: var(--accent-light); }\n    .phot-swatch { width: 26px; height: 26px; border-radius: 50%; margin: 0 auto 4px; border: 1px solid rgba(0,0,0,0.12); }\n    .phot-name { font-size: 12px; font-weight: 600; }\n    .phot-desc { font-size: 10px; color: var(--muted); }\n    select { width: 100%; padding: 9px 12px; border: 1.5px solid var(--border); border-radius: 8px; font-size: 14px; background: white url(\"data:image\u002Fsvg+xml,%3Csvg xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2378716c' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'\u002F%3E%3C\u002Fsvg%3E\") no-repeat right 12px center; appearance: none; cursor: pointer; }\n    .result-card { background: var(--card); border: 1.5px solid var(--border); border-radius: 12px; overflow: hidden; margin-top: 20px; }\n    .result-row { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 1px solid var(--border); }\n    .result-row:last-child { border-bottom: none; }\n    .result-label { font-size: 13px; color: var(--muted); }\n    .result-value { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }\n    .result-value.main { font-size: 22px; }\n    .badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 100px; font-size: 12px; font-weight: 600; }\n    .risk-low    { background: #dcfce7; color: #166534; }\n    .risk-mod    { background: #fef9c3; color: #854d0e; }\n    .risk-high   { background: #fed7aa; color: #9a3412; }\n    .risk-vhigh  { background: #fee2e2; color: #991b1b; }\n    .risk-ext    { background: #fce7f3; color: #9d174d; }\n    .advice-box { background: #f8fafc; padding: 12px 16px; font-size: 13px; color: var(--text); line-height: 1.6; border-top: 1px solid var(--border); }\n    .source { margin-top: 20px; font-size: 11px; color: var(--muted); line-height: 1.7; }\n    .source a { color: var(--accent); text-decoration: none; }\n    .source a:hover { text-decoration: underline; }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Cdiv class=\"tool-title\">\n      \u003Ci data-lucide=\"sun\" width=\"22\" height=\"22\" color=\"#f59e0b\">\u003C\u002Fi>\n      Calculateur d'exposition solaire\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"tool-subtitle\">Durée maximale au soleil selon votre phototype, l'indice UV et votre protection solaire\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"tab-bar\">\n    \u003Cbutton class=\"tab-btn active\" data-tab=\"duree\">Durée maximale\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"spf\">SPF recommandé\u003C\u002Fbutton>\n  \u003C\u002Fdiv>\n\n  \u003C!-- TAB 1 : Durée maximale -->\n  \u003Cdiv id=\"tab-duree\" class=\"tab-panel active\">\n    \u003Cdiv class=\"callout\">\n      \u003Ci data-lucide=\"info\" width=\"15\" height=\"15\">\u003C\u002Fi>\n      \u003Cdiv>\n        \u003Cstrong>Formule OMS :\u003C\u002Fstrong> T\u003Csub>max\u003C\u002Fsub> = (MED\u003Csub>phototype\u003C\u002Fsub> ÷ indice UV) × SPF × 0,8\u003Cbr>\n        La marge de 20 % évite le coup de soleil avant le seuil théorique. MED = dose minimale érythémale.\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-label\">Indice UV actuel \u003Cspan id=\"uv-display-1\">6\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"uv-1\" min=\"1\" max=\"12\" value=\"6\">\n      \u003Cdiv class=\"uv-bar\">\n        \u003Cdiv class=\"uv-seg\" style=\"background:#22c55e; flex:2\">1-2\u003C\u002Fdiv>\n        \u003Cdiv class=\"uv-seg\" style=\"background:#a3e635; flex:3\">3-5\u003C\u002Fdiv>\n        \u003Cdiv class=\"uv-seg\" style=\"background:#f59e0b; flex:2\">6-7\u003C\u002Fdiv>\n        \u003Cdiv class=\"uv-seg\" style=\"background:#ef4444; flex:3\">8-10\u003C\u002Fdiv>\n        \u003Cdiv class=\"uv-seg\" style=\"background:#a21caf; flex:2\">11+\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-label\">Votre phototype\u003C\u002Fdiv>\n      \u003Cdiv class=\"phot-grid\" id=\"phot-grid-1\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-label\">Protection solaire appliquée\u003C\u002Fdiv>\n      \u003Cselect id=\"spf-select\">\n        \u003Coption value=\"1\">Sans protection (SPF 1)\u003C\u002Foption>\n        \u003Coption value=\"15\">SPF 15\u003C\u002Foption>\n        \u003Coption value=\"30\" selected>SPF 30\u003C\u002Foption>\n        \u003Coption value=\"50\">SPF 50\u003C\u002Foption>\n        \u003Coption value=\"50\">SPF 50+\u003C\u002Foption>\n      \u003C\u002Fselect>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"result-duree\">\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- TAB 2 : SPF recommandé -->\n  \u003Cdiv id=\"tab-spf\" class=\"tab-panel\">\n    \u003Cdiv class=\"callout\">\n      \u003Ci data-lucide=\"shield-check\" width=\"15\" height=\"15\">\u003C\u002Fi>\n      \u003Cdiv>Recommandations selon les guidelines OMS, INCa et ANSM, croisées avec votre phototype et l'indice UV.\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-label\">Indice UV actuel \u003Cspan id=\"uv-display-2\">6\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003Cinput type=\"range\" id=\"uv-2\" min=\"1\" max=\"12\" value=\"6\">\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"field\">\n      \u003Cdiv class=\"field-label\">Votre phototype\u003C\u002Fdiv>\n      \u003Cdiv class=\"phot-grid\" id=\"phot-grid-2\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"result-spf\">\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cdiv class=\"source\">\n    Sources : \u003Ca href=\"https:\u002F\u002Fwww.who.int\u002Fnews-room\u002Fquestions-and-answers\u002Fitem\u002Fradiation-the-ultraviolet-(uv)-index\" target=\"_blank\">OMS — Indice UV\u003C\u002Fa> ·\n    \u003Ca href=\"https:\u002F\u002Fwww.epa.gov\u002Fsunsafety\u002Fuv-index-scale-0\" target=\"_blank\">EPA UV Index Scale 2024\u003C\u002Fa> ·\n    Phototypes et MED : INCa \u002F SFD 2024. Cet outil est indicatif et ne remplace pas un avis médical.\n  \u003C\u002Fdiv>\n\u003C\u002Fmain>\n\n\u003Cscript>\nconst phototypes = [\n  { id:1, label:'Type I',  desc:'Roux, très clair',    color:'#fde8d8', med:90  },\n  { id:2, label:'Type II', desc:'Blond, clair',        color:'#f5c8a0', med:150 },\n  { id:3, label:'Type III',desc:'Châtain, interméd.',  color:'#d4a07a', med:200 },\n  { id:4, label:'Type IV', desc:'Brun, mat',           color:'#b07850', med:300 },\n  { id:5, label:'Type V',  desc:'Peau foncée',         color:'#7a5030', med:400 },\n  { id:6, label:'Type VI', desc:'Peau très foncée',    color:'#3d1810', med:500 },\n];\n\nconst state = { uv: 6, phototype: 2, spf: 30 };\n\nfunction fmt(min) {\n  if (min \u003C 1) return '\u003C 1 min';\n  if (min \u003C 60) return Math.round(min) + ' min';\n  const h = Math.floor(min \u002F 60), m = Math.round(min % 60);\n  return m > 0 ? h + 'h ' + String(m).padStart(2,'0') : h + 'h 00';\n}\n\nfunction uvRisk(uv) {\n  if (uv \u003C= 2)  return { label:'Faible',      cls:'risk-low',   color:'#22c55e' };\n  if (uv \u003C= 5)  return { label:'Modéré',      cls:'risk-mod',   color:'#a3e635' };\n  if (uv \u003C= 7)  return { label:'Élevé',       cls:'risk-high',  color:'#f59e0b' };\n  if (uv \u003C= 10) return { label:'Très élevé',  cls:'risk-vhigh', color:'#ef4444' };\n  return              { label:'Extrême',      cls:'risk-ext',   color:'#a21caf' };\n}\n\nfunction spfRec(uv, phot) {\n  if (uv \u003C= 2) return phot \u003C= 2 ? 'SPF 30' : 'SPF 15';\n  if (uv \u003C= 5) return phot \u003C= 2 ? 'SPF 50+' : phot \u003C= 4 ? 'SPF 30' : 'SPF 15';\n  if (uv \u003C= 7) return phot \u003C= 2 ? 'SPF 50+' : phot \u003C= 4 ? 'SPF 50' : 'SPF 30';\n  if (uv \u003C= 10) return phot \u003C= 4 ? 'SPF 50+' : 'SPF 50';\n  return phot \u003C= 2 ? 'Rester à l\\'ombre + SPF 50+' : 'SPF 50+';\n}\n\nfunction dureeAdvice(uv) {\n  if (uv >= 11) return '\u003Cstrong>Indice extrême.\u003C\u002Fstrong> Évitez toute exposition directe entre 10h et 17h. Si sortie inévitable : chapeau, lunettes, vêtements couvrants, SPF 50+.';\n  if (uv >= 8)  return '\u003Cstrong>Indice très élevé.\u003C\u002Fstrong> Réduisez l\\'exposition au maximum. Ombre obligatoire entre 11h et 16h. Renouvelez la crème toutes les 2h.';\n  if (uv >= 6)  return '\u003Cstrong>Indice élevé.\u003C\u002Fstrong> Portez chapeau et lunettes. Évitez le soleil direct de 12h à 15h. Crème à renouveler après chaque baignade.';\n  if (uv >= 3)  return '\u003Cstrong>Indice modéré.\u003C\u002Fstrong> Application d\\'une protection recommandée, surtout entre 11h et 15h. Pensez aux lunettes de soleil.';\n  return '\u003Cstrong>Indice faible.\u003C\u002Fstrong> Risque limité, mais une protection reste conseillée pour les types I et II, et pour les enfants.';\n}\n\nfunction spfAdvice(uv, phot) {\n  const parts = [];\n  if (phot \u003C= 2) parts.push('Peau très sensible : appliquez la crème 30 min avant l\\'exposition.');\n  if (uv >= 8) parts.push('Renouvelez la protection toutes les 2h et après chaque bain.');\n  if (uv >= 3) parts.push('N\\'attendez pas de rougeur pour rentrer à l\\'ombre.');\n  parts.push('Même par ciel couvert, 80 % des UV traversent les nuages.');\n  return parts.join(' ');\n}\n\nfunction compute() {\n  const pt = phototypes.find(p => p.id === state.phototype);\n  const tUnprot = pt.med \u002F state.uv;\n  const tProt   = tUnprot * state.spf;\n  const tSafe   = tProt * 0.8;\n  return { tUnprot, tProt, tSafe, risk: uvRisk(state.uv) };\n}\n\nfunction render() {\n  const r = compute();\n\n  \u002F\u002F Sync both UV sliders & displays\n  ['uv-1','uv-2'].forEach(id => { const el=document.getElementById(id); if(el) el.value=state.uv; });\n  ['uv-display-1','uv-display-2'].forEach(id => { const el=document.getElementById(id); if(el) el.textContent=state.uv; });\n\n  \u002F\u002F Phot buttons active state\n  document.querySelectorAll('.phot-btn').forEach(btn => {\n    btn.classList.toggle('active', +btn.dataset.id === state.phototype);\n  });\n\n  \u002F\u002F Result tab 1\n  document.getElementById('result-duree').innerHTML = `\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">Sans protection\u003C\u002Fspan>\n      \u003Cspan class=\"result-value\" style=\"color:#ef4444\">${fmt(r.tUnprot)}\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">Avec SPF ${state.spf}\u003C\u002Fspan>\n      \u003Cspan class=\"result-value\" style=\"color:#2563eb\">${fmt(r.tProt)}\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">\u003Cstrong>Durée maximale recommandée\u003C\u002Fstrong>\u003C\u002Fspan>\n      \u003Cspan class=\"result-value main\" style=\"color:#166534\">${fmt(r.tSafe)}\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">Niveau de risque UV\u003C\u002Fspan>\n      \u003Cspan class=\"badge ${r.risk.cls}\">${r.risk.label}\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"advice-box\">${dureeAdvice(state.uv)}\u003C\u002Fdiv>\n  `;\n\n  \u002F\u002F Result tab 2\n  const rec = spfRec(state.uv, state.phototype);\n  document.getElementById('result-spf').innerHTML = `\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">SPF minimum recommandé\u003C\u002Fspan>\n      \u003Cspan class=\"result-value main\" style=\"color:#2563eb\">${rec}\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">Risque UV (indice ${state.uv})\u003C\u002Fspan>\n      \u003Cspan class=\"badge ${r.risk.cls}\">${r.risk.label}\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"result-row\">\n      \u003Cspan class=\"result-label\">Heures de pointe à éviter\u003C\u002Fspan>\n      \u003Cspan class=\"result-value\" style=\"font-size:15px; color:#f59e0b\">11h – 16h\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"advice-box\">${spfAdvice(state.uv, state.phototype)}\u003C\u002Fdiv>\n  `;\n}\n\nfunction buildPhotGrid(gridId) {\n  const grid = document.getElementById(gridId);\n  grid.innerHTML = phototypes.map(pt => `\n    \u003Cbutton class=\"phot-btn${state.phototype===pt.id?' active':''}\" data-id=\"${pt.id}\">\n      \u003Cdiv class=\"phot-swatch\" style=\"background:${pt.color}\">\u003C\u002Fdiv>\n      \u003Cdiv class=\"phot-name\">${pt.label}\u003C\u002Fdiv>\n      \u003Cdiv class=\"phot-desc\">${pt.desc}\u003C\u002Fdiv>\n    \u003C\u002Fbutton>\n  `).join('');\n  grid.querySelectorAll('.phot-btn').forEach(btn => {\n    btn.addEventListener('click', () => {\n      state.phototype = +btn.dataset.id;\n      render();\n    });\n  });\n}\n\n\u002F\u002F Tab switching\ndocument.querySelectorAll('.tab-btn').forEach(btn => {\n  btn.addEventListener('click', () => {\n    document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));\n    document.querySelectorAll('.tab-panel').forEach(p => p.classList.remove('active'));\n    btn.classList.add('active');\n    document.getElementById('tab-' + btn.dataset.tab).classList.add('active');\n  });\n});\n\n\u002F\u002F Slider listeners\ndocument.getElementById('uv-1').addEventListener('input', e => { state.uv = +e.target.value; render(); });\ndocument.getElementById('uv-2').addEventListener('input', e => { state.uv = +e.target.value; render(); });\ndocument.getElementById('spf-select').addEventListener('change', e => { state.spf = +e.target.value; render(); });\n\n\u002F\u002F Init\nbuildPhotGrid('phot-grid-1');\nbuildPhotGrid('phot-grid-2');\nrender();\nlucide.createIcons();\n\n\u002F\u002F Iframe resize contract\nconst ro = new ResizeObserver(() => {\n  const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n  parent.postMessage({ type: 'resize', height: h }, '*');\n});\nro.observe(document.documentElement);\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","sante","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fcalculateur-exposition-solaire-bbc3a9fcbb.webp",[]]