htmlfajlnevsubdomaincegnevev_marad_e.0ev_marad_e.1generalt_mezok_szama
<!doctype html>
<html lang="hu">
<!--
opengroup_templates_v2 — Statikus HTML, vanilla JS interakcióval
React/Babel eltávolítva. Tartalom közvetlenül a HTML-ben.

PLACEHOLDEREK (n8n workflow validációhoz):
CLB Cleaning Korlátolt Felelősségű Társaság Tiszta környezet, biztos háttér.
Takarítás Ahol a tisztaság prioritás mindenkinek fontos.
Szakszerű takarítás a megfelelések és szabványok szerint. Kérje ajánlatunkat most! Ajánlatot kérek Szolgáltatásaink
2023 indulás éve
24h válaszidő
5+ tapasztalt szakember
Kép · hamarosan 2023 — Új ügyfeleket fogadunk
Széleskörű szolgáltatások az Ön kényelméért.
Ipari takarítás Különböző ipari területek tisztítása. Megfelelünk a speciális igényeknek.
Rendszeres takarítás Heti, havi vagy egyedi ütemezésű takarítást is vállalunk. Kényelmes megoldások az Ön számára.
Üzlethelyiségek takarítása Irodák és boltok szakszerű tisztítása. Kreatív környezetet teremtünk.
Raktárak tisztítása Raktárak és termelési területek csúcsformába hozása. Biztonságos munkakörnyezetért.
Külső területek tisztítása Parkok, udvarok, bejáratok gondozása. Esztétikus környezet az Ön üzletéhez.
Speciális feladatok Egyedi takarítási igények teljesítése. Rugalmas megoldásokat kínálunk.
Megbízható szakemberek Tapasztalt csapatunk mindig kész segíteni.
Rugalmas ütemezés Ön dönti el, mikor legyen a takarítás.
Minőségi eszközök Korszerű berendezésekkel dolgozunk a hatékonyság érdekében.
Kedvező árak Szolgáltatásaink megfizethető áron érhetők el.
Kapcsolatfelvétel Lépjen velünk kapcsolatba telefonon vagy online.
Igényfelmérés Megbeszéljük, mire van szüksége.
Kivitelezés Szakembereink elvégzik a takarítást.
Átadás Felhívjuk figyelmét a végső ellenőrzésre.
clbcleaningkft@gmail.com E-mailben várjuk megkeresését 1084 Budapest, Víg utca 20. 2. em. 6.
{{ev}} — auto: JS tölti ki (.footer-year)
-->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>CLB Cleaning Korlátolt Felelősségű Társaság — Tiszta környezet, biztos háttér.</title>
<meta name="description" content="Szakszerű takarítás a megfelelések és szabványok szerint. Kérje ajánlatunkat most!" />

<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600&family=Geist+Mono:wght@400;500&family=Instrument+Serif:ital@0;1&display=swap" rel="stylesheet" />

<style>
/* ============================================================
Demo Site Sablon v2 — Statikus HTML, váltható palettával
============================================================ */

:root {
--bg: #0a0a0b;
--surface: #141416;
--surface-2: #1c1c1f;
--border: rgba(255,255,255,0.08);
--border-strong: rgba(255,255,255,0.16);
--text: #f5f1ea;
--text-muted:#8a8680;
--text-dim: #5a564f;
--accent: #d4a574;
--accent-soft: rgba(212,165,116,0.12);
--accent-ink: #1a1814;
--radius-sm: 6px;
--radius: 12px;
--radius-lg: 20px;
--shadow-sm: 0 1px 2px rgba(0,0,0,0.4);
--shadow: 0 8px 32px rgba(0,0,0,0.4);
--shadow-lg: 0 24px 64px rgba(0,0,0,0.5);
--container: 1200px;
--font-display: "Instrument Serif", "Iowan Old Style", Georgia, serif;
--font-body: "Geist", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
--font-mono: "Geist Mono", "JetBrains Mono", ui-monospace, monospace;
--ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* ---------- RESET ---------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: var(--font-body);
font-size: 16px;
line-height: 1.5;
color: var(--text);
background: var(--bg);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
text-wrap: pretty;
transition: background-color 0.5s var(--ease), color 0.5s var(--ease);
}
img { max-width: 100%; display: block; }
button { font: inherit; color: inherit; cursor: pointer; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4 { margin: 0; font-weight: 400; letter-spacing: -0.01em; }
p { margin: 0; }

/* ---------- LAYOUT ---------- */
.container { max-width: var(--container); margin: 0 auto; padding: 0 32px; }
@media (max-width: 720px) { .container { padding: 0 20px; } }
section { padding: 120px 0; position: relative; }
@media (max-width: 720px) { section { padding: 72px 0; } }

.eyebrow {
font-family: var(--font-mono);
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.18em;
color: var(--text-muted);
display: inline-flex;
align-items: center;
gap: 10px;
}
.eyebrow::before { content: ""; width: 24px; height: 1px; background: var(--accent); }

.section-title {
font-family: var(--font-display);
font-size: clamp(36px, 5vw, 64px);
line-height: 1.05;
letter-spacing: -0.02em;
margin-top: 20px;
margin-bottom: 24px;
}
.section-title em { font-style: italic; color: var(--accent); }
.section-lede { font-size: 18px; color: var(--text-muted); max-width: 560px; line-height: 1.55; }

/* ---------- BUTTONS ---------- */
.btn {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 14px 22px;
border-radius: 999px;
font-size: 14px;
font-weight: 500;
letter-spacing: 0.01em;
border: 1px solid transparent;
transition: transform 0.2s var(--ease), background 0.2s var(--ease), color 0.2s var(--ease), border-color 0.2s var(--ease);
white-space: nowrap;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--accent); color: var(--accent-ink); }
.btn-primary:hover { filter: brightness(1.05); }
.btn-ghost { background: transparent; color: var(--text); border-color: var(--border-strong); }
.btn-ghost:hover { border-color: var(--accent); color: var(--accent); }

/* ---------- HEADER ---------- */
.header {
position: sticky; top: 0; z-index: 50;
background: color-mix(in oklab, var(--bg) 80%, transparent);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border-bottom: 1px solid var(--border);
}
.header-inner { display: flex; align-items: center; justify-content: space-between; height: 72px; }
.brand { display: flex; align-items: center; gap: 12px; }
.brand-mark {
width: 36px; height: 36px;
border-radius: 8px;
background: var(--accent);
color: var(--accent-ink);
display: grid; place-items: center;
font-family: var(--font-display);
font-size: 18px; font-weight: 500; letter-spacing: -0.02em;
overflow: hidden; flex-shrink: 0;
}
.brand-mark img { width: 100%; height: 100%; object-fit: cover; }
.brand-name { font-family: var(--font-display); font-size: 22px; letter-spacing: -0.01em; }
.nav { display: flex; align-items: center; gap: 32px; }
.nav a { font-size: 14px; color: var(--text-muted); transition: color 0.2s var(--ease); }
.nav a:hover { color: var(--text); }
.header-cta { display: flex; align-items: center; gap: 12px; }

