Satisfaction Guarantee

TRUST ROOFING TV ORIGINAL

Trust Roofing Academy

Original series · Behind the scenes · Trust Roofing

Episodes coming soon.

THE SERIES

Every roof has a story.

Episode previews · details coming soon

RAISING THE ROOF

01

THUMBNAIL PLACEHOLDER
Preview

Season 1 · Episode 1

Episode 1 · title to be confirmed

Episode description coming soon.

RAISING THE ROOF

02

THUMBNAIL PLACEHOLDER
Preview

Season 1 · Episode 2

Episode 2 · title to be confirmed

Episode description coming soon.

RAISING THE ROOF

03

THUMBNAIL PLACEHOLDER
Preview

Season 1 · Episode 3

Episode 3 · title to be confirmed

Episode description coming soon.

PEOPLE. CRAFT. COMMUNITY.

More than what
meets the roof.

About the series

Raising the Roof takes you closer to the people and craftsmanship behind Trust Roofing. From the first conversation to the finishing details, discover what it means to build with care.

Real work. Shared stories. A closer look at the team behind the roof.

Our name is our promise.

KEEP EXPLORING

More from Trust Roofing TV

TRUST ROOFING TV

Property Owner’s
Playbook

SHOW ARTWORK PLACEHOLDER

Property Owner’s Playbook

Series details coming soon.

TRUST ROOFING TV

Your next
perspective.

SHOW ARTWORK PLACEHOLDER

Third show · title to be confirmed

Series details coming soon.

TRUST ROOFING TV Built on trust. Shared with you.
.trust-tv [hidden]{display:none!important}.trust-tv a:focus-visible,.trust-tv select:focus-visible{outline:3px solid #6fabdd;outline-offset:5px}.trust-tv select{font:inherit;background:#152136;color:#fff;border:1px solid #65748a;padding:12px 32px 12px 14px;border-radius:4px;min-height:46px;max-width:100%}.trust-tv .trust-tv__filter{display:flex;align-items:center;gap:12px;font-size:13px;flex-shrink:0}@media(max-width:600px){.trust-tv .trust-tv__filter{width:100%;justify-content:space-between}} /* Progressive enhancement; all editorial content remains readable without JS. */ (() => { ‘use strict’; function init() { document.querySelectorAll(‘[data-trust-tv]’).forEach(root => { if (root.dataset.tvReady) return; const cards = […root.querySelectorAll(‘[data-season][data-episode]’)]; const select = root.querySelector(‘[data-season-select]’); const status = root.querySelector(‘[data-status]’); const filter = root.querySelector(‘[data-filter]’); if (!select || !status || !filter) return; root.dataset.tvReady = ‘true’; const seasons = […new Set(cards.map(card => card.dataset.season))].sort((a, b) => Number(a) – Number(b)); seasons.forEach(season => { const option = document.createElement(‘option’); option.value = season; option.textContent = `Season ${season}`; select.append(option); }); // Start with all seasons; no card is hidden unless the viewer chooses a filter. filter.hidden = seasons.length === 0; select.addEventListener(‘change’, () => { let visible = 0; cards.forEach(card => { card.hidden = select.value !== ‘all’ && card.dataset.season !== select.value; if (!card.hidden) visible++; }); status.textContent = `${visible} episode${visible === 1 ? ” : ‘s’} · ${select.value === ‘all’ ? ‘All seasons’ : `Season ${select.value}`}`; }); const available = cards.map(card => { const link = card.querySelector(‘a[data-video][href]’); if (!link) return null; try { const url = new URL(link.getAttribute(‘href’)); if (url.protocol !== ‘https:’ || /YOUR_REAL|REPLACE|example\.(com|org|net)/i.test(url.href)) return null; return { card, url }; } catch { return null; } }).filter(Boolean).sort((a, b) => Number(b.card.dataset.season) – Number(a.card.dataset.season) || Number(b.card.dataset.episode) – Number(a.card.dataset.episode)); const latest = root.querySelector(‘[data-latest]’); if (available.length && latest) { latest.href = available[0].url.href; latest.removeAttribute(‘aria-disabled’); latest.removeAttribute(‘role’); const notice = root.querySelector(‘[data-availability]’); if (notice) notice.textContent = `Latest: Season ${available[0].card.dataset.season}, Episode ${available[0].card.dataset.episode}`; } }); } if (document.readyState === ‘loading’) document.addEventListener(‘DOMContentLoaded’, init, { once: true }); else init(); })();