<html lang="lt" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Salonai ir kontaktai — Vilnius ir Kaunas</title>
<meta name="description" content="Salonų adresai, telefonai ir darbo laikas Vilniuje bei Kaune. Užklausos forma nemokamam matavimui užsakyti.">
<meta name="theme-color" content="#23262B">
<link rel="canonical" href="/baldai-salonai">
<meta property="og:title" content="Salonai ir kontaktai">
<meta property="og:description" content="Salonų adresai, telefonai ir darbo laikas Vilniuje bei Kaune. Užklausos forma nemokamam matavimui užsakyti.">
<meta property="og:type" content="website">
<link rel="preconnect" href="https://test.petpet.lt">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://test.petpet.lt">
<link rel="preload" as="image" fetchpriority="high" href="https://test.petpet.lt/wp-content/uploads/2026/08/01_PH-01_GAMINIAI_Virtuves-baldai.jpg">
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500;12..96,700;12..96,800&family=Schibsted+Grotesk:wght@400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
<script>document.documentElement.classList.remove('no-js');document.documentElement.classList.add('js');</script>
<style>
/* ============ TOKENS ============ */
:root{
--graphite:#23262B; /* staklių stalas */
--panel:#E6E2D8; /* melamino plokštės paviršius */
--teal:#0F6B66; /* matmenų linijos rašalas */
--core:#C88B34; /* žalia LDSP pjūvio šerdis — akcentas */
--band:#CFC5B0; /* šviesios medienos briauna — plaukelinės linijos */
--muted:#5A5E58; /* pieštuko pilka */
--core-lt:#E0A855; /* akcentas ant tamsaus fono (kontrastui) */
--muted-d:#9CA2A1; /* pilka ant tamsaus fono */
--panel-2:#DCD7C9;
--graphite-2:#2C3037;
--e-out:cubic-bezier(.25,.46,.45,.94);
--e-expo:cubic-bezier(.16,1,.3,1);
--e-quart:cubic-bezier(.76,0,.24,1);
--ff-display:"Bricolage Grotesque",system-ui,sans-serif;
--ff-body:"Schibsted Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
--ff-mono:"JetBrains Mono",ui-monospace,monospace;
--pad:clamp(20px,5vw,64px);
--maxw:1280px;
--r:34px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
margin:0;background:var(--graphite);color:var(--panel);
font-family:var(--ff-body);font-size:clamp(15.5px,.85vw + 12px,17.5px);line-height:1.6;
letter-spacing:-.004em;-webkit-font-smoothing:antialiased;
overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit}
h1,h2,h3{font-family:var(--ff-display);font-weight:700;line-height:1.02;letter-spacing:-.025em;margin:0}
h1{font-size:clamp(34px,5.1vw,62px);font-weight:800}
h2{font-size:clamp(30px,4.6vw,58px)}
h3{font-size:clamp(20px,2vw,26px);letter-spacing:-.015em}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
/* ============ MONO / SPEC ============ */
.mono{font-family:var(--ff-mono);font-variant-numeric:tabular-nums lining-nums;letter-spacing:.06em;text-transform:uppercase;font-size:12px}
.spec{
font-family:var(--ff-mono);font-variant-numeric:tabular-nums lining-nums;
font-size:12px;letter-spacing:.04em;color:var(--teal);
border:1px solid currentColor;border-radius:4px;padding:3px 8px 2px;display:inline-block;
white-space:nowrap;text-transform:none;
}
.on-dark .spec,.sec--dark .spec{color:var(--core-lt)}
.eyebrow{font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted-d);margin:0 0 18px;display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--core);flex:none}
.sec--light .eyebrow{color:var(--muted)}
/* ============ LAYOUT ============ */
.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.sec{position:relative;padding-block:clamp(72px,10vw,148px)}
.sec--light{background:var(--panel);color:var(--graphite)}
.sec--light2{background:var(--panel-2);color:var(--graphite)}
.sec--dark{background:var(--graphite);color:var(--panel)}
.sec--overlap{margin-top:calc(var(--r) * -1);border-radius:var(--r) var(--r) 0 0}
.sec--light a{color:var(--teal)}
.lede{font-size:clamp(17px,1.2vw + 12px,21px);max-width:34ch;color:var(--muted-d)}
.sec--light .lede{color:var(--muted)}
.txt{max-width:62ch}
/* ============ HEADER ============ */
.hdr{position:fixed;top:0;left:0;right:0;z-index:70}
.hdr__bg{position:absolute;inset:0;background:rgba(35,38,43,.9);backdrop-filter:blur(14px);
border-bottom:1px solid rgba(207,197,176,.14);opacity:0;will-change:opacity}
.hdr__in{position:relative;display:flex;align-items:center;gap:18px;
max-width:var(--maxw);margin:0 auto;padding:22px var(--pad);}
.brand{font-family:var(--ff-display);font-weight:800;letter-spacing:-.045em;font-size:21px;line-height:1;
text-decoration:none;display:inline-flex;align-items:baseline;color:var(--panel);
transition:opacity 140ms var(--e-out)}
.brand:hover{opacity:.72}
.brand i{font-style:normal;font-weight:500;letter-spacing:-.02em;color:var(--muted-d)}
.nav{display:none;gap:26px;margin-left:auto;font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase}
.nav a{text-decoration:none;color:var(--muted-d);padding:6px 0;border-bottom:1px solid transparent;transition:color 140ms var(--e-out),border-color 140ms var(--e-out)}
.nav a:hover,.nav a:focus-visible{color:var(--panel);border-color:var(--core)}
.hdr .hdr__tel{display:none;margin-left:auto;font-family:var(--ff-mono);font-size:13px;letter-spacing:.04em;
text-decoration:none;color:var(--core-lt);white-space:nowrap;opacity:0}
.hdr .hdr__cta{display:none}
@media (min-width:900px){
.nav{display:flex}
.hdr .hdr__tel{display:inline-block;margin-left:26px}
.hdr .hdr__cta{display:inline-flex}
}
/* --- mobilus meniu --- */
.burger{display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:5px;
margin-left:auto;width:44px;height:44px;padding:0 9px;background:none;border:0;cursor:pointer;flex:none}
.burger span{display:block;height:1.5px;background:var(--panel);border-radius:2px;
transition:transform 240ms var(--e-out),opacity 160ms var(--e-out)}
.is-menu .burger span:first-child{transform:translateY(3.25px) rotate(45deg)}
.is-menu .burger span:last-child{transform:translateY(-3.25px) rotate(-45deg)}
.is-menu .hdr__bg{opacity:1 !important}
@media (min-width:900px){.burger{display:none}}
.mnav{position:fixed;inset:0;z-index:65;background:var(--graphite);
display:flex;flex-direction:column;justify-content:space-between;gap:32px;overflow-y:auto;
padding:calc(84px + env(safe-area-inset-top)) var(--pad) calc(28px + env(safe-area-inset-bottom));
opacity:0;visibility:hidden;transform:translateY(-10px);
transition:opacity 200ms var(--e-out),transform 260ms var(--e-out),visibility 0s linear 260ms}
.is-menu .mnav{opacity:1;visibility:visible;transform:none;
transition:opacity 220ms var(--e-out),transform 300ms var(--e-out),visibility 0s}
@media (min-width:900px){.mnav{display:none}}
html.is-menu{overflow:hidden}
.mnav__links{display:flex;flex-direction:column}
.mnav__links a{font-family:var(--ff-display);font-weight:700;letter-spacing:-.03em;line-height:1.1;
font-size:clamp(27px,8.5vw,38px);text-decoration:none;color:var(--panel);
padding:14px 0;border-bottom:1px solid rgba(207,197,176,.13);
opacity:0;transform:translateY(14px);
transition:opacity 260ms var(--e-out),transform 260ms var(--e-out),color 140ms var(--e-out)}
.mnav__links a:active{color:var(--core-lt)}
.is-menu .mnav__links a{opacity:1;transform:none}
.is-menu .mnav__links a:nth-child(1){transition-delay:70ms}
.is-menu .mnav__links a:nth-child(2){transition-delay:110ms}
.is-menu .mnav__links a:nth-child(3){transition-delay:150ms}
.is-menu .mnav__links a:nth-child(4){transition-delay:190ms}
.is-menu .mnav__links a:nth-child(5){transition-delay:230ms}
.mnav__foot{display:grid;gap:16px;opacity:0;transform:translateY(14px);
transition:opacity 260ms var(--e-out),transform 260ms var(--e-out)}
.is-menu .mnav__foot{opacity:1;transform:none;transition-delay:270ms}
.mnav__tel{font-family:var(--ff-mono);font-weight:700;font-size:clamp(21px,6.5vw,27px);letter-spacing:.01em;
color:var(--core-lt);text-decoration:none;display:inline-block}
.mnav__hours{margin:0;font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.13em;
text-transform:uppercase;color:var(--muted-d);line-height:1.8}
.mnav .btn{justify-content:center}
@media (prefers-reduced-motion:reduce){
.mnav,.mnav__links a,.mnav__foot,.burger span{transition-duration:1ms !important;transition-delay:0s !important}
}
/* ============ BUTTONS ============ */
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--ff-mono);font-size:12.5px;letter-spacing:.1em;
text-transform:uppercase;text-decoration:none;border:0;cursor:pointer;border-radius:999px;padding:17px 26px;
background:var(--core);color:#1B1A16;font-weight:700;position:relative;
transition:transform 140ms var(--e-out),background-color 140ms var(--e-out),box-shadow 140ms var(--e-out)}
.btn:hover{background:var(--core-lt);transform:translateY(-2px);box-shadow:0 10px 22px -14px rgba(0,0,0,.85)}
.btn:active{transform:translateY(0) scale(.985);transition-duration:80ms}
.btn__arw{display:inline-block;transition:transform 140ms var(--e-out)}
.btn:hover .btn__arw{transform:translateX(4px)}
.btn--ghost{background:transparent;color:var(--panel);box-shadow:inset 0 0 0 1px rgba(207,197,176,.4);font-weight:500}
.btn--ghost:hover{background:rgba(207,197,176,.09)}
.sec--light .btn--ghost{color:var(--graphite);box-shadow:inset 0 0 0 1px rgba(35,38,43,.25)}
.btn--sm{padding:14px 20px;font-size:11.5px}
:focus-visible{outline:2px solid var(--core-lt);outline-offset:3px;border-radius:4px}
.sec--light :focus-visible{outline-color:var(--teal)}
.skip{position:absolute;left:-9999px;top:0;background:var(--core);color:#1B1A16;padding:12px 18px;z-index:200;font-family:var(--ff-mono);font-size:12px}
.skip:focus{left:8px;top:8px}
/* ============ HERO ============ */
.hero{position:relative;padding-top:clamp(104px,12vh,136px);padding-bottom:clamp(56px,8vw,96px);overflow:hidden}
.hero__grid-bg{position:absolute;inset:-14% -10% -10%;pointer-events:none;opacity:.5;will-change:transform;
background-image:linear-gradient(rgba(207,197,176,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(207,197,176,.055) 1px,transparent 1px);
background-size:34px 34px;
-webkit-mask-image:radial-gradient(120% 80% at 60% 30%,#000 35%,transparent 78%);
mask-image:radial-gradient(120% 80% at 60% 30%,#000 35%,transparent 78%)}
.hero__in{position:relative;display:grid;gap:clamp(30px,4vw,54px)}
@media (min-width:1000px){.hero__in{grid-template-columns:minmax(0,.92fr) minmax(0,1.18fr);align-items:center;gap:clamp(34px,4.4vw,62px)}}
.hero__fig{margin:0}
.hero h1{margin:0 0 20px;max-width:12ch}
.h-line{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.h-line > span{display:block;will-change:transform}
.hero__lede{max-width:42ch;color:var(--muted-d);font-size:clamp(16px,.45vw + 13.5px,18.5px)}
.hero__acts{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px;align-items:center}
/* hero media: drawing -> photograph */
.stage{position:relative;border-radius:20px;overflow:hidden;background:var(--graphite-2);
box-shadow:0 30px 70px -40px rgba(0,0,0,.9);aspect-ratio:4/3.05}
@media (min-width:1000px){.stage{aspect-ratio:4/3.18}}
.stage__ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
clip-path:inset(0 0 100% 0);will-change:transform,clip-path;transform:scale(1.06)}
.stage-cap{margin:16px 0 0;width:100%;font-family:var(--ff-mono);font-size:11.5px;line-height:1.7;letter-spacing:.01em;
color:var(--muted-d)}
/* ============ MARQUEE ============ */
.marq{background:#3A3B36;color:var(--panel);overflow:hidden;padding:15px 0;position:relative;z-index:3;
border-top:1px solid rgba(207,197,176,.14);border-bottom:1px solid rgba(207,197,176,.14)}
.marq__t{display:flex;width:max-content;will-change:transform}
.marq__t span{font-family:var(--ff-mono);font-size:12.5px;letter-spacing:.13em;text-transform:uppercase;font-weight:500;
padding:0 22px;display:flex;align-items:center;gap:22px;white-space:nowrap}
.marq__t span::after{content:"";width:5px;height:5px;background:var(--core);border-radius:1px;display:block}
/* ============ COUNTERS ============ */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:rgba(207,197,176,.16);border:1px solid rgba(207,197,176,.16);border-radius:16px;overflow:hidden}
@media (min-width:820px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--graphite);padding:26px 22px}
.stat__n{font-family:var(--ff-mono);font-weight:700;font-variant-numeric:tabular-nums;
font-size:clamp(30px,3.6vw,44px);letter-spacing:-.02em;color:var(--core-lt);line-height:1;display:block}
.stat__l{font-family:var(--ff-mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted-d);margin-top:12px;display:block;line-height:1.6}
/* ============ CATEGORIES (pinned horizontal) ============ */
.cats__head{display:grid;gap:20px;margin-bottom:38px}
@media (min-width:900px){.cats__head{grid-template-columns:1fr auto;align-items:end}}
.cats__stage{position:relative;overflow:hidden}
.cats__track{display:flex;gap:20px;padding-inline:var(--pad);width:max-content;will-change:transform}
.card{position:relative;width:min(78vw,420px);flex:none;border-radius:18px;overflow:hidden;background:var(--panel-2);
aspect-ratio:3/3.9;will-change:transform}
.card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 220ms var(--e-out)}
.card:hover img,.card:focus-within img{transform:scale(1.045)}
.card__grad{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,22,25,0) 38%,rgba(20,22,25,.86) 100%)}
.card__body{position:absolute;left:18px;right:18px;bottom:18px;color:var(--panel)}
.card__ttl{font-family:var(--ff-display);font-weight:700;font-size:clamp(20px,2.2vw,27px);letter-spacing:-.02em}
.card__cap{font-family:var(--ff-mono);font-size:11.5px;line-height:1.65;color:var(--panel);letter-spacing:.02em;
margin-top:10px;max-width:30ch;
opacity:0;transform:translateY(6px);transition:opacity 180ms var(--e-out),transform 180ms var(--e-out)}
.card:hover .card__cap,.card:focus-within .card__cap{opacity:1;transform:none}
@media (hover:none){.card__cap{opacity:1;transform:none}}
.rail-hint{font-family:var(--ff-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:10px}
.rail-hint::after{content:"";width:44px;height:1px;background:var(--teal)}
@media (min-width:900px){
#paslaugos{padding-block:clamp(64px,6.5vw,104px)}
.card{aspect-ratio:auto;height:clamp(330px,48vh,500px);width:clamp(280px,27vw,390px)}
}
@media (max-width:899px){
.cats__track{overflow-x:auto;width:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;
padding-bottom:14px;scrollbar-width:none;transform:none!important}
.cats__track::-webkit-scrollbar{display:none}
.card{scroll-snap-align:center;width:min(80vw,340px)}
}
/* --- šviesios zonos variantai --- */
.sec--light .facts,.sec--light2 .facts{border-top-color:rgba(35,38,43,.16)}
.sec--light .facts li,.sec--light2 .facts li{border-bottom-color:rgba(35,38,43,.16)}
.sec--light .facts b,.sec--light2 .facts b{color:var(--teal)}
.sec--light .facts span,.sec--light2 .facts span{color:var(--graphite)}
.sec--light2 .lede,.sec--light2 .txt{color:var(--muted)}
.sec--light2 .rail-hint{color:var(--muted)}
.sec--light2 .dec__rail::before{background:linear-gradient(90deg,var(--panel-2),rgba(220,215,201,0))}
.sec--light2 .dec__rail::after{background:linear-gradient(270deg,var(--panel-2),rgba(220,215,201,0))}
.sec--light2 .sw__c{border-color:rgba(35,38,43,.2)}
.sec--light2 .sw__n{color:var(--graphite)}
.sec--light2 .sw__s{color:var(--muted)}
.sec--light2 :focus-visible{outline-color:var(--teal)}
.sec--light2 .btn--ghost{color:var(--graphite);box-shadow:inset 0 0 0 1px rgba(35,38,43,.25)}
.sec--light2 .btn--ghost:hover{background:rgba(35,38,43,.06)}
/* ============ CRAFT ============ */
.craft{display:grid;gap:clamp(28px,4vw,60px)}
.reveal-img{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:4/3.2;background:var(--graphite-2)}
.reveal-img img{width:100%;height:100%;object-fit:cover;clip-path:inset(0 0 0 0);will-change:clip-path,transform}
@media (min-width:960px){
.craft{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}
.craft > div{min-width:0}
.craft > div:last-child{display:flex;flex-direction:column;justify-content:center}
.reveal-img{aspect-ratio:auto;height:100%;min-height:560px;align-self:stretch}
}
.facts{list-style:none;margin:30px 0 0;padding:0;border-top:1px solid rgba(207,197,176,.18)}
.facts li{display:grid;grid-template-columns:104px 1fr;gap:16px;padding:15px 0;border-bottom:1px solid rgba(207,197,176,.18);align-items:baseline}
.facts b{font-family:var(--ff-mono);font-weight:500;font-size:12px;letter-spacing:.04em;color:var(--core-lt);font-variant-numeric:tabular-nums}
.facts span{font-size:16px;line-height:1.55;color:var(--panel)}
/* ============ PROCESS (pinned) ============ */
.proc{display:grid;gap:36px}
@media (min-width:1000px){.proc{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(40px,5vw,80px);align-items:start}}
.proc__visual{position:relative;border-radius:20px;overflow:hidden;background:#F1EEE6;aspect-ratio:1/.78;
border:1px solid rgba(35,38,43,.14)}
.proc__layer{position:absolute;inset:0;opacity:0;transition:opacity .55s ease}
.proc__layer.is-on{opacity:1}
.proc__layer img{width:100%;height:100%;object-fit:cover}
.pdwg{width:100%;height:100%;display:block}
.pdwg .paper{fill:#F1EEE6}
.pdwg .grid{stroke:rgba(15,107,102,.14);stroke-width:1}
.pdwg .ln{fill:none;stroke:var(--graphite);stroke-width:1.7;vector-effect:non-scaling-stroke}
.pdwg .fillp{fill:rgba(15,107,102,.07);stroke:var(--teal);stroke-width:1.4}
.pdwg .dim{fill:none;stroke:var(--teal);stroke-width:1;vector-effect:non-scaling-stroke}
.pdwg text{font-family:"JetBrains Mono",monospace;font-size:13px;fill:var(--teal);letter-spacing:.03em}
.pdwg .hw{fill:none;stroke:var(--core);stroke-width:1.9}
.pdwg .hwt{fill:var(--core)}
.steps{display:grid;gap:0}
.step{padding:26px 0;border-top:1px solid rgba(35,38,43,.16);position:relative;opacity:.42;transition:opacity .45s ease}
.step.is-on{opacity:1}
.step:last-child{border-bottom:1px solid rgba(35,38,43,.16)}
.step__n{font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.16em;color:var(--teal);display:block;margin-bottom:10px;font-weight:700}
.step h3{margin-bottom:10px}
.step p{color:var(--muted);font-size:16.5px}
.proc__bar{position:absolute;left:0;top:0;bottom:0;width:2px;background:rgba(35,38,43,.14);display:none}
.proc__bar i{position:absolute;left:0;top:0;width:2px;height:0;background:var(--teal);display:block}
@media (min-width:1000px){
.proc__right{position:relative;padding-left:26px}
.proc__bar{display:block}
.proc__sticky{position:sticky;top:112px}
}
/* ============ DECORS ============ */
.dec__head{display:grid;gap:18px;margin-bottom:34px}
@media (min-width:900px){.dec__head{grid-template-columns:1fr auto;align-items:end}}
.dec__rail{position:relative;overflow:hidden;cursor:grab;touch-action:pan-y}
.dec__rail::before,.dec__rail::after{content:"";position:absolute;top:0;bottom:0;width:clamp(28px,7vw,96px);z-index:2;pointer-events:none}
.dec__rail::before{left:0;background:linear-gradient(90deg,var(--graphite),rgba(35,38,43,0))}
.dec__rail::after{right:0;background:linear-gradient(270deg,var(--graphite),rgba(35,38,43,0))}
.dec__rail.is-drag{cursor:grabbing}
.dec__track{display:flex;gap:14px;width:max-content;will-change:transform}
.sw{width:186px;flex:none;user-select:none}
.sw__c{height:186px;border-radius:14px;border:1px solid rgba(207,197,176,.22);position:relative;overflow:hidden}
.sw__c::after{content:"";position:absolute;left:0;right:0;bottom:0;height:9px;background:var(--band);
box-shadow:inset 0 1px 0 rgba(0,0,0,.22)}
.sw__n{font-family:var(--ff-mono);font-size:12px;letter-spacing:.03em;margin-top:12px;color:var(--panel)}
.sw__s{font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-d);margin-top:5px;
opacity:.32;transition:opacity 160ms var(--e-out)}
.sw:hover .sw__s{opacity:1}
@media (hover:none){.sw__s{opacity:1}}
/* ============ SHOWROOMS — vienas blokas iš dviejų ============ */
.duo{--mh:clamp(230px,32vw,430px);position:relative;background:var(--panel);
border-radius:24px;overflow:hidden;display:grid;grid-template-columns:1fr;gap:16px}
@media (min-width:880px){.duo{grid-template-columns:1fr 1fr}}
.duo__pane{background:var(--panel);display:flex;flex-direction:column;will-change:transform;
border-radius:18px;overflow:hidden;border:1px solid rgba(35,38,43,.16)}
.duo__media{position:relative;height:var(--mh);overflow:hidden;background:#DCD7C9}
.duo__media img{position:absolute;left:0;top:-13%;width:100%;height:126%;object-fit:cover;will-change:transform}
.duo__media::before{content:"";position:absolute;inset:0;z-index:2;
background-image:linear-gradient(rgba(15,107,102,.22) 1px,transparent 1px),linear-gradient(90deg,rgba(15,107,102,.22) 1px,transparent 1px);
background-size:28px 28px;mix-blend-mode:multiply}
.duo__media::after{content:"";position:absolute;inset:0;z-index:2;
background:linear-gradient(180deg,rgba(35,38,43,0) 55%,rgba(35,38,43,.5))}
.duo__tag{position:absolute;z-index:3;left:16px;bottom:16px;
font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
background:var(--graphite);color:var(--panel);padding:8px 13px;border-radius:999px;white-space:nowrap}
.duo__b{padding:clamp(20px,2.4vw,30px);display:flex;flex-direction:column;gap:14px;flex:1}
.duo__b h3{margin:0}
.duo__b > p{color:var(--muted);font-size:16px;margin:0}
.duo dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:8px 16px;
font-family:var(--ff-mono);font-size:12.5px;letter-spacing:.02em}
.duo dt{color:var(--muted);text-transform:uppercase;font-size:10.5px;letter-spacing:.13em;padding-top:3px}
.duo dd{margin:0;color:var(--graphite);font-variant-numeric:tabular-nums}
.duo dd a{text-decoration:none;border-bottom:1px solid var(--band)}
.duo__foot{margin-top:22px;display:flex;flex-wrap:wrap;gap:12px 26px;align-items:center;justify-content:space-between}
/* ============ INSTALLMENTS / INCLUDES ============ */
.four{position:relative;display:grid;gap:1px;background:rgba(35,38,43,.16);border:1px solid rgba(35,38,43,.16);border-radius:16px;overflow:hidden;margin-top:34px}
#kontaktai{transform-origin:center top;will-change:transform;isolation:isolate}
#kontaktai::after{content:"";position:absolute;inset:0;z-index:9;pointer-events:none;
background:var(--graphite);opacity:var(--dimv,0);border-radius:inherit}
@media (min-width:760px){.four{grid-template-columns:repeat(4,1fr)}}
.four > div{background:var(--panel-2);padding:24px 20px}
.four b{font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.16em;color:var(--teal);display:block;margin-bottom:12px}
.four p{font-size:16px;line-height:1.55;color:var(--graphite)}
/* ============ SUBPAGE HERO / SERVICE ROWS / CTA ============ */
.phero{padding-top:clamp(116px,14vh,164px);padding-bottom:clamp(44px,6vw,80px)}
.phero__in{display:grid;gap:clamp(18px,3vw,44px)}
@media (min-width:900px){.phero__in{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:end}}
.phero h1{max-width:15ch;margin:0}
.crumbs{font-family:var(--ff-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
color:var(--muted-d);margin:0 0 20px;display:flex;flex-wrap:wrap;gap:8px}
.crumbs a{text-decoration:none;color:var(--muted-d);transition:color 140ms var(--e-out)}
.crumbs a:hover{color:var(--panel)}
.crumbs span{color:var(--core-lt)}
.srv{display:grid;gap:clamp(22px,3.5vw,54px);padding-block:clamp(38px,5vw,70px);
border-top:1px solid rgba(35,38,43,.16)}
.srv:first-child{border-top:0;padding-top:0}
@media (min-width:900px){
.srv{grid-template-columns:minmax(0,.98fr) minmax(0,1.02fr);align-items:center}
.srv--flip .srv__media{order:2}
}
.srv__media{border-radius:18px;overflow:hidden;aspect-ratio:4/3;background:var(--graphite-2)}
.srv__media img{width:100%;height:100%;object-fit:cover}
.srv__n{font-family:var(--ff-mono);font-size:11.5px;letter-spacing:.16em;color:var(--teal);
display:block;margin-bottom:12px;font-weight:700}
.srv h2{font-size:clamp(25px,3vw,38px)}
.srv__b > p{color:var(--muted);margin:16px 0 0;max-width:52ch}
.srv__b ul{list-style:none;margin:20px 0 0;padding:0}
.srv__b li{display:flex;gap:11px;padding:9px 0;border-bottom:1px solid rgba(35,38,43,.14);
font-size:16px;align-items:baseline;color:var(--graphite)}
.srv__b li::before{content:"";width:8px;height:8px;flex:none;border:1px solid var(--teal);
border-radius:2px;transform:translateY(-1px)}
.cta{display:grid;gap:24px;align-items:center}
@media (min-width:860px){.cta{grid-template-columns:1fr auto}}
.cta h2{max-width:16ch}
.cta p{color:var(--muted-d);margin:14px 0 0;max-width:46ch}
/* ============ FAQ ============ */
.faq{display:grid;gap:clamp(30px,4vw,64px)}
@media (min-width:960px){
.faq{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);align-items:start}
.faq__intro{position:sticky;top:118px}
}
@media (min-width:960px){.faq--solo{grid-template-columns:1fr}}
.faq__list{border-top:1px solid rgba(35,38,43,.18)}
.faq__item{border-bottom:1px solid rgba(35,38,43,.18)}
.faq__item h3{margin:0;font-size:inherit;letter-spacing:normal}
.faq__q{width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;
background:none;border:0;padding:22px 2px;text-align:left;cursor:pointer;color:var(--graphite);
font-family:var(--ff-display);font-weight:700;letter-spacing:-.015em;line-height:1.32;
font-size:clamp(16.5px,.75vw + 13px,20px);transition:color 140ms var(--e-out)}
.faq__q:hover{color:var(--teal)}
.faq__item.is-open .faq__q{color:var(--teal)}
.faq__ic{position:relative;flex:none;width:18px;height:18px;margin-top:5px}
.faq__ic::before,.faq__ic::after{content:"";position:absolute;left:0;top:50%;width:18px;height:1.5px;
background:currentColor;transition:transform 220ms var(--e-out),opacity 220ms var(--e-out)}
.faq__ic::before{transform:translateY(-50%)}
.faq__ic::after{transform:translateY(-50%) rotate(90deg)}
.faq__item.is-open .faq__ic::after{transform:translateY(-50%) rotate(0deg);opacity:0}
.faq__panel{display:grid;grid-template-rows:0fr;opacity:0;
transition:grid-template-rows 240ms var(--e-out),opacity 180ms var(--e-out)}
.faq__item.is-open .faq__panel{grid-template-rows:1fr;opacity:1}
.faq__inner{overflow:hidden;min-height:0}
.faq__inner p{margin:0;padding:0 44px 26px 0;color:var(--muted);font-size:16.5px;line-height:1.62;max-width:62ch}
.no-js .faq__panel{grid-template-rows:1fr;opacity:1}
@media (prefers-reduced-motion:reduce){.faq__panel,.faq__ic::before,.faq__ic::after{transition:none}}
/* ============ FORM ============ */
.form-wrap{display:grid;gap:clamp(28px,4vw,64px)}
@media (min-width:960px){.form-wrap{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start}}
form{display:grid;gap:20px}
.row{display:grid;gap:20px}
@media (min-width:620px){.row{grid-template-columns:1fr 1fr}}
.f{position:relative}
.f label{position:absolute;left:15px;top:19px;font-family:var(--ff-mono);font-size:12px;letter-spacing:.06em;
color:var(--muted-d);pointer-events:none;transform-origin:left top;transition:transform .22s ease,color .22s ease;text-transform:uppercase}
.f input,.f select,.f textarea{
width:100%;background:transparent;border:1px solid rgba(207,197,176,.28);border-radius:12px;
color:var(--panel);font-family:var(--ff-body);font-size:16.5px;padding:30px 15px 13px;appearance:none;
transition:border-color .22s}
.f textarea{min-height:118px;resize:vertical;line-height:1.5}
.f select{font-family:var(--ff-mono);font-size:14px;padding-top:29px;
background-image:linear-gradient(45deg,transparent 50%,var(--core-lt) 50%),linear-gradient(135deg,var(--core-lt) 50%,transparent 50%);
background-position:calc(100% - 20px) 26px,calc(100% - 14px) 26px;background-size:6px 6px;background-repeat:no-repeat}
.f select option{background:var(--graphite);color:var(--panel)}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--core);outline:none}
.f.is-fill label,.f input:focus + label,.f textarea:focus + label,.f select:focus + label{transform:translateY(-11px) scale(.82);color:var(--core-lt)}
.f textarea + label{top:19px}
.f .err{font-family:var(--ff-mono);font-size:11px;letter-spacing:.05em;color:var(--core-lt);margin-top:7px;display:none;line-height:1.5}
.f.is-err input,.f.is-err select{border-color:var(--core-lt)}
.f.is-err .err{display:block}
.form-note{font-family:var(--ff-mono);font-size:11px;line-height:1.7;letter-spacing:.03em;color:var(--muted-d)}
.status{font-family:var(--ff-mono);font-size:13px;letter-spacing:.05em;padding:16px 18px;border-radius:12px;
border:1px solid var(--core);color:var(--core-lt);display:none;line-height:1.6}
.status.is-on{display:block}
.status b{display:block;font-size:15px;margin-bottom:6px;color:var(--panel);letter-spacing:.02em}
/* ============ FOOTER ============ */
.foot{background:var(--graphite);border-top:1px solid rgba(207,197,176,.16);padding-block:56px 40px}
.foot__g{display:grid;gap:28px}
@media (min-width:820px){.foot__g{grid-template-columns:1.4fr 1fr 1fr 1.1fr}}
.foot h4{font-family:var(--ff-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-d);margin:0 0 14px;font-weight:500}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:9px;font-family:var(--ff-mono);font-size:12.5px;letter-spacing:.03em}
.foot a{text-decoration:none;color:var(--panel)}
.foot a:hover{color:var(--core-lt)}
.foot__b{margin-top:44px;padding-top:22px;border-top:1px solid rgba(207,197,176,.16);
font-family:var(--ff-mono);font-size:11px;letter-spacing:.08em;color:var(--muted-d);
display:flex;flex-wrap:wrap;gap:12px 26px;justify-content:space-between}
/* ============ REVEAL BASE (js only) ============ */
.js .rv{opacity:0;transform:translateY(16px)}
.js .h-line > span{transform:translateY(118%)}
.no-js .stage__ph{clip-path:none!important}
@media (prefers-reduced-motion:reduce){
.js .rv{opacity:1!important;transform:none!important}
.js .h-line > span{transform:none!important}
.stage__ph{clip-path:none!important;transform:none!important}
*{scroll-behavior:auto!important}
}
</style>
</head>
<body>
<a class="skip" href="#turinys">Pereiti prie turinio</a>
<header class="hdr" id="hdr">
<div class="hdr__bg" id="hdrBg"></div>
<div class="hdr__in">
<a class="brand" href="/baldai">Baldai<i>Logo</i></a>
<nav class="nav" aria-label="Pagrindinė">
<a href="/baldai-gaminiai">Ką gaminame</a>
<a href="/baldai-eiga">Kaip vyksta</a>
<a href="/baldai-dekorai">Dekorai</a>
<a href="/baldai-salonai" aria-current="page">Salonai</a>
<a href="/baldai-duk">D.U.K.</a>
</nav>
<a class="hdr__tel mono" id="hdrTel" href="tel:+37060012345">+370 600 12345</a>
<a class="btn btn--sm hdr__cta" href="/baldai-salonai#matavimas">Užsakyti matavimą</a>
<button class="burger" id="burger" type="button" aria-label="Atidaryti meniu" aria-expanded="false" aria-controls="mnav">
<span></span><span></span>
</button>
</div>
</header>
<div class="mnav" id="mnav" aria-hidden="true">
<nav class="mnav__links" aria-label="Mobilusis meniu">
<a href="/baldai-gaminiai">Ką gaminame</a>
<a href="/baldai-eiga">Kaip vyksta</a>
<a href="/baldai-dekorai">Dekorai</a>
<a href="/baldai-salonai" aria-current="page">Salonai</a>
<a href="/baldai-duk">D.U.K.</a>
</nav>
<div class="mnav__foot">
<a class="mnav__tel" href="tel:+37060012345">+370 600 12345</a>
<p class="mnav__hours">I–V 9:00–18:00 · VI 10:00–14:00<br>info@jusuimone.lt</p>
<a class="btn" href="/baldai-salonai#matavimas">Užsakyti nemokamą matavimą <span class="btn__arw" aria-hidden="true">→</span></a>
</div>
</div>
<main id="turinys">
<!-- ================= PAGE HERO ================= -->
<section class="sec phero sec--dark" id="virsus">
<div class="wrap phero__in">
<div>
<p class="crumbs"><a href="/baldai">Pagrindinis</a> / <span>Salonai</span></p>
<h1><span class="h-line"><span>Salonai ir kontaktai</span></span></h1>
</div>
<div><p class="lede rv">Į abu salonus galima užsukti be išankstinio susitarimo. Matuoti atvykstame ir į kitus miestus.</p></div>
</div>
</section>
<!-- ================= SHOWROOMS ================= -->
<section class="sec sec--light sec--overlap" id="salonai">
<div class="wrap">
<div class="duo" id="duo">
<article class="duo__pane" data-side="l">
<div class="duo__media">
<img loading="lazy" data-duo="l" src="https://test.petpet.lt/wp-content/uploads/2026/08/08_PH-05_SALONAI_Mazeikiai-ekspozicija.jpg" alt="Salono ekspozicija: sustatytos virtuvės ir spintų sekcijos su ištrauktais stalčiais.">
<span class="duo__tag">Vilnius · salonas ir gamyba</span>
</div>
<div class="duo__b">
<h3>Vilnius</h3>
<p>Salonas ir gamyba vienoje vietoje. Ekspozicijoje sustatytos virtuvių, spintų ir svetainės baldų sekcijos.</p>
<dl>
<dt>Adresas</dt><dd>Ukmergės g. 120, Vilnius</dd>
<dt>Salonas</dt><dd><a href="tel:+37052101234">+370 5 210 1234</a></dd>
<dt>I–V</dt><dd>9:00–18:00</dd>
<dt>VI</dt><dd>10:00–14:00</dd>
</dl>
<a class="btn btn--ghost btn--sm" href="#matavimas" style="align-self:flex-start;margin-top:auto">Užsakyti nemokamą matavimą</a>
</div>
</article>
<article class="duo__pane" data-side="r">
<div class="duo__media">
<img loading="lazy" data-duo="r" src="https://test.petpet.lt/wp-content/uploads/2026/08/09_PH-06_SALONAI_Akmene-dekorai-ir-briaunos.jpg" alt="Salono siena su dekorų pavyzdžiais ir briaunų juostelėmis, sukabintomis viena šalia kitos.">
<span class="duo__tag">Kaunas · salonas</span>
</div>
<div class="duo__b">
<h3>Kaunas</h3>
<p>Salonas, kuriame patogu rinktis spalvą: dekorai, briaunos ir stalviršių pavyzdžiai sukabinti vienoje sienoje.</p>
<dl>
<dt>Adresas</dt><dd>Islandijos pl. 32, Kaunas</dd>
<dt>Salonas</dt><dd><a href="tel:+37037210123">+370 37 210 123</a></dd>
<dt>I–V</dt><dd>9:00–18:00</dd>
<dt>VI</dt><dd>10:00–14:00</dd>
</dl>
<a class="btn btn--ghost btn--sm" href="#matavimas" style="align-self:flex-start;margin-top:auto">Užsakyti nemokamą matavimą</a>
</div>
</article>
</div>
<div class="duo__foot">
<p class="mono" style="margin:0;color:var(--muted);letter-spacing:.1em">Dėl vizito laiko susitarkite telefonu · matuoti atvykstame ir į kitus miestus</p>
</div>
</div>
</section>
<!-- ================= FORM ================= -->
<section class="sec sec--dark sec--overlap" id="matavimas">
<div class="wrap form-wrap">
<div>
<p class="eyebrow">Užklausa</p>
<h2 style="max-width:13ch">Užsakykite nemokamą matavimą</h2>
<p class="lede" style="margin-top:18px">Palikite kontaktus — susisieksime, aptarsime poreikius ir suderinsime matavimo laiką. Užklausa nieko neįpareigoja.</p>
<p class="mono" style="margin-top:26px;color:var(--muted-d);line-height:1.9;letter-spacing:.08em">
+370 600 12345<br>info@jusuimone.lt<br>I–V 9:00–18:00 · VI 10:00–14:00
</p>
</div>
<form id="reqForm" novalidate>
<div class="row">
<div class="f"><input id="fn" name="vardas" type="text" autocomplete="name" placeholder=" "><label for="fn">Vardas</label><p class="err">Įrašykite vardą — taip žinosime, į ką kreiptis.</p></div>
<div class="f"><input id="ft" name="telefonas" type="tel" autocomplete="tel" placeholder=" "><label for="ft">Telefonas</label><p class="err">Įrašykite telefono numerį — dėl laiko deriname skambučiu.</p></div>
</div>
<div class="row">
<div class="f">
<select id="fc" name="miestas"><option value=""></option><option>Vilnius</option><option>Vilniaus rajonas</option><option>Kaunas</option><option>Kauno rajonas</option><option>Kitas miestas</option></select>
<label for="fc">Miestas</label><p class="err">Pasirinkite miestą, kad suplanuotume atvykimą.</p>
</div>
<div class="f">
<select id="fw" name="baldai"><option value=""></option><option>Virtuvė</option><option>Spinta arba lova</option><option>Prieškambaris</option><option>Svetainė / TV sekcija</option><option>Jaunuolio kambarys</option><option>Biuro baldai</option></select>
<label for="fw">Ką planuojate</label><p class="err">Pasirinkite baldų tipą — pasiimsime tinkamus pavyzdžius.</p>
</div>
</div>
<div class="f">
<textarea id="fm" name="zinute" placeholder=" "></textarea><label for="fm">Trumpai apie užsakymą</label>
</div>
<p class="form-note">Pavyzdžiui: patalpos matmenys, pageidaujamas stilius, jau turima technika ar planuojamas terminas. Kuo daugiau detalių, tuo tikslesnis pasiūlymas.</p>
<button class="btn" type="submit" style="justify-self:start">Užsakyti nemokamą matavimą <span class="btn__arw" aria-hidden="true">→</span></button>
<div class="status" id="formStatus" role="status" aria-live="polite"></div>
</form>
</div>
</section>
</main>
<footer class="foot">
<div class="wrap">
<div class="foot__g">
<div>
<a class="brand" href="/baldai" style="margin-bottom:14px">Baldai<i>Logo</i></a>
<p style="color:var(--muted-d);max-width:34ch;font-size:16px">Korpusinių baldų gamyba pagal užsakymą nuo 1995. Matuojame, projektuojame, gaminame ir sumontuojame patys.</p>
</div>
<div>
<h4>Gaminiai</h4>
<ul>
<li><a href="/baldai-gaminiai">Virtuvė</a></li>
<li><a href="/baldai-gaminiai">Spintos ir lovos</a></li>
<li><a href="/baldai-gaminiai">Prieškambaris</a></li>
<li><a href="/baldai-gaminiai">Svetainė / TV sekcijos</a></li>
<li><a href="/baldai-gaminiai">Jaunuolio kambarys</a></li>
<li><a href="/baldai-gaminiai">Biuro baldai</a></li>
</ul>
</div>
<div>
<h4>Puslapiai</h4>
<ul>
<li><a href="/baldai-eiga">Kaip vyksta</a></li>
<li><a href="/baldai-dekorai">Dekorai</a></li>
<li><a href="/baldai-salonai">Salonai</a></li>
<li><a href="/baldai-duk">D.U.K.</a></li>
</ul>
</div>
<div>
<h4>Kontaktai</h4>
<ul>
<li><a href="tel:+37060012345">+370 600 12345</a></li>
<li><a href="tel:+37052101234">Vilnius +370 5 210 1234</a></li>
<li><a href="tel:+37037210123">Kaunas +370 37 210 123</a></li>
<li><a href="mailto:info@jusuimone.lt">info@jusuimone.lt</a></li>
<li>I–V 9:00–18:00</li>
<li>VI 10:00–14:00</li>
</ul>
</div>
</div>
<div class="foot__b">
<span>© <span id="yr">2026</span> BaldaiLogo</span>
<span>Baldų gamyba pagal užsakymą</span>
</div>
</div>
</footer>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "LocalBusiness",
"@id": "#vilnius",
"name": "BaldaiLogo — Vilnius",
"description": "Korpusinių baldų gamyba pagal užsakymą.",
"telephone": "+37052101234",
"email": "info@jusuimone.lt",
"priceRange": "€€",
"address": {
"@type": "PostalAddress",
"streetAddress": "Ukmergės g. 120",
"addressLocality": "Vilnius",
"postalCode": "08105",
"addressCountry": "LT"
},
"foundingDate": "1995",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "14:00"
}
]
},
{
"@type": "LocalBusiness",
"@id": "#kaunas",
"name": "BaldaiLogo — Kaunas",
"description": "Korpusinių baldų gamyba pagal užsakymą.",
"telephone": "+37037210123",
"email": "info@jusuimone.lt",
"priceRange": "€€",
"address": {
"@type": "PostalAddress",
"streetAddress": "Islandijos pl. 32",
"addressLocality": "Kaunas",
"postalCode": "49329",
"addressCountry": "LT"
},
"foundingDate": "1995",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "14:00"
}
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Pagrindinis",
"item": "/baldai"
},
{
"@type": "ListItem",
"position": 2,
"name": "Salonai",
"item": "/baldai-salonai"
}
]
}
]
}
</script>
<script src="https://cdn.jsdelivr.net/npm/lenis@1.1.14/dist/lenis.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
<script>
(function(){
"use strict";
var doc=document;
var yr=doc.getElementById('yr'); if(yr) yr.textContent=new Date().getFullYear();
var REDUCE = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
var DEC = {setDir:function(){}};
var HAS = (typeof gsap!=='undefined') && (typeof ScrollTrigger!=='undefined');
/* ---------- always-on: form, decor rail (drag), counters fallback ---------- */
initForm();
initFloatLabels();
initFaq();
initMenu();
if(!HAS || REDUCE){
// instant states
doc.querySelectorAll('.rv').forEach(function(el){el.style.opacity=1;el.style.transform='none';});
doc.querySelectorAll('.h-line > span').forEach(function(el){el.style.transform='none';});
var ph=doc.getElementById('heroPh'); if(ph){ph.style.clipPath='none';ph.style.transform='none';}
doc.getElementById('hdrBg').style.opacity=1;
doc.getElementById('hdrTel').style.opacity=1;
setCounters();
initDecorMarquee(false,false);
return;
}
gsap.registerPlugin(ScrollTrigger);
/* ---------- Lenis + GSAP ticker ---------- */
var lenis=null;
if(typeof Lenis!=='undefined'){
lenis=new Lenis({lerp:0.09, smoothWheel:true, wheelMultiplier:1, touchMultiplier:1.6});
window.__lenis=lenis;
lenis.on('scroll', ScrollTrigger.update);
gsap.ticker.add(function(t){ lenis.raf(t*1000); });
gsap.ticker.lagSmoothing(0);
// anchor links through Lenis
doc.querySelectorAll('a[href^="#"]').forEach(function(a){
a.addEventListener('click',function(e){
var id=a.getAttribute('href'); if(id.length<2) return;
var t=doc.querySelector(id); if(!t) return;
e.preventDefault(); lenis.scrollTo(t,{offset:-70,duration:1.1});
});
});
}
/* ---------- LOAD SEQUENCE (< 1.2s, non-blocking) ---------- */
var intro=gsap.timeline({defaults:{ease:'power3.out'}});
if(doc.getElementById('heroPh')){
intro.to('#heroPh',{clipPath:'inset(0% 0% 0% 0%)',duration:0.95,ease:'power2.inOut'},0)
.to('#heroPh',{scale:1,duration:1.15,ease:'power2.out'},0);
}
intro.to('.h-line > span',{y:'0%',duration:0.82,stagger:0.055},0.12)
.to('.hero .rv, .phero .rv',{opacity:1,y:0,duration:0.7,stagger:0.07},0.45)
.fromTo('.hdr__in',{y:-14,opacity:0},{y:0,opacity:1,duration:.6},0.55);
/* ---------- generic reveals ---------- */
gsap.utils.toArray('.rv').forEach(function(el){
if(el.closest('.hero')||el.closest('.phero')) return;
gsap.to(el,{opacity:1,y:0,duration:.7,ease:'power2.out',
scrollTrigger:{trigger:el,start:'top 88%',once:true}});
});
/* ---------- split-line reveals on h2 ---------- */
gsap.utils.toArray('h2').forEach(function(h){
var words=h.textContent.split(' ');
h.innerHTML=words.map(function(w){return '<span class="wm" style="display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em"><span style="display:inline-block;will-change:transform">'+w+'</span></span>';}).join(' ');
gsap.fromTo(h.querySelectorAll('.wm > span'),{yPercent:120},{yPercent:0,duration:.75,ease:'power3.out',stagger:0.045,
scrollTrigger:{trigger:h,start:'top 86%',once:true}});
});
/* ---------- HEADER state ---------- */
var hdrTl=gsap.timeline({paused:true})
.to('#hdrBg',{opacity:1,duration:.4,ease:'power2.out'},0)
.to('.hdr__in',{paddingTop:13,paddingBottom:13,duration:.4,ease:'power2.out'},0)
.fromTo('#hdrTel',{opacity:0,x:10},{opacity:1,x:0,duration:.4,ease:'power2.out'},0.05);
ScrollTrigger.create({start:'top -90',end:99999,
onEnter:function(){hdrTl.play();},onLeaveBack:function(){hdrTl.reverse();}});
/* ---------- HERO parallax: 3 rates, scale-only on media ---------- */
if(doc.getElementById('virsus'))
gsap.timeline({scrollTrigger:{trigger:'#virsus',start:'top top',end:'bottom top',scrub:true}})
.to('#heroGrid',{yPercent:-12,ease:'none'},0)
.to('.stage-cap',{yPercent:14,ease:'none'},0)
.to('.hero h1',{yPercent:4,ease:'none'},0)
.to('#heroPh',{scale:1.09,ease:'none'},0);
/* ---------- MARQUEE (direction follows scroll) ---------- */
var marq=doc.getElementById('marq');
var mTl=marq?gsap.to(marq,{xPercent:-50,repeat:-1,duration:26,ease:'none'}):null;
ScrollTrigger.create({start:0,end:99999,onUpdate:function(self){
if(mTl) gsap.to(mTl,{timeScale:self.direction===1?1:-1,duration:.35,overwrite:true});
DEC.setDir(self.direction===1?-1:1);
}});
/* ---------- COUNTERS ---------- */
doc.querySelectorAll('[data-count]').forEach(function(el){
var end=parseFloat(el.dataset.count), pre=el.dataset.pre||'', post=el.dataset.post||'';
var o={v:0};
ScrollTrigger.create({trigger:el,start:'top 90%',once:true,onEnter:function(){
gsap.to(o,{v:end,duration:1.3,ease:'power2.out',onUpdate:function(){
el.textContent=pre+Math.round(o.v)+post;
}});
}});
});
/* ---------- CRAFT: clip-path scrub reveal + parallax ---------- */
gsap.fromTo('#craftImg img',{clipPath:'inset(0% 0% 82% 0%)',scale:1.12},
{clipPath:'inset(0% 0% 0% 0%)',scale:1,ease:'none',
scrollTrigger:{trigger:'#craftImg',start:'top 88%',end:'top 24%',scrub:0.6}});
/* ---------- DECOR RAIL: lėta begalinė kilpa + tempimas ---------- */
initDecorMarquee(true,true);
/* ---------- MEDIA-SCOPED: pinning (desktop only) ---------- */
var mm = gsap.matchMedia();
mm.add('(min-width: 900px)',function(){
/* categories: pinned horizontal */
var stage=doc.getElementById('catsStage'), track=doc.getElementById('catsTrack');
if(stage&&track){
var dist=function(){return Math.max(0, track.scrollWidth - stage.clientWidth);};
var hz=gsap.to(track,{x:function(){return -dist();},ease:'none',
scrollTrigger:{trigger:'#paslaugos',start:'top top',end:function(){return '+='+(dist()+window.innerHeight*0.4);},
pin:true,scrub:1,invalidateOnRefresh:true,anticipatePin:1}});
doc.getElementById('catsHint').textContent='Slinkite žemyn — juda į šoną';
gsap.utils.toArray('#catsTrack .card').forEach(function(p){
gsap.fromTo(p,{scale:1,filter:'saturate(1)'},{scale:.9,filter:'saturate(.4)',ease:'none',
scrollTrigger:{trigger:p,containerAnimation:hz,start:'left 8%',end:'left left',scrub:true}});
});
}
/* process: sticky visual + step states + progress rail */
var bar=doc.getElementById('procBar');
if(bar) ScrollTrigger.create({trigger:'#steps',start:'top 62%',end:'bottom 78%',scrub:true,
onUpdate:function(s){ bar.style.height=(s.progress*100)+'%'; }});
});
/* steps active-state works at all widths */
gsap.utils.toArray('.step').forEach(function(st){
ScrollTrigger.create({trigger:st,start:'top 62%',end:'bottom 62%',
onToggle:function(s){ if(s.isActive) setStep(st.dataset.step); }});
});
function setStep(n){
doc.querySelectorAll('.step').forEach(function(s){s.classList.toggle('is-on',s.dataset.step===n);});
doc.querySelectorAll('.proc__layer').forEach(function(l){l.classList.toggle('is-on',l.dataset.layer===n);});
}
ScrollTrigger.addEventListener('refreshInit',function(){gsap.set('#catsTrack',{x:0});});
window.addEventListener('load',function(){ScrollTrigger.refresh();});
/* ---------- SALONAI: du blokai suslenka į vieną + priešpriešinis parallax ---------- */
(function(){
var duo=doc.getElementById('duo'); if(!duo) return;
var L=duo.querySelector('[data-side="l"]'), R=duo.querySelector('[data-side="r"]'),
li=duo.querySelector('[data-duo="l"]'), ri=duo.querySelector('[data-duo="r"]');
// vaizdai juda priešingomis kryptimis visą laiką, kol sekcija matoma
gsap.timeline({scrollTrigger:{trigger:duo,start:'top bottom',end:'bottom top',scrub:true}})
.fromTo(li,{yPercent:-7},{yPercent:7,ease:'none'},0)
.fromTo(ri,{yPercent:7},{yPercent:-7,ease:'none'},0);
// suslinkimas veikia tik ten, kur blokai stovi greta
var mmDuo=gsap.matchMedia();
mmDuo.add('(min-width: 880px)',function(){
gsap.timeline({scrollTrigger:{trigger:duo,start:'top 92%',end:'top 38%',scrub:0.8}})
.fromTo(L,{xPercent:-8},{xPercent:0,ease:'none'},0)
.fromTo(R,{xPercent:8},{xPercent:0,ease:'none'},0);
});
})();
/* ---------- MOKĖJIMAS DALIMIS: sekcija užslenka ant ankstesnės ---------- */
(function(){
var dal=doc.getElementById('atsakomybe'), prev=doc.getElementById('kontaktai');
if(!dal) return;
var cells=dal.querySelectorAll('.four > div'),
grid=dal.querySelector('.four'),
head=dal.querySelector('.dal__head');
// 1. ankstesnė sekcija atsitraukia į gylį ir pritemsta
if(prev){
gsap.timeline({scrollTrigger:{trigger:dal,start:'top bottom',end:'top 24%',scrub:0.7}})
.fromTo(prev,{scale:1},{scale:0.945,ease:'none'},0);
ScrollTrigger.create({trigger:dal,start:'top bottom',end:'top 24%',scrub:0.7,
onUpdate:function(st){ prev.style.setProperty('--dimv', (st.progress*0.34).toFixed(3)); }});
}
// 2. antraštė ir tinklelis juda skirtingu greičiu
gsap.timeline({scrollTrigger:{trigger:dal,start:'top bottom',end:'bottom top',scrub:true}})
.fromTo(head||grid,{yPercent:10},{yPercent:-8,ease:'none'},0)
.fromTo(grid,{yPercent:4},{yPercent:-3,ease:'none'},0);
// 3. kortelės atsiveria viena po kitos
gsap.timeline({scrollTrigger:{trigger:grid,start:'top 84%',once:true}})
.fromTo(cells,{clipPath:'inset(0% 0% 100% 0%)',y:32},
{clipPath:'inset(0% 0% 0% 0%)',y:0,duration:.85,ease:'power3.out',stagger:0.09},0)
.fromTo(dal.querySelectorAll('.four b'),{opacity:0,x:-10},
{opacity:1,x:0,duration:.5,ease:'power2.out',stagger:0.09},0.2);
})();
/* ---------- helpers ---------- */
function setCounters(){
doc.querySelectorAll('[data-count]').forEach(function(el){
el.textContent=(el.dataset.pre||'')+el.dataset.count+(el.dataset.post||'');
});
}
function initDecorMarquee(withHint,auto){
var rail=doc.getElementById('decRail'), track=doc.getElementById('decTrack');
if(!rail||!track) return;
// dublikuojame rinkinį, kad kilpa būtų be siūlės
var originals=Array.prototype.slice.call(track.children), n=originals.length;
originals.forEach(function(el){
var c=el.cloneNode(true); c.setAttribute('aria-hidden','true'); track.appendChild(c);
});
var period=1;
function measure(){
var a=track.children[0], b=track.children[n];
period=Math.max(1, b.offsetLeft - a.offsetLeft);
}
measure();
window.addEventListener('resize',function(){measure();});
if(doc.fonts && doc.fonts.ready) doc.fonts.ready.then(measure);
var pos=0, vel=0, dir=-1, SPEED=0.34, hover=false, down=false, sx=0, ox=0, last=0;
DEC.setDir=function(d){ dir=d; };
function render(){
var p=pos%period; if(p>0) p-=period;
track.style.transform='translate3d('+p+'px,0,0)';
}
function tick(){
if(down){ render(); return; }
pos+=vel; vel*=0.93; if(Math.abs(vel)<0.02) vel=0;
if(auto && !hover) pos+=SPEED*dir;
render();
}
if(typeof gsap!=='undefined'){ gsap.ticker.add(tick); }
else { (function loop(){ tick(); requestAnimationFrame(loop); })(); }
rail.addEventListener('pointerenter',function(){hover=true;});
rail.addEventListener('pointerleave',function(){hover=false;});
rail.addEventListener('pointerdown',function(e){
down=true; sx=e.clientX; ox=pos; vel=0; last=e.clientX;
rail.classList.add('is-drag'); rail.setPointerCapture(e.pointerId);
});
rail.addEventListener('pointermove',function(e){
if(!down) return;
pos=ox+(e.clientX-sx); vel=(e.clientX-last)*0.85; last=e.clientX;
});
function up(){ if(!down) return; down=false; rail.classList.remove('is-drag'); }
rail.addEventListener('pointerup',up);
rail.addEventListener('pointercancel',up);
rail.addEventListener('wheel',function(e){
if(Math.abs(e.deltaX)>Math.abs(e.deltaY)){ e.preventDefault(); pos-=e.deltaX; }
},{passive:false});
}
function initMenu(){
var b=doc.getElementById('burger'), m=doc.getElementById('mnav'), root=doc.documentElement;
if(!b||!m) return;
function setOpen(open){
root.classList.toggle('is-menu',open);
b.setAttribute('aria-expanded',open?'true':'false');
b.setAttribute('aria-label',open?'Uždaryti meniu':'Atidaryti meniu');
m.setAttribute('aria-hidden',open?'false':'true');
if(window.__lenis){ open ? window.__lenis.stop() : window.__lenis.start(); }
}
b.addEventListener('click',function(){ setOpen(!root.classList.contains('is-menu')); });
// capture, kad meniu užsidarytų prieš suveikiant inkaro slinkimui
m.addEventListener('click',function(e){ if(e.target.closest('a')) setOpen(false); },true);
doc.addEventListener('keydown',function(e){
if(e.key==='Escape' && root.classList.contains('is-menu')){ setOpen(false); b.focus(); }
});
window.addEventListener('resize',function(){ if(window.innerWidth>=900) setOpen(false); });
setOpen(false);
}
function initFaq(){
var items=[].slice.call(doc.querySelectorAll('.faq__item'));
items.forEach(function(it){
var q=it.querySelector('.faq__q');
q.addEventListener('click',function(){
var willOpen=!it.classList.contains('is-open');
items.forEach(function(o){
if(o===it) return;
o.classList.remove('is-open');
o.querySelector('.faq__q').setAttribute('aria-expanded','false');
});
it.classList.toggle('is-open',willOpen);
q.setAttribute('aria-expanded',willOpen?'true':'false');
});
});
}
function initFloatLabels(){
doc.querySelectorAll('.f input,.f select,.f textarea').forEach(function(el){
var wrap=el.closest('.f');
var sync=function(){ wrap.classList.toggle('is-fill', !!el.value); };
el.addEventListener('input',sync); el.addEventListener('change',sync); el.addEventListener('blur',sync);
sync();
});
}
function initForm(){
var f=doc.getElementById('reqForm'); if(!f) return;
var status=doc.getElementById('formStatus');
var req=['fn','ft','fc','fw'];
req.forEach(function(id){
var el=doc.getElementById(id);
el.addEventListener('blur',function(){check(el);});
el.addEventListener('input',function(){ if(el.closest('.f').classList.contains('is-err')) check(el); });
el.addEventListener('change',function(){check(el);});
});
function check(el){
var ok=el.value.trim().length>0;
if(el.id==='ft') ok=el.value.replace(/[^\d+]/g,'').length>=8;
el.closest('.f').classList.toggle('is-err',!ok);
el.setAttribute('aria-invalid',ok?'false':'true');
return ok;
}
f.addEventListener('submit',function(e){
e.preventDefault();
var bad=null;
req.forEach(function(id){var el=doc.getElementById(id); if(!check(el)&&!bad) bad=el;});
if(bad){
status.classList.add('is-on');
status.innerHTML='<b>Trūksta duomenų</b>Užpildykite pažymėtus laukus — be jų negalėsime su jumis susisiekti.';
bad.focus();
return;
}
status.classList.add('is-on');
status.innerHTML='<b>Užklausa gauta</b>Susisieksime darbo valandomis (I–V 8:00–17:00), patikslinsime detales ir paruošime pasiūlymą. Jei skubate — +370 600 12345.';
f.querySelectorAll('input,select,textarea').forEach(function(el){el.value='';el.closest('.f').classList.remove('is-fill');});
});
}
})();
</script>
</body>
</html>