Welcome to Hygelion
Use this secure demonstration form to manage your service preferences.
Operations platform access for Hygelion clients.
Service catalog
Choose your next care module.
Compare focused Hygelion services by environment, schedule, and scope. Save a module to Fallows or add it to your planning cart.
`;
const footerHTML = ``;
document.getElementById('site-header').innerHTML = headerHTML;
document.getElementById('site-footer').innerHTML = footerHTML;
(function(){
const header=document.getElementById('site-header');
const toggleBtn=header.querySelector('[data-menu-toggle]');
const mobileDrawer=header.querySelector('[data-mobile-drawer]');
if(toggleBtn&&mobileDrawer){toggleBtn.addEventListener('click',()=>{mobileDrawer.classList.toggle('hidden');});mobileDrawer.addEventListener('click',e=>{if(e.target===mobileDrawer)mobileDrawer.classList.add('hidden');});}
const themeBtn=header.querySelector('[data-theme-toggle]');
if(themeBtn){let dark=localStorage.getItem('hygelion-theme')!=='light';const apply=()=>{if(dark){document.documentElement.classList.add('dark');}else{document.documentElement.classList.remove('dark');}};apply();themeBtn.addEventListener('click',()=>{dark=!dark;localStorage.setItem('hygelion-theme',dark?'dark':'light');apply();});}
const authModal=header.querySelector('[data-auth-modal]');
header.querySelectorAll('[data-login-open]').forEach(b=>b.addEventListener('click',()=>{authModal.hidden=false;authModal.querySelector('[data-auth-title]').innerText='Log in to Hygelion';}));
header.querySelectorAll('[data-register-open]').forEach(b=>b.addEventListener('click',()=>{authModal.hidden=false;authModal.querySelector('[data-auth-title]').innerText='Register at Hygelion';}));
authModal.querySelector('[data-modal-close]').addEventListener('click',()=>{authModal.hidden=true;});
})();
(function(){const b=document.getElementById('site-footer').querySelector('[data-cookie-banner]');const c=b.querySelector('[data-cookie-close]');if(localStorage.getItem('hygeli-cookie-consent')==='accepted'){b.style.display='none';}c.addEventListener('click',()=>{localStorage.setItem('hygeli-cookie-consent','accepted');b.style.display='none';});})();
const services = [{"id":"s1","name":"Executive Office Polish","category":"Office","shortDescription":"Premium daily floor and surface care for C-suite suites.","description":"Daily vacuuming, damp mopping, and detailed dusting of all wood, glass, and tech surfaces using pH-neutral agents.","price":185,"unit":"per visit","duration":"90 min","cadence":"Weekly","features":["Microfiber dusting","Glass restoration","Tech wipe-down"],"availability":"Mon–Fri"},
{"id":"s2","name":"Conference Deep Cycle","category":"Office","shortDescription":"Full-room sanitation between high-usage bookings.","description":"Carpet extraction, chair upholstery spot-cleaning, and air-vent vacuuming plus touch-point sterilization.","price":320,"unit":"per session","duration":"2.5 h","cadence":"Bi-weekly","features":["Upholstery refresh","Vent filtration","Sanitizer fogger"],"availability":"After hours"},
{"id":"s3","name":"Reception Welcome Reset","category":"Office","shortDescription":"Lobby, plants, and signage polish ready for guests.","description":"Reception desk restoration, plant leaf conditioning, water-feature hygiene and fresh floral accent placement.","price":120,"unit":"per visit","duration":"45 min","cadence":"Daily","features":["Plant care","Sign refresh","Scent control"],"availability":"Pre-opening"},
{"id":"s4","name":"Residential Sanctuary Clean","category":"Residential","shortDescription":"Complete weekly maintenance for family homes.","description":"Kitchen, bath, bedroom, and living-area deep clean with natural enzyme cleaners and linen rotation.","price":240,"unit":"per visit","duration":"3 h","cadence":"Weekly","features":["Linen exchange","Oven interior","Pet dander focus"],"availability":"Flexible"},
{"id":"s5","name":"Post-Renovation Wipe","category":"Residential","shortDescription":"Removes construction dust across all finished surfaces.","description":"Full-property HEPA vacuum and neutral-pH wipe-down including cabinets, light fixtures, and window frames.","price":420,"unit":"per project","duration":"5 h","cadence":"One-time","features":["HEPA extraction","Cabinet interiors","Glass detailing"],"availability":"Scheduled"},
{"id":"s6","name":"Premium Kitchen Refinement","category":"Residential","shortDescription":"Deep sanitation of appliances, backsplash and counters.","description":"Stainless polish, grout line extraction, hood filter clean and stone conditioning treatment.","price":155,"unit":"per visit","duration":"2 h","cadence":"Weekly","features":["Grout purge","Stone seal","Filter laundry"],"availability":"Flexible"},
{"id":"s7","name":"Industrial Floor Renewal","category":"Commercial","shortDescription":"Heavy-duty sweep and scrub of warehouse aisles.","description":"Ride-on floor scrubber pass plus edge detail and dock area de-greasing with eco-safe detergents.","price":690,"unit":"per shift","duration":"4 h","cadence":"Weekly","features":["Ride-on scrub","Dock de-grease","Edge detailing"],"availability":"After hours"},
{"id":"s8","name":"Retail Merchandising Reset","category":"Commercial","shortDescription":"Storefront window and display cycle maintenance.","description":"Window washing, fixture dusting, floor burnishing and point-of-sale counter sanitization.","price":275,"unit":"per visit","duration":"2 h","cadence":"Twice weekly","features":["Window streak-free","Fixture polish","POS hygiene"],"availability":"Pre-opening"},
{"id":"s9","name":"Medical-Grade Zone Care","category":"Commercial","shortDescription":"Clinic waiting and treatment room protocol clean.","description":"Hospital-grade disinfectant protocol, bio-waste handling, exam table linens and air purification filter swap.","price":395,"unit":"per visit","duration":"3 h","cadence":"Daily","features":["Disinfectant protocol","Air filter swap","Bio-waste removal"],"availability":"After hours"},
{"id":"s10","name":"Hotel Suite Turnover","category":"Commercial","shortDescription":"Full turnover deep-clean between extended stays.","description":"Mattress and upholstery steam, bathroom tile grout extraction, and complete linen rotation service.","price":165,"unit":"per suite","duration":"75 min","cadence":"As needed","features":["Steam sanitation","Grout extraction","Linen exchange"],"availability":"Flexible"}];
const categories = [...new Set(services.map(s=>s.category))];
const catSelect = document.getElementById('category');
categories.forEach(c=>{const opt=document.createElement('option');opt.value=c;opt.textContent=c;catSelect.appendChild(opt);});
let currentPage=1;const perPage=6;let filtered=services;
function getFallows(){return JSON.parse(localStorage.getItem('hygeli-fallows')||'[]');}
function setFallows(arr){localStorage.setItem('hygeli-fallows',JSON.stringify(arr));}
function getCart(){return JSON.parse(localStorage.getItem('hygeli-cart')||'{}');}
function setCart(obj){localStorage.setItem('hygeli-cart',JSON.stringify(obj));}
function filterAndRender(){
const q=document.getElementById('search').value.toLowerCase().trim();
const cat=document.getElementById('category').value;
filtered=services.filter(s=>(cat==='all'||s.category===cat)&&(s.name.toLowerCase().includes(q)||s.shortDescription.toLowerCase().includes(q)));
currentPage=1;renderGrid();renderPagination();
}
function renderGrid(){
const grid=document.getElementById('catalog-grid');grid.innerHTML='';
const start=(currentPage-1)*perPage;const pageItems=filtered.slice(start,start+perPage);
const fallows=getFallows();const cart=getCart();
pageItems.forEach(s=>{
const score=Math.round((parseInt(s.duration)*.3)+(s.features.length*8)+(s.cadence==='Weekly'?12:6));
const isFav=fallows.includes(s.id);const qty=cart[s.id]||0;
const card=document.createElement('div');card.className='dd23l xk9h7 border border-slate-800 bg-slate-900 p-6 rounded-2xl flex flex-col';
card.innerHTML=`${s.category}${score} score
${s.name}
${s.shortDescription}
$${s.price} /${s.unit}
`;
card.querySelector('[data-fav]').addEventListener('click',e=>{e.preventDefault();let f=getFallows();f.includes(s.id)?f=f.filter(x=>x!==s.id):f.push(s.id);setFallows(f);filterAndRender();});
card.querySelector('[data-add]').addEventListener('click',e=>{e.preventDefault();let c=getCart();c[s.id]=(c[s.id]||0)+1;setCart(c);filterAndRender();});
card.addEventListener('click',e=>{if(!e.target.closest('button'))openModal(s);});
grid.appendChild(card);
});
}
function renderPagination(){
const pag=document.getElementById('pagination');pag.innerHTML='';
const pages=Math.ceil(filtered.length/perPage);
for(let i=1;i<=pages;i++){const a=document.createElement('a');a.href='#';a.className=`px-4 py-2 rounded-xl text-sm border ${i===currentPage?'bg-indigo-600 border-indigo-600':'border-slate-700 hover:border-violet-400'}`;a.textContent=i;a.addEventListener('click',ev=>{ev.preventDefault();currentPage=i;renderGrid();renderPagination();});pag.appendChild(a);}
}
function openModal(s){
const modal=document.getElementById('detail-modal');const cont=document.getElementById('detail-content');
cont.innerHTML=`${s.name}
${s.category} • ${s.duration} • ${s.cadence}
${s.description}
${s.features.map(f=>`- ${f}
`).join('')}
Availability: ${s.availability}
`;
modal.hidden=false;modal.querySelector('[data-close-detail]').onclick=()=>modal.hidden=true;
}
document.getElementById('search').addEventListener('input',filterAndRender);
document.getElementById('category').addEventListener('change',filterAndRender);
filterAndRender();