[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-content-calculateur-risque-chaleur-animaux-fr":3,"footer-cities-fr":47},{"slug":4,"title":5,"page_title":6,"description":7,"content_md":8,"local_slug":4,"json_ld":9,"faq":24,"tool_html":40,"source":41,"category":42,"audience":43,"publish_mode":44,"hero_image":45,"hero_image_alt":46},"calculateur-risque-chaleur-animaux","Calculateur de risque de coup de chaleur par espèce","Calculateur coup de chaleur animal : risque par espèce — Expert Zoom","Évaluez en quelques secondes le niveau de danger de coup de chaleur pour votre chien, chat, lapin, cochon d'Inde, hamster ou oiseau selon la température ambiante.","Cet outil interactif permet d'évaluer instantanément le risque de coup de chaleur pour 10 espèces d'animaux de compagnie en fonction de la température ambiante. Il intègre les seuils vétérinaires de référence (PDSA, Ordre National des Vétérinaires) et affiche les recommandations adaptées à chaque niveau d'alerte. Indispensable pour tout propriétaire d'animal pendant les vagues de chaleur estivales.",[10],{"name":5,"@type":11,"offers":12,"@context":16,"audience":17,"inLanguage":20,"description":21,"operatingSystem":22,"applicationCategory":23},"WebApplication",{"@type":13,"price":14,"priceCurrency":15},"Offer","0","EUR","https:\u002F\u002Fschema.org",{"@type":18,"audienceType":19},"Audience","Propriétaires d'animaux de compagnie","fr","Évaluez le niveau de danger de coup de chaleur pour votre animal de compagnie (chien, chat, lapin, cochon d'Inde, hamster, furet, oiseau, tortue, poisson, cheval) selon la température ambiante.","All","HealthApplication",[25,28,31,34,37],{"a":26,"q":27},"Un chien ou un chat peut subir un stress thermique dès 25 °C d'ambiance, surtout lors d'une activité physique. Au-delà de 30 °C, le risque de coup de chaleur est élevé et peut être fatal en moins de 30 minutes.","À partir de quelle température mon chien ou mon chat est-il en danger de coup de chaleur ?",{"a":29,"q":30},"Ces animaux ne transpirent pas et régulent très mal leur température. Le lapin dissipe la chaleur uniquement par ses oreilles, ce qui est insuffisant dès 25 °C. Le cochon d'Inde est en danger dès 26 °C.","Pourquoi les lapins et cochons d'Inde sont-ils particulièrement vulnérables à la chaleur ?",{"a":32,"q":33},"Halètement excessif, bave abondante, gencives rouges vif, léthargie soudaine, perte d'équilibre ou convulsions. Ces symptômes constituent une urgence vétérinaire : agissez dans les minutes qui suivent.","Quels sont les signes d'un coup de chaleur chez un animal de compagnie ?",{"a":35,"q":36},"Placez-le dans un endroit frais et ventilé, appliquez des compresses humides froides (pas de glaçons) sur le cou et les pattes, appelez votre vétérinaire d'urgence sans attendre. Ne forcez pas l'animal à boire.","Que faire immédiatement si mon animal fait un coup de chaleur ?",{"a":38,"q":39},"Oui. La température de l'eau d'un aquarium suit la température ambiante de la pièce. Un poisson rouge est en danger au-delà de 28 °C dans l'eau, une tortue aquatique au-delà de 35 °C.","Les poissons et tortues aquatiques sont-ils également touchés par la chaleur estivale ?","\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  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n    :root{\n      --bg:#fafaf9;--card:#fff;--border:#e7e5e4;--text:#1c1917;--muted:#78716c;\n      --accent:#2563eb;--accent-light:#dbeafe;\n      --green:#16a34a;--green-bg:#dcfce7;\n      --amber:#d97706;--amber-bg:#fef3c7;\n      --orange:#ea580c;--orange-bg:#ffedd5;\n      --red:#dc2626;--red-bg:#fee2e2;\n      --radius:0.75rem;\n    }\n    body{background:var(--bg);font-family:system-ui,-apple-system,sans-serif;color:var(--text);font-size:15px;line-height:1.5;padding:0}\n    .tool-root{max-width:640px;margin:0 auto;padding:1.25rem 1rem 1.5rem}\n    .tool-header{margin-bottom:1.25rem}\n    .tool-title{font-size:1.15rem;font-weight:700;color:var(--text);display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem}\n    .tool-title i{color:var(--accent);flex-shrink:0}\n    .tool-subtitle{font-size:.875rem;color:var(--muted)}\n    .tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--border);margin-bottom:1.25rem}\n    .tab-btn{background:none;border:none;padding:.5rem .9rem;font-size:.875rem;font-weight:500;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;border-radius:0}\n    .tab-btn:hover{color:var(--text)}\n    .tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}\n    .panel{display:none}\n    .panel.active{display:block}\n    label{display:block;font-size:.8125rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem;margin-top:1rem}\n    label:first-child{margin-top:0}\n    select,input[type=range]{width:100%}\n    select{padding:.5rem .75rem;border:1.5px solid var(--border);border-radius:.5rem;background:var(--card);color:var(--text);font-size:.9375rem;cursor:pointer;appearance:none;background-image: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%3Cpath d='M6 9l6 6 6-6'\u002F%3E%3C\u002Fsvg%3E\");background-repeat:no-repeat;background-position:right .75rem center}\n    select:focus{outline:none;border-color:var(--accent)}\n    .slider-wrap{display:flex;align-items:center;gap:.75rem}\n    input[type=range]{-webkit-appearance:none;height:6px;background:var(--border);border-radius:3px;cursor:pointer;flex:1}\n    input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;background:var(--accent);border-radius:50%;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.2)}\n    input[type=range]::-moz-range-thumb{width:18px;height:18px;background:var(--accent);border-radius:50%;cursor:pointer;border:none}\n    .slider-val{font-size:1.1rem;font-weight:700;min-width:4.5ch;text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}\n    .callout{background:var(--accent-light);border-left:3px solid var(--accent);border-radius:.5rem;padding:.625rem .875rem;font-size:.8125rem;color:#1e40af;margin-bottom:1rem;display:flex;gap:.5rem;align-items:flex-start}\n    .callout i{flex-shrink:0;margin-top:.1rem}\n    .result-card{border-radius:var(--radius);padding:1rem 1.125rem;margin-top:1.25rem;border:1.5px solid var(--border);transition:background .3s,border-color .3s}\n    .result-badge{display:inline-flex;align-items:center;gap:.4rem;font-size:.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.25rem .625rem;border-radius:999px;margin-bottom:.6rem}\n    .result-msg{font-size:.9375rem;color:var(--text);margin-bottom:.875rem;line-height:1.5}\n    .recs-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:.5rem}\n    .recs-list{list-style:none;display:flex;flex-direction:column;gap:.35rem}\n    .recs-list li{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--text)}\n    .recs-list i{flex-shrink:0;color:var(--muted)}\n    .species-note{font-size:.75rem;color:var(--muted);margin-top:.75rem;font-style:italic;display:flex;align-items:center;gap:.35rem}\n    .thermo-bar{height:10px;border-radius:5px;background:linear-gradient(to right,#16a34a 0%,#d97706 40%,#ea580c 70%,#dc2626 100%);margin:.75rem 0 .25rem;position:relative}\n    .thermo-cursor{position:absolute;top:-4px;width:18px;height:18px;border-radius:50%;border:3px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.25);transform:translateX(-50%);transition:left .3s}\n    .temp-scale{display:flex;justify-content:space-between;font-size:.6875rem;color:var(--muted)}\n    \u002F* Emergency panel *\u002F\n    .step-list{display:flex;flex-direction:column;gap:.875rem;margin-top:.75rem}\n    .step{display:flex;gap:.75rem;align-items:flex-start}\n    .step-num{width:28px;height:28px;border-radius:50%;background:var(--accent);color:#fff;font-size:.8125rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}\n    .step-body strong{display:block;font-size:.875rem;font-weight:600;margin-bottom:.15rem}\n    .step-body span{font-size:.8125rem;color:var(--muted)}\n    .warning-box{background:#fee2e2;border:1.5px solid #fca5a5;border-radius:.5rem;padding:.75rem 1rem;margin-top:1rem;display:flex;gap:.5rem;align-items:flex-start}\n    .warning-box i{color:var(--red);flex-shrink:0;margin-top:.1rem}\n    .warning-box p{font-size:.8125rem;color:#991b1b;line-height:1.5}\n    .divider{border:none;border-top:1.5px solid var(--border);margin:1.25rem 0}\n    footer{margin-top:1.5rem;padding-top:.875rem;border-top:1px solid var(--border);font-size:.725rem;color:var(--muted);line-height:1.6}\n    footer a{color:var(--muted)}\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=\"thermometer\" width=\"20\" height=\"20\">\u003C\u002Fi>\n      Calculateur de risque de coup de chaleur par espèce\n    \u003C\u002Fdiv>\n    \u003Cp class=\"tool-subtitle\">Évaluez le niveau de danger pour votre animal selon la température ambiante\u003C\u002Fp>\n  \u003C\u002Fdiv>\n\n  \u003Cnav class=\"tabs\">\n    \u003Cbutton class=\"tab-btn active\" data-tab=\"0\">Évaluer le risque\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"1\">Protocole d'urgence\u003C\u002Fbutton>\n  \u003C\u002Fnav>\n\n  \u003C!-- Tab 0: Risk assessment -->\n  \u003Cdiv class=\"panel active\" id=\"panel-0\">\n    \u003Cdiv class=\"callout\">\n      \u003Ci data-lucide=\"info\" width=\"15\" height=\"15\">\u003C\u002Fi>\n      \u003Cspan>En France, \u003Cstrong>70 % des propriétaires\u003C\u002Fstrong> ignorent que leur animal peut mourir d'un coup de chaleur en moins de 30 minutes (\u003Cem>Ordre National des Vétérinaires, 2024\u003C\u002Fem>).\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n\n    \u003Clabel for=\"species-select\">Espèce animale\u003C\u002Flabel>\n    \u003Cselect id=\"species-select\">\n      \u003Coption value=\"chien\">Chien\u003C\u002Foption>\n      \u003Coption value=\"chat\">Chat\u003C\u002Foption>\n      \u003Coption value=\"lapin\">Lapin\u003C\u002Foption>\n      \u003Coption value=\"cobaye\">Cochon d'Inde\u003C\u002Foption>\n      \u003Coption value=\"hamster\">Hamster\u003C\u002Foption>\n      \u003Coption value=\"furet\">Furet\u003C\u002Foption>\n      \u003Coption value=\"oiseau\">Oiseau (perruche \u002F perroquet)\u003C\u002Foption>\n      \u003Coption value=\"tortue\">Tortue aquatique\u003C\u002Foption>\n      \u003Coption value=\"poisson\">Poisson rouge (aquarium)\u003C\u002Foption>\n      \u003Coption value=\"cheval\">Cheval\u003C\u002Foption>\n    \u003C\u002Fselect>\n\n    \u003Clabel for=\"temp-slider\">Température ambiante (°C)\u003C\u002Flabel>\n    \u003Cdiv class=\"slider-wrap\">\n      \u003Cinput type=\"range\" id=\"temp-slider\" min=\"15\" max=\"45\" value=\"28\" step=\"1\">\n      \u003Cspan class=\"slider-val\" id=\"temp-display\">28 °C\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"thermo-bar\" id=\"thermo-bar\">\n      \u003Cdiv class=\"thermo-cursor\" id=\"thermo-cursor\" style=\"left:43.3%\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"temp-scale\">\u003Cspan>15 °C\u003C\u002Fspan>\u003Cspan>25 °C\u003C\u002Fspan>\u003Cspan>35 °C\u003C\u002Fspan>\u003Cspan>45 °C\u003C\u002Fspan>\u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"result-card\">\n      \u003Cdiv class=\"result-badge\" id=\"result-badge\">\u003C\u002Fdiv>\n      \u003Cp class=\"result-msg\" id=\"result-msg\">\u003C\u002Fp>\n      \u003Cp class=\"recs-title\">Recommandations\u003C\u002Fp>\n      \u003Cul class=\"recs-list\" id=\"recs-list\">\u003C\u002Ful>\n      \u003Cp class=\"species-note\" id=\"species-note\">\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- Tab 1: Emergency protocol -->\n  \u003Cdiv class=\"panel\" id=\"panel-1\">\n    \u003Cdiv class=\"callout\">\n      \u003Ci data-lucide=\"alert-triangle\" width=\"15\" height=\"15\">\u003C\u002Fi>\n      \u003Cspan>Si votre animal halète excessivement, perd l'équilibre ou s'effondre, il s'agit d'une urgence vétérinaire. Agissez dans les minutes qui suivent.\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n\n    \u003Cp style=\"font-size:.875rem;font-weight:600;margin-bottom:.25rem;margin-top:.5rem\">En cas de coup de chaleur suspecté :\u003C\u002Fp>\n    \u003Cdiv class=\"step-list\">\n      \u003Cdiv class=\"step\">\n        \u003Cdiv class=\"step-num\">1\u003C\u002Fdiv>\n        \u003Cdiv class=\"step-body\">\u003Cstrong>Sortir de la chaleur immédiatement\u003C\u002Fstrong>\u003Cspan>Amenez l'animal dans un endroit frais, ombragé et bien ventilé.\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"step\">\n        \u003Cdiv class=\"step-num\">2\u003C\u002Fdiv>\n        \u003Cdiv class=\"step-body\">\u003Cstrong>Appeler le vétérinaire d'urgence\u003C\u002Fstrong>\u003Cspan>Prévenez votre vétérinaire en route — chaque minute compte. Mortalité de 46 % sans refroidissement rapide.\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"step\">\n        \u003Cdiv class=\"step-num\">3\u003C\u002Fdiv>\n        \u003Cdiv class=\"step-body\">\u003Cstrong>Compresses humides froides (pas glacées)\u003C\u002Fstrong>\u003Cspan>Appliquez sur le cou, les pattes et le ventre. Changez les toutes les 2 minutes.\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"step\">\n        \u003Cdiv class=\"step-num\">4\u003C\u002Fdiv>\n        \u003Cdiv class=\"step-body\">\u003Cstrong>Offrir de l'eau fraîche\u003C\u002Fstrong>\u003Cspan>Proposez à boire sans forcer. Humidifiez les muqueuses si l'animal ne boit pas.\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"step\">\n        \u003Cdiv class=\"step-num\">5\u003C\u002Fdiv>\n        \u003Cdiv class=\"step-body\">\u003Cstrong>Ne pas laisser seul\u003C\u002Fstrong>\u003Cspan>Surveillez la respiration et la conscience jusqu'à l'arrivée chez le vétérinaire.\u003C\u002Fspan>\u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"warning-box\">\n      \u003Ci data-lucide=\"x-circle\" width=\"16\" height=\"16\">\u003C\u002Fi>\n      \u003Cp>\u003Cstrong>Ne jamais utiliser d'eau glacée ni de glaçons :\u003C\u002Fstrong> cela provoque une vasoconstriction et peut aggraver l'état de l'animal. L'eau froide du robinet est idéale.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Chr class=\"divider\">\n\n    \u003Cp style=\"font-size:.8125rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.625rem\">Signes de coup de chaleur à surveiller\u003C\u002Fp>\n    \u003Cul class=\"recs-list\">\n      \u003Cli>\u003Ci data-lucide=\"activity\" width=\"14\" height=\"14\">\u003C\u002Fi> Halètement intense ou respiration rapide\u003C\u002Fli>\n      \u003Cli>\u003Ci data-lucide=\"activity\" width=\"14\" height=\"14\">\u003C\u002Fi> Bave excessive, gencives rouges vif ou pâles\u003C\u002Fli>\n      \u003Cli>\u003Ci data-lucide=\"activity\" width=\"14\" height=\"14\">\u003C\u002Fi> Léthargie, faiblesse musculaire soudaine\u003C\u002Fli>\n      \u003Cli>\u003Ci data-lucide=\"activity\" width=\"14\" height=\"14\">\u003C\u002Fi> Vomissements ou diarrhée\u003C\u002Fli>\n      \u003Cli>\u003Ci data-lucide=\"activity\" width=\"14\" height=\"14\">\u003C\u002Fi> Perte de coordination, convulsions (stade grave)\u003C\u002Fli>\n    \u003C\u002Ful>\n  \u003C\u002Fdiv>\n\n  \u003Cfooter>\n    Source : PDSA (pdsa.org.uk) · Blue Cross (bluecross.org.uk) · Ordre National des Vétérinaires, 2024 · Cornell University College of Veterinary Medicine · Vets Now (vets-now.com) — 2026. Cet outil est fourni à titre informatif. Il ne remplace pas l'avis d'un vétérinaire qualifié.\n  \u003C\u002Ffooter>\n\u003C\u002Fmain>\n\n\u003Cscript>\nconst SPECIES_DATA = {\n  chien:   { label:'Chien',                        attention:25, danger:30, critique:37, note:'' },\n  chat:    { label:'Chat',                          attention:25, danger:30, critique:37, note:'' },\n  lapin:   { label:'Lapin',                         attention:24, danger:27, critique:32, note:'Le lapin ne transpire pas et se refroidit difficilement. Extrêmement vulnérable dès 27 °C.' },\n  cobaye:  { label:'Cochon d\\'Inde',                attention:23, danger:26, critique:30, note:'Zone de confort étroite : 18–23 °C. Sensible aux courants d\\'air en plus de la chaleur.' },\n  hamster: { label:'Hamster',                       attention:22, danger:25, critique:28, note:'Peut entrer en torpeur dès 25 °C. Décès rapide si exposition prolongée.' },\n  furet:   { label:'Furet',                         attention:25, danger:28, critique:32, note:'Très fragile à la chaleur, souvent sous-estimé par les propriétaires.' },\n  oiseau:  { label:'Oiseau (perruche \u002F perroquet)', attention:26, danger:30, critique:35, note:'' },\n  tortue:  { label:'Tortue aquatique',              attention:30, danger:35, critique:38, note:'Température de l\\'eau à surveiller (eau de l\\'aquarium, pas la pièce). Danger dès 35 °C dans l\\'eau.' },\n  poisson: { label:'Poisson rouge (aquarium)',      attention:24, danger:28, critique:32, note:'Température mesurée dans l\\'eau. Un aquarium non équipé peut dépasser la température ambiante de 2–4 °C.' },\n  cheval:  { label:'Cheval',                        attention:28, danger:32, critique:38, note:'Charge de travail déterminante : un cheval au travail est à risque bien plus tôt.' },\n};\n\nconst LEVELS = [\n  { label:'Sûr',     icon:'shield-check',  color:'var(--green)', bg:'var(--green-bg)',  badgeColor:'#166534',  badgeBg:'#dcfce7' },\n  { label:'Attention', icon:'alert-triangle', color:'var(--amber)', bg:'var(--amber-bg)', badgeColor:'#92400e', badgeBg:'#fef3c7' },\n  { label:'Danger',   icon:'alert-octagon',  color:'var(--orange)', bg:'var(--orange-bg)', badgeColor:'#9a3412', badgeBg:'#ffedd5' },\n  { label:'Critique', icon:'skull',          color:'var(--red)',  bg:'var(--red-bg)',   badgeColor:'#991b1b', badgeBg:'#fee2e2' },\n];\n\nconst RECS = [\n  ['Eau fraîche en libre accès', 'Ombre disponible', 'Surveiller le comportement'],\n  ['Multiplier les points d\\'eau', 'Éviter les sorties en plein soleil', 'Rafraîchir l\\'espace de vie', 'Vérifier toutes les heures'],\n  ['Garder à l\\'intérieur (pièce fraîche)', 'Ventilateur ou climatisation', 'Eau fraîche renouvelée souvent', 'Surveillance toutes les 15 min', 'Numéro du vétérinaire à portée'],\n  ['Ne jamais laisser seul', 'Appeler le vétérinaire d\\'urgence', 'Compresses humides froides (pas glacées)', 'Pièce climatisée impérative', 'Urgence vétérinaire en route'],\n];\n\nconst MSGS = [\n  sp => `La température est dans les limites confortables pour ${sp.label.toLowerCase() === 'chien' ? 'un' : sp.label.toLowerCase() === 'chat' ? 'un' : 'votre'} ${sp.label.toLowerCase()}. Maintenez un accès constant à l'eau fraîche et à l'ombre.`,\n  sp => `Chaleur modérée pour ${sp.label.toLowerCase() === 'chien' ? 'un' : 'votre'} ${sp.label.toLowerCase()}. Limitez l'activité physique et surveillez les premiers signes de stress thermique.`,\n  sp => `Température dangereuse pour ${sp.label.toLowerCase() === 'chien' ? 'un' : 'votre'} ${sp.label.toLowerCase()}. Risque réel de coup de chaleur. Gardez votre animal dans un endroit frais et climatisé.`,\n  sp => `Danger vital pour ${sp.label.toLowerCase() === 'chien' ? 'un' : 'votre'} ${sp.label.toLowerCase()}. Le coup de chaleur peut survenir en moins de 30 minutes. Consultez un vétérinaire d'urgence sans délai.`,\n];\n\nconst state = { species: 'chien', temp: 28 };\n\nfunction compute(s) {\n  const sp = SPECIES_DATA[s.species];\n  const t = s.temp;\n  let idx = t \u003C= sp.attention ? 0 : t \u003C= sp.danger ? 1 : t \u003C= sp.critique ? 2 : 3;\n  return { sp, idx, level: LEVELS[idx], recs: RECS[idx], msg: MSGS[idx](sp) };\n}\n\nfunction render() {\n  const { sp, idx, level, recs, msg } = compute(state);\n\n  document.getElementById('temp-display').textContent = state.temp + ' °C';\n\n  \u002F\u002F thermometer cursor\n  const pct = (state.temp - 15) \u002F (45 - 15) * 100;\n  document.getElementById('thermo-cursor').style.left = pct + '%';\n\n  const card = document.getElementById('result-card');\n  card.style.background = level.bg;\n  card.style.borderColor = level.color;\n\n  const badge = document.getElementById('result-badge');\n  badge.style.background = level.badgeBg;\n  badge.style.color = level.badgeColor;\n  badge.innerHTML = `\u003Ci data-lucide=\"${level.icon}\" width=\"13\" height=\"13\">\u003C\u002Fi> ${level.label}`;\n\n  document.getElementById('result-msg').textContent = msg;\n\n  const list = document.getElementById('recs-list');\n  list.innerHTML = recs.map(r => `\u003Cli>\u003Ci data-lucide=\"check\" width=\"14\" height=\"14\">\u003C\u002Fi>${r}\u003C\u002Fli>`).join('');\n\n  const note = document.getElementById('species-note');\n  if (sp.note) {\n    note.innerHTML = `\u003Ci data-lucide=\"info\" width=\"12\" height=\"12\">\u003C\u002Fi> ${sp.note}`;\n    note.style.display = 'flex';\n  } else {\n    note.style.display = 'none';\n  }\n\n  lucide.createIcons();\n}\n\ndocument.getElementById('species-select').addEventListener('change', e => {\n  state.species = e.target.value;\n  render();\n});\n\ndocument.getElementById('temp-slider').addEventListener('input', e => {\n  state.temp = parseInt(e.target.value);\n  render();\n});\n\ndocument.querySelectorAll('.tab-btn').forEach(btn => {\n  btn.addEventListener('click', () => {\n    document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));\n    document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));\n    btn.classList.add('active');\n    document.getElementById('panel-' + btn.dataset.tab).classList.add('active');\n    lucide.createIcons();\n    ro.disconnect();\n    ro.observe(document.documentElement);\n  });\n});\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  render();\n  lucide.createIcons();\n});\n\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","animaux","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fcalculateur-risque-chaleur-animaux-4fd3bd4e1e-1779408580.webp","",[]]