.hamburger {
display: none;
width: 40px; height: 40px;
border: 1px solid var(--border-strong);
border-radius: 8px;
background: transparent;
padding: 0;
align-items: center; justify-content: center;
}
.hamburger span {
display: block; width: 16px; height: 1.5px;
background: var(--text); position: relative;
transition: transform 0.25s var(--ease), opacity 0.25s var(--ease);
}
.hamburger span::before, .hamburger span::after {
content: ""; position: absolute; left: 0; right: 0;
height: 1.5px; background: var(--text);
transition: transform 0.25s var(--ease);
}
.hamburger span::before { top: -5px; }
.hamburger span::after { top: 5px; }
.hamburger.open span { background: transparent; }
.hamburger.open span::before { transform: translateY(5px) rotate(45deg); }
.hamburger.open span::after { transform: translateY(-5px) rotate(-45deg); }
@media (max-width: 880px) {
.nav, .header-cta .btn { display: none; }
.hamburger { display: inline-flex; }
}

.mobile-menu {
position: fixed; inset: 72px 0 0 0;
background: var(--bg); z-index: 40; padding: 32px;
transform: translateY(-8px); opacity: 0; pointer-events: none;
transition: opacity 0.25s var(--ease), transform 0.25s var(--ease);
}
.mobile-menu.open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.mobile-menu a {
display: block; font-family: var(--font-display);
font-size: 32px; padding: 16px 0; border-bottom: 1px solid var(--border);
}
.mobile-menu .btn { margin-top: 24px; width: 100%; justify-content: center; }

/* ---------- HERO ---------- */
.hero { padding: 80px 0 120px; position: relative; overflow: hidden; }
.hero-grid {
display: grid; grid-template-columns: 1.4fr 1fr;
gap: 64px; align-items: center;
}
.hero-grid > * { min-width: 0; }
@media (max-width: 880px) { .hero-grid { grid-template-columns: 1fr; gap: 48px; } }
.hero h1 {
font-family: var(--font-display);
font-size: clamp(48px, 8vw, 104px);
line-height: 0.98; letter-spacing: -0.025em;
margin: 24px 0 28px; overflow-wrap: break-word; word-break: break-word;
}
.hero h1 em { font-style: italic; color: var(--accent); }
.hero-sub { font-size: 20px; line-height: 1.5; color: var(--text-muted); max-width: 520px; margin-bottom: 40px; }
.hero-ctas { display: flex; gap: 12px; flex-wrap: wrap; }
.hero-meta {
display: flex; gap: 48px; margin-top: 64px;
padding-top: 32px; border-top: 1px solid var(--border);
}
.hero-meta-item .num { font-family: var(--font-display); font-size: 40px; line-height: 1; color: var(--accent); }
.hero-meta-item .lbl {
font-family: var(--font-mono); font-size: 11px;
text-transform: uppercase; letter-spacing: 0.16em;
color: var(--text-muted); margin-top: 8px;
}

.hero-visual {
position: relative; aspect-ratio: 4/5;
border-radius: var(--radius-lg);
background: linear-gradient(135deg, var(--surface) 0%, var(--surface-2) 100%);
border: 1px solid var(--border); overflow: hidden;
display: grid; place-items: center;
}
.hero-visual::before {
content: ""; position: absolute; inset: 0;
background-image: repeating-linear-gradient(45deg,
transparent 0, transparent 24px,
var(--border) 24px, var(--border) 25px);
opacity: 0.6; z-index: 0;
}
.hero-image {
position: absolute; inset: 0;
width: 100%; height: 100%; object-fit: cover; z-index: 1;
}
.hero-visual-label {
position: relative; z-index: 0;
font-family: var(--font-mono); font-size: 11px;
text-transform: uppercase; letter-spacing: 0.18em;
color: var(--text-dim); background: var(--bg);
padding: 8px 14px; border-radius: 4px; border: 1px solid var(--border);
}
.hero-badge {
position: absolute; top: 24px; right: 24px; z-index: 2;
display: flex; align-items: center; gap: 8px;
padding: 8px 14px;
background: color-mix(in oklab, var(--bg) 80%, transparent);
backdrop-filter: blur(8px);
border: 1px solid var(--border); border-radius: 999px;
font-family: var(--font-mono); font-size: 11px;
text-transform: uppercase; letter-spacing: 0.14em;
}
.hero-badge .dot {
width: 6px; height: 6px; border-radius: 50%;
background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft);
animation: pulse 2s ease-in-out infinite; flex-shrink: 0;
}
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }

/* ---------- SERVICES ---------- */
.section-head {
display: grid; grid-template-columns: 1fr auto;
align-items: end; gap: 32px; margin-bottom: 64px;
}
@media (max-width: 720px) { .section-head { grid-template-columns: 1fr; } }

.services-grid {
display: grid; grid-template-columns: repeat(3, 1fr);
gap: 1px; background: var(--border);
border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden;
}
@media (max-width: 880px) { .services-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .services-grid { grid-template-columns: 1fr; } }

.service-card {
background: var(--surface); padding: 40px 32px;
display: flex; flex-direction: column; gap: 16px;
position: relative; transition: background 0.3s var(--ease); cursor: default;
}
.service-card:hover { background: var(--surface-2); }
.service-num { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.16em; color: var(--text-dim); }
.service-icon {
width: 44px; height: 44px; border-radius: 10px;
background: var(--accent-soft); color: var(--accent);
display: grid; place-items: center; margin-bottom: 8px;
}
.service-title { font-family: var(--font-display); font-size: 28px; line-height: 1.1; letter-spacing: -0.01em; }
.service-desc { font-size: 14.5px; color: var(--text-muted); line-height: 1.55; }
.service-link {
margin-top: auto; padding-top: 20px;
font-family: var(--font-mono); font-size: 12px;
letter-spacing: 0.12em; text-transform: uppercase;
color: var(--accent); display: inline-flex; align-items: center; gap: 6px;
}
.service-link::after { content: "↗"; }

