02be8ea7f0
gates / gates (push) Successful in 6m12s
A page-by-page review of the live site (1440px and 390px) found six defects and
two editorial questions. The operator answered three questions; the answers and
the evidence are in REPORT-review-2026-10-12.md.
Fixed:
- The contact form showed its consent error before any submit, on both pages:
#privacyError sits outside any .form-group and the hide rule was scoped to
.form-group. Scoped to the page. Checked: load (none) -> submit unticked
(shown) -> tick (gone), with no message sent.
- The consent checkbox is the site's own control now: 24px box, keyboard focus
ring, and a second <label for="privacy"> at 44x44 round it for touch.
- The contact page promised a reply within 24 hours while /feltetelek 1.1 §4
promises no reply time. Now 1-2 days usually, and no promise during the test.
- sitemap.xml was missing /szolgaltatasok and /en/services: 18 -> 20 URLs.
- The pre-shell mobile-menu script still ran on 20 pages and logged
"[mobile-menu] Missing elements" on every one. Removed.
- The sidebar's tester button was btn-outline while the hero's was btn-primary.
- The home page's "Mit tud a doboz ma?" was three bare links; each card now
carries 2-3 of the services page's own items, word for word.
- A plain Facebook link in the footer of all 22 pages. No script, widget or
pixel: the only external hosts any page refers to are still felhom.eu and
stats.felhom.eu.
Voice (operator ruling: "I" everywhere a person speaks): contact, tester and FAQ
pages in both languages, and the home and services pages that repeat the same
promises. An inclusive "we" (you and I, talking) stays plural, and the legal
texts are untouched. Each FAQ answer exists twice (JSON-LD + visible) and gate 18
holds them equal - it caught the five answers whose markup split the sentence.
Hero clip rebuilt: Immich first, so the poster is a wall of real photographs;
the Jellyfin scene starts after the demo's library wall (eleven pieces of poster
art whose licence cannot be quoted from a first-party source); 1.3s of blank
screen cut from the OnlyOffice scene. The film that plays, Caminandes 3:
Llamigos, is CC BY per Blender's own video platform ("licence": {"id": 1,
"label": "Attribution"}) - NOT public domain as website/CHANGELOG.md said
yesterday. That sentence is corrected in place and the film is credited under
the hero caption.
New gate 24: sitemap.xml lists every public page once, with its twin's hreflang
pair, and lists nothing else. Decoy: site/sitemap-missing-page, the exact shape
the reviewer found by hand.
site.css ?v=30; hero clip and poster ?v=2.
333 lines
22 KiB
HTML
333 lines
22 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="hu" class="no-js">
|
||
<head>
|
||
<script>document.documentElement.className=document.documentElement.className.replace('no-js','js');</script>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
<meta name="description" content="Otthoni szerver a saját otthonodban: fényképek, dokumentumok, médiatár. 58 telepíthető alkalmazás, háromszintű automatikus mentés, magyar vagy angol nyelvű vezérlőpult. Most zárt teszt indul.">
|
||
<title>Felhom.eu — Saját felhőd, saját szabályaid | Otthoni szerver szolgáltatás</title>
|
||
|
||
<!-- SEO meta -->
|
||
<meta name="keywords" content="otthoni szerver, saját felhő, self-hosting, Google Drive alternatíva, iCloud alternatíva, adatvédelem, nyílt forráskódú, szerver telepítés, szerver üzemeltetés, Nextcloud, Immich, Magyarország">
|
||
<meta name="author" content="Felhom.eu">
|
||
<meta name="robots" content="index, follow">
|
||
<link rel="canonical" href="https://felhom.eu/">
|
||
<link rel="alternate" hreflang="hu" href="https://felhom.eu/">
|
||
<link rel="alternate" hreflang="en" href="https://felhom.eu/en/">
|
||
<link rel="alternate" hreflang="x-default" href="https://felhom.eu/">
|
||
|
||
<!-- Open Graph (Facebook, LinkedIn) -->
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:url" content="https://felhom.eu/">
|
||
<meta property="og:title" content="Felhom.eu — Saját felhőd, saját szabályaid">
|
||
<meta property="og:description" content="Otthoni szerver a te otthonodban: fényképek, dokumentumok, médiatár — automatikus mentéssel, és egy helyreállítási kóddal, amit csak te ismersz. Most zárt teszt indul.">
|
||
<meta property="og:image" content="https://felhom.eu/assets/og-image.png">
|
||
<meta property="og:image:width" content="1200">
|
||
<meta property="og:image:height" content="630">
|
||
<meta property="og:image:alt" content="Felhom.eu — Saját felhőd, saját szabályaid. Zárt teszt indul.">
|
||
<meta property="og:locale" content="hu_HU">
|
||
<meta property="og:site_name" content="Felhom.eu">
|
||
|
||
<!-- Twitter/X Card -->
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="Felhom.eu — Saját felhőd, saját szabályaid">
|
||
<meta name="twitter:description" content="Otthoni szerver a te otthonodban: fényképek, dokumentumok, médiatár — automatikus mentéssel, és egy helyreállítási kóddal, amit csak te ismersz.">
|
||
<meta name="twitter:image" content="https://felhom.eu/assets/og-image.png">
|
||
|
||
<!-- Structured Data (JSON-LD) -->
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "LocalBusiness",
|
||
"name": "Felhom.eu",
|
||
"description": "Professzionális otthoni szerver telepítés és üzemeltetés Magyarországon.",
|
||
"url": "https://felhom.eu",
|
||
"logo": "https://felhom.eu/assets/logo.png",
|
||
"email": "info@felhom.eu",
|
||
"areaServed": {
|
||
"@type": "Country",
|
||
"name": "Magyarország"
|
||
},
|
||
"serviceType": ["Szerver telepítés", "Szerver üzemeltetés", "Self-hosting"],
|
||
"knowsLanguage": ["hu", "en"],
|
||
"sameAs": []
|
||
}
|
||
</script>
|
||
<link rel="preload" as="font" type="font/woff2" crossorigin href="/assets/fonts/pjs-latin.woff2">
|
||
<link rel="preload" as="font" type="font/woff2" crossorigin href="/assets/fonts/pjs-latin-ext.woff2">
|
||
<!-- shared assets: bump ?v= together on any site.css/icons.svg change -->
|
||
<link rel="stylesheet" href="/assets/site.css?v=30">
|
||
<link rel="stylesheet" href="/assets/shell.css?v=25">
|
||
<link rel="icon" type="image/png" href="/assets/logo_favicon_2.svg">
|
||
<script defer src="/assets/gallery.js?v=2"></script>
|
||
<script defer src="https://stats.felhom.eu/script.js" data-website-id="d419db57-5e1c-48df-bdb3-c29f25fb1661"></script>
|
||
</head>
|
||
<body class="shell page-index">
|
||
<header class="mobile-topbar">
|
||
<a href="/" class="mobile-topbar-logo"><img src="/assets/logo_notext_white.svg" alt="Felhom.eu"></a>
|
||
<button type="button" class="nav-burger" id="navBurger" aria-expanded="false" aria-controls="sidebar" aria-label="Menü">
|
||
<span class="hamburger-box"><span class="hamburger-line"></span><span class="hamburger-line"></span><span class="hamburger-line"></span></span>
|
||
</button>
|
||
</header>
|
||
<div class="nav-backdrop" id="navBackdrop" hidden></div>
|
||
<nav class="sidebar" id="sidebar">
|
||
<div class="sidebar-header">
|
||
<a href="/" class="sidebar-logo-link">
|
||
<img src="/assets/logo_notext_white.svg" alt="" class="sidebar-logo" aria-hidden="true">
|
||
<img src="/assets/logo-wordmark.png" alt="felhom.eu" class="sidebar-word">
|
||
</a>
|
||
</div>
|
||
<ul class="nav-links">
|
||
<li><a href="/" class="active"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-home"/></svg>Kezdőlap</a></li>
|
||
<li><a href="/szolgaltatasok"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-rocket"/></svg>Szolgáltatások</a></li>
|
||
<li class="nav-group">
|
||
<button type="button" class="nav-group-toggle" aria-expanded="false" aria-controls="nav-group-apps"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-package"/></svg>Alkalmazások<svg class="ico nav-chevron" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-chevron-down"/></svg></button>
|
||
<ul id="nav-group-apps" class="nav-links nav-links-sub nav-links-nested">
|
||
<li><a href="/alkalmazasok">Az alkalmazásokról</a></li>
|
||
<li><a href="/alkalmazasok#fajlkezeles">Fájlkezelés & Irodai</a></li>
|
||
<li><a href="/alkalmazasok#media">Média & Szórakozás</a></li>
|
||
<li><a href="/alkalmazasok#otthon">Otthon & Életmód</a></li>
|
||
<li><a href="/alkalmazasok#produktivitas">Produktivitás & Tudáskezelés</a></li>
|
||
<li><a href="/alkalmazasok#rendszer">Rendszer & Fejlesztés</a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a href="/technologiak"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-layers"/></svg>Technológiák</a></li>
|
||
<li><a href="/biztonsagimentes"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-shield-check"/></svg>Biztonsági mentés</a></li>
|
||
</ul>
|
||
<div class="sidebar-bottom">
|
||
<a href="/teszteles" class="btn btn-primary sidebar-cta">Jelentkezem tesztelőnek →</a>
|
||
<div class="nav-group-label">A Felhomról</div>
|
||
<ul class="nav-links nav-links-sub">
|
||
<li><a href="/#hogyan-mukodik">Hogyan működik</a></li>
|
||
<li><a href="/gyik">GYIK</a></li>
|
||
<li><a href="/kapcsolat">Kapcsolat</a></li>
|
||
</ul>
|
||
<div class="sidebar-footer">
|
||
<details class="lang-globe"><summary class="lang-globe-btn" aria-label="Nyelv" title="Nyelv"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-globe"/></svg></summary><ul class="lang-globe-menu"><li><a href="/" lang="hu" hreflang="hu" class="lang-globe-item current" aria-current="true">Magyar</a></li><li><a href="/en/" lang="en" hreflang="en" class="lang-globe-item">English</a></li></ul></details>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
<main class="content">
|
||
<section class="hero-row">
|
||
<div class="hero-copy">
|
||
<h1>Saját felhőd,<br><span>saját szabályaid</span></h1>
|
||
<span class="domain-badge">Otthoni szerver szolgáltatás</span>
|
||
<p class="hero-lede">Egy kis gép az otthonodban: a fényképeid, a dokumentumaid, a filmjeid. Minden éjjel mentés készül. Én figyelem, te használod.</p>
|
||
<a href="/teszteles" class="btn btn-primary btn-lg">Jelentkezem tesztelőnek →</a>
|
||
</div>
|
||
<figure class="hero-shot">
|
||
<div class="hero-laptop">
|
||
<video class="hero-screen" poster="/assets/hero-poster.webp?v=2" muted loop playsinline preload="none" disablepictureinpicture aria-label="Alkalmazások futás közben: Immich, Jellyfin, Tandoor, OnlyOffice, RomM, Paperless">
|
||
<source src="/assets/hero-clip.webm?v=2" type="video/webm">
|
||
<source src="/assets/hero-clip.mp4?v=2" type="video/mp4">
|
||
</video>
|
||
<img src="/assets/hero-laptop-frame.webp?v=1" width="1200" height="916" alt="" decoding="async">
|
||
</div>
|
||
<figcaption>Alkalmazások a katalógusból: Immich, Jellyfin, Tandoor, OnlyOffice, RomM, Paperless.<span class="hero-credit">A film a képernyőn: <a href="https://studio.blender.org/films/caminandes-3/" rel="noopener">Caminandes: Llamigos</a> © Blender Foundation, CC BY.</span></figcaption>
|
||
</figure>
|
||
</section>
|
||
|
||
<section class="shell-section" id="szolgaltatasok">
|
||
<div class="sec-head">
|
||
<h2>Mit tud <span>a doboz ma?</span></h2>
|
||
<p>Nem terv és nem ígéret: ezek ma működő funkciók egy éles Felhom dobozon.</p>
|
||
</div>
|
||
<ul class="caps-teaser">
|
||
<li>
|
||
<a href="/szolgaltatasok#nap-mint-nap">Amit nap mint nap használsz</a>
|
||
<ul>
|
||
<li>Fényképek, dokumentumok, média</li>
|
||
<li>Hálózati megosztás</li>
|
||
<li>58 telepíthető alkalmazás</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="/szolgaltatasok#hatterben">Ami a háttérben véd</a>
|
||
<ul>
|
||
<li>Háromszintű automatikus mentés</li>
|
||
<li>Helyreállítási kód, amit csak te ismersz</li>
|
||
<li>Visszaállítás, ha baj van</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="/szolgaltatasok#gondoskodunk">Amiről én gondoskodom</a>
|
||
<ul>
|
||
<li>Távoli felügyelet, automatikus frissítés</li>
|
||
<li>Óvatos alkalmazásfrissítés</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<a href="/szolgaltatasok" class="btn btn-outline">Minden szolgáltatás →</a>
|
||
</section>
|
||
|
||
<section class="shell-section" id="vezerlopult">
|
||
<div class="sec-head">
|
||
<h2>Így néz ki <span>a vezérlőpult</span></h2>
|
||
<p>Valódi képek egy Felhom dobozról. Kattints rájuk a teljes mérethez.</p>
|
||
</div>
|
||
<div class="dash-grid">
|
||
<figure class="dash-shot">
|
||
<a href="/assets/dashboard-start-hu.webp" data-gallery="dashboard"><img src="/assets/dashboard-start-hu.webp" alt="A vezérlőpult Indítópultja: az otthon telepített alkalmazások csempéi" width="1440" height="900" loading="lazy"></a>
|
||
<figcaption><strong>Indítópult</strong>: minden alkalmazásod egy kattintásra.</figcaption>
|
||
</figure>
|
||
<figure class="dash-shot">
|
||
<a href="/assets/dashboard-apps-hu.webp" data-gallery="dashboard"><img src="/assets/dashboard-apps-hu.webp" alt="Az Alkalmazások oldal: telepített és telepíthető alkalmazások kártyái, állapottal" width="1440" height="900" loading="lazy"></a>
|
||
<figcaption><strong>Alkalmazások</strong>: telepítés pár kattintással, és látod, mi fut és mi naprakész.</figcaption>
|
||
</figure>
|
||
<figure class="dash-shot">
|
||
<a href="/assets/dashboard-app-hu.webp" data-gallery="dashboard"><img src="/assets/dashboard-app-hu.webp" alt="Egy alkalmazás saját oldala: mire jó, képek, és az első lépések" width="1440" height="900" loading="lazy"></a>
|
||
<figcaption><strong>Egy alkalmazás oldala</strong>: mire jó, hova tedd a fájlokat, és hogyan kezdj hozzá.</figcaption>
|
||
</figure>
|
||
<figure class="dash-shot">
|
||
<a href="/assets/dashboard-backups-hu.webp" data-gallery="dashboard"><img src="/assets/dashboard-backups-hu.webp" alt="A mentések oldala: minden alkalmazás adatbázisának éjszakai mentése, ellenőrizve" width="1440" height="900" loading="lazy"></a>
|
||
<figcaption><strong>Mentések</strong>: minden éjjel minden alkalmazás adatbázisa mentésre kerül, és ellenőrizzük.</figcaption>
|
||
</figure>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="shell-section" id="hogyan-mukodik">
|
||
<div class="sec-head">
|
||
<h2>Hogyan <span>működik?</span></h2>
|
||
<p>Az első beszélgetéstől a működő rendszerig.</p>
|
||
</div>
|
||
<div class="flow">
|
||
<div class="flow-step">
|
||
<h3>Egyeztetés</h3>
|
||
<p>Megbeszéljük az igényeidet: milyen alkalmazásokra van szükséged, és mekkora tárhelyet szeretnél.</p>
|
||
</div>
|
||
<div class="flow-step">
|
||
<h3>Hardver kiválasztás</h3>
|
||
<p>Segítünk megtalálni a legjobb ár-érték arányú gépet, ami az igényeidnek megfelel.</p>
|
||
</div>
|
||
<div class="flow-step">
|
||
<h3>Telepítés</h3>
|
||
<p>Feltelepítjük és bekonfiguráljuk az alkalmazásokat, a mentéseket, és a monitoringot.</p>
|
||
</div>
|
||
<div class="flow-step">
|
||
<h3>Átadás</h3>
|
||
<p>Bemutatjuk a rendszert, segítünk áthozni a meglévő adataidat, és válaszolunk minden kérdésedre.</p>
|
||
</div>
|
||
<div class="flow-step">
|
||
<h3>Üzemeltetés</h3>
|
||
<p>Figyeljük a rendszert, frissítünk, mentéseket ellenőrzünk. Te csak használod.</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="shell-section" id="miert">
|
||
<div class="sec-head">
|
||
<h2>Miért a <span>sajátod?</span></h2>
|
||
<p>Ugyanaz a kényelem, más feltételekkel.</p>
|
||
</div>
|
||
<div class="vs">
|
||
<div class="vs-head">
|
||
<div>Felhőszolgáltatónál</div>
|
||
<div>Saját dobozon</div>
|
||
</div>
|
||
<div class="vs-row">
|
||
<div>Havonta fizetsz a tárhelyért és a prémium funkciókért, és az árak csak nőnek idővel.</div>
|
||
<div><strong>A gép a tiéd, örökre.</strong> Nincs tárhely-előfizetés, ami évről évre drágul: az áramot fizeted, és ha kéred, az üzemeltetést.</div>
|
||
</div>
|
||
<div class="vs-row">
|
||
<div>A fotóid, dokumentumaid, személyes adataid idegen szervereken vannak, idegen kezekben.</div>
|
||
<div><strong>Az adataid az otthonodban maradnak</strong>, nem a Google vagy a Microsoft szerverein. A távoli mentésbe csak titkosítva kerülnek.</div>
|
||
</div>
|
||
<div class="vs-row">
|
||
<div>A tárhely fogy, és ha betelt, megint fizetsz.</div>
|
||
<div><strong>Nincs 15GB-os limit.</strong> Bővítheted ahogy nőnek az igényeid, TB-okkal, ha kell.</div>
|
||
</div>
|
||
<div class="vs-row">
|
||
<div>Nem te döntöd el, milyen szolgáltatásokat használsz, és mikor szűnnek meg.</div>
|
||
<div><strong>Te döntöd el, milyen szolgáltatásokat futtatsz.</strong> Te vagy a főnök, nem a szolgáltató.</div>
|
||
</div>
|
||
</div>
|
||
<div class="band">
|
||
<div class="band-item">
|
||
<h3>Amit telepíthetsz</h3>
|
||
<p>Fájlkezelés, fotók és média, dokumentumok, jelszókezelés, okosotthon, fejlesztői eszközök. Nextcloud, Immich, Jellyfin, Paperless-ngx, Vaultwarden, Home Assistant és még 52 másik: <strong>58 alkalmazás</strong>, szinte mind nyílt forráskódú.</p>
|
||
<a href="/alkalmazasok" class="btn btn-outline">Összes alkalmazás megtekintése →</a>
|
||
</div>
|
||
<div class="band-item">
|
||
<h3>Ami alatta fut</h3>
|
||
<p>Docker konténerek egy Proxmox alapon, háromszintű mentés, titkosított alagút nyitott port nélkül, magyar vagy angol vezérlőpult. Az igényeidhez igazítjuk, a <strong>legegyszerűbbtől a legkomolyabbig</strong>.</p>
|
||
<a href="/technologiak" class="btn btn-outline">Technológiákról bővebben →</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="shell-section" id="zart-teszt">
|
||
<div class="sec-head">
|
||
<h2>Zárt <span>teszt</span></h2>
|
||
<p>Néhány magyar háztartással most kezdjük el élesben használni a rendszert.</p>
|
||
</div>
|
||
<div class="app-info-grid">
|
||
<div class="app-info-card">
|
||
<h3>Valódi használat</h3>
|
||
<p>Nem demó: a doboz nálad marad, és az igazi fényképeidet, dokumentumaidat teszed rá. Segítünk a telepítésben és az átállásban, utána te használod a mindennapokban.</p>
|
||
</div>
|
||
<div class="app-info-card">
|
||
<h3>Visszajelzés</h3>
|
||
<p>Cserébe azt kérjük, hogy mondd el, mi zavaró, mi érthetetlen, mi nem működik. Egy „ezt a gombot nem találtam" ér nekünk a legtöbbet: abból tudjuk, mit kell kijavítani.</p>
|
||
</div>
|
||
</div>
|
||
<div class="alerts-container">
|
||
<div class="alert-banner alert-banner-warning">
|
||
<span class="alert-icon"><svg class="ico" aria-hidden="true"><use href="/assets/icons.svg?v=1#i-triangle-alert"/></svg></span>
|
||
<span class="alert-message"><strong>Ismert korlátok, őszintén.</strong> A vezérlőpulthoz jelenleg <strong>egy közös háztartási jelszó</strong> tartozik, külön családtagi fiókok még nincsenek (az egyes alkalmazásoknak viszont saját felhasználóik lehetnek). A <strong>TV-re streamelés (DLNA)</strong> még nincs: egyelőre böngészőből és mobil appból megy a médiatár. És mivel ez teszt, számíts arra, hogy találsz hibát: ez a lényege.</span>
|
||
</div>
|
||
</div>
|
||
<div class="close-cta">
|
||
<p>Ha ez érdekel, írj. <strong>Nem kötelez semmire</strong>, először csak beszélgetünk.</p>
|
||
<a href="/teszteles" class="btn btn-primary btn-lg">Jelentkezem tesztelőnek →</a>
|
||
<div class="who-mini">
|
||
<img src="/assets/operator-portrait-small.webp" alt="Nagyfenyvesi Viktor, a Felhom üzemeltetője" width="160" height="200" loading="lazy">
|
||
<p><strong>Nagyfenyvesi Viktor vagyok</strong>, a Felhom mögött én állok. Ha írsz, én válaszolok. <a href="/kapcsolat#ki-all-mogotte">Rólam bővebben →</a></p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<footer>
|
||
<div class="container">
|
||
<p>© 2026 felhom.eu – Saját felhőd, saját szabályaid</p>
|
||
<p class="footer-legal">Üzemeltető: Nagyfenyvesi Viktor · <a href="mailto:info@felhom.eu">info@felhom.eu</a> · <a href="/adatkezeles">Adatkezelési tájékoztató</a> · <a href="/feltetelek">Feltételek</a> · <a href="https://www.facebook.com/felhom.eu">Facebook</a></p>
|
||
</div>
|
||
</footer>
|
||
</main>
|
||
<script>
|
||
(function(){
|
||
var b=document.getElementById('navBurger'),s=document.getElementById('sidebar'),k=document.getElementById('navBackdrop');
|
||
if(!b||!s||!k)return;
|
||
function open(){s.classList.add('is-open');k.hidden=false;document.body.classList.add('nav-open');b.setAttribute('aria-expanded','true');}
|
||
function close(){s.classList.remove('is-open');k.hidden=true;document.body.classList.remove('nav-open');b.setAttribute('aria-expanded','false');}
|
||
b.addEventListener('click',function(){s.classList.contains('is-open')?close():open();});
|
||
k.addEventListener('click',close);
|
||
document.addEventListener('keydown',function(e){if(e.key==='Escape'&&s.classList.contains('is-open')){close();b.focus();}});
|
||
s.querySelectorAll('a').forEach(function(l){l.addEventListener('click',close);});
|
||
window.addEventListener('resize',function(){if(window.innerWidth>768)close();});
|
||
})();
|
||
document.addEventListener('click',function(e){
|
||
var btn=e.target.closest?e.target.closest('.nav-group-toggle'):null;
|
||
if(!btn)return;
|
||
var g=btn.closest('.nav-group');if(!g)return;
|
||
var willOpen=!g.classList.contains('is-open');
|
||
document.querySelectorAll('.nav-group.is-open').forEach(function(x){
|
||
x.classList.remove('is-open');
|
||
var t=x.querySelector('.nav-group-toggle');if(t)t.setAttribute('aria-expanded','false');
|
||
});
|
||
if(willOpen){g.classList.add('is-open');btn.setAttribute('aria-expanded','true');}
|
||
});
|
||
(function(){
|
||
var v=document.querySelector('.hero-screen');
|
||
if(!v||!v.play)return;
|
||
if(window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches)return;
|
||
var go=function(){var p=v.play();if(p&&p['catch'])p['catch'](function(){});};
|
||
if(!window.IntersectionObserver){go();return;}
|
||
new IntersectionObserver(function(es){
|
||
es.forEach(function(e){if(e.isIntersecting){go();}else{v.pause();}});
|
||
},{threshold:0.2}).observe(v);
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|