/* Save Model, warstwa ruchu wspolna dla podgladow A/B/C (2026-10-11).
   Dokladana NA produkcyjny index.html: zero zmian w tresci i ukladzie, zero zaleznosci. */
:root{
  --ease-out:cubic-bezier(.16,1,.3,1);     /* przyjazd: szybki start, dlugie wyhamowanie */
  --ease-state:cubic-bezier(.32,.72,0,1);  /* zmiana stanu */
  --ease-io:cubic-bezier(.65,0,.35,1);     /* przenikanie */
  --t-micro:.16s;--t-state:.48s;--t-enter:.9s;
  --nav-glass:rgba(250,250,248,.74);
}
html{scroll-behavior:auto}

/* nav: mrozone szklo po zjechaniu z hero, zamiast nieprzezroczystego papieru */
.nav{transition:background var(--t-state) var(--ease-state),padding var(--t-state) var(--ease-state)}
.nav--solid{background:var(--nav-glass);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom-color:rgba(21,20,15,.08)}
.nav__links a{transition:color var(--t-state) var(--ease-state)}
.nav__links a[aria-current="true"]{color:#fff}
.nav--solid .nav__links a[aria-current="true"]{color:var(--ink)}
.nav__progress{position:absolute;left:0;right:0;bottom:-1px;height:1px;background:#fff;transform-origin:0 50%;transform:scaleX(var(--sp,0));pointer-events:none;z-index:1}
.nav--solid .nav__progress{background:var(--ink)}

/* przyciski: docisniecie */
.btn,#enquiry button,#enquiry .brief-open,#enquiry .brief-call,.pdp__add{transition:background var(--t-state) var(--ease-state),color var(--t-state) var(--ease-state),border-color var(--t-state) var(--ease-state),transform var(--t-micro) var(--ease-state)}
.btn:active,#enquiry button:active,#enquiry .brief-open:active,#enquiry .brief-call:active{transform:scale(.98)}

/* obrazy: najazd z masa */
.grid figure img{transition:transform 1.4s var(--ease-out)}
.pcard__img img{transition:opacity var(--t-state) var(--ease-state)}

/* przyjazd elementow: lekkie rozmycie + expo-out, schodkowanie w obrebie sekcji (--d ustawia JS) */
.rv{opacity:0;transform:translateY(28px);filter:blur(6px);transition:opacity var(--t-enter) var(--ease-out),transform var(--t-enter) var(--ease-out),filter var(--t-enter) var(--ease-out);transition-delay:var(--d,0ms)}
.rv.in{opacity:1;transform:none;filter:none}

/* akordeon portfolio: wysokosc mierzona w JS, przejscie expo-out zamiast skoku */
.acc__body{transition:max-height .85s var(--ease-out)}
.acc__item>input:checked~.acc__body .grid figure{animation-duration:.7s;animation-timing-function:var(--ease-out)}

/* proces: szczegol etapu wchodzi wolniej i z rozmycia */
.pdet{animation-name:smEmerge!important;animation-duration:.6s!important;animation-timing-function:var(--ease-out)!important}
@keyframes smEmerge{from{opacity:0;transform:translateY(10px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}

/* FAQ: odpowiedz wchodzi, nie wyskakuje */
.faq__list details[open] .faq__a{animation:smFaq .55s var(--ease-out) both}
@keyframes smFaq{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* lightbox: otwarcie ze skali, zamkniecie natychmiast (wyjscie szybsze niz wejscie) */
.lb.open{animation:smLb .4s var(--ease-out)}
.lb.open .lb__img{animation:smLbImg .6s var(--ease-out)}
@keyframes smLb{from{opacity:0}to{opacity:1}}
@keyframes smLbImg{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}

/* przypinanie (uzywa A) */
.stage{position:relative}
.stage__pin{position:-webkit-sticky;position:sticky}

/* etykieta podgladu, tylko w plikach preview */
.sm-tag{position:fixed;left:14px;bottom:12px;z-index:60;font:400 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:rgba(250,250,248,.85);padding:6px 8px;border:1px solid var(--line);pointer-events:none}

@media(prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;filter:none;transition:none}
  .acc__body{transition:none}
  .pdet{animation:none!important}
  .lb.open,.lb.open .lb__img,.faq__list details[open] .faq__a{animation:none}
}