/* ---------- WHY US ---------- */
.why-us { background: var(--surface); }
.why-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: start; }
@media (max-width: 880px) { .why-grid { grid-template-columns: 1fr; gap: 48px; } }
.why-list { display: flex; flex-direction: column; gap: 0; }
.why-item {
display: grid; grid-template-columns: 56px 1fr;
gap: 24px; padding: 28px 0; border-bottom: 1px solid var(--border);
}
.why-item:last-child { border-bottom: none; }
.why-icon {
width: 44px; height: 44px; border-radius: 50%;
border: 1px solid var(--accent); color: var(--accent);
display: grid; place-items: center;
font-family: var(--font-display); font-size: 18px;
}
.why-item h3 { font-family: var(--font-display); font-size: 24px; margin-bottom: 8px; letter-spacing: -0.01em; }
.why-item p { font-size: 15px; color: var(--text-muted); line-height: 1.55; }

/* ---------- PROCESS ---------- */
.process-track {
display: grid; grid-template-columns: repeat(4, 1fr);
gap: 24px; position: relative; margin-top: 64px;
}
.process-track::before {
content: ""; position: absolute; top: 22px; left: 0; right: 0;
height: 1px; background: var(--border);
}
@media (max-width: 880px) { .process-track { grid-template-columns: 1fr 1fr; } .process-track::before { display: none; } }
@media (max-width: 560px) { .process-track { grid-template-columns: 1fr; } }
.process-step { position: relative; z-index: 1; }
.process-num {
width: 44px; height: 44px; border-radius: 50%;
background: var(--bg); border: 1px solid var(--accent); color: var(--accent);
display: grid; place-items: center;
font-family: var(--font-display); font-size: 18px; margin-bottom: 24px;
}
.process-step h3 { font-family: var(--font-display); font-size: 24px; letter-spacing: -0.01em; margin-bottom: 10px; }
.process-step p { font-size: 14.5px; color: var(--text-muted); line-height: 1.55; max-width: 260px; }

/* ---------- TESTIMONIALS ---------- */
.testimonials { background: var(--surface); }
.testi-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 64px; }
@media (max-width: 880px) { .testi-grid { grid-template-columns: 1fr; } }
.testi-card {
background: var(--bg); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 36px 32px;
display: flex; flex-direction: column; gap: 24px;
}
.testi-mark { font-family: var(--font-display); font-size: 48px; line-height: 0.5; color: var(--accent); height: 20px; }
.testi-quote { font-family: var(--font-display); font-size: 22px; line-height: 1.35; letter-spacing: -0.005em; flex: 1; }
.testi-author { display: flex; align-items: center; gap: 14px; padding-top: 20px; border-top: 1px solid var(--border); }
.testi-avatar {
width: 40px; height: 40px; border-radius: 50%;
background: var(--accent-soft); color: var(--accent);
display: grid; place-items: center;
font-family: var(--font-display); font-size: 16px; flex-shrink: 0;
}
.testi-name { font-size: 14px; font-weight: 500; }
.testi-role { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); margin-top: 2px; }

/* ---------- FOOTER ---------- */
.footer { border-top: 1px solid var(--border); padding: 64px 0 32px; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 48px; margin-bottom: 64px; }
@media (max-width: 720px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
.footer-brand .brand { margin-bottom: 20px; }
.footer-tag { font-size: 14px; color: var(--text-muted); max-width: 320px; line-height: 1.55; }
.footer h4 { font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.16em; color: var(--text-dim); margin-bottom: 20px; }
.footer ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.footer a { font-size: 14px; color: var(--text-muted); transition: color 0.2s var(--ease); }
.footer a:hover { color: var(--accent); }
.footer-bottom {
padding-top: 32px; border-top: 1px solid var(--border);
display: flex; justify-content: space-between; align-items: center;
font-family: var(--font-mono); font-size: 11px;
letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-dim);
}
@media (max-width: 560px) { .footer-bottom { flex-direction: column; gap: 12px; align-items: flex-start; } }

/* ---------- SIDE TOGGLES ---------- */
.side-toggle {
position: fixed; top: 88px; z-index: 48;
height: 52px; min-width: 196px; border-radius: 999px;
background: color-mix(in oklab, var(--surface) 88%, var(--bg));
border: 1px solid var(--border-strong); box-shadow: var(--shadow);
display: inline-flex; align-items: center; padding: 8px 14px;
transition: transform 0.25s var(--ease), background 0.25s var(--ease);
}
.side-toggle.right { right: 0; justify-content: flex-start; transform: translateX(52%); }
.side-toggle.left { left: 0; justify-content: flex-end; transform: translateX(-52%); }
.side-toggle:hover, .side-toggle:focus-visible { background: var(--surface-2); }
.side-toggle.right:hover, .side-toggle.right:focus-visible { transform: translateX(24%); }
.side-toggle.left:hover, .side-toggle.left:focus-visible { transform: translateX(-24%); }
.side-toggle.attention.right { animation: nudge-right 1.5s var(--ease) infinite; }
.side-toggle.attention.left { animation: nudge-left 1.5s var(--ease) infinite; }
.side-toggle-inner { display: inline-flex; align-items: center; gap: 10px; }
.side-toggle.right .side-toggle-inner { margin-right: 8px; }
.side-toggle.left .side-toggle-inner { margin-left: 8px; }
.side-toggle-text { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); white-space: nowrap; }
.side-toggle .swatch-cluster { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; width: 22px; height: 22px; }
.side-toggle .swatch-cluster span { border-radius: 2px; }
.side-toggle-icon {
width: 26px; height: 26px; border-radius: 50%;
display: grid; place-items: center;
border: 1px solid var(--border-strong); color: var(--accent);
background: var(--bg); font-family: var(--font-display); font-size: 15px;
}
@keyframes nudge-right { 0%, 45%, 100% { transform: translateX(52%); } 20%, 32% { transform: translateX(12%); } }
@keyframes nudge-left { 0%, 45%, 100% { transform: translateX(-52%); } 20%, 32% { transform: translateX(-12%); } }
@media (max-width: 720px) {
.side-toggle { top: 82px; min-width: 166px; height: 48px; }
.side-toggle-text { letter-spacing: 0.09em; }
.side-toggle.right { transform: translateX(58%); }
.side-toggle.left { transform: translateX(-58%); }
.side-toggle.right:hover, .side-toggle.right:focus-visible { transform: translateX(30%); }
.side-toggle.left:hover, .side-toggle.left:focus-visible { transform: translateX(-30%); }
}

