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):
Buildron Pro Korlátolt Felelősségű Társaság Építkezés, pontosan ahogy szeretné
Építőipar Ahol a tervek életre kelnek mi segítünk benne.
Minden építkezés egyedi, mi személyre szabott megoldásokat kínálunk vállalkozások és magánszemélyek számára. Kérjen árajánlatot Szolgáltatásaink
2023 indulás éve
5+ befejezett projekt
24h válaszidő
Kép hamarosan 2023 — Új ügyfeleket fogadunk
Fedezze fel szolgáltatásainkat:
Új épületek építése Teljes körű szolgáltatást nyújtunk az új épületek kivitelezésében. Megvalósítjuk elképzeléseit a gyakorlatban.
Felújítási munkák Régi épületek felújítását is vállaljuk. Frissítjük a tereket és növeljük az értéket.
Belsőépítészeti tervezés Szakértőink segítenek az optimális belső terek kialakításában. Figyelünk a részletekre.
Kisebb javítások Pici, de fontos munkákban is számíthat ránk. Gyors és precíz megoldásokat kínálunk.
Berendezés beszerzése Segítünk az építési projekthez szükséges anyagok beszerzésében. Költséghatékony megoldásokat kínálunk.
Tanácsadás Képzett szakemberek segítenek az építkezéssel kapcsolatos kérdésekben. Hasznos tanácsokat adunk.
Személyre szabott megoldások Minden projekt egyedi, így a megoldásaink is azok. Az ügyfeleink igényei szerint alakítunk.
Megbízható határidők A munkát pontos határidőkkel vállaljuk. A csúszásoktól mentes munkafolyamatért dolgozunk.
Hozzáértő csapat Képzett szakemberek dolgoznak a projekten. Szakértelmünk biztosítja az eredményeket.
Versenyképes árak Transzparens árakat kínálunk, rejtett költségek nélkül. Költséghatékony megoldások.
Kapcsolatfelvétel Egyeztessünk a részletekről.
Tervezés Megalkotjuk az építési tervet.
Kivitelezés Megkezdjük a munkálatokat.
Átadás Itt a kész, új otthon.
tibormiski12@gmail.com E-mailben várjuk megkeresését 1239 Budapest, Lórév utca 12.
{{ev}} — auto: JS tölti ki (.footer-year)
-->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Buildron Pro Korlátolt Felelősségű Társaság — Építkezés, pontosan ahogy szeretné</title>
<meta name="description" content="Minden építkezés egyedi, mi személyre szabott megoldásokat kínálunk vállalkozások és magánszemélyek számára." />

<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="Buildron Pro Korlátolt Felelősségű Társaság">
<span class="brand-mark"></span>
<span class="brand-name">Buildron Pro 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">Építőipar</span>
<h1>Ahol a tervek <em>életre kelnek</em> mi segítünk benne.</h1>
<p class="hero-sub">Minden építkezés egyedi, mi személyre szabott megoldásokat kínálunk vállalkozások és magánszemélyek számára.</p>
<div class="hero-ctas">
<a href="#contact" class="btn btn-primary">Kérjen árajánlatot</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">5+</div>
<div class="lbl">befejezett projekt</div>
</div>
<div class="hero-meta-item">
<div class="num">24h</div>
<div class="lbl">válaszidő</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 Buildron Pro Korlátolt Felelősségű Társaság <em>kiemelkedik</em></h2>
</div>
<p class="section-lede">Fedezze fel szolgáltatásainkat:</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">Új épületek építése</h3>
<p class="service-desc">Teljes körű szolgáltatást nyújtunk az új épületek kivitelezésében. Megvalósítjuk elképzeléseit a gyakorlatban.</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">Felújítási munkák</h3>
<p class="service-desc">Régi épületek felújítását is vállaljuk. Frissítjük a tereket és növeljük az értéket.</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">Belsőépítészeti tervezés</h3>
<p class="service-desc">Szakértőink segítenek az optimális belső terek kialakításában. Figyelünk a részletekre.</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">Kisebb javítások</h3>
<p class="service-desc">Pici, de fontos munkákban is számíthat ránk. Gyors és precíz megoldásokat kínálunk.</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">Berendezés beszerzése</h3>
<p class="service-desc">Segítünk az építési projekthez szükséges anyagok beszerzésében. Költséghatékony megoldásokat kínálunk.</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">Tanácsadás</h3>
<p class="service-desc">Képzett szakemberek segítenek az építkezéssel kapcsolatos kérdésekben. Hasznos tanácsokat adunk.</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 Buildron Pro 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>Személyre szabott megoldások</h3><p>Minden projekt egyedi, így a megoldásaink is azok. Az ügyfeleink igényei szerint alakítunk.</p></div>
</div>
<div class="why-item">
<div class="why-icon">02</div>
<div><h3>Megbízható határidők</h3><p>A munkát pontos határidőkkel vállaljuk. A csúszásoktól mentes munkafolyamatért dolgozunk.</p></div>
</div>
<div class="why-item">
<div class="why-icon">03</div>
<div><h3>Hozzáértő csapat</h3><p>Képzett szakemberek dolgoznak a projekten. Szakértelmünk biztosítja az eredményeket.</p></div>
</div>
<div class="why-item">
<div class="why-icon">04</div>
<div><h3>Versenyképes árak</h3><p>Transzparens árakat kínálunk, rejtett költségek nélkül. Költséghatékony megoldások.</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>Egyeztessünk a részletekről.</p>
</div>
<div class="process-step">
<div class="process-num">02</div>
<h3>Tervezés</h3>
<p>Megalkotjuk az építési tervet.</p>
</div>
<div class="process-step">
<div class="process-num">03</div>
<h3>Kivitelezés</h3>
<p>Megkezdjük a munkálatokat.</p>
</div>
<div class="process-step">
<div class="process-num">04</div>
<h3>Átadás</h3>
<p>Itt a kész, új otthon.</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 Buildron Pro 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="Buildron Pro Korlátolt Felelősségű Társaság">
<span class="brand-mark"></span>
<span class="brand-name">Buildron Pro Korlátolt Felelősségű Társaság</span>
</a>
<p class="footer-tag">Buildron Pro Korlátolt Felelősségű Társaság — Építkezés, pontosan ahogy szeretné</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">Új épületek építése</a></li>
<li><a href="#services">Felújítási munkák</a></li>
<li><a href="#services">Belsőépítészeti tervezés</a></li>
<li><a href="#services">Kisebb javítások</a></li>
</ul>
</div>
<div>
<h4>Kapcsolat</h4>
<ul>
<li><a href="mailto:tibormiski12@gmail.com">tibormiski12@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="#">1239 Budapest, Lórév utca 12.</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<span>© <span class="footer-year">{{ev}}</span> Buildron Pro 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>
buildronprokorlatoltfelelosseg.htmlbuildronprokorlatoltfelelossegBuildron Pro Korlátolt Felelősségű Társaság{{ev}}{{ev}}45