/* Avigon Base, main.css (ladowany asynchronicznie).
   Sekcje below-the-fold. Tokeny i above-the-fold siedza w critical.css. */

/* ---------- Sekcje / rytm ---------- */
.av-sec{padding-block:var(--av-section-y)}
.av-sec--light{background:var(--av-surface);color:var(--av-ink)}
.av-sec--alt{background:var(--av-surface-alt);color:var(--av-ink)}
.av-sec--dark{background:var(--av-surface-dark);color:var(--av-on-dark)}
.av-sec--dark .av-lead,.av-sec--dark p{color:var(--av-on-dark-soft)}
.av-sec--dark .av-h2,.av-sec--dark .av-h3,.av-sec--dark .av-h4,.av-sec--dark strong{color:var(--av-on-dark)}
.av-sec__actions{margin:2rem 0 0}
.av-sec__actions--center{display:flex;justify-content:center;margin-top:2.75rem}

.av-shead{margin-bottom:clamp(2rem,4vw,3.25rem);max-width:72ch}
.av-shead--center{margin-inline:auto;text-align:center}
.av-shead--center .av-lead{margin-inline:auto}
.av-h2--on-dark{color:var(--av-on-dark)}

.av-prose p{margin:0 0 1.15em;max-width:68ch}
.av-prose p:last-child{margin-bottom:0}
.av-prose--on-dark p{color:var(--av-on-dark-soft)}
.av-prose--sm p{font-size:.94rem}
.av-prose strong{color:var(--av-ink);font-weight:650}
.av-prose--on-dark strong{color:var(--av-on-dark)}

.av-grid{display:grid;gap:1px;background:var(--av-line)}
.av-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.av-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.av-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.av-card--bordered{border:0;padding:clamp(1.5rem,2.5vw,2rem);background:var(--av-surface)}
.av-card--bordered h3{margin-bottom:.5rem}
.av-card--bordered p{margin:0;font-size:.92rem;color:var(--av-ink-soft)}

/* Listy z ptaszkiem, bez ikon SVG, czysty CSS */
.av-checks li{position:relative;padding-left:1.7rem;margin-bottom:.6rem;font-size:.93rem}
.av-checks li::before{content:"";position:absolute;left:0;top:.42em;width:.62rem;height:.34rem;
border-left:2px solid var(--av-accent);border-bottom:2px solid var(--av-accent);transform:rotate(-45deg)}
/* Na jasnym tle sam zolty ptaszek gubi sie w tle, wiec tam idzie ciemny. */
.av-sec--light .av-checks li::before,.av-sec--alt .av-checks li::before{
border-left-color:var(--av-ink);border-bottom-color:var(--av-ink)}
.av-checks--on-dark li::before,.av-sec--dark .av-checks li::before{border-color:var(--av-accent)}
.av-checks--on-dark li{color:var(--av-on-dark-soft)}

.av-frame{margin:0;border:var(--av-border-w) solid var(--av-line);position:relative}
/* aspect-ratio rezerwuje miejsce nawet gdy obrazek nie dostal width/height.
   Dzieje sie tak dla plikow, ktorych getimagesize() nie czyta (SVG) oraz dla
   obrazow podanych jako goly URL spoza biblioteki mediow, bez tego CLS. */
.av-frame img{width:100%;aspect-ratio:4/3;object-fit:cover}
.av-frame--dark{border-color:var(--av-line-dark)}

/* ---------- Pasek zaufania ---------- */
.av-trust{padding-block:2.25rem;border-block:var(--av-border-w) solid var(--av-line);background:var(--av-surface)}
.av-trust__in{display:flex;align-items:center;gap:clamp(1rem,3vw,2.5rem);flex-wrap:wrap;justify-content:center}
.av-trust__title{margin:0;font-size:.78rem;font-weight:650;letter-spacing:.1em;
text-transform:uppercase;color:var(--av-ink-soft)}
.av-trust__list{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(1rem,3vw,2.5rem);justify-content:center}
.av-trust__item{font-size:.9rem;font-weight:600;color:var(--av-ink-soft)}
.av-trust__item img{max-height:26px;width:auto;filter:grayscale(1);opacity:.7;transition:opacity var(--av-ease),filter var(--av-ease)}
.av-trust__item:hover img{filter:none;opacity:1}

/* ---------- O nas ---------- */
.av-about{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(2rem,5vw,4rem);align-items:start}

.av-about__cards{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--av-line);margin-top:1px}
.av-minicard{background:var(--av-surface);padding:1.15rem 1.25rem;display:block}
.av-minicard strong{display:block;font-size:.95rem;margin-bottom:.25rem}
.av-minicard span{font-size:.84rem;color:var(--av-ink-soft);line-height:1.5}
.av-sign{margin:1.75rem 0 0;padding-left:1rem;border-left:3px solid var(--av-accent)}
.av-sign__name{display:block;font-weight:700}
.av-sign__role{display:block;font-size:.82rem;color:var(--av-ink-soft)}

/* ---------- Dlaczego my ---------- */



.av-why__item p{font-size:.93rem;margin-bottom:0}

.av-quote{margin:clamp(2.5rem,5vw,4rem) 0 0;padding:clamp(1.75rem,3vw,2.5rem);
border:var(--av-border-w) solid var(--av-line-dark);max-width:80ch;margin-inline:auto;text-align:center}
.av-quote p{font-family:var(--av-font-head);font-size:clamp(1.05rem,1.8vw,1.3rem);
line-height:1.5;color:var(--av-on-dark);margin-bottom:.85rem}
.av-quote cite{font-style:normal;font-size:.82rem;letter-spacing:.08em;
text-transform:uppercase;color:var(--av-accent)}

/* ---------- Metoda sprzedazy ---------- */
.av-method{display:grid;gap:1px;background:var(--av-line)}
.av-method__item{background:var(--av-surface);display:grid;
grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(1.5rem,3vw,3rem);
padding:clamp(1.75rem,3vw,2.75rem);align-items:center}
.av-method__item:nth-child(even) .av-method__media{order:-1}
.av-method__num{display:block;font-family:var(--av-font-head);font-size:.8rem;font-weight:800;
letter-spacing:.14em;color:var(--av-ink-soft);margin-bottom:.85rem}
.av-method__copy p{color:var(--av-ink-soft);max-width:62ch}
.av-method__media{margin:0;border:var(--av-border-w) solid var(--av-line)}
.av-method__media img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* ---------- Pasek CTA ---------- */
.av-band{background:var(--av-surface-dark);color:var(--av-on-dark);padding-block:clamp(3rem,6vw,5rem)}
.av-band__in{display:flex;gap:2rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
.av-band__in>div:first-child{max-width:56ch}
.av-band .av-h2{margin-bottom:.5rem}
.av-band__text{color:var(--av-on-dark-soft);margin:0}
.av-band__actions{display:flex;gap:.85rem;flex-wrap:wrap}

/* ---------- Proces ---------- */
.av-process{display:grid;grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);gap:clamp(2rem,4vw,3.25rem);align-items:start}
.av-process__intro{position:sticky;top:110px}
.av-process__tel{margin:1rem 0 0;font-size:1.15rem;font-weight:700}
.av-process__tel a{text-decoration:none}
.av-steps{display:grid;gap:clamp(1rem,2vw,1.5rem);margin:0;padding:0;list-style:none;counter-reset:none}
/* Zolta krawedz po lewej stronie karty: prowadzi wzrok w dol stosu i wiaze
   kroki z numeracja, ktora jest w tym samym kolorze. */
.av-steps__item{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr);
gap:clamp(1.25rem,2.5vw,1.75rem);align-items:stretch;
background:var(--av-surface);border:var(--av-border-w) solid var(--av-line);
border-left:3px solid var(--av-accent);
transition:box-shadow var(--av-ease),border-color var(--av-ease)}
.av-steps__item:hover{box-shadow:0 10px 30px rgba(var(--av-ink-rgb),.09)}
.av-steps__num{display:inline-flex;align-items:center;gap:.55rem;
font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:1.05rem;letter-spacing:.08em;color:var(--av-ink-soft);margin-bottom:.5rem}
.av-steps__num::after{content:"";width:24px;height:2px;background:var(--av-accent)}
.av-steps__item p{margin:0;color:var(--av-ink-soft);font-size:.94rem}

/* ---------- Gwarancje ---------- */
.av-seal{margin:2.5rem auto 0;max-width:max-content;padding:.9rem 1.6rem;
border:2px solid var(--av-ink);font-weight:700;font-size:.92rem;text-align:center}

/* ---------- Liczby ---------- */
.av-stats{background:var(--av-surface-dark);color:var(--av-on-dark);padding-block:clamp(3rem,6vw,5rem)}
.av-stats__title{text-align:center;margin-bottom:2.5rem}
.av-stats__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
gap:1px;background:var(--av-line-dark);border:var(--av-border-w) solid var(--av-line-dark)}
.av-stats__item{background:var(--av-surface-dark);padding:clamp(1.5rem,3vw,2.25rem);text-align:center}
.av-stats__item dt{font-family:var(--av-font-head);font-size:clamp(1.9rem,4vw,2.9rem);
font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--av-accent)}
.av-stats__item dd{margin:.65rem 0 0;font-size:.85rem;color:var(--av-on-dark-soft);line-height:1.5}

/* ---------- Konsultacja ---------- */
.av-consult{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(2rem,4.5vw,3.5rem);align-items:start}
.av-consult__badge{display:inline-block;font-size:.72rem;font-weight:800;letter-spacing:.14em;
text-transform:uppercase;color:var(--av-on-accent);background:var(--av-accent);padding:.45rem .85rem;margin-bottom:1.25rem}
.av-consult__media img{width:100%;aspect-ratio:4/5;object-fit:cover;
/* Kadr trzymamy od gory: to portret, wiec przy przycinaniu ma zniknac
   podloga, a nie twarz. */
object-position:50% 0}

/* ---------- Opinie ---------- */
.av-rating{display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap;
margin:0 0 2.5rem;font-size:.9rem;color:var(--av-on-dark-soft)}
.av-rating__value{font-family:var(--av-font-head);font-size:2rem;font-weight:800;color:var(--av-on-dark);line-height:1}
.av-stars{color:var(--av-accent);letter-spacing:.12em}
.av-reviews{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(300px,1fr);
gap:1px;background:var(--av-line-dark);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin}
.av-review{scroll-snap-align:start;background:var(--av-surface-dark);padding:clamp(1.5rem,2.5vw,2rem);
display:flex;flex-direction:column;gap:1rem}
.av-review__stars{color:var(--av-accent);margin:0;letter-spacing:.1em;font-size:.9rem}
.av-review blockquote{margin:0;flex:1}
.av-review blockquote p{margin:0;font-size:.94rem;color:var(--av-on-dark-soft);line-height:1.65}
.av-review__foot{display:flex;align-items:center;gap:.75rem;
border-top:var(--av-border-w) solid var(--av-line-dark);padding-top:1rem}
.av-review__avatar{flex:0 0 38px;width:38px;height:38px;display:grid;place-items:center;
background:var(--av-accent);color:var(--av-on-accent);font-weight:800;font-size:.95rem}
.av-review__foot strong{display:block;font-size:.9rem;color:var(--av-on-dark)}
.av-review__foot em{font-style:normal;font-size:.78rem;color:var(--av-on-dark-soft)}

/* ---------- FAQ ---------- */
/* FAQ w stylu metrohouse-row: zadnych kart ani pudelek, tylko cienkie linie
   miedzy pytaniami. Bialy tekst na zdjeciu, zolty znacznik. Proste linie,
   zero zaokraglen, zgodnie z reszta marki. */
.av-faq{max-width:52rem;margin-inline:auto}
.av-faq__list{display:block;border-top:var(--av-border-w) solid rgba(255,255,255,.16)}
.av-faq__item{background:none;border:0;box-shadow:none;
border-bottom:var(--av-border-w) solid rgba(255,255,255,.16)}
.av-faq__item summary{list-style:none;cursor:pointer;position:relative;
display:flex;align-items:center;gap:1.5rem;padding:1.45rem 0;
font-family:var(--av-font-head);font-weight:600;
font-size:clamp(1.02rem,1.5vw,1.14rem);line-height:1.4;color:#fff;
transition:color var(--av-ease)}
.av-faq__item summary::-webkit-details-marker{display:none}
.av-faq__item summary:hover{color:var(--av-accent)}
.av-faq__item[open] summary{color:var(--av-accent)}
.av-faq__item summary:focus-visible{outline:2px solid var(--av-accent);outline-offset:4px}
/* Znacznik: kwadratowy plus, ktory obraca sie w krzyzyk i zapala na zolto. */
.av-faq__item summary::after{content:"";flex:none;margin-left:auto;
width:32px;height:32px;background:rgba(255,255,255,.1);
background-image:
  linear-gradient(currentColor,currentColor),
  linear-gradient(currentColor,currentColor);
background-size:13px 2px,2px 13px;
background-position:center,center;background-repeat:no-repeat;
transition:transform .3s cubic-bezier(.4,0,.2,1),background-color var(--av-ease)}
.av-faq__item[open] summary::after{transform:rotate(45deg);
background-color:var(--av-accent);color:var(--av-on-accent)}
.av-faq__panel{overflow:hidden}
.av-faq__a{padding:0 3.5rem 1.6rem 0;border:0}
.av-faq__a p{margin:0 0 .9em;color:rgba(255,255,255,.82);font-size:1rem;line-height:1.7}
.av-faq__a p:last-child{margin-bottom:0}
.av-faq__a strong{color:#fff}
/* Bez JS panel jest po prostu widoczny, wiec tresc nigdy nie znika. */
.av-faq--js .av-faq__panel{height:0;will-change:height}
@media (prefers-reduced-motion:reduce){
  .av-faq__item summary::after{transition:none}
}
@media (max-width:620px){
  .av-faq__item summary{gap:1rem}
  .av-faq__a{padding-right:0}
}

/* ---------- Kontakt ---------- */
.av-contact__in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,460px);gap:clamp(2rem,5vw,4rem);align-items:start}
.av-contact__list{border-top:var(--av-border-w) solid var(--av-line-dark);margin-top:.5rem}
.av-contact__list li{display:grid;grid-template-columns:120px 1fr;gap:1rem;padding:1rem 0;
border-bottom:var(--av-border-w) solid var(--av-line-dark);align-items:baseline}
.av-contact__k{font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--av-on-dark-soft)}
.av-contact__v{font-size:1.02rem;font-weight:600;color:var(--av-on-dark);text-decoration:none}
a.av-contact__v:hover{color:var(--av-accent)}
.av-contact__photo{margin-top:1.5rem}
.av-contact__photo img{width:100%;aspect-ratio:4/3;object-fit:cover}
.av-contact .av-card--form{background:var(--av-surface);color:var(--av-ink)}
.av-contact .av-card--form p,.av-contact .av-card--form .av-card__sub{color:var(--av-ink-soft)}

/* ---------- Tekst SEO ---------- */
.av-seotext__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:clamp(1.5rem,3vw,2.5rem)}
.av-seotext__grid h3{margin-bottom:.6rem}

/* ---------- Stopka ---------- */
.av-footer{background:var(--av-surface-dark);color:var(--av-on-dark-soft);
padding-block:clamp(3rem,5vw,4.5rem) 2rem;font-size:.9rem}
.av-footer__grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(auto-fit,minmax(160px,1fr));
gap:clamp(1.75rem,4vw,3rem);padding-bottom:2.5rem;border-bottom:var(--av-border-w) solid var(--av-line-dark)}
.av-footer__name{font-family:var(--av-font-head);font-weight:800;font-size:1.15rem;
color:var(--av-on-dark);display:block;margin-bottom:.75rem;letter-spacing:-.02em}
.av-footer__desc{max-width:46ch;line-height:1.6}
.av-footer__rating{display:flex;gap:.5rem;align-items:center;font-size:.85rem;margin:0}
.av-footer__h{font-size:.76rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
color:var(--av-on-dark);margin-bottom:1rem}
.av-footer__col li{margin-bottom:.55rem;line-height:1.5}
.av-footer__col a{text-decoration:none}
.av-footer__col a:hover{color:var(--av-accent)}
.av-footer__bar{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;
padding-top:1.75rem;font-size:.82rem}
.av-footer__bar p{margin:0}
.av-footer__legal{display:flex;gap:1.25rem;flex-wrap:wrap}
.av-footer__legal a{text-decoration:none}
.av-footer__legal a:hover{color:var(--av-accent)}
.av-footer__credits{color:var(--av-on-dark-soft);opacity:.7}

/* ---------- Sticky call bar (mobile) ---------- */
.av-callbar{display:none}
@media (max-width:900px){
.av-callbar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:120;
background:var(--av-surface-dark);border-top:var(--av-border-w) solid var(--av-line-dark);
/* Wysuwa sie z dolu z wyhamowaniem: 220 ms wspolnego --av-ease bylo tu zbyt
   nagle, belka wjezdzala skokiem w pole widzenia. */
transform:translateY(100%);
transition:transform .42s cubic-bezier(.22,.61,.36,1),opacity .42s ease;
opacity:0;will-change:transform}
.av-callbar.is-visible{transform:none;opacity:1}
@media (prefers-reduced-motion:reduce){
  .av-callbar{transition:none}
}
.av-callbar__btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;
min-height:60px;padding:.6rem .75rem;text-decoration:none;font-size:.76rem;font-weight:650;
letter-spacing:.04em;text-transform:uppercase;color:var(--av-on-dark)}
.av-callbar__btn strong{font-size:.95rem;letter-spacing:0;text-transform:none}
.av-callbar__btn--form{background:var(--av-accent);color:var(--av-on-accent)}
body{padding-bottom:60px}
}

/* ---------- Podstrony (polityka prywatnosci itp.) ---------- */
.av-page{padding-block:clamp(3rem,6vw,5rem);max-width:820px}
.av-page__title{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:1.5rem}
.av-page__actions{display:flex;gap:.85rem;flex-wrap:wrap;margin-top:2rem}
.av-prose h2{font-size:1.5rem;margin-top:2rem}
.av-prose h3{font-size:1.2rem;margin-top:1.5rem}
.av-prose ul,.av-prose ol{margin:0 0 1.15em 1.25rem}
.av-prose li{list-style:disc;margin-bottom:.4rem}
.av-prose ol li{list-style:decimal}

/* ---------- Breakpointy ---------- */
@media (max-width:1040px){
.av-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
.av-about,.av-process,.av-consult,.av-contact__in{grid-template-columns:1fr}
.av-process__intro{position:static}
.av-method__item{grid-template-columns:1fr}
.av-method__item:nth-child(even) .av-method__media{order:0}
}
@media (max-width:620px){
.av-grid--3,.av-grid--4,.av-about__cards{grid-template-columns:1fr}
.av-contact__list li{grid-template-columns:1fr;gap:.2rem}
.av-band__actions .av-btn{width:100%}
.av-steps__item{grid-template-columns:1fr;gap:.5rem}
.av-footer__bar{flex-direction:column}
}

/* Kotwice pod sticky navem, bez tego CTA #kontakt chowa naglowek pod paskiem */
[id]{scroll-margin-top:96px}
.av-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.av-burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.av-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* Mikro-dowód zaufania pod przyciskiem formularza */
.av-form__proof{display:flex;align-items:center;justify-content:center;gap:.5rem;
margin:.85rem 0 0;font-size:.82rem;font-weight:600;color:var(--av-ink-soft)}
.av-form__proof .av-stars{color:var(--av-accent);font-size:.9rem}

/* ---------- Partnerzy ---------- */
.av-partners__item{background:var(--av-surface);display:flex;flex-direction:column}
.av-partners__logo{display:flex;align-items:center;justify-content:center;min-height:104px;
padding:1.35rem 1.5rem;border-bottom:var(--av-border-w) solid var(--av-line);background:var(--av-surface)}
.av-partners__logo img{max-height:44px;width:auto;filter:grayscale(1);opacity:.72;
transition:opacity var(--av-ease),filter var(--av-ease)}
.av-partners__item:hover .av-partners__logo img{filter:none;opacity:1}
.av-partners__wordmark{font-weight:700;letter-spacing:.02em;color:var(--av-ink-soft)}
.av-partners__body{padding:clamp(1.25rem,2vw,1.65rem);display:flex;flex-direction:column;gap:.4rem;flex:1}
.av-partners__role{margin:0;font-size:.72rem;font-weight:700;letter-spacing:var(--av-tracking-eyebrow);
text-transform:uppercase;color:var(--av-ink-soft)}
.av-partners__text{margin:0;font-size:.88rem;line-height:1.6;color:var(--av-ink-soft)}
.av-partners__link{margin-top:auto;padding-top:.75rem;font-size:.82rem;font-weight:650;
color:var(--av-ink);text-decoration:none;border-bottom:2px solid var(--av-accent);align-self:flex-start}
.av-partners__link:hover{color:var(--av-accent-ink)}
.av-partners__note{margin:1.5rem 0 0;text-align:center;font-size:.84rem;color:var(--av-ink-soft)}

/* ---------- Profile spolecznosciowe w stopce ---------- */
.av-footer__social{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.15rem}
.av-footer__social a{display:inline-block;padding:.35rem .75rem;font-size:.78rem;font-weight:650;
letter-spacing:.03em;text-decoration:none;color:var(--av-on-dark);
border:var(--av-border-w) solid var(--av-line-dark);transition:all var(--av-ease)}
.av-footer__social a:hover{background:var(--av-accent);color:var(--av-on-accent);border-color:var(--av-accent)}


/* ---------- Slider (portfolio, partnerzy) ----------
   Track to scroll-snap: bez JS to zwykla przewijalna lista, z JS dochodza
   strzalki i kropki. Zadna tresc nie jest ukryta przed czytnikiem ekranu. */
.av-slider{position:relative}
.av-slider__head{display:flex;align-items:flex-end;justify-content:space-between;
gap:1.5rem;margin-bottom:clamp(1.5rem,3vw,2.25rem)}
/* Flex, nie grid: karty w portfolio maja rozne szerokosci, a grid-auto-columns
   wymusza jedna wartosc na wszystkie kolumny. Szerokosc MUSI byc sztywna
   (flex:0 0 X), inaczej karty zapadaja sie do zera przy 17 slajdach. */
/* Pasek przewijania schowany: nawigacje przejely strzalki i kropki pod trackiem,
   a systemowy suwak dokladal trzeci, niespojny element sterowania.
   Przewijanie gestem i kolkiem dziala dalej. */
.av-slider__track{display:flex;gap:clamp(1rem,2vw,1.5rem);
overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:0;
scrollbar-width:none;-ms-overflow-style:none}
.av-slider__track::-webkit-scrollbar{display:none}
.av-slider__track>*{scroll-snap-align:start;flex:0 0 var(--av-slide,300px)}
.av-slider__track:focus-visible{outline:2px solid var(--av-accent);outline-offset:4px}

.av-slider__foot{display:flex;align-items:center;justify-content:center;
gap:clamp(.75rem,2vw,1.5rem);margin-top:1.75rem}
.av-slider__nav{display:flex;align-items:center;gap:.5rem;flex-shrink:0}
.av-slider__btn{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;
background:var(--av-surface);color:var(--av-ink);cursor:pointer;
border:var(--av-border-w) solid var(--av-line);transition:all var(--av-ease)}
.av-slider__btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
.av-slider__btn:hover:not(:disabled){background:var(--av-accent);border-color:var(--av-accent);color:var(--av-on-accent)}
.av-slider__btn:disabled{opacity:.3;cursor:default}
.av-sec--dark .av-slider__btn,.av-sec--dark .av-slider__btn{background:transparent;color:var(--av-on-dark);border-color:var(--av-line-dark)}

.av-slider__dots{display:flex;justify-content:center;align-items:center;gap:.5rem;margin:0;flex-wrap:wrap}
.av-slider__dot{width:28px;height:4px;padding:0;cursor:pointer;background:var(--av-line);
border:0;transition:background var(--av-ease),width var(--av-ease)}
.av-slider__dot:hover{background:var(--av-accent-dark)}
.av-slider__dot.is-active{background:var(--av-accent);width:44px}
.av-slider:not(.is-live) .av-slider__foot{display:none}

/* Portfolio: karta sprzedanej nieruchomosci */
.av-sold__item{background:var(--av-surface);border:var(--av-border-w) solid var(--av-line);
display:flex;flex-direction:column;transition:border-color var(--av-ease)}
.av-sold__item:hover{border-color:var(--av-accent)}
.av-sold__media{position:relative;overflow:hidden;background:var(--av-surface-alt)}
.av-sold__media img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .5s ease}
.av-sold__item:hover .av-sold__media img{transform:scale(1.04)}
.av-sold__flag{position:absolute;top:0;left:0;padding:.4rem .85rem;
background:var(--av-accent);color:var(--av-on-accent);
font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.av-sold__body{padding:1.15rem 1.25rem;border-top:var(--av-border-w) solid var(--av-line)}
.av-sold__body .av-h4{margin:0 0 .3rem;font-size:.98rem}
.av-sold__meta{margin:0;font-size:.84rem;color:var(--av-ink-soft);font-weight:650}

/* Partnerzy w sliderze: karta ma pelna wysokosc traku */
.av-slider__track .av-partners__item{border:var(--av-border-w) solid var(--av-line);height:100%}

@media (max-width:700px){
.av-slider__head{flex-direction:column;align-items:flex-start;gap:1rem}
}

/* ---------- Przerywnik parallax ----------
   Sam obraz, bez tresci i bez welonu. Zdjecie stoi, strona plynie po nim.
   clip-path przycina dziecko z position:fixed do obszaru sekcji, dzieki czemu
   tlem jest prawdziwy <img> (AVIF/WebP + srcset), a nie background-image,
   ktorego zadna wtyczka obrazkowa nie przekonwertuje. */
.av-parallax{position:relative;height:40vh;min-height:280px;max-height:520px;
overflow:hidden;background:var(--av-surface-alt)}
.av-parallax__media{position:absolute;inset:0;overflow:hidden}
.av-parallax__media img{width:100%;height:100%;object-fit:cover;object-position:center}
@supports (clip-path:inset(0)){
  .av-parallax{clip-path:inset(0)}
  .av-parallax__media{position:fixed}
}
/* Na dotyku i przy redukcji ruchu zdjecie stoi w sekcji, nie w oknie:
   position:fixed w iOS Safari powoduje skoki przy chowaniu paska adresu. */
@media (hover:none),(prefers-reduced-motion:reduce){
  .av-parallax__media{position:absolute}
}

/* ---------- Kafelki liczb: ramka + duza zolta wartosc ---------- */
.av-stats__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--av-line-dark)}
.av-stats__item{background:var(--av-surface-dark);padding:clamp(1.5rem,2.6vw,2.15rem)}
.av-stats__item dt{font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:clamp(2rem,3.6vw,2.9rem);line-height:1;letter-spacing:-.03em;color:var(--av-accent);
overflow-wrap:anywhere}
.av-stats__item dd{margin:.6rem 0 0;font-size:.86rem;line-height:1.5;color:var(--av-on-dark-soft)}
@media (max-width:900px){.av-stats__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.av-stats__grid{grid-template-columns:1fr}}

/* ---------- Zdjecie w ramce z zoltym offsetem ---------- */
.av-frame{position:relative;margin:0;border:var(--av-border-w) solid var(--av-line)}
.av-frame::before{content:"";position:absolute;inset:-14px -14px auto auto;
width:58%;height:58%;border:2px solid var(--av-accent);z-index:-1;pointer-events:none}
.av-about__side,.av-consult__media,.av-contact__photo{isolation:isolate}

/* ---------- Prezentacja oferty (zdjecia, staging) ---------- */
/* Tekst dostaje mniej miejsca, zeby suwak przed/po mogl byc wiekszy:
   to on jest dowodem w tej sekcji, a nie akapit obok niego. */
.av-staging{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
gap:clamp(2rem,4vw,3.25rem);align-items:start}
.av-staging__figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
gap:1.5rem;margin:2rem 0 0;padding-top:1.75rem;border-top:var(--av-border-w) solid var(--av-line-dark)}
.av-staging__figures dt{font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:clamp(1.7rem,3vw,2.4rem);line-height:1;letter-spacing:-.03em;color:var(--av-accent)}
.av-staging__figures dd{margin:.45rem 0 0;font-size:.84rem;line-height:1.45;color:var(--av-on-dark-soft)}
.av-staging__media{margin:0;position:relative;border:var(--av-border-w) solid var(--av-line-dark)}
.av-staging__media img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.av-staging__media figcaption{padding:.9rem 1.1rem;font-size:.82rem;line-height:1.5;
color:var(--av-on-dark-soft);border-top:var(--av-border-w) solid var(--av-line-dark)}
@media (max-width:1040px){.av-staging{grid-template-columns:1fr}}


/* ---------- Porownanie: jedna siatka, wiersze wyrownane z konstrukcji ---------- */
.av-cmp{--av-cmp-cols:minmax(150px,.85fr) minmax(0,1.15fr) minmax(0,1.15fr);
margin-top:clamp(1.75rem,3vw,2.5rem);border:var(--av-border-w) solid var(--av-line)}
.av-cmp__thead,.av-cmp__row{display:grid;grid-template-columns:var(--av-cmp-cols);align-items:stretch}
.av-cmp__thead{background:var(--av-surface-dark);color:var(--av-on-dark)}
.av-cmp__th{display:flex;flex-direction:column;gap:.3rem;justify-content:flex-end;
padding:1.1rem 1.25rem;font-size:.95rem}
.av-cmp__th--crit{font-size:.72rem;font-weight:700;letter-spacing:var(--av-tracking-eyebrow);
text-transform:uppercase;color:var(--av-on-dark-soft)}
.av-cmp__th--win{background:var(--av-accent);color:var(--av-on-accent)}
.av-cmp__th strong{font-family:var(--av-font-head);font-size:1.05rem;font-weight:var(--av-head-weight);line-height:1.25}
.av-cmp__flag{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;opacity:.85}
.av-cmp__flag--muted{color:var(--av-on-dark-soft)}

.av-cmp__row+.av-cmp__row,.av-cmp__thead+.av-cmp__row{border-top:var(--av-border-w) solid var(--av-line)}
.av-cmp__row:nth-child(even){background:var(--av-surface-alt)}
.av-cmp__crit{padding:1rem 1.25rem;font-size:.82rem;font-weight:700;letter-spacing:.04em;
text-transform:uppercase;color:var(--av-ink-soft);display:flex;align-items:center}
.av-cmp__cell{display:flex;gap:.6rem;align-items:flex-start;padding:1rem 1.25rem;font-size:.94rem;line-height:1.5}
.av-cmp__cell--win{background:rgba(var(--av-accent-rgb),.09);font-weight:600;
box-shadow:inset 3px 0 0 var(--av-accent)}
.av-cmp__cell--lose{color:var(--av-ink-soft)}
.av-cmp__mark{flex:none;width:18px;height:18px;margin-top:.15rem;position:relative}
.av-cmp__mark--yes::before,.av-cmp__mark--yes::after,
.av-cmp__mark--no::before,.av-cmp__mark--no::after{content:"";position:absolute;background:currentColor}
.av-cmp__mark--yes{color:var(--av-success)}
.av-cmp__mark--yes::before{left:2px;top:9px;width:6px;height:2px;transform:rotate(45deg)}
.av-cmp__mark--yes::after{left:5px;top:6px;width:12px;height:2px;transform:rotate(-50deg)}
.av-cmp__mark--no{color:var(--av-error);opacity:.75}
.av-cmp__mark--no::before,.av-cmp__mark--no::after{left:2px;top:8px;width:14px;height:2px}
.av-cmp__mark--no::before{transform:rotate(45deg)}
.av-cmp__mark--no::after{transform:rotate(-45deg)}

@media (max-width:860px){
  .av-cmp__thead{display:none}
  .av-cmp__row{grid-template-columns:1fr}
  .av-cmp__crit{padding-bottom:.35rem;background:var(--av-surface-alt)}
  .av-cmp__row:nth-child(even){background:transparent}
  .av-cmp__cell--win{box-shadow:inset 3px 0 0 var(--av-accent)}
  .av-cmp__cell::before{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  align-self:center;flex:none;width:3.2rem;color:var(--av-ink-soft)}
  .av-cmp__cell--win::before{content:"Z NAMI";color:var(--av-ink-soft)}
  .av-cmp__cell--lose::before{content:"SAM"}
}

/* ---------- Portfolio: wstega zebata ----------
   Duze prostokaty biegna od lewej do prawej. Nieparzyste maja zdjecie u gory
   i opis pod spodem, parzyste odwrotnie: opis u gory, zdjecie pod nim.
   Dzieki stalej wysokosci sciezki zdjecie parzystej karty zaczyna sie dokladnie
   tam, gdzie konczy sie opis nieparzystej, wiec calosc zazebia sie w rytm. */
/* 38vw daje na 1440px trzy kadry, z ktorych trzeci jest ucinany krawedzia
   ekranu. To ucinanie jest celowe: mowi uzytkownikowi, ze wstega leci dalej. */
.av-slider--portfolio{--av-pf-media:380px;--av-pf-body:122px}
/* Naglowek portfolio siedzi blizej kadrow: domyslny odstep sekcji zostawial
   dziure, ktora rozbijala zwiazek miedzy tytulem a wstega. */
.av-slider--portfolio .av-slider__head{margin-bottom:clamp(.75rem,1.5vw,1.15rem)}
.av-slider--portfolio .av-slider__head .av-shead{margin-bottom:0}
.av-slider--portfolio .av-slider__track{
  align-items:stretch;
  height:calc(var(--av-pf-media) + var(--av-pf-body));
  gap:0;   /* zdjecia maja stykac sie bez przerw */
  /* Wstega ma biec od krawedzi do krawedzi, a nie konczyc sie na kontenerze.
     Naglowek sekcji zostaje w kolumnie tekstowej. */
  width:100vw;margin-left:calc(50% - 50vw);
  padding-inline:var(--av-pad-x);scroll-padding-inline:var(--av-pad-x)}
.av-slider--portfolio .av-sold__item{
  flex:0 0 clamp(320px,38vw,560px);
  display:flex;flex-direction:column;justify-content:flex-start;
  background:none;border:0;height:100%}
/* parzyste: opis nad zdjeciem. W column-reverse poczatek osi jest na dole,
   wiec flex-start dosuwa zawartosc do dolu sciezki. */
.av-slider--portfolio .av-sold__item:nth-child(even){flex-direction:column-reverse}

.av-slider--portfolio .av-sold__media{
  flex:none;height:var(--av-pf-media);border:0;outline:0;
  background:var(--av-surface-alt)}
.av-slider--portfolio .av-sold__media img{width:100%;height:100%;aspect-ratio:auto;object-fit:cover}
.av-slider--portfolio .av-sold__item:hover .av-sold__media img{transform:scale(1.03)}

/* Opis: miasto jako mala etykieta nad ulica. Plakietka SPRZEDANE jest juz
   na zdjeciu, wiec podpis nie powtarza tej informacji drugi raz. */
.av-slider--portfolio .av-sold__body{
  flex:none;height:var(--av-pf-body);border:0;
  padding:.95rem 1rem 0;display:flex;flex-direction:column-reverse;
  justify-content:flex-end;align-items:center;text-align:center;gap:.35rem;
  border-top:2px solid var(--av-accent)}
.av-slider--portfolio .av-sold__item:nth-child(even) .av-sold__body{
  padding:0 1rem .95rem;border-top:0;border-bottom:2px solid var(--av-accent);
  flex-direction:column;justify-content:flex-end}
.av-slider--portfolio .av-sold__body .av-h4{
  margin:0;font-size:1.15rem;line-height:1.2;letter-spacing:-.015em}
.av-slider--portfolio .av-sold__meta{
  margin:0;font-size:.7rem;font-weight:700;letter-spacing:var(--av-tracking-eyebrow);
  text-transform:uppercase;color:var(--av-ink-soft)}

@media (max-width:700px){
  /* Na telefonie jeden kadr na ekran, na cala szerokosc: przy 78vw sasiednie
     zdjecie zaglada zza krawedzi i rozprasza. */
  .av-slider--portfolio{--av-pf-media:62vw;--av-pf-body:104px}
  .av-slider--portfolio .av-slider__track{padding-inline:0;scroll-padding-inline:0}
  .av-slider--portfolio .av-sold__item{flex-basis:100vw}
  .av-slider--portfolio .av-sold__body{padding-inline:var(--av-pad-x)}
  /* Na waskim ekranie zebate przesuniecie tylko marnuje wysokosc. */
  .av-slider--portfolio .av-sold__item:nth-child(even){flex-direction:column}
  .av-slider--portfolio .av-sold__item:nth-child(even) .av-sold__body{
    padding:1rem 0 0;border-top:2px solid var(--av-accent);border-bottom:0;justify-content:flex-start}
}

/* Plakietka siada na tej krawedzi kadru, ktora styka sie z podpisem:
   przy zdjeciu u gory schodzi na dol, przy zdjeciu u dolu wraca na gore.
   Dzieki temu plakietka i podpis czytaja sie jako jeden blok. */
.av-slider--portfolio .av-sold__flag{
  left:50%;transform:translateX(-50%);top:auto;bottom:0;
  padding:.45rem 1.1rem;letter-spacing:.14em}
.av-slider--portfolio .av-sold__item:nth-child(even) .av-sold__flag{
  top:0;bottom:auto}
@media (max-width:700px){
  .av-slider--portfolio .av-sold__item:nth-child(even) .av-sold__flag{top:auto;bottom:0}
}
.av-slider--portfolio .av-sold__media img{transition:transform .5s ease}

/* ---------- Zdjecia towarzyszace dluzszemu tekstowi ----------
   Kolumna ze zdjeciem jest krotsza od kolumny tekstu i zostawialaby pod soba
   puste pole. Sticky sprawia, ze zdjecie towarzyszy czytaniu zamiast wisiec
   u gory. Offset liczony z realnej wysokosci nawigacji, bo ona jest sticky. */


/* ---------- Plywajaca belka CTA ---------- */
.av-ctabar{position:fixed;left:0;right:0;bottom:0;z-index:110;
background:var(--av-surface-dark);color:var(--av-on-dark);
border-top:2px solid var(--av-accent);
transform:translateY(100%);transition:transform var(--av-ease)}
.av-ctabar.is-visible{transform:translateY(0)}
.av-ctabar__in{display:flex;align-items:center;justify-content:space-between;
gap:1.5rem;padding-block:.85rem;flex-wrap:wrap}
.av-ctabar__msg{margin:0;font-family:var(--av-font-head);font-weight:600;
font-size:1.02rem;line-height:1.3}
.av-ctabar__actions{display:flex;gap:.75rem;flex-shrink:0}
.av-ctabar .av-btn{min-height:44px;padding:.6rem 1.2rem;font-size:.9rem}
.av-ctabar .av-btn--ghost{color:var(--av-on-dark);border-color:rgba(255,255,255,.4)}
/* Przycisk tylko z ikona, w zieleni WhatsAppa: znak rozpoznawalny bez podpisu.
   Selektor musi byc podwojny, bo ".av-ctabar .av-btn" wyzej ustawia padding
   1.2rem i przy pojedynczej klasie zostawalo na ikone 5 px.
   Zielen na tle belki ma 8.91:1, wiec obrys przycisku jest czytelny; bialy
   znak w srodku to lockup marki. */
.av-ctabar .av-ctabar__wa{display:inline-flex;align-items:center;justify-content:center;
width:48px;min-height:48px;padding:0;flex:none;
background:#25d366;border-color:#25d366;color:#fff}
.av-ctabar .av-ctabar__wa:hover{background:#1ebe5d;border-color:#1ebe5d;color:#fff}
.av-ctabar .av-ctabar__wa svg{width:26px;height:26px}
.av-ctabar .av-btn--ghost:hover{background:var(--av-on-dark);color:var(--av-ink)}
/* Na mobile rolę belki pełni av-callbar, dwa paski na raz zjadłyby ekran. */
@media (max-width:900px){.av-ctabar{display:none}}
@media (prefers-reduced-motion:reduce){.av-ctabar{transition:none}}

/* ---------- Kroki procesu ze zdjeciem ---------- */
.av-steps__media{overflow:hidden;background:var(--av-surface-alt)}
.av-steps__media img{width:100%;height:100%;min-height:200px;object-fit:cover;display:block;
transition:transform .5s ease}
.av-steps__item:hover .av-steps__media img{transform:scale(1.03)}
.av-steps__body{padding:clamp(1.25rem,2.5vw,1.9rem) clamp(1.25rem,2.5vw,1.9rem) clamp(1.25rem,2.5vw,1.9rem) 0}
.av-steps__body p{margin:0;color:var(--av-ink-soft);line-height:1.6}
.av-steps__body .av-h3{margin-bottom:.5rem}
@media (max-width:820px){
  .av-steps__item{grid-template-columns:1fr}
  .av-steps__media img{min-height:180px;max-height:240px}
  .av-steps__body{padding:1.25rem}
}


/* ---------- Sekcja na zdjeciu (liczby, FAQ) ----------
   Zdjecie jako <img>, nie background-image: tla CSS nie przechodza przez
   konwersje do AVIF/WebP w zadnej metodzie Imagify. */
.av-sec--photo{position:relative;isolation:isolate;
background:var(--av-surface-dark);color:var(--av-on-dark)}
.av-sec__bg{position:absolute;inset:0;z-index:-2;overflow:hidden}
.av-sec__bg img{width:100%;height:100%;object-fit:cover;object-position:center}
.av-sec--photo::after{content:"";position:absolute;inset:0;z-index:-1;
background:rgba(10,12,13,var(--av-scrim,.86))}
.av-sec--photo .av-h2,.av-sec--photo .av-h3{color:var(--av-on-dark)}
.av-sec--photo .av-lead{color:var(--av-on-dark-soft)}
.av-sec--photo .av-eyebrow{color:var(--av-accent)}

/* Kafelki liczb na zdjeciu */
.av-sec--photo .av-stats__grid{background:transparent;gap:clamp(1rem,2vw,1.5rem)}
.av-sec--photo .av-stats__item{background:rgba(255,255,255,.05);
border:var(--av-border-w) solid rgba(255,255,255,.14);
padding:clamp(1.35rem,2.4vw,1.9rem);display:flex;flex-direction:column;gap:.7rem}
.av-stats__top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.av-stats__value{margin:0;font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:clamp(1.9rem,3.4vw,2.7rem);line-height:1;letter-spacing:-.03em;color:var(--av-accent)}
.av-stats__icon{flex:none;display:grid;place-items:center;width:40px;height:40px;
border:var(--av-border-w) solid rgba(254,204,0,.45);color:var(--av-accent)}
.av-stats__icon svg{width:20px;height:20px}
.av-stats__label{margin:0;font-size:.88rem;line-height:1.5;color:var(--av-on-dark-soft)}


/* Formularz kontaktowy jedzie z uzytkownikiem przy dlugiej liscie danych obok */
@media (min-width:1041px){
  .av-contact__form{position:sticky;top:calc(var(--av-nav-h,80px) + 1.5rem)}
}

/* ---------- Plakietki social na zdjeciu w kontakcie ---------- */
.av-contact__photo{position:relative}
.av-contact__social{position:absolute;right:.85rem;bottom:.85rem;z-index:2;
display:flex;gap:.5rem;margin:0;padding:0;list-style:none}
.av-contact__social a{display:grid;place-items:center;width:40px;height:40px;
background:rgba(10,12,13,.72);color:#fff;
border:var(--av-border-w) solid rgba(255,255,255,.28);
transition:background var(--av-ease),color var(--av-ease),border-color var(--av-ease)}
.av-contact__social a:hover{background:var(--av-accent);color:var(--av-on-accent);border-color:var(--av-accent)}
.av-contact__social svg{width:19px;height:19px}

/* Zamkniecie belki: delikatne, w prawym rogu, nie konkuruje z CTA */
.av-ctabar__in{position:relative;padding-right:2.5rem}
.av-ctabar__close{position:absolute;right:0;top:50%;transform:translateY(-50%);
display:grid;place-items:center;width:32px;height:32px;padding:0;cursor:pointer;
background:none;border:0;color:var(--av-on-dark-soft);opacity:.65;
transition:opacity var(--av-ease),color var(--av-ease)}
.av-ctabar__close:hover{opacity:1;color:var(--av-accent)}
.av-ctabar__close svg{width:17px;height:17px}

/* ---------- Tasma logotypow partnerow ----------
   Jeden tor, lista w srodku dwa razy, przesuniecie o -50% szerokosci toru.
   Przy -50% druga kopia trafia dokladnie tam, gdzie stala pierwsza, wiec
   petla jest bezszwowa niezaleznie od liczby logotypow i szerokosci okna. */
.av-marquee{padding-block:clamp(1rem,2vw,1.5rem);
border-block:var(--av-border-w) solid var(--av-line);background:var(--av-surface);
overflow-x:clip}
.av-marquee__title{display:none;margin:0 0 1.5rem;text-align:center;font-size:.72rem;font-weight:700;
letter-spacing:var(--av-tracking-eyebrow);text-transform:uppercase;color:var(--av-ink-soft)}
.av-marquee__viewport{overflow-x:clip;overflow-y:visible;
-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.av-marquee__track{display:flex;align-items:center;width:max-content;
margin:0;padding:0;list-style:none;gap:clamp(2.5rem,5vw,4.5rem);
animation:av-marquee 40s linear infinite}
/* Tasma jedzie caly czas: zadnego zatrzymywania ani reakcji na kursor. */
.av-marquee__track li{flex:0 0 auto;display:flex;align-items:center;position:relative}
/* Wszystkie pliki logo maja identyczne plotno 640x180 z wyrownana masa
   optyczna znaku, wiec sama wysokosc daje juz rowny rzad. max-width jest
   celowo zdjety: wczesniej dusil szerokie wordmarki do polowy wysokosci. */
.av-marquee__track img{height:calc(64px * var(--av-logo-scale,1));width:auto;max-width:none;object-fit:contain;
/* Domyslnie szarosc, kolor dopiero pod kursorem: rzad logotypow ma byc tlem
   dla tresci, a nie piecioma konkurencyjnymi paletami tuz pod hero. */
filter:grayscale(1);opacity:.62;
transition:filter var(--av-ease),opacity var(--av-ease)}
.av-marquee__track li:hover img,
.av-marquee__track li:focus-within img{filter:none;opacity:1}
@media (prefers-reduced-motion:reduce){
  .av-marquee__track img{transition:none}
}
.av-marquee__wordmark{font-family:var(--av-font-head);font-weight:700;
letter-spacing:.02em;color:var(--av-ink-soft);white-space:nowrap}
@keyframes av-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .av-marquee__track{animation:none}
  .av-marquee__viewport{overflow-x:auto;scrollbar-width:none}
  .av-marquee__viewport::-webkit-scrollbar{display:none}
}

/* ---------- Ikona w karcie gwarancji ---------- */
/* Ikona w gwarancjach: wieksza i z wypelnieniem, zeby czytala sie jako znak,
   a nie drobna ramka obok tekstu. */
.av-guarantee__item .av-stats__icon{width:56px;height:56px;margin-bottom:1.1rem;
background:var(--av-surface-dark);border-color:var(--av-surface-dark);color:var(--av-accent)}
.av-guarantee__item .av-stats__icon svg{width:28px;height:28px}
.av-guarantee__item{transition:border-color var(--av-ease)}
.av-guarantee__item:hover{border-color:var(--av-accent)}

/* ---------- Proces: karty sklejaja sie w stos (wzorzec z ROW) ----------
   Kazda karta jest sticky z offsetem rosnacym o 18px na pozycje, wiec przy
   przewijaniu nasuwaja sie na siebie jak harmonijka. Zero JavaScriptu. */
@media (min-width:1041px){
  .av-process__intro{position:sticky;top:calc(var(--av-nav-h,80px) + 1.5rem);align-self:start}
  .av-steps__item{position:sticky;
  top:calc(var(--av-nav-h,80px) + 1.5rem + var(--i,0) * 18px)}
}
@media (prefers-reduced-motion:reduce){
  .av-steps__item{position:static}
}

/* ---------- WhatsApp wychodzacy ze zdjecia w kontakcie ---------- */
/* Na desktopie przycisk nachodzi na dolna krawedz zdjecia: ma czytac sie jak
   zaproszenie do rozmowy, a nie kolejna pozycja listy. Plakietki social siedza
   w przeciwleglym rogu, wiec sie nie zderzaja. Zdjecie potrzebuje prześwitu
   pod soba, inaczej przycisk zaslania pierwszy wiersz listy kontaktowej. */
.av-contact__photo{overflow:visible;margin-bottom:3rem}
.av-contact__wa{position:absolute;left:1.15rem;bottom:-1.5rem;z-index:3;
display:inline-flex;align-items:center;gap:.5rem;
min-height:46px;padding:.65rem 1.15rem;font-size:.9rem;
box-shadow:0 10px 24px rgba(10,12,13,.35)}
.av-contact__wa svg{width:18px;height:18px;flex:none}
@media (max-width:560px){
  /* Na telefonie oba elementy wchodza w normalny przeplyw pod zdjeciem:
     przycisk na pelna szerokosc nachodzil na plakietki przyklejone do rogu. */
  .av-contact__photo{display:flex;flex-direction:column;gap:.85rem;margin-bottom:0}
  .av-contact__photo img{order:0}
  .av-contact__social{position:static;order:1;justify-content:center;margin:.85rem 0 0;gap:.65rem}
  /* Poza zdjeciem plakietki nie konkuruja juz z fotografia, wiec moga byc
     wieksze: na dotyk 48 px to wygodny cel. */
  .av-contact__social a{background:rgba(255,255,255,.08);width:48px;height:48px}
  .av-contact__social svg{width:23px;height:23px}
  .av-contact__wa{position:static;order:2;width:100%;justify-content:center;
  margin:0;box-shadow:none}
  /* Ramka nalezy do zdjecia, nie do calej kolumny. Gdy plakietki i przycisk
     wchodza w przeplyw, obramowany <figure> rosnie razem z nimi i wyglada,
     jakby przyciski wyjezdzaly ze zdjecia. Dlatego na mobile ramke przejmuje
     sam obrazek, a ozdobny naroznik znika: nie ma juz do czego przylegac. */
  .av-contact__photo{border:0}
  .av-contact__photo::before{display:none}
  .av-contact__photo img{border:var(--av-border-w) solid var(--av-line-dark)}
}

/* ---------- Suwak przed/po (home staging) ---------- */
.av-ba{margin:0}
.av-ba__frame{position:relative;overflow:hidden;user-select:none;
border:var(--av-border-w) solid var(--av-line-dark);background:var(--av-surface-dark)}
.av-ba__after,.av-ba__before{display:block}
.av-ba__after img,.av-ba__before img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block}
/* Warstwa "przed" lezy na "po" i jest przycinana szerokoscia. Bez JS ma 50%. */
.av-ba__before{position:absolute;inset:0;width:50%;overflow:hidden}
.av-ba__before img{width:auto;height:100%;max-width:none}
.av-ba__frame{--av-ba-w:100%}
.av-ba__label{position:absolute;top:.85rem;padding:.35rem .8rem;
font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
background:rgba(10,12,13,.82);color:#fff}
.av-ba__label--before{left:.85rem}
.av-ba__label--after{right:.85rem;background:var(--av-accent);color:var(--av-on-accent)}
.av-ba__handle{position:absolute;top:0;bottom:0;left:50%;width:2px;
background:var(--av-accent);transform:translateX(-1px);pointer-events:none}
.av-ba__grip{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
display:grid;place-items:center;width:44px;height:44px;
background:var(--av-accent);color:var(--av-on-accent);
box-shadow:0 4px 16px rgba(10,12,13,.4)}
.av-ba__grip svg{width:20px;height:20px}
/* Suwak lezy na calym kadrze i jest niewidoczny: obsluge wizualna przejmuje uchwyt. */
.av-ba__range{position:absolute;inset:0;width:100%;height:100%;margin:0;
opacity:0;cursor:ew-resize;appearance:none;background:none}
.av-ba__range:focus-visible{opacity:1;outline:3px solid var(--av-accent);outline-offset:-3px}
.av-ba:not(.is-live) .av-ba__handle{display:none}
.av-ba__hint{margin:.9rem 0 0;font-size:.82rem;color:var(--av-on-dark-soft)}

/* Numer w kolumnie procesu: sam z siebie wyglada jak przypadkowa liczba,
   wiec dostaje etykiete i wyraznie czyta sie jako druga sciezka kontaktu. */
.av-process__tel{display:flex;flex-direction:column;gap:.15rem;margin-top:1.5rem;
padding-top:1.25rem;border-top:var(--av-border-w) solid var(--av-line)}
.av-process__tel-label{font-size:.72rem;font-weight:700;
letter-spacing:var(--av-tracking-eyebrow);text-transform:uppercase;color:var(--av-ink-soft)}
.av-process__tel a{font-family:var(--av-font-head);font-weight:700;
font-size:1.3rem;letter-spacing:-.01em;text-decoration:none;color:var(--av-ink)}
.av-process__tel a:hover{color:var(--av-accent-ink)}

/* CTA na przerywniku parallax: pojawia sie tylko tam, gdzie config je poda,
   wiec nie kazdy divider zamienia sie w kolejne wezwanie do dzialania. */
.av-parallax--cta{display:grid;place-items:center}
.av-parallax--cta::before{content:"";position:absolute;inset:0;z-index:1;
background:linear-gradient(rgba(10,12,13,.28),rgba(10,12,13,.62))}
.av-parallax__cta{position:relative;z-index:2;text-align:center;
padding-inline:var(--av-pad-x);max-width:44rem}
.av-parallax__cta p{margin:0 0 1.25rem;font-family:var(--av-font-head);
font-weight:var(--av-head-weight);line-height:1.2;letter-spacing:-.02em;
font-size:clamp(1.35rem,3vw,2.15rem);color:#fff;text-shadow:0 2px 16px rgba(10,12,13,.6)}

/* ---------- Dlaczego my: zdjecie agenta + kafelki 2 w rzedzie ----------
   Uklad z metrohouse-row. Zdjecie jest przyklejone, bo kolumna zalet jest
   od niego dluzsza i inaczej zostawialaby pod nim puste pole. */
.av-why{display:grid;gap:1px;background:var(--av-line-dark);
grid-template-columns:repeat(3,minmax(0,1fr))}
.av-why--photo{background:none;gap:clamp(1.75rem,3.5vw,3rem);
grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start}
.av-why__media{position:relative;margin:0;isolation:isolate;
border:var(--av-border-w) solid var(--av-line-dark)}
/* 4:5 zamiast 3:4: przy 3:4 figura miala 736px, czyli tyle co cale okno po
   odjeciu nawigacji, wiec przyklejenie nie mialo czego przewijac. */
.av-why__media img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block}
/* Zolta ramka offsetowa: ten sam akcent, co przy zdjeciu w sekcji o nas. */
.av-why__media::before{content:"";position:absolute;inset:auto auto -14px -14px;
width:58%;height:42%;border:2px solid var(--av-accent);z-index:-1;pointer-events:none}
.av-why__media figcaption{padding:1.15rem 1.25rem;background:var(--av-surface-dark-alt);
border-top:var(--av-border-w) solid var(--av-line-dark)}
.av-why__media blockquote{margin:0;font-size:.95rem;line-height:1.6;color:var(--av-on-dark)}
.av-why__media cite{display:block;margin-top:.6rem;font-style:normal;font-size:.76rem;
font-weight:700;letter-spacing:var(--av-tracking-eyebrow);text-transform:uppercase;color:var(--av-accent)}

.av-why__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
gap:1px;background:var(--av-line-dark);margin:0;padding:0;list-style:none}
.av-why__item{background:var(--av-surface-dark);position:relative;
padding:clamp(1.35rem,2.4vw,1.9rem);display:flex;flex-direction:column;gap:.45rem}
.av-why__num{font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:.85rem;letter-spacing:.1em;color:var(--av-accent)}
.av-why__item .av-h4{margin:0;color:var(--av-on-dark)}
.av-why__item p{margin:0;font-size:.9rem;line-height:1.6;color:var(--av-on-dark-soft)}
.av-why__badge{align-self:flex-start;margin-top:auto;padding-top:.6rem;
font-size:.68rem;font-weight:700;letter-spacing:var(--av-tracking-eyebrow);
text-transform:uppercase;color:var(--av-accent)}


@media (max-width:1040px){
  .av-why,.av-why--photo{grid-template-columns:1fr}
  .av-why__media{position:relative;max-width:420px}
}
@media (max-width:620px){
  .av-why__grid{grid-template-columns:1fr}
}

/* Kontakt obok CTA na przerywniku */
.av-parallax__cta{max-width:52rem}
.av-parallax__actions{display:flex;align-items:center;justify-content:center;
gap:clamp(1rem,3vw,2.25rem);flex-wrap:wrap}
/* Telefon i mail jeden pod drugim, ikona po lewej: pionowy uklad czyta sie
   jak wizytowka, a nie jak dwa przypadkowe linki obok przycisku. */
.av-parallax__contact{display:grid;gap:.55rem;justify-items:start;
margin:0;padding:0;list-style:none;text-align:left}
.av-parallax__contact a{display:inline-flex;align-items:center;gap:.6rem;
font-family:var(--av-font-head);font-weight:650;font-size:1.02rem;
color:#fff;text-decoration:none;transition:color var(--av-ease)}
.av-parallax__contact svg{width:19px;height:19px;flex:none;color:var(--av-accent)}
.av-parallax__contact a span{border-bottom:2px solid rgba(254,204,0,.45);padding-bottom:.12rem;
transition:border-color var(--av-ease)}
.av-parallax__contact a:hover{color:var(--av-accent)}
.av-parallax__contact a:hover span{border-color:var(--av-accent)}
@media (max-width:620px){
  .av-parallax__actions{flex-direction:column-reverse}
  .av-parallax__contact{justify-items:center;text-align:center}
}

/* ---------- Konsultacja: dociagnieta do jezyka reszty strony ---------- */
/* Plakietka nachodzi na prawa krawedz zdjecia, po stronie tekstu: prowadzi
   wzrok z fotografii do tresci, zamiast wisiec w lewym rogu. */
.av-consult__badge{position:absolute;right:-1.25rem;bottom:1.5rem;z-index:2;
display:inline-flex;align-items:center;gap:.65rem;
background:var(--av-accent);color:var(--av-on-accent);
padding:.7rem 1.2rem;font-family:var(--av-font-head);font-size:.88rem;font-weight:700;
line-height:1.2;letter-spacing:.01em;box-shadow:0 10px 26px rgba(10,12,13,.4)}
.av-consult__badge::before{content:"";flex:none;width:9px;height:9px;
background:var(--av-on-accent)}
@media (max-width:1040px){
  .av-consult__badge{right:auto;left:1.15rem;bottom:-1.1rem}
}
/* Korzysci jako numerowana lista: to jest agenda spotkania, wiec kolejnosc
   niesie znaczenie, a numer czyta sie lepiej niz kolejny ptaszek. */
.av-consult__gains{display:grid;gap:1px;background:var(--av-line-dark);
margin:1.75rem 0 0;padding:0;list-style:none;
border-block:var(--av-border-w) solid var(--av-line-dark)}
.av-consult__gains li{display:grid;grid-template-columns:auto 1fr;gap:1rem;
align-items:baseline;background:var(--av-surface-dark);
padding:.95rem .25rem;color:var(--av-on-dark);font-size:.97rem;line-height:1.55}
.av-consult__gain-num{font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:.82rem;letter-spacing:.1em;color:var(--av-accent)}
.av-consult__media{position:relative;margin:0 0 2.25rem;isolation:isolate;overflow:visible;
border:var(--av-border-w) solid var(--av-line-dark)}
.av-consult__media::before{content:"";position:absolute;inset:-14px -14px auto auto;
width:56%;height:40%;border:2px solid var(--av-accent);z-index:-1;pointer-events:none}
.av-consult .av-sec__actions{margin-top:1.9rem}

/* FAQ na zdjeciu: karty zostaja kryjace, wiec czytelnosc nie zalezy od kadru. */

/* ---------- Stopka na telefonie ----------
   Kolumny obok siebie na waskim ekranie daja cztery drabinki po dwa slowa.
   Na mobile ustawiamy je jedna pod druga i centrujemy, zeby czytalo sie
   jak podpis, a nie jak rozsypana tabela. */
@media (max-width:700px){
  .av-footer__grid{grid-template-columns:1fr;gap:2rem;text-align:center}
  .av-footer__brand{align-items:center}
  /* Logo jest obrazkiem, wiec text-align:center go nie dotyczy. */
  .av-footer__logo{margin-inline:auto}
  .av-footer__desc{margin-inline:auto;max-width:46ch}
  .av-footer__social{justify-content:center}
  .av-footer__col ul{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem 1.15rem}
  .av-footer__col li{margin:0}
  .av-footer__h{margin-bottom:.75rem}
  .av-footer__bar{flex-direction:column;align-items:center;gap:.75rem;text-align:center}
  .av-footer__legal{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem 1rem}
}

/* ---------- Akcent w tresci ----------
   <span class="acc"> wyroznia kluczowa frazę w zbitym akapicie. Kolor dobrany
   pod tlo: na jasnym idzie ciemniejszy wariant zoltego (5,94:1), na ciemnym
   czysty akcent marki (11,66:1). Samo pogrubienie ginie w dlugim tekscie. */
/* Zolty #fecc00 ma na bialym 1,52:1, wiec nie moze byc kolorem tekstu.
   Zamiast barwic litery na ciemne zloto, zostawiamy je czytelne i podkreslamy
   czystym kolorem marki. Akcent jest widoczny, tekst nadal spelnia WCAG. */
.acc{color:var(--av-ink);font-weight:650;
box-shadow:inset 0 -.42em 0 rgba(var(--av-accent-rgb),.35)}
.av-sec--dark .acc,.av-sec--photo .acc,.av-parallax .acc,
.av-hero--bg .acc,.av-footer .acc,.av-exit .acc{color:var(--av-accent);box-shadow:none}
.av-prose .acc,.av-lead .acc{font-weight:650}

/* Dane kontaktowe w kolumnie procesu */
.av-process__contact{display:grid;gap:.7rem;margin:1.5rem 0 0;padding-top:1.35rem;
list-style:none;border-top:var(--av-border-w) solid var(--av-line)}
.av-process__contact li{display:grid;grid-template-columns:auto 1fr;gap:.8rem;align-items:center}
/* Czysty zolty na bialym ma 1,52:1, czyli ponizej progu 3:1 dla elementow
   graficznych. Ikona dostaje wiec ciemna podkladke: kolor marki zostaje
   dokladnie taki, jaki ma byc, a kontrast rosnie do 11,66:1. */
.av-process__contact li::before{content:"";grid-row:1;grid-column:1;
width:34px;height:34px;background:var(--av-surface-dark)}
.av-process__contact svg{grid-row:1;grid-column:1;width:17px;height:17px;
place-self:center;color:var(--av-accent)}
.av-process__contact a,.av-process__contact span{font-size:.94rem;line-height:1.45;
color:var(--av-ink);text-decoration:none}
.av-process__contact a:hover{color:var(--av-accent-ink);text-decoration:underline}

/* ---------- Przyklejone zdjecia w sekcjach z dluzszym tekstem ----------
   CELOWO na samym koncu pliku. Reguly bazowe tych elementow ustawiaja
   position:relative dla ramek offsetowych; przy tej samej specyficznosci
   wygrywa deklaracja pozniejsza, wiec sticky musi stac jako ostatnie.
   Sticky sam ustanawia kontekst pozycjonowania, wiec ::before dziala dalej. */
@media (min-width:1041px){
  .av-about__side,
  .av-why__media,
  .av-consult__media{position:sticky;top:calc(var(--av-nav-h,80px) + 1.5rem)}
}

/* ---------- Popup wyjscia ---------- */
.av-exit{position:fixed;inset:0;z-index:200;display:grid;place-items:center;
padding:var(--av-pad-x)}
/* KRYTYCZNE: [hidden] i .av-exit maja te sama specyficznosc, wiec display:grid
   z reguly klasowej wygrywal z domyslnym display:none. Popup zostawal wtedy
   nad cala strona jako przezroczysta warstwa i przechwytywal wszystkie klikniecia.
   Ta deklaracja musi tu byc. */
.av-exit[hidden]{display:none}
.av-exit__overlay{position:absolute;inset:0;background:rgba(8,10,11,.72);
opacity:0;transition:opacity .28s var(--av-ease)}
.av-exit__dialog{position:relative;display:grid;
grid-template-columns:minmax(0,320px) minmax(0,1fr);
width:min(880px,100%);max-height:90svh;overflow:auto;
background:var(--av-surface-dark);color:var(--av-on-dark);
border-top:3px solid var(--av-accent);
box-shadow:0 30px 80px rgba(8,10,11,.55);
opacity:0;transform:translateY(14px) scale(.985);
transition:opacity .3s var(--av-ease),transform .3s var(--av-ease)}
.av-exit.is-open .av-exit__overlay{opacity:1}
.av-exit.is-open .av-exit__dialog{opacity:1;transform:none}
.av-exit__dialog:focus{outline:none}

/* Kolumna boczna: zdjecie zabiera cala wolna wysokosc, a plakietka i kontakt
   tylko tyle, ile potrzebuja. Wysokosc dyktuje formularz w drugiej kolumnie,
   wiec zdjecie samo dopasowuje sie do okna zamiast stac na sztywnej wartosci. */
.av-exit__aside{position:relative;display:flex;flex-direction:column;
background:var(--av-surface-dark-alt)}
/* Zdjecie i plakietka ida od krawedzi do krawedzi kolumny; wlasny odstep
   dostaje dopiero lista kontaktowa. Ramka i padding wokol zdjecia robily
   z niego obrazek w obrazku. */
.av-exit__photo{flex:1 1 auto;min-height:170px;margin:0;overflow:hidden}
.av-exit__photo img{width:100%;height:100%;min-height:170px;object-fit:cover;
object-position:var(--av-exit-photo-pos,center 18%);display:block}

/* Plakietka jako pelny akcent, nie sam zolty tekst: na tej kolumnie ma byc
   jedynym mocnym punktem i prowadzic wzrok do danych kontaktowych. */
.av-exit__badge{flex:none;display:flex;align-items:center;gap:.5rem;margin:0;
padding:.7rem clamp(1rem,2vw,1.35rem);background:var(--av-accent);color:var(--av-on-accent);
font-size:.72rem;font-weight:800;line-height:1.25;
letter-spacing:var(--av-tracking-eyebrow);text-transform:uppercase}
.av-exit__badge svg{flex:none;width:16px;height:16px}

.av-exit__contact{flex:none;display:grid;gap:.45rem;list-style:none;
margin:0;padding:clamp(1rem,2vw,1.35rem)}
.av-exit__who{font-family:var(--av-font-head);font-weight:700;font-size:1rem;
color:var(--av-on-dark);margin-bottom:.1rem}
.av-exit__contact a{display:flex;align-items:center;gap:.55rem;
font-size:.92rem;color:var(--av-on-dark);text-decoration:none;
transition:color var(--av-ease)}
.av-exit__contact a svg{flex:none;width:16px;height:16px;color:var(--av-accent);
transition:color var(--av-ease)}
.av-exit__contact a:hover{color:var(--av-accent)}
.av-exit__contact a span{min-width:0;overflow-wrap:anywhere}

.av-exit__body{padding:clamp(1.5rem,3vw,2.25rem)}
.av-exit__title{font-family:var(--av-font-head);font-weight:var(--av-head-weight);
font-size:clamp(1.35rem,2.4vw,1.85rem);line-height:1.2;letter-spacing:-.02em;
margin:0 0 .6rem;color:var(--av-on-dark)}
.av-exit__text{margin:0 0 1.25rem;font-size:.95rem;line-height:1.6;color:var(--av-on-dark-soft)}
.av-exit__body .av-field__label{color:var(--av-on-dark-soft)}
.av-exit__body .av-field input{background:rgba(255,255,255,.06);
border-color:rgba(255,255,255,.34);color:#fff}
.av-exit__body .av-field input::placeholder{color:rgba(255,255,255,.55)}
.av-exit__body .av-consent,.av-exit__body .av-form__note{color:var(--av-on-dark-soft)}
.av-exit__body .av-consent a,.av-exit__body .av-form__note a{color:var(--av-accent)}

.av-exit__close{position:absolute;right:.6rem;top:.6rem;z-index:2;
display:grid;place-items:center;width:38px;height:38px;padding:0;cursor:pointer;
background:rgba(8,10,11,.55);border:0;color:#fff;
transition:background var(--av-ease),color var(--av-ease)}
.av-exit__close:hover{background:var(--av-accent);color:var(--av-on-accent)}
.av-exit__close svg{width:18px;height:18px}

@media (max-width:760px){
  .av-exit__dialog{grid-template-columns:1fr}
  .av-exit__aside{display:none}
}
@media (prefers-reduced-motion:reduce){
  .av-exit__overlay,.av-exit__dialog{transition:none}
}

/* ---------- Belka partnera (logo + rola w transakcji) ----------
   Stoi tuz nad FAQ: jasny, spokojny pas miedzy blokiem gwarancji a ciemna
   sekcja pytan. Bez przycisku, bo to dowod, a nie kolejne wezwanie do akcji. */
.av-pband{padding-block:clamp(2rem,4vw,3rem);background:var(--av-surface-alt);
border-block:var(--av-border-w) solid var(--av-line)}
.av-pband__in{display:grid;gap:clamp(1.25rem,3vw,2.5rem);align-items:center;
grid-template-columns:minmax(190px,240px) minmax(0,1fr)}
/* Znak partnera jest ciemny i na szarym tle sekcji gubi kontur. */
.av-pband__logo{display:grid;place-items:center;padding:clamp(1rem,2vw,1.5rem);
background:var(--av-surface);border:var(--av-border-w) solid var(--av-line);
border-top:3px solid var(--av-accent)}
.av-pband__logo img{width:100%;max-width:250px;height:auto;object-fit:contain}
.av-pband__copy{min-width:0}
.av-pband__copy .av-eyebrow{margin-bottom:.6rem}
.av-pband__text{margin:.65rem 0 0;max-width:64ch;color:var(--av-ink-soft)}
.av-pband__note{margin:.7rem 0 0;font-size:.85rem;color:var(--av-ink-soft);
padding-left:.9rem;border-left:2px solid var(--av-accent)}
@media (max-width:760px){
  .av-pband__in{grid-template-columns:1fr;justify-items:start}
  .av-pband__logo{width:min(100%,220px)}
}

/* ---------- Pasek marki ---------- */
/* Grafika jest zwyklym <img>, nie tlem CSS: tylko wtedy Imagify poda ja
   w AVIF/WebP. Reguly ponizej dbaja o to, zeby przy proporcji 24:1 pasek
   nie zrobil sie na telefonie kilkupikselowym paskiem. */
.av-bband{display:block;line-height:0}
.av-bband--light{background:var(--av-surface)}
.av-bband--alt{background:var(--av-surface-alt)}
.av-bband--dark{background:var(--av-surface-dark)}
.av-bband__img{display:block;width:100%;height:auto;
min-height:clamp(30px,3.4vw,40px);object-fit:cover}
.av-bband--bleed{width:100vw;margin-left:calc(50% - 50vw);
margin-block:clamp(2rem,4vw,3.25rem) clamp(1.75rem,3.5vw,2.75rem)}
/* Logotyp w stopce zastepuje nazwe pisana tekstem, wiec przejmuje jej odstep. */
.av-footer__logo{display:block;width:auto;height:clamp(38px,4.5vw,52px);margin-bottom:.85rem}