/* ---------- DRAWERS ---------- */
.drawer-backdrop {
position: fixed; inset: 72px 0 0 0;
background: rgba(0,0,0,0.5); z-index: 70;
opacity: 0; pointer-events: none;
transition: opacity 0.3s var(--ease);
}
.drawer-backdrop.open { opacity: 1; pointer-events: auto; }
.drawer {
position: fixed; top: 72px; right: 0; bottom: 0;
width: 380px; max-width: 100vw; height: calc(100vh - 72px);
background: var(--bg); border-left: 1px solid var(--border);
z-index: 80; transform: translateX(100%);
transition: transform 0.4s var(--ease);
display: flex; flex-direction: column; overflow-y: auto;
}
.drawer.right.open { transform: translateX(0); }
.drawer.left { left: 0; right: auto; transform: translateX(-100%); border-left: none; border-right: 1px solid var(--border); }
.drawer.left.open { transform: translateX(0); }
.drawer-header { padding: 28px 28px 20px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); }
.drawer-header h3 { font-family: var(--font-display); font-size: 24px; }
.drawer-close { background: transparent; border: 1px solid var(--border-strong); width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; font-size: 18px; color: var(--text); }
.drawer-body { padding: 28px; flex: 1; }
.drawer-section { margin-bottom: 36px; }
.drawer-section h4 { font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.16em; color: var(--text-muted); margin-bottom: 16px; }

.palette-list { display: flex; flex-direction: column; gap: 10px; }
.palette-option {
display: grid; grid-template-columns: auto 1fr auto;
gap: 16px; align-items: center; padding: 14px 16px;
background: var(--surface); border: 1px solid var(--border);
border-radius: var(--radius); text-align: left;
transition: border-color 0.2s var(--ease), background 0.2s var(--ease);
}
.palette-option:hover { border-color: var(--border-strong); }
.palette-option.active { border-color: var(--accent); background: var(--surface-2); }
.palette-swatch { display: flex; gap: 0; }
.palette-swatch span { width: 18px; height: 36px; display: block; }
.palette-swatch span:first-child { border-radius: 4px 0 0 4px; }
.palette-swatch span:last-child { border-radius: 0 4px 4px 0; }
.palette-info { display: flex; flex-direction: column; gap: 2px; }
.palette-name { font-family: var(--font-display); font-size: 18px; letter-spacing: -0.005em; }
.palette-desc { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); }
.palette-check { width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--border-strong); display: grid; place-items: center; color: var(--accent-ink); background: transparent; font-size: 12px; }
.palette-option.active .palette-check { background: var(--accent); border-color: var(--accent); }

.tone-toggle { display: grid; grid-template-columns: 1fr 1fr; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 4px; gap: 4px; }
.tone-toggle button { padding: 10px 14px; border-radius: 8px; background: transparent; border: none; font-size: 13px; font-family: var(--font-body); color: var(--text-muted); display: flex; align-items: center; justify-content: center; gap: 8px; transition: background 0.2s var(--ease), color 0.2s var(--ease); }
.tone-toggle button.active { background: var(--accent); color: var(--accent-ink); }

.drawer-footer { padding: 20px 28px 28px; border-top: 1px solid var(--border); font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.1em; color: var(--text-dim); line-height: 1.5; }

.info-steps { display: flex; flex-direction: column; gap: 12px; }
.info-step { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; }
.info-step strong { display: block; font-family: var(--font-display); font-size: 20px; margin-bottom: 4px; }
.info-step p { color: var(--text-muted); font-size: 14px; line-height: 1.55; }

/* ---------- SCROLL REVEAL ---------- */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.reveal-stagger > * { opacity: 0; transform: translateY(20px); transition: opacity 0.7s var(--ease), transform 0.7s var(--ease); }
.reveal-stagger.in > * { opacity: 1; transform: none; }
.reveal-stagger.in > *:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger.in > *:nth-child(2) { transition-delay: 80ms; }
.reveal-stagger.in > *:nth-child(3) { transition-delay: 160ms; }
.reveal-stagger.in > *:nth-child(4) { transition-delay: 240ms; }
.reveal-stagger.in > *:nth-child(5) { transition-delay: 320ms; }
.reveal-stagger.in > *:nth-child(6) { transition-delay: 400ms; }
@media (prefers-reduced-motion: reduce) {
.reveal, .reveal-stagger > * { opacity: 1; transform: none; transition: none; }
html { scroll-behavior: auto; }
}
</style>
</head>
<body>

<!-- ============================================================
HEADER
============================================================ -->
<header class="header">
<div class="container header-inner">
<a href="#" class="brand" aria-label="CLB Cleaning Korlátolt Felelősségű Társaság">
<span class="brand-mark"></span>
<span class="brand-name">CLB Cleaning Korlátolt Felelősségű Társaság</span>
</a>
<nav class="nav" aria-label="Fő menü">
<a href="#services">Szolgáltatások</a>
<a href="#why">Miért minket</a>
<a href="#process">Folyamat</a>
<a href="#testimonials">Vélemények</a>
</nav>
<div class="header-cta">
<a href="#contact" class="btn btn-primary">Kapcsolat</a>
<button id="hamburger" class="hamburger" aria-label="Menü megnyitása" aria-expanded="false">
<span></span>
</button>
</div>
</div>
</header>

<div id="mobile-menu" class="mobile-menu">
<div class="container">
<a href="#services">Szolgáltatások</a>
<a href="#why">Miért minket</a>
<a href="#process">Folyamat</a>
<a href="#testimonials">Vélemények</a>
<a href="#contact" class="btn btn-primary">Kapcsolat</a>
</div>
</div>

<main>

<!-- ============================================================
HERO
============================================================ -->
<section class="hero" id="top">
<div class="container hero-grid">
<div class="reveal">
<span class="eyebrow">Takarítás</span>
<h1>Ahol a tisztaság <em>prioritás</em> mindenkinek fontos.</h1>
<p class="hero-sub">Szakszerű takarítás a megfelelések és szabványok szerint. Kérje ajánlatunkat most!</p>
<div class="hero-ctas">
<a href="#contact" class="btn btn-primary">Ajánlatot kérek</a>
<a href="#services" class="btn btn-ghost">Szolgáltatásaink</a>
</div>
<div class="hero-meta">
<div class="hero-meta-item">
<div class="num">2023</div>
<div class="lbl">indulás éve</div>
</div>
<div class="hero-meta-item">
<div class="num">24h</div>
<div class="lbl">válaszidő</div>
</div>
<div class="hero-meta-item">
<div class="num">5+</div>
<div class="lbl">tapasztalt szakember</div>
</div>
</div>
</div>
<div class="hero-visual reveal" style="transition-delay:200ms">
<img src="hero.jpg" alt="" class="hero-image" onerror="this.remove()">
<span class="hero-visual-label">Kép · hamarosan</span>
<div class="hero-badge">
<span class="dot"></span>
<span>2023 — Új ügyfeleket fogadunk</span>
</div>
</div>
</div>
</section>

