{"id":292,"date":"2025-12-02T03:12:20","date_gmt":"2025-12-02T03:12:20","guid":{"rendered":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/?page_id=292"},"modified":"2025-12-04T01:38:17","modified_gmt":"2025-12-04T06:38:17","slug":"home","status":"publish","type":"page","link":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/","title":{"rendered":"Home"},"content":{"rendered":"\n<p>\n<div style=\"text-align:center; margin:2rem 0;\">\r\n  <p id=\"volumeNotice\" style=\"\r\n    font-size:2rem;\r\n    font-weight:900;\r\n    color:#000;\r\n    margin:1rem 0;\r\n  \">\r\n    *** For the full interactive experience, please ensure your volume is turned UP ***\r\n  <\/p>\r\n<\/div>\r\n\r\n<style>\r\n  @keyframes softPulse {\r\n    0%   { transform: scale(1); }\r\n    50%  { transform: scale(1.08); }\r\n    100% { transform: scale(1); }\r\n  }\r\n\r\n  \/* Only pulse for 5 seconds, then stop *\/\r\n  #volumeNotice.pulseOnce {\r\n    animation: softPulse 1s ease-in-out 5;\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  \/\/ Apply the pulse class when the page loads\r\n  document.addEventListener(\"DOMContentLoaded\", function () {\r\n    const notice = document.getElementById(\"volumeNotice\");\r\n    notice.classList.add(\"pulseOnce\");\r\n  });\r\n<\/script>\n<\/p>\n\n\n\n<p>Whether you\u2019re brand new to wood stoves or have been burning for years, staying safe is everything. A wood stove can heat your home efficiently, save money, and create an amazing cozy atmosphere; but only when it\u2019s used the right way. This site breaks down the essential tips, real world advice, and easy-to-follow safety practices every homeowner should know.<\/p>\n\n\n\n<p>My goal is simple: help you burn cleaner, burn safer, and protect your home and family. From choosing the right wood, managing airflow, and preventing chimney fires to understanding temperatures and spotting early warning signs, this site gives you the knowledge you need for confident, safe wood stove use.<\/p>\n\n\n\n<p> \n<!-- Invisible looping fire sound -->\r\n<audio id=\"fireSound\" muted loop style=\"display:none;\">\r\n  <source src=\"https:\/\/www.dropbox.com\/scl\/fi\/ef97yv4voxjh3nxslog5l\/Short-Fireplace-Video-Loop-with-Sound-1-minute-loop-Template-Fireplace-for-Background-Winter.mp3?rlkey=05fgp5optoh1p7ipk4phq7tdq&st=1zbh9zos&raw=1\" type=\"audio\/mpeg\">\r\n<\/audio>\r\n\r\n<script>\r\n(document.addEventListener || window.addEventListener)(\"scroll\", function () {\r\n    const audio = document.getElementById(\"fireSound\");\r\n    if (audio.paused) {\r\n        audio.play().catch(()=>{});\r\n        audio.muted = false;\r\n    }\r\n}, { once: true });\r\n<\/script>\n<\/p>\n\n\n\n<p>\n<!-- Full-screen smoke overlay -->\r\n<div id=\"fullSmokeOverlay\" class=\"smoke-active\">\r\n  <div class=\"smoke puff1\"><\/div>\r\n  <div class=\"smoke puff2\"><\/div>\r\n  <div class=\"smoke puff3\"><\/div>\r\n  <div class=\"smoke puff4\"><\/div>\r\n  <div class=\"smoke puff5\"><\/div>\r\n  <div class=\"smoke puff6\"><\/div>\r\n  <div class=\"smoke puff7\"><\/div>\r\n  <div class=\"smoke puff8\"><\/div>\r\n  <div class=\"smoke puff9\"><\/div>\r\n  <div class=\"smoke puff10\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n  \/* Full-screen container *\/\r\n  #fullSmokeOverlay {\r\n    position: fixed;\r\n    top: 0; \r\n    left: 0;\r\n    width: 100vw;\r\n    height: 100vh;\r\n    pointer-events: none;\r\n    overflow: hidden;\r\n    z-index: 9999;\r\n    opacity: 1;\r\n    transition: opacity 4s ease-out; \/* SLOW FADE *\/\r\n  }\r\n\r\n  \/* DARK, HEAVY smoke puffs *\/\r\n  .smoke {\r\n    position: absolute;\r\n    bottom: -90px;\r\n    border-radius: 50%;\r\n    opacity: 0;\r\n    background:\r\n      radial-gradient(circle at 40% 40%,\r\n        rgba(40,40,40,0.95),\r\n        rgba(20,20,20,0.85),\r\n        rgba(10,10,10,0.7),\r\n        rgba(0,0,0,0.45),\r\n        rgba(0,0,0,0)\r\n      );\r\n    filter: blur(24px); \/* SOFTER & MORE REALISTIC *\/\r\n  }\r\n\r\n  @keyframes smoke-rise-dark {\r\n    0% {\r\n      transform: translateY(0) scale(0.75);\r\n      opacity: 0;\r\n    }\r\n    15% {\r\n      opacity: 0.9;\r\n    }\r\n    45% {\r\n      transform: translateY(-40vh) scale(1.25);\r\n      opacity: 0.65;\r\n    }\r\n    75% {\r\n      transform: translateY(-70vh) scale(1.65);\r\n      opacity: 0.35;\r\n    }\r\n    100% {\r\n      transform: translateY(-95vh) scale(2);\r\n      opacity: 0;\r\n    }\r\n  }\r\n\r\n  \/* animate only while active *\/\r\n  .smoke-active .smoke {\r\n    animation-name: smoke-rise-dark;\r\n    animation-timing-function: ease-out;\r\n    animation-iteration-count: infinite;\r\n  }\r\n\r\n  \/* Large, realistic smoke puffs with staggered timing *\/\r\n  .puff1  { left: 12%; width: 240px; height: 240px; animation-duration: 10s;  animation-delay: 0s; }\r\n  .puff2  { left: 27%; width: 215px; height: 215px; animation-duration: 11s;  animation-delay: 1.4s; }\r\n  .puff3  { left: 43%; width: 260px; height: 260px; animation-duration: 12s;  animation-delay: 2.1s; }\r\n  .puff4  { left: 59%; width: 230px; height: 230px; animation-duration: 9.7s;  animation-delay: 0.9s; }\r\n  .puff5  { left: 74%; width: 255px; height: 255px; animation-duration: 11.8s; animation-delay: 2.8s; }\r\n  .puff6  { left: 18%; width: 200px; height: 200px; animation-duration: 10.5s; animation-delay: 3.3s; }\r\n  .puff7  { left: 35%; width: 270px; height: 270px; animation-duration: 12.4s; animation-delay: 1.9s; }\r\n  .puff8  { left: 52%; width: 220px; height: 220px; animation-duration: 9.9s;  animation-delay: 3.7s; }\r\n  .puff9  { left: 67%; width: 240px; height: 240px; animation-duration: 11.2s; animation-delay: 2.4s; }\r\n  .puff10 { left: 83%; width: 215px; height: 215px; animation-duration: 10.8s; animation-delay: 0.7s; }\r\n<\/style>\r\n\r\n<script>\r\n  document.addEventListener(\"DOMContentLoaded\", function () {\r\n    const overlay = document.getElementById(\"fullSmokeOverlay\");\r\n\r\n    \/\/ Smoke runs for ~12 seconds\r\n    setTimeout(() => {\r\n      overlay.classList.remove(\"smoke-active\");\r\n\r\n      \/\/ Fade out SLOWLY (4 seconds)\r\n      overlay.style.opacity = \"0\";\r\n\r\n      \/\/ Remove completely after fade\r\n      setTimeout(() => {\r\n        overlay.remove();\r\n      }, 4200);\r\n\r\n    }, 12000); \/\/ 12-second duration\r\n  });\r\n<\/script>\n<\/p>\n\n\n\n<p>\n<!-- REALISTIC FIRE EFFECT \u2013 FIXED TO BOTTOM -->\r\n<div class=\"real-fire-container\">\r\n  <canvas id=\"realFireCanvas\"><\/canvas>\r\n<\/div>\r\n\r\n<style>\r\n.real-fire-container {\r\n  position: fixed;\r\n  bottom: 0;\r\n  left: 0;\r\n  width: 100vw;\r\n  height: 140px; \/* flame height *\/\r\n  z-index: 9999;\r\n  pointer-events: none;\r\n  overflow: hidden;\r\n  background: transparent;\r\n}\r\n#realFireCanvas {\r\n  width: 100%;\r\n  height: 100%;\r\n}\r\n<\/style>\r\n\r\n<script>\r\n\/* SUPER-REALISTIC CANVAS FIRE EFFECT *\/\r\nconst canvas = document.getElementById(\"realFireCanvas\");\r\nconst ctx = canvas.getContext(\"2d\");\r\n\r\nfunction resize() {\r\n  canvas.width = canvas.clientWidth;\r\n  canvas.height = canvas.clientHeight;\r\n}\r\nresize();\r\nwindow.addEventListener(\"resize\", resize);\r\n\r\nlet particles = [];\r\n\r\nfunction createParticle() {\r\n  const x = Math.random() * canvas.width;\r\n  const y = canvas.height;\r\n  const size = Math.random() * 25 + 20;\r\n  const speedY = Math.random() * 1 + 1;\r\n  const speedX = (Math.random() - 0.5) * 0.4;\r\n\r\n  const colors = [\r\n    \"rgba(255, 200, 120, 0.9)\",\r\n    \"rgba(255, 150, 50, 0.85)\",\r\n    \"rgba(255, 100, 20, 0.8)\",\r\n    \"rgba(255, 80, 10, 0.75)\"\r\n  ];\r\n\r\n  return {\r\n    x,\r\n    y,\r\n    size,\r\n    speedY,\r\n    speedX,\r\n    color: colors[Math.floor(Math.random() * colors.length)],\r\n    life: 1\r\n  };\r\n}\r\n\r\nfunction draw() {\r\n  ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n  \/\/ glow at bottom\r\n  const gradient = ctx.createRadialGradient(\r\n    canvas.width \/ 2,\r\n    canvas.height,\r\n    10,\r\n    canvas.width \/ 2,\r\n    canvas.height,\r\n    200\r\n  );\r\n  gradient.addColorStop(0, \"rgba(255,140,40,0.8)\");\r\n  gradient.addColorStop(1, \"rgba(255,60,10,0)\");\r\n  ctx.fillStyle = gradient;\r\n  ctx.fillRect(0, canvas.height - 120, canvas.width, 150);\r\n\r\n  particles.push(createParticle());\r\n  particles.push(createParticle());\r\n  particles.push(createParticle());\r\n\r\n  particles.forEach((p, i) => {\r\n    ctx.beginPath();\r\n    ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\r\n    ctx.fillStyle = p.color;\r\n    ctx.shadowBlur = 20;\r\n    ctx.shadowColor = p.color;\r\n    ctx.fill();\r\n\r\n    p.y -= p.speedY;\r\n    p.x += p.speedX;\r\n    p.size *= 0.97; \/\/ shrink naturally\r\n    p.life -= 0.015;\r\n\r\n    if (p.life <= 0 || p.size < 1) {\r\n      particles.splice(i, 1);\r\n    }\r\n  });\r\n\r\n  requestAnimationFrame(draw);\r\n}\r\n\r\ndraw();\r\n<\/script>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>*** For the full interactive experience, please ensure your volume is turned UP *** Whether you\u2019re brand new to wood stoves or have been burning for years, staying safe is everything. A wood stove can heat your home efficiently, save&#8230; <a class=\"more-link\" href=\"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":31707,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/pages\/292"}],"collection":[{"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/users\/31707"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/comments?post=292"}],"version-history":[{"count":5,"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/pages\/292\/revisions"}],"predecessor-version":[{"id":565,"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/pages\/292\/revisions\/565"}],"wp:attachment":[{"href":"https:\/\/sites.wp.odu.edu\/fromdata2dialogue\/wp-json\/wp\/v2\/media?parent=292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}