add home maintenance guide
· 1 year ago
9a1999da1c3939e356778c5761aa8682aa0d11ba
Parent:
f98116ad4
2 files changed +1463 −0
- home-maintenance-guide.html +1463 −0
- images/home-maintenance-guide.png binary
Diff
--- /dev/null +++ b/home-maintenance-guide.html @@ -0,0 +1,1463 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"/> + <meta content="width=device-width, initial-scale=1.0" name="viewport"/> + <title>Complete Home Maintenance Guide: Seasonal Checklists & Expert Tips</title> + <meta content="Master home maintenance with our comprehensive seasonal checklists, expert tips, and interactive tools. From routine tasks to emergency prep, keep your home in top condition year-round with actionable guidance for all skill levels." name="description"/> + <meta content="home maintenance, seasonal maintenance, home repair checklist, homeowner guide, property maintenance, DIY home care, house maintenance schedule, home improvement, preventive maintenance, home inspection, maintenance calendar, home care tips" name="keywords"/> + <link href="https://cheatsheets.davidveksler.com/home-maintenance-guide.html" rel="canonical"/> + + <!-- Favicon --> + <link href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><text x='0' y='14' font-size='14'>🏠</text></svg>" rel="icon"/> + + <!-- Open Graph --> + <meta content="Complete Home Maintenance Guide: Seasonal Checklists & Expert Tips" property="og:title"/> + <meta content="Master home maintenance with comprehensive seasonal checklists, expert tips, and interactive tools. Keep your home in top condition year-round with actionable guidance." property="og:description"/> + <meta content="website" property="og:type"/> + <meta content="https://cheatsheets.davidveksler.com/home-maintenance-guide.html" property="og:url"/> + <meta content="images/home-maintenance-guide.png" property="og:image"/> + <meta content="Home maintenance guide showing seasonal checklists and maintenance calendar" property="og:image:alt"/> + <meta content="1200" property="og:image:width"/> + <meta content="630" property="og:image:height"/> + + <!-- Twitter Card --> + <meta content="summary_large_image" name="twitter:card"/> + <meta content="https://cheatsheets.davidveksler.com/home-maintenance-guide.html" name="twitter:url"/> + <meta content="Complete Home Maintenance Guide: Seasonal Checklists & Expert Tips" name="twitter:title"/> + <meta content="Master home maintenance with comprehensive seasonal checklists, expert tips, and interactive tools. Keep your home in top condition year-round." name="twitter:description"/> + <meta content="images/home-maintenance-guide.png" name="twitter:image"/> + <meta content="@heroiclife" name="twitter:creator"/> + + <!-- JSON-LD Structured Data --> + <script type="application/ld+json"> + { + "@context": "https://schema.org", + "@type": "HowTo", + "name": "Complete Home Maintenance Guide", + "description": "A comprehensive guide to maintaining your home throughout the year with seasonal checklists, expert tips, and preventive maintenance strategies.", + "image": "https://cheatsheets.davidveksler.com/images/home-maintenance-guide.png", + "author": { + "@type": "Person", + "name": "David Veksler (AI Generated)" + }, + "publisher": { + "@type": "Organization", + "name": "David Veksler Cheatsheets" + }, + "datePublished": "2025-06-07", + "dateModified": "2025-06-07", + "keywords": "home maintenance, seasonal maintenance, home repair, property care, DIY maintenance", + "totalTime": "P1Y", + "yield": "Well-maintained home", + "supply": [ + { + "@type": "HowToSupply", + "name": "Basic hand tools" + }, + { + "@type": "HowToSupply", + "name": "Safety equipment" + } + ], + "step": [ + { + "@type": "HowToStep", + "name": "Spring Maintenance", + "text": "Inspect roof, clean gutters, service HVAC, check exterior" + }, + { + "@type": "HowToStep", + "name": "Summer Maintenance", + "text": "Focus on exterior tasks, irrigation, windows, and cooling systems" + }, + { + "@type": "HowToStep", + "name": "Fall Maintenance", + "text": "Winterize systems, clean chimneys, prep heating, seal gaps" + }, + { + "@type": "HowToStep", + "name": "Winter Maintenance", + "text": "Monitor heating, prevent ice dams, maintain indoor air quality" + } + ] + } + </script> + + <link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" rel="stylesheet"/> + <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" rel="stylesheet"/> + <link href="https://fonts.googleapis.com" rel="preconnect"/> + <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/> + <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Roboto+Slab:wght@400;700&display=swap" rel="stylesheet"/> + + <style> + :root { + --primary-color: #2c5530; + --primary-light: #4a7c59; + --secondary-color: #8B4513; + --accent-color: #FF6B35; + --warning-color: #F39C12; + --success-color: #27AE60; + --danger-color: #E74C3C; + + --bg-color: #F8F9FA; + --card-bg: #FFFFFF; + --border-color: #DEE2E6; + --text-primary: #2C3E50; + --text-muted: #6C757D; + --text-light: #ADB5BD; + + --shadow-sm: 0 2px 4px rgba(0,0,0,0.1); + --shadow-md: 0 4px 12px rgba(0,0,0,0.15); + --shadow-lg: 0 8px 25px rgba(0,0,0,0.15); + + --border-radius: 0.5rem; + --transition: all 0.3s ease; + } + + body { + font-family: 'Inter', sans-serif; + background-color: var(--bg-color); + color: var(--text-primary); + line-height: 1.6; + } + + .main-container { + background: var(--card-bg); + border-radius: var(--border-radius); + box-shadow: var(--shadow-lg); + margin: 2rem auto; + max-width: 1200px; + } + + .header { + background: linear-gradient(135deg, var(--primary-color) 0%, var(--primary-light) 100%); + color: white; + padding: 2rem; + border-radius: var(--border-radius) var(--border-radius) 0 0; + text-align: center; + } + + .header h1 { + font-family: 'Roboto Slab', serif; + font-weight: 700; + font-size: 2.5rem; + margin-bottom: 0.5rem; + text-shadow: 0 2px 4px rgba(0,0,0,0.3); + } + + .header p { + font-size: 1.1rem; + opacity: 0.9; + margin: 0; + } + + .nav-tabs { + background: var(--card-bg); + border-bottom: 2px solid var(--border-color); + padding: 0 2rem; + } + + .nav-tabs .nav-link { + color: var(--text-muted); + border: none; + border-bottom: 3px solid transparent; + font-weight: 500; + padding: 1rem 1.5rem; + transition: var(--transition); + } + + .nav-tabs .nav-link:hover { + color: var(--primary-color); + border-bottom-color: var(--primary-light); + } + + .nav-tabs .nav-link.active { + color: var(--primary-color); + background: none; + border-bottom-color: var(--primary-color); + font-weight: 600; + } + + .content-area { + padding: 2rem; + } + + .season-section { + display: none; + } + + .season-section.active { + display: block; + } + + .category-card { + background: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: var(--border-radius); + margin-bottom: 1.5rem; + box-shadow: var(--shadow-sm); + transition: var(--transition); + } + + .category-card:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-md); + } + + .category-header { + background: linear-gradient(90deg, var(--primary-color), var(--primary-light)); + color: white; + padding: 1rem 1.5rem; + border-radius: var(--border-radius) var(--border-radius) 0 0; + display: flex; + align-items: center; + cursor: pointer; + } + + .category-header i { + font-size: 1.5rem; + margin-right: 0.75rem; + } + + .category-header h3 { + margin: 0; + font-weight: 600; + flex-grow: 1; + } + + .collapse-icon { + transition: var(--transition); + } + + .collapsed .collapse-icon { + transform: rotate(-90deg); + } + + .category-content { + padding: 1.5rem; + } + + .task-item { + display: flex; + align-items: flex-start; + padding: 0.75rem 0; + border-bottom: 1px solid #F8F9FA; + } + + .task-item:last-child { + border-bottom: none; + } + + .task-checkbox { + margin-right: 1rem; + margin-top: 0.25rem; + } + + .task-content { + flex-grow: 1; + } + + .task-title { + font-weight: 600; + color: var(--text-primary); + margin-bottom: 0.25rem; + } + + .task-description { + color: var(--text-muted); + font-size: 0.9rem; + margin-bottom: 0.5rem; + } + + .task-meta { + display: flex; + gap: 1rem; + align-items: center; + } + + .priority-badge { + font-size: 0.75rem; + padding: 0.25rem 0.5rem; + border-radius: 1rem; + font-weight: 500; + } + + .priority-critical { + background: var(--danger-color); + color: white; + } + + .priority-important { + background: var(--warning-color); + color: white; + } + + .priority-routine { + background: var(--success-color); + color: white; + } + + .cost-estimate { + font-size: 0.8rem; + color: var(--text-muted); + } + + .diy-indicator { + font-size: 0.8rem; + padding: 0.15rem 0.4rem; + border-radius: 0.25rem; + font-weight: 500; + } + + .diy-easy { + background: #E8F5E8; + color: var(--success-color); + } + + .diy-moderate { + background: #FFF3CD; + color: #856404; + } + + .diy-professional { + background: #F8D7DA; + color: #721C24; + } + + .climate-alert { + background: linear-gradient(90deg, #FFE082, #FFCC02); + border: 1px solid #FFA000; + border-radius: var(--border-radius); + padding: 1rem; + margin-bottom: 1.5rem; + display: flex; + align-items: center; + } + + .climate-alert i { + font-size: 1.5rem; + margin-right: 0.75rem; + color: #E65100; + } + + .mcm-specific { + background: linear-gradient(90deg, #E3F2FD, #BBDEFB); + border: 1px solid #2196F3; + border-radius: var(--border-radius); + padding: 1rem; + margin: 1rem 0; + } + + .mcm-specific h4 { + color: #1565C0; + font-size: 1rem; + font-weight: 600; + margin-bottom: 0.5rem; + display: flex; + align-items: center; + } + + .mcm-specific h4 i { + margin-right: 0.5rem; + } + + .emergency-section { + background: linear-gradient(90deg, #FFEBEE, #FFCDD2); + border: 2px solid var(--danger-color); + border-radius: var(--border-radius); + padding: 1.5rem; + margin: 2rem 0; + } + + .emergency-section h3 { + color: var(--danger-color); + font-weight: 700; + margin-bottom: 1rem; + display: flex; + align-items: center; + } + + .emergency-section h3 i { + margin-right: 0.75rem; + font-size: 1.5rem; + } + + .search-container { + position: relative; + margin-bottom: 2rem; + } + + .search-input { + width: 100%; + padding: 0.75rem 1rem 0.75rem 3rem; + border: 2px solid var(--border-color); + border-radius: var(--border-radius); + font-size: 1rem; + transition: var(--transition); + } + + .search-input:focus { + outline: none; + border-color: var(--primary-color); + box-shadow: 0 0 0 3px rgba(44, 85, 48, 0.1); + } + + .search-icon { + position: absolute; + left: 1rem; + top: 50%; + transform: translateY(-50%); + color: var(--text-muted); + } + + .progress-summary { + background: var(--card-bg); + border: 1px solid var(--border-color); + border-radius: var(--border-radius); + padding: 1.5rem; + margin-bottom: 2rem; + text-align: center; + } + + .progress-bar-container { + background: #E9ECEF; + border-radius: 1rem; + height: 1.5rem; + margin: 1rem 0; + overflow: hidden; + } + + .progress-bar-fill { + background: linear-gradient(90deg, var(--success-color), #58D68D); + height: 100%; + border-radius: 1rem; + transition: width 0.5s ease; + width: 0%; + } + + @media (max-width: 768px) { + .main-container { + margin: 1rem; + border-radius: 0; + } + + .header { + padding: 1.5rem 1rem; + } + + .header h1 { + font-size: 2rem; + } + + .content-area { + padding: 1rem; + } + + .nav-tabs { + padding: 0 1rem; + overflow-x: auto; + white-space: nowrap; + } + + .task-meta { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + } + + @media print { + .main-container { + box-shadow: none; + margin: 0; + } + + .nav-tabs, + .search-container { + display: none; + } + + .season-section { + display: block !important; + page-break-before: always; + } + + .category-card { + page-break-inside: avoid; + break-inside: avoid; + } + + .task-checkbox { + -webkit-appearance: none; + appearance: none; + width: 1rem; + height: 1rem; + border: 2px solid #333; + border-radius: 0.25rem; + } + } + </style> +</head> +<body> + <div class="main-container"> + <header class="header"> + <h1><i class="bi bi-house-door"></i> Complete Home Maintenance Guide</h1> + <p>Keep your home in peak condition with seasonal checklists and expert maintenance tips</p> + </header> + + <nav> + <ul class="nav nav-tabs" id="seasonTabs" role="tablist"> + <li class="nav-item" role="presentation"> + <button class="nav-link active" data-season="spring" type="button" role="tab"> + <i class="bi bi-flower1"></i> Spring + </button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" data-season="summer" type="button" role="tab"> + <i class="bi bi-sun"></i> Summer + </button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" data-season="fall" type="button" role="tab"> + <i class="bi bi-tree"></i> Fall + </button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" data-season="winter" type="button" role="tab"> + <i class="bi bi-snow"></i> Winter + </button> + </li> + <li class="nav-item" role="presentation"> + <button class="nav-link" data-season="emergency" type="button" role="tab"> + <i class="bi bi-exclamation-triangle"></i> Emergency + </button> + </li> + </ul> + </nav> + + <div class="content-area"> + <div class="search-container"> + <i class="bi bi-search search-icon"></i> + <input type="text" class="search-input" placeholder="Search maintenance tasks..." id="searchInput"> + </div> + + <div class="progress-summary" id="progressSummary"> + <h4>Maintenance Progress</h4> + <div class="progress-bar-container"> + <div class="progress-bar-fill" id="progressBarFill"></div> + </div> + <p id="progressText">0% Complete (0 of 0 tasks)</p> + </div> + + <!-- SPRING SECTION --> + <div class="season-section active" id="spring"> + <div class="climate-alert"> + <i class="bi bi-thermometer-half"></i> + <div> + <strong>Spring Climate Considerations:</strong> Time for post-winter damage assessment. Watch for freeze-thaw damage to foundations, pipes, and roofing. Perfect weather for exterior maintenance projects. + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#springRoof"> + <i class="bi bi-house-up"></i> + <h3>Roof & Gutters</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="springRoof"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-roof-inspection"> + <div class="task-content"> + <div class="task-title">Comprehensive Roof Inspection</div> + <div class="task-description">Check for winter damage: loose/missing shingles, damaged flashing, ice dam damage, and signs of leaks</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0-200 (DIY) / $300-500 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-building"></i> Mid-Century Modern Alert</h4> + <p>Flat or low-slope roofs require special attention. Check for ponding water, membrane damage, and ensure drains are clear. Consider professional inspection for built-up roofing systems.</p> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-gutter-cleaning"> + <div class="task-content"> + <div class="task-title">Clean and Inspect Gutters</div> + <div class="task-description">Remove debris, check for damage, ensure proper drainage and secure mounting</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-50 (DIY) / $150-300 (Professional)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-chimney-check"> + <div class="task-content"> + <div class="task-title">Chimney and Flue Inspection</div> + <div class="task-description">Check for damage, ensure cap and screen are secure, inspect for animal nests</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$100-300 (Professional)</span> + <span class="diy-indicator diy-professional">Professional</span> + </div> + </div> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#springHVAC"> + <i class="bi bi-wind"></i> + <h3>HVAC Systems</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="springHVAC"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-hvac-service"> + <div class="task-content"> + <div class="task-title">Professional HVAC Tune-Up</div> + <div class="task-description">Service air conditioning before summer, check refrigerant levels, clean coils, inspect ductwork</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$150-300 (Professional)</span> + <span class="diy-indicator diy-professional">Professional</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-filter-change"> + <div class="task-content"> + <div class="task-title">Replace HVAC Filters</div> + <div class="task-description">Install fresh filters for optimal air quality and system efficiency</div> + <div class="task-meta"> + <span class="priority-badge priority-routine">ROUTINE</span> + <span class="cost-estimate">$10-50 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-vent-cleaning"> + <div class="task-content"> + <div class="task-title">Clean Air Vents and Registers</div> + <div class="task-description">Remove dust buildup, ensure vents open freely, check for obstructions</div> + <div class="task-meta"> + <span class="priority-badge priority-routine">ROUTINE</span> + <span class="cost-estimate">$0-20 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#springExterior"> + <i class="bi bi-house"></i> + <h3>Exterior Maintenance</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="springExterior"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-pressure-wash"> + <div class="task-content"> + <div class="task-title">Power Wash Exterior Surfaces</div> + <div class="task-description">Clean siding, decks, patios, and walkways. Remove winter grime and mildew</div> + <div class="task-meta"> + <span class="priority-badge priority-routine">ROUTINE</span> + <span class="cost-estimate">$50-100 (DIY) / $200-400 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-window-inspection"> + <div class="task-content"> + <div class="task-title">Window and Door Inspection</div> + <div class="task-description">Check caulking, weatherstripping, screen condition, and window operation</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$20-100 (DIY) / $100-300 (Professional)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-window"></i> Large Window Maintenance</h4> + <p>Inspect large plate glass windows for cracks or seal failure. Check window hardware and consider upgrading to safety glass if original single-pane windows remain.</p> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="spring-landscape-prep"> + <div class="task-content"> + <div class="task-title">Landscape and Drainage Prep</div> + <div class="task-description">Clear debris from drainage areas, prune trees away from house, inspect foundation for proper grading</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-200 (DIY) / $300-800 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + + <!-- SUMMER SECTION --> + <div class="season-section" id="summer"> + <div class="climate-alert"> + <i class="bi bi-sun"></i> + <div> + <strong>Summer Climate Considerations:</strong> High UV exposure and dry conditions. Focus on cooling system efficiency, exterior protection, and water conservation. Ideal time for major exterior projects. + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#summerCooling"> + <i class="bi bi-snow2"></i> + <h3>Cooling & Ventilation</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="summerCooling"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-ac-maintenance"> + <div class="task-content"> + <div class="task-title">Air Conditioning Deep Clean</div> + <div class="task-description">Clean outdoor unit coils, check refrigerant lines, ensure proper airflow around unit</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$50-100 (DIY) / $150-300 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-attic-ventilation"> + <div class="task-content"> + <div class="task-title">Attic Ventilation Check</div> + <div class="task-description">Ensure soffit and ridge vents are clear, check attic fan operation, inspect insulation</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-50 (DIY)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-thermometer-sun"></i> Post-and-Beam Cooling</h4> + <p>Open beam ceilings with minimal insulation can create cooling challenges. Consider adding ceiling fans and ensuring windows have proper shading to manage solar heat gain.</p> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#summerExterior"> + <i class="bi bi-palette"></i> + <h3>Exterior Protection</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="summerExterior"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-paint-inspection"> + <div class="task-content"> + <div class="task-title">Exterior Paint and Stain Inspection</div> + <div class="task-description">Check for peeling, fading, or damaged areas. Plan touch-ups or major painting projects</div> + <div class="task-meta"> + <span class="priority-badge priority-routine">ROUTINE</span> + <span class="cost-estimate">$100-500 (DIY) / $2000-8000 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-deck-maintenance"> + <div class="task-content"> + <div class="task-title">Deck and Patio Care</div> + <div class="task-description">Clean, inspect for damage, apply stain or sealant as needed, check railing stability</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$50-200 (DIY) / $300-800 (Professional)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-window-cleaning"> + <div class="task-content"> + <div class="task-title">Deep Window Cleaning</div> + <div class="task-description">Clean interior and exterior windows, screens, and tracks for maximum natural light</div> + <div class="task-meta"> + <span class="priority-badge priority-routine">ROUTINE</span> + <span class="cost-estimate">$20-80 (DIY) / $150-400 (Professional)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#summerPlumbing"> + <i class="bi bi-droplet"></i> + <h3>Plumbing & Water Systems</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="summerPlumbing"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-irrigation-check"> + <div class="task-content"> + <div class="task-title">Irrigation System Inspection</div> + <div class="task-description">Test sprinkler zones, check for leaks, adjust timers for water conservation</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-100 (DIY) / $100-300 (Professional)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="summer-water-heater"> + <div class="task-content"> + <div class="task-title">Water Heater Maintenance</div> + <div class="task-description">Flush tank to remove sediment, check temperature settings, inspect for leaks</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-50 (DIY) / $150-300 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-wrench"></i> Vintage Plumbing Systems</h4> + <p>If your home still has galvanized pipes, summer is ideal for planning replacement projects. Check for signs of corrosion and reduced water pressure that indicate pipe deterioration.</p> + </div> + </div> + </div> + </div> + </div> + + <!-- FALL SECTION --> + <div class="season-section" id="fall"> + <div class="climate-alert"> + <i class="bi bi-thermometer-low"></i> + <div> + <strong>Fall Climate Considerations:</strong> Prepare for freeze-thaw cycles and winter storms. Critical time for winterization to prevent costly freeze damage. Focus on heating system prep and weatherproofing. + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#fallWinterization"> + <i class="bi bi-snow3"></i> + <h3>Winterization Essentials</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="fallWinterization"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-pipe-insulation"> + <div class="task-content"> + <div class="task-title">Insulate Exposed Pipes</div> + <div class="task-description">Wrap pipes in unheated areas, disconnect and drain outdoor hoses, shut off exterior water valves</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$20-100 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-heating-service"> + <div class="task-content"> + <div class="task-title">Heating System Professional Service</div> + <div class="task-description">Clean and inspect furnace, check safety systems, test thermostat operation</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$150-300 (Professional)</span> + <span class="diy-indicator diy-professional">Professional</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-weatherstripping"> + <div class="task-content"> + <div class="task-title">Seal Air Leaks</div> + <div class="task-description">Replace weatherstripping, caulk gaps around windows and doors, check for drafts</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$30-150 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-wind"></i> Mid-Century Heating Challenges</h4> + <p>Post-and-beam construction with minimal insulation requires extra attention to air sealing. Consider upgrading from gravity furnaces to modern forced-air systems for better efficiency.</p> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#fallRoof"> + <i class="bi bi-house-up"></i> + <h3>Roof & Gutter Prep</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="fallRoof"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-gutter-cleaning"> + <div class="task-content"> + <div class="task-title">Final Gutter Cleaning</div> + <div class="task-description">Remove all leaves and debris, check downspout flow, install gutter guards if needed</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0-50 (DIY) / $150-300 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-roof-prep"> + <div class="task-content"> + <div class="task-title">Roof Winter Preparation</div> + <div class="task-description">Check for loose shingles, clean roof surfaces, ensure proper attic ventilation for ice dam prevention</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-200 (DIY) / $300-600 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-chimney-service"> + <div class="task-content"> + <div class="task-title">Chimney Cleaning and Inspection</div> + <div class="task-description">Professional cleaning, check for creosote buildup, inspect damper operation</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$200-400 (Professional)</span> + <span class="diy-indicator diy-professional">Professional</span> + </div> + </div> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#fallLandscape"> + <i class="bi bi-tree"></i> + <h3>Landscape & Drainage</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="fallLandscape"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-tree-trimming"> + <div class="task-content"> + <div class="task-title">Tree and Shrub Maintenance</div> + <div class="task-description">Trim branches away from house and power lines, remove dead limbs that could fall in storms</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$100-500 (DIY) / $300-1500 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="fall-drainage-check"> + <div class="task-content"> + <div class="task-title">Drainage System Inspection</div> + <div class="task-description">Clear storm drains, check foundation grading, inspect French drains for proper function</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0-100 (DIY) / $200-500 (Professional)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + + <!-- WINTER SECTION --> + <div class="season-section" id="winter"> + <div class="climate-alert"> + <i class="bi bi-snow"></i> + <div> + <strong>Winter Climate Considerations:</strong> Monitor for ice dams, frozen pipes, and heating system efficiency. Focus on indoor air quality and emergency preparedness. Watch for signs of freeze-thaw foundation movement. + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#winterMonitoring"> + <i class="bi bi-thermometer"></i> + <h3>Winter Monitoring & Safety</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="winterMonitoring"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="winter-ice-dam-watch"> + <div class="task-content"> + <div class="task-title">Ice Dam Prevention & Monitoring</div> + <div class="task-description">Keep gutters clear of ice, ensure attic ventilation, safely remove excess roof snow</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$50-200 (DIY) / $300-800 (Professional)</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="winter-pipe-monitoring"> + <div class="task-content"> + <div class="task-title">Frozen Pipe Prevention</div> + <div class="task-description">Let faucets drip during extreme cold, keep cabinet doors open, monitor basement temperatures</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0-50 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="winter-heating-efficiency"> + <div class="task-content"> + <div class="task-title">Heating System Monitoring</div> + <div class="task-description">Change filters monthly, keep vents unobstructed, monitor for unusual noises or performance</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$10-30 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-thermometer-low"></i> Minimal Insulation Challenges</h4> + <p>Post-and-beam homes with exposed ceilings lose heat rapidly. Use space heaters safely, ensure adequate humidity (30-50%), and consider upgrading insulation in accessible areas.</p> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#winterIndoor"> + <i class="bi bi-house-heart"></i> + <h3>Indoor Air Quality & Comfort</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="winterIndoor"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="winter-humidity-control"> + <div class="task-content"> + <div class="task-title">Humidity Management</div> + <div class="task-description">Maintain 30-50% humidity, use humidifiers as needed, ensure proper ventilation</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$50-200 (Equipment)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="winter-carbon-monoxide"> + <div class="task-content"> + <div class="task-title">Carbon Monoxide Safety Check</div> + <div class="task-description">Test CO detectors, ensure proper appliance ventilation, never use outdoor equipment indoors</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0-100 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="winter-air-filter-check"> + <div class="task-content"> + <div class="task-title">HVAC Filter Maintenance</div> + <div class="task-description">Check and replace filters monthly during heating season, consider higher-grade filters for better air quality</div> + <div class="task-meta"> + <span class="priority-badge priority-routine">ROUTINE</span> + <span class="cost-estimate">$15-50 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + + <!-- EMERGENCY SECTION --> + <div class="season-section" id="emergency"> + <div class="emergency-section"> + <h3><i class="bi bi-exclamation-triangle"></i> Emergency Preparedness & Quick Fixes</h3> + <p>Essential knowledge for handling common home emergencies and temporary solutions until professional help arrives.</p> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#emergencyWater"> + <i class="bi bi-droplet-fill"></i> + <h3>Water Emergencies</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="emergencyWater"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-water-shutoff"> + <div class="task-content"> + <div class="task-title">Know Your Water Shutoff Locations</div> + <div class="task-description">Main shutoff at meter, individual fixture shutoffs, emergency contact numbers</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0 (Knowledge)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-burst-pipe"> + <div class="task-content"> + <div class="task-title">Burst Pipe Emergency Protocol</div> + <div class="task-description">1. Shut off water 2. Turn off electricity to affected area 3. Remove water 4. Call professional</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">Emergency supplies $50-100</span> + <span class="diy-indicator diy-moderate">Moderate DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-frozen-pipes"> + <div class="task-content"> + <div class="task-title">Frozen Pipe Thawing</div> + <div class="task-description">Use hair dryer or warm towels, never use open flame, open faucets to relieve pressure</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$0-50 (DIY)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#emergencyElectrical"> + <i class="bi bi-lightning"></i> + <h3>Electrical Emergencies</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="emergencyElectrical"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-circuit-breakers"> + <div class="task-content"> + <div class="task-title">Circuit Breaker Panel Knowledge</div> + <div class="task-description">Label all breakers, know main shutoff, keep flashlight near panel</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$10-30 (Labels/flashlight)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-power-outage"> + <div class="task-content"> + <div class="task-title">Power Outage Preparedness</div> + <div class="task-description">Backup lighting, battery radio, generator safety, preserve refrigerated food</div> + <div class="task-meta"> + <span class="priority-badge priority-important">IMPORTANT</span> + <span class="cost-estimate">$100-500 (Emergency supplies)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="mcm-specific"> + <h4><i class="bi bi-lightning-charge"></i> Vintage Electrical Systems</h4> + <p>1950s homes may have outdated wiring. Never attempt electrical work on old systems. Know signs of electrical problems: frequent breaker trips, flickering lights, warm outlets.</p> + </div> + </div> + </div> + </div> + + <div class="category-card"> + <div class="category-header" data-bs-toggle="collapse" data-bs-target="#emergencyHeating"> + <i class="bi bi-fire"></i> + <h3>Heating Emergencies</h3> + <i class="bi bi-chevron-down collapse-icon ms-auto"></i> + </div> + <div class="collapse show" id="emergencyHeating"> + <div class="category-content"> + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-heating-failure"> + <div class="task-content"> + <div class="task-title">Heating System Failure Protocol</div> + <div class="task-description">Check thermostat, circuit breakers, pilot light; use safe backup heating methods</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$0-100 (Emergency heat)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + + <div class="task-item"> + <input type="checkbox" class="task-checkbox" data-task="emergency-safe-heating"> + <div class="task-content"> + <div class="task-title">Emergency Heating Safety</div> + <div class="task-description">Proper space heater use, carbon monoxide awareness, never use outdoor equipment indoors</div> + <div class="task-meta"> + <span class="priority-badge priority-critical">CRITICAL</span> + <span class="cost-estimate">$50-200 (Safe equipment)</span> + <span class="diy-indicator diy-easy">Easy DIY</span> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + + <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> + <script> + document.addEventListener('DOMContentLoaded', function() { + // Tab switching functionality + const tabButtons = document.querySelectorAll('[data-season]'); + const seasonSections = document.querySelectorAll('.season-section'); + + tabButtons.forEach(button => { + button.addEventListener('click', function() { + const targetSeason = this.getAttribute('data-season'); + + // Update active tab + tabButtons.forEach(btn => btn.classList.remove('active')); + this.classList.add('active'); + + // Update active section + seasonSections.forEach(section => { + section.classList.remove('active'); + }); + document.getElementById(targetSeason).classList.add('active'); + + // Update progress for current season + updateProgress(); + }); + }); + + // Collapse toggle functionality + const categoryHeaders = document.querySelectorAll('.category-header'); + categoryHeaders.forEach(header => { + header.addEventListener('click', function() { + const target = header.getAttribute('data-bs-target'); + const collapse = document.querySelector(target); + const icon = header.querySelector('.collapse-icon'); + + if (collapse.classList.contains('show')) { + collapse.classList.remove('show'); + header.classList.add('collapsed'); + } else { + collapse.classList.add('show'); + header.classList.remove('collapsed'); + } + }); + }); + + // Search functionality + const searchInput = document.getElementById('searchInput'); + searchInput.addEventListener('input', function() { + const searchTerm = this.value.toLowerCase(); + const taskItems = document.querySelectorAll('.task-item'); + + taskItems.forEach(item => { + const title = item.querySelector('.task-title').textContent.toLowerCase(); + const description = item.querySelector('.task-description').textContent.toLowerCase(); + + if (title.includes(searchTerm) || description.includes(searchTerm)) { + item.style.display = 'flex'; + } else { + item.style.display = searchTerm === '' ? 'flex' : 'none'; + } + }); + }); + + // Checkbox persistence and progress tracking + const checkboxes = document.querySelectorAll('.task-checkbox'); + + // Load saved states + checkboxes.forEach(checkbox => { + const taskId = checkbox.getAttribute('data-task'); + const saved = localStorage.getItem('maintenance_' + taskId); + if (saved === 'true') { + checkbox.checked = true; + } + + checkbox.addEventListener('change', function() { + localStorage.setItem('maintenance_' + taskId, this.checked); + updateProgress(); + }); + }); + + // Progress calculation + function updateProgress() { + const activeSection = document.querySelector('.season-section.active'); + const activeSectionCheckboxes = activeSection.querySelectorAll('.task-checkbox'); + const checkedBoxes = activeSection.querySelectorAll('.task-checkbox:checked'); + + const percentage = activeSectionCheckboxes.length > 0 ? + Math.round((checkedBoxes.length / activeSectionCheckboxes.length) * 100) : 0; + + const progressBarFill = document.getElementById('progressBarFill'); + const progressText = document.getElementById('progressText'); + + progressBarFill.style.width = percentage + '%'; + progressText.textContent = `${percentage}% Complete (${checkedBoxes.length} of ${activeSectionCheckboxes.length} tasks)`; + } + + // Initialize progress + updateProgress(); + + // Keyboard shortcuts + document.addEventListener('keydown', function(e) { + if (e.altKey) { + switch(e.code) { + case 'Digit1': + e.preventDefault(); + document.querySelector('[data-season="spring"]').click(); + break; + case 'Digit2': + e.preventDefault(); + document.querySelector('[data-season="summer"]').click(); + break; + case 'Digit3': + e.preventDefault(); + document.querySelector('[data-season="fall"]').click(); + break; + case 'Digit4': + e.preventDefault(); + document.querySelector('[data-season="winter"]').click(); + break; + case 'Digit5': + e.preventDefault(); + document.querySelector('[data-season="emergency"]').click(); + break; + } + } + + if (e.key === '/' && !e.ctrlKey && !e.altKey) { + e.preventDefault(); + document.getElementById('searchInput').focus(); + } + }); + + // Print functionality + function printCurrentSeason() { + window.print(); + } + + // Export progress functionality + function exportProgress() { + const checkedTasks = []; + checkboxes.forEach(checkbox => { + if (checkbox.checked) { + const taskTitle = checkbox.closest('.task-item').querySelector('.task-title').textContent; + checkedTasks.push({ + id: checkbox.getAttribute('data-task'), + title: taskTitle, + completedDate: new Date().toISOString() + }); + } + }); + + const data = { + exportDate: new Date().toISOString(), + completedTasks: checkedTasks + }; + + const blob = new Blob([JSON.stringify(data, null, 2)], {type: 'application/json'}); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = 'home-maintenance-progress.json'; + a.click(); + URL.revokeObjectURL(url); + } + + // Add keyboard shortcut hints + const helpModal = document.createElement('div'); + helpModal.innerHTML = ` + <div style="position: fixed; bottom: 20px; right: 20px; background: white; padding: 1rem; border-radius: 0.5rem; box-shadow: 0 4px 12px rgba(0,0,0,0.15); font-size: 0.8rem; max-width: 250px; z-index: 1000; display: none;" id="helpModal"> + <h6>Keyboard Shortcuts:</h6> + <ul style="margin: 0; padding-left: 1rem;"> + <li>Alt + 1-5: Switch seasons</li> + <li>/ : Focus search</li> + <li>Ctrl + P: Print</li> + </ul> + <button onclick="this.parentElement.style.display='none'" style="position: absolute; top: 5px; right: 10px; border: none; background: none; font-size: 1rem;">×</button> + </div> + `; + document.body.appendChild(helpModal); + + // Show help on first visit + if (!localStorage.getItem('maintenance_help_shown')) { + setTimeout(() => { + document.getElementById('helpModal').style.display = 'block'; + localStorage.setItem('maintenance_help_shown', 'true'); + }, 2000); + } + }); + </script> +</body> +</html> \ No newline at end of file Binary files /dev/null and b/images/home-maintenance-guide.png differ