<!-- ============================================================
SERVICES
============================================================ -->
<section id="services">
<div class="container">
<div class="reveal section-head">
<div>
<span class="eyebrow">Szolgáltatások</span>
<h2 class="section-title">Amiben a CLB Cleaning Korlátolt Felelősségű Társaság <em>kiemelkedik</em></h2>
</div>
<p class="section-lede">Széleskörű szolgáltatások az Ön kényelméért.</p>
</div>
<div class="reveal-stagger services-grid">

<article class="service-card">
<span class="service-num">01 / 06</span>
<span class="service-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M12 2 22 12 12 22 2 12z"/></svg>
</span>
<h3 class="service-title">Ipari takarítás</h3>
<p class="service-desc">Különböző ipari területek tisztítása. Megfelelünk a speciális igényeknek.</p>
<a href="#contact" class="service-link">Részletek</a>
</article>

<article class="service-card">
<span class="service-num">02 / 06</span>
<span class="service-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M12 3 2 8l10 5 10-5z"/><path d="m2 13 10 5 10-5M2 18l10 5 10-5"/></svg>
</span>
<h3 class="service-title">Rendszeres takarítás</h3>
<p class="service-desc">Heti, havi vagy egyedi ütemezésű takarítást is vállalunk. Kényelmes megoldások az Ön számára.</p>
<a href="#contact" class="service-link">Részletek</a>
</article>

<article class="service-card">
<span class="service-num">03 / 06</span>
<span class="service-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><circle cx="12" cy="12" r="9"/><path d="m15 9-3 8-3-8 3 2z"/></svg>
</span>
<h3 class="service-title">Üzlethelyiségek takarítása</h3>
<p class="service-desc">Irodák és boltok szakszerű tisztítása. Kreatív környezetet teremtünk.</p>
<a href="#contact" class="service-link">Részletek</a>
</article>

<article class="service-card">
<span class="service-num">04 / 06</span>
<span class="service-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M13 2 4 14h7l-1 8 9-12h-7z"/></svg>
</span>
<h3 class="service-title">Raktárak tisztítása</h3>
<p class="service-desc">Raktárak és termelési területek csúcsformába hozása. Biztonságos munkakörnyezetért.</p>
<a href="#contact" class="service-link">Részletek</a>
</article>

<article class="service-card">
<span class="service-num">05 / 06</span>
<span class="service-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M12 2 4 5v7c0 5 3.5 8 8 10 4.5-2 8-5 8-10V5z"/></svg>
</span>
<h3 class="service-title">Külső területek tisztítása</h3>
<p class="service-desc">Parkok, udvarok, bejáratok gondozása. Esztétikus környezet az Ön üzletéhez.</p>
<a href="#contact" class="service-link">Részletek</a>
</article>

<article class="service-card">
<span class="service-num">06 / 06</span>
<span class="service-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M3 21h18M6 17V9m6 8V5m6 12v-7"/></svg>
</span>
<h3 class="service-title">Speciális feladatok</h3>
<p class="service-desc">Egyedi takarítási igények teljesítése. Rugalmas megoldásokat kínálunk.</p>
<a href="#contact" class="service-link">Részletek</a>
</article>

</div>
</div>
</section>

<!-- ============================================================
WHY US
============================================================ -->
<section class="why-us" id="why">
<div class="container why-grid">
<div class="reveal">
<span class="eyebrow">Miért minket</span>
<h2 class="section-title">Több mint egy <em>szolgáltató</em>.</h2>
<p class="section-lede">Ami megkülönbözteti a CLB Cleaning Korlátolt Felelősségű Társaság csapatát a piacon.</p>
</div>
<div class="reveal-stagger why-list">
<div class="why-item">
<div class="why-icon">01</div>
<div><h3>Megbízható szakemberek</h3><p>Tapasztalt csapatunk mindig kész segíteni.</p></div>
</div>
<div class="why-item">
<div class="why-icon">02</div>
<div><h3>Rugalmas ütemezés</h3><p>Ön dönti el, mikor legyen a takarítás.</p></div>
</div>
<div class="why-item">
<div class="why-icon">03</div>
<div><h3>Minőségi eszközök</h3><p>Korszerű berendezésekkel dolgozunk a hatékonyság érdekében.</p></div>
</div>
<div class="why-item">
<div class="why-icon">04</div>
<div><h3>Kedvező árak</h3><p>Szolgáltatásaink megfizethető áron érhetők el.</p></div>
</div>
</div>
</div>
</section>

<!-- ============================================================
PROCESS
============================================================ -->
<section id="process">
<div class="container">
<div class="reveal section-head">
<div>
<span class="eyebrow">Folyamat</span>
<h2 class="section-title">Hogyan <em>dolgozunk</em> együtt</h2>
</div>
<p class="section-lede">Áttekinthető folyamat — az első kapcsolatfelvételtől az eredményig.</p>
</div>
<div class="reveal-stagger process-track">
<div class="process-step">
<div class="process-num">01</div>
<h3>Kapcsolatfelvétel</h3>
<p>Lépjen velünk kapcsolatba telefonon vagy online.</p>
</div>
<div class="process-step">
<div class="process-num">02</div>
<h3>Igényfelmérés</h3>
<p>Megbeszéljük, mire van szüksége.</p>
</div>
<div class="process-step">
<div class="process-num">03</div>
<h3>Kivitelezés</h3>
<p>Szakembereink elvégzik a takarítást.</p>
</div>
<div class="process-step">
<div class="process-num">04</div>
<h3>Átadás</h3>
<p>Felhívjuk figyelmét a végső ellenőrzésre.</p>
</div>
</div>
</div>
</section>

<!-- ============================================================
TESTIMONIALS — hardkódolt, általános vélemények
============================================================ -->
<section class="testimonials" id="testimonials">
<div class="container">
<div class="reveal section-head">
<div>
<span class="eyebrow">Ügyfélvélemények</span>
<h2 class="section-title">Amit az ügyfelek <em>mondanak</em></h2>
</div>
<p class="section-lede">Valós visszajelzések a CLB Cleaning Korlátolt Felelősségű Társaság munkájáról.</p>
</div>
<div class="reveal-stagger testi-grid">

<article class="testi-card">
<span class="testi-mark">"</span>
<p class="testi-quote">Profi csapat, gyors átfutás. Az együttműködés elejétől a végéig gördülékeny volt, az eredménnyel teljes mértékben elégedett vagyok.</p>
<div class="testi-author">
<span class="testi-avatar">T</span>
<div>
<div class="testi-name">Thomas Bauer</div>
<div class="testi-role">Ügyvezető · Ausztria</div>
</div>
</div>
</article>

<article class="testi-card">
<span class="testi-mark">"</span>
<p class="testi-quote">Pontosan azt kaptuk, amit kértünk — sőt, egy kicsit többet. Ajánlom mindenkinek, aki minőségre törekszik.</p>
<div class="testi-author">
<span class="testi-avatar">M</span>
<div>
<div class="testi-name">Marta Kowalski</div>
<div class="testi-role">Marketing igazgató · Lengyelország</div>
</div>
</div>
</article>

<article class="testi-card">
<span class="testi-mark">"</span>
<p class="testi-quote">Korrekt árazás, határidők betartása, magas szintű szakmai tudás. A következő projekten is velük dolgozunk.</p>
<div class="testi-author">
<span class="testi-avatar">D</span>
<div>
<div class="testi-name">Daniel Müller</div>
<div class="testi-role">Projektmenedzser · Németország</div>
</div>
</div>
</article>

</div>
</div>
</section>

</main>

<!-- ============================================================
FOOTER
============================================================ -->
<footer class="footer">
<div class="container">
<div class="footer-grid">
<div class="footer-brand">
<a href="#" class="brand" aria-label="CLB Cleaning Korlátolt Felelősségű Társaság">
<span class="brand-mark"></span>
<span class="brand-name">CLB Cleaning Korlátolt Felelősségű Társaság</span>
</a>
<p class="footer-tag">CLB Cleaning Korlátolt Felelősségű Társaság — Tiszta környezet, biztos háttér.</p>
</div>
<div>
<h4>Cég</h4>
<ul>
<li><a href="#why">Rólunk</a></li>
<li><a href="#">Csapat</a></li>
<li><a href="#">Karrier</a></li>
<li><a href="#">Sajtó</a></li>
</ul>
</div>
<div>
<h4>Szolgáltatások</h4>
<ul>
<li><a href="#services">Ipari takarítás</a></li>
<li><a href="#services">Rendszeres takarítás</a></li>
<li><a href="#services">Üzlethelyiségek takarítása</a></li>
<li><a href="#services">Raktárak tisztítása</a></li>
</ul>
</div>
<div>
<h4>Kapcsolat</h4>
<ul>
<li><a href="mailto:clbcleaningkft@gmail.com">clbcleaningkft@gmail.com</a></li>
<li><a href="tel:E-mailben várjuk megkeresését">E-mailben várjuk megkeresését</a></li>
<li><a href="#">1084 Budapest, Víg utca 20. 2. em. 6.</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<span>© <span class="footer-year">{{ev}}</span> CLB Cleaning Korlátolt Felelősségű Társaság. Minden jog fenntartva.</span>
<span>Sablon · v2.0</span>
</div>
</div>
</footer>

<!-- ============================================================
SIDE TOGGLES
============================================================ -->
<button id="color-toggle" class="side-toggle right attention" aria-label="Színválasztás és személyreszabás">
<span class="side-toggle-inner">
<span class="swatch-cluster" aria-hidden>
<span style="background:#0a0a0b"></span>
<span style="background:#d4a574"></span>
<span style="background:#141416"></span>
<span style="background:#8a8680"></span>
</span>
<span class="side-toggle-text">Színválasztás</span>
</span>
</button>

<button id="info-toggle" class="side-toggle left attention" aria-label="Megrendelési információk megnyitása">
<span class="side-toggle-inner">
<span class="side-toggle-text">Megrendelés menete</span>
<span class="side-toggle-icon" aria-hidden>i</span>
</span>
</button>

<!-- ============================================================
BACKDROP
============================================================ -->
<div id="drawer-backdrop" class="drawer-backdrop"></div>

<!-- ============================================================
COLOR DRAWER (jobb)
============================================================ -->
<aside id="color-drawer" class="drawer right" aria-hidden="true" aria-label="Színpaletta választó">
<div class="drawer-header">
<h3>Színek</h3>
<button id="color-drawer-close" class="drawer-close" aria-label="Bezárás">×</button>
</div>
<div class="drawer-body">
<div class="drawer-section">
<h4>Tónus</h4>
<div class="tone-toggle" role="tablist">
<button id="tone-dark" class="active" role="tab" aria-selected="true">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
Sötét
</button>
<button id="tone-light" role="tab" aria-selected="false">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>
Világos
</button>
</div>
</div>
<div class="drawer-section">
<h4>Paletta</h4>
<div class="palette-list">
<button class="palette-option active" data-palette-id="obsidian">
<span class="palette-swatch" aria-hidden>
<span style="background:#0a0a0b"></span>
<span style="background:#141416"></span>
<span style="background:#d4a574"></span>
</span>
<span class="palette-info">
<span class="palette-name">Obszidián</span>
<span class="palette-desc">Sötét premium · arany</span>
</span>
<span class="palette-check">✓</span>
</button>
<button class="palette-option" data-palette-id="forest">
<span class="palette-swatch" aria-hidden>
<span style="background:#0c1210"></span>
<span style="background:#16201c"></span>
<span style="background:#8fbf9a"></span>
</span>
<span class="palette-info">
<span class="palette-name">Erdő</span>
<span class="palette-desc">Friss · természetes</span>
</span>
<span class="palette-check"></span>
</button>
<button class="palette-option" data-palette-id="marine">
<span class="palette-swatch" aria-hidden>
<span style="background:#0a0f1a"></span>
<span style="background:#131a28"></span>
<span style="background:#7da5d4"></span>
</span>
<span class="palette-info">
<span class="palette-name">Tinta</span>
<span class="palette-desc">Klasszikus · üzleti</span>
</span>
<span class="palette-check"></span>
</button>
<button class="palette-option" data-palette-id="bordeaux">
<span class="palette-swatch" aria-hidden>
<span style="background:#110a0c"></span>
<span style="background:#1c1517"></span>
<span style="background:#d48570"></span>
</span>
<span class="palette-info">
<span class="palette-name">Bordó</span>
<span class="palette-desc">Meleg · karakteres</span>
</span>
<span class="palette-check"></span>
</button>
</div>
</div>
</div>
<div class="drawer-footer">
A kiválasztott séma az egész oldalra érvényes.<br>
Beállítás megőrződik újratöltés után.
</div>
</aside>

<!-- ============================================================
INFO DRAWER (bal)
============================================================ -->
<aside id="info-drawer" class="drawer left" aria-hidden="true" aria-label="Megrendelési információk">
<div class="drawer-header">
<h3>Megrendelés</h3>
<button id="info-drawer-close" class="drawer-close" aria-label="Bezárás">×</button>
</div>
<div class="drawer-body">
<div class="drawer-section">
<h4>Hogyan indulunk?</h4>
<div class="info-steps">
<div class="info-step">
<strong>1. Kapcsolatfelvétel</strong>
<p>Írj üzenetet a kapcsolati űrlapon vagy e-mailben, és röviden írd le a célt.</p>
</div>
<div class="info-step">
<strong>2. Rövid egyeztetés</strong>
<p>15-20 perces hívásban átbeszéljük a funkciókat, stílust és határidőt.</p>
</div>
<div class="info-step">
<strong>3. Ajánlat és terv</strong>
<p>Kapsz egy átlátható ajánlatot, ütemezést és induló vázlatot jóváhagyásra.</p>
</div>
<div class="info-step">
<strong>4. Kivitelezés</strong>
<p>Fejlesztés közben folyamatos státuszt kapsz, majd átadás után finomhangolunk.</p>
</div>
</div>
</div>
</div>
<div class="drawer-footer">
Tetszik a struktúra? A részleteket személyre szabjuk a te szolgáltatásodhoz.
</div>
</aside>

<!-- ============================================================
JAVASCRIPT
============================================================ -->
<script>
// ============================================================
// PALETTES
// ============================================================
window.PALETTES = [
{
id: "obsidian", name: "Obszidián", desc: "Sötét premium · arany",
dark: {
bg: "#0a0a0b", surface: "#141416", "surface-2": "#1c1c1f",
border: "rgba(255,255,255,0.08)", "border-strong": "rgba(255,255,255,0.16)",
text: "#f5f1ea", "text-muted": "#8a8680", "text-dim": "#5a564f",
accent: "#d4a574", "accent-soft": "rgba(212,165,116,0.14)", "accent-ink": "#1a1814",
},
light: {
bg: "#f5f1ea", surface: "#ffffff", "surface-2": "#ebe6dc",
border: "rgba(0,0,0,0.08)", "border-strong": "rgba(0,0,0,0.18)",
text: "#1a1814", "text-muted": "#6e6a62", "text-dim": "#a39d92",
accent: "#8b6a3a", "accent-soft": "rgba(139,106,58,0.10)", "accent-ink": "#ffffff",
},
},
{
id: "forest", name: "Erdő", desc: "Friss · természetes",
dark: {
bg: "#0c1210", surface: "#16201c", "surface-2": "#1d2925",
border: "rgba(220,255,230,0.07)", "border-strong": "rgba(220,255,230,0.16)",
text: "#ecf0ea", "text-muted": "#8a948d", "text-dim": "#566058",
accent: "#8fbf9a", "accent-soft": "rgba(143,191,154,0.14)", "accent-ink": "#0f1813",
},
light: {
bg: "#f1ede3", surface: "#faf7ee", "surface-2": "#e8e3d4",
border: "rgba(40,60,45,0.08)", "border-strong": "rgba(40,60,45,0.18)",
text: "#1c241f", "text-muted": "#5a655d", "text-dim": "#9aa49c",
accent: "#3a6e4d", "accent-soft": "rgba(58,110,77,0.10)", "accent-ink": "#ffffff",
},
},
{
id: "marine", name: "Tinta", desc: "Klasszikus · üzleti",
dark: {
bg: "#0a0f1a", surface: "#131a28", "surface-2": "#1a2336",
border: "rgba(180,200,240,0.08)", "border-strong": "rgba(180,200,240,0.18)",
text: "#eef2f8", "text-muted": "#8593a8", "text-dim": "#535f72",
accent: "#7da5d4", "accent-soft": "rgba(125,165,212,0.14)", "accent-ink": "#0a0f1a",
},
light: {
bg: "#eef2f7", surface: "#ffffff", "surface-2": "#dfe6ee",
border: "rgba(20,40,80,0.08)", "border-strong": "rgba(20,40,80,0.18)",
text: "#0f1a2b", "text-muted": "#4f5d72", "text-dim": "#94a0b3",
accent: "#2e5a8c", "accent-soft": "rgba(46,90,140,0.10)", "accent-ink": "#ffffff",
},
},
{
id: "bordeaux", name: "Bordó", desc: "Meleg · karakteres",
dark: {
bg: "#110a0c", surface: "#1c1517", "surface-2": "#251c1e",
border: "rgba(255,220,220,0.07)", "border-strong": "rgba(255,220,220,0.16)",
text: "#f5ece9", "text-muted": "#9a847f", "text-dim": "#5e4f4b",
accent: "#d48570", "accent-soft": "rgba(212,133,112,0.14)", "accent-ink": "#1a0e0b",
},
light: {
bg: "#f5ece8", surface: "#fdf5f2", "surface-2": "#ebdcd6",
border: "rgba(70,30,25,0.08)", "border-strong": "rgba(70,30,25,0.18)",
text: "#2a1a17", "text-muted": "#6e5650", "text-dim": "#a8918a",
accent: "#9c4a35", "accent-soft": "rgba(156,74,53,0.10)", "accent-ink": "#ffffff",
},
},
];
</script>

<script>
(function () {
'use strict';

var PALETTES = window.PALETTES;
var STORAGE_KEY = 'demo_site_theme';
var currentPaletteId = 'obsidian';
var currentTone = 'dark';

// ============================================================
// TÉMA
// ============================================================
function applyTheme(paletteId, tone) {
var palette = PALETTES.find(function(p) { return p.id === paletteId; }) || PALETTES[0];
var vars = palette[tone];
var root = document.documentElement;
Object.entries(vars).forEach(function(entry) {
root.style.setProperty('--' + entry[0], entry[1]);
});
root.dataset.tone = tone;
root.dataset.palette = paletteId;
currentPaletteId = paletteId;
currentTone = tone;
try { localStorage.setItem(STORAGE_KEY, JSON.stringify({ paletteId: paletteId, tone: tone })); } catch(e) {}

// Swatch frissítése a toggle gombon
var sw = document.querySelectorAll('#color-toggle .swatch-cluster span');
if (sw.length === 4) {
sw[0].style.background = vars.bg;
sw[1].style.background = vars.accent;
sw[2].style.background = vars.surface;
sw[3].style.background = vars['text-muted'];
}

// Paletta lista UI frissítése
document.querySelectorAll('.palette-option').forEach(function(btn) {
var isActive = btn.dataset.paletteId === currentPaletteId;
btn.classList.toggle('active', isActive);
var check = btn.querySelector('.palette-check');
if (check) check.textContent = isActive ? '✓' : '';
// Swatch színek a jelenlegi tone szerint
var p = PALETTES.find(function(x) { return x.id === btn.dataset.paletteId; });
if (p) {
var v = p[tone];
var spans = btn.querySelectorAll('.palette-swatch span');
if (spans[0]) spans[0].style.background = v.bg;
if (spans[1]) spans[1].style.background = v.surface;
if (spans[2]) spans[2].style.background = v.accent;
}
});

// Tone gombok
var tdark = document.getElementById('tone-dark');
var tlight = document.getElementById('tone-light');
if (tdark) { tdark.classList.toggle('active', tone === 'dark'); tdark.setAttribute('aria-selected', String(tone === 'dark')); }
if (tlight) { tlight.classList.toggle('active', tone === 'light'); tlight.setAttribute('aria-selected', String(tone === 'light')); }
}

// localStorage-ból indítás
(function() {
try {
var saved = JSON.parse(localStorage.getItem(STORAGE_KEY) || 'null');
if (saved && saved.paletteId) currentPaletteId = saved.paletteId;
if (saved && saved.tone) currentTone = saved.tone;
} catch(e) {}
applyTheme(currentPaletteId, currentTone);
})();

// ============================================================
// DRAWERS
// ============================================================
var backdrop = document.getElementById('drawer-backdrop');
var colorDrawer = document.getElementById('color-drawer');
var infoDrawer = document.getElementById('info-drawer');
var colorToggle = document.getElementById('color-toggle');
var infoToggle = document.getElementById('info-toggle');

function openDrawer(drawer) {
[colorDrawer, infoDrawer].forEach(function(d) {
d.classList.remove('open');
d.setAttribute('aria-hidden', 'true');
});
drawer.classList.add('open');
drawer.setAttribute('aria-hidden', 'false');
backdrop.classList.add('open');
}

function closeDrawers() {
[colorDrawer, infoDrawer].forEach(function(d) {
d.classList.remove('open');
d.setAttribute('aria-hidden', 'true');
});
backdrop.classList.remove('open');
}

colorToggle.addEventListener('click', function() {
colorToggle.classList.remove('attention');
openDrawer(colorDrawer);
});
infoToggle.addEventListener('click', function() {
infoToggle.classList.remove('attention');
openDrawer(infoDrawer);
});
document.getElementById('color-drawer-close').addEventListener('click', closeDrawers);
document.getElementById('info-drawer-close').addEventListener('click', closeDrawers);
backdrop.addEventListener('click', closeDrawers);
document.addEventListener('keydown', function(e) { if (e.key === 'Escape') closeDrawers(); });

// Paletta gombok
document.querySelectorAll('.palette-option').forEach(function(btn) {
btn.addEventListener('click', function() { applyTheme(btn.dataset.paletteId, currentTone); });
});
document.getElementById('tone-dark').addEventListener('click', function() { applyTheme(currentPaletteId, 'dark'); });
document.getElementById('tone-light').addEventListener('click', function() { applyTheme(currentPaletteId, 'light'); });

// ============================================================
// HAMBURGER MENÜ
// ============================================================
var hamburger = document.getElementById('hamburger');
var mobileMenu = document.getElementById('mobile-menu');

hamburger.addEventListener('click', function() {
var isOpen = hamburger.classList.toggle('open');
mobileMenu.classList.toggle('open', isOpen);
hamburger.setAttribute('aria-expanded', String(isOpen));
hamburger.setAttribute('aria-label', isOpen ? 'Menü bezárása' : 'Menü megnyitása');
document.body.style.overflow = isOpen ? 'hidden' : '';
});

// ============================================================
// SMOOTH SCROLL
// ============================================================
document.querySelectorAll('a[href^="#"]').forEach(function(link) {
link.addEventListener('click', function(e) {
var href = link.getAttribute('href');
if (!href || href === '#') return;
e.preventDefault();
hamburger.classList.remove('open');
mobileMenu.classList.remove('open');
hamburger.setAttribute('aria-expanded', 'false');
hamburger.setAttribute('aria-label', 'Menü megnyitása');
document.body.style.overflow = '';
var target = document.querySelector(href);
if (target) target.scrollIntoView({ behavior: 'smooth', block: 'start' });
});
});

// ============================================================
// SCROLL REVEAL
// ============================================================
(function() {
var els = document.querySelectorAll('.reveal, .reveal-stagger');
if (!els.length) return;
// Fallback: ha 1mp után sem triggerel az observer
var fallback = setTimeout(function() {
els.forEach(function(el) { el.classList.add('in'); });
}, 1000);
if (!('IntersectionObserver' in window)) {
clearTimeout(fallback);
els.forEach(function(el) { el.classList.add('in'); });
return;
}
var io = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
entry.target.classList.add('in');
io.unobserve(entry.target);
}
});
}, { threshold: 0.12, rootMargin: '0px 0px -80px 0px' });
els.forEach(function(el) { io.observe(el); });
})();

// ============================================================
// BRAND MONOGRAM — betűszó generálás a cég nevéből
// ============================================================
(function() {
document.querySelectorAll('.brand').forEach(function(brand) {
var nameEl = brand.querySelector('.brand-name');
var markEl = brand.querySelector('.brand-mark');
if (!nameEl || !markEl || markEl.querySelector('img')) return;
var name = nameEl.textContent.replace(/\{\{[^}]+\}\}/g, '').trim();
var words = name.split(/\s+/).filter(Boolean);
var mono = words.length === 0 ? '·'
: words.length === 1 ? words[0].slice(0, 2).toUpperCase()
: (words[0][0] + words[1][0]).toUpperCase();
markEl.textContent = mono;
});
})();

// ============================================================
// LÁBLÉC ÉVSZÁM
// ============================================================
document.querySelectorAll('.footer-year').forEach(function(el) {
el.textContent = new Date().getFullYear();
});

})();
</script>
</body>
</html>
clbcleaningkorlatoltfelelosseg.htmlclbcleaningkorlatoltfelelossegCLB Cleaning Korlátolt Felelősségű Társaság{{ev}}{{ev}}45