/* ============================================================
   dg-r3.css — warstwa unowocześnień NA wiernej kopii bazy.
   Każda reguła = zatwierdzone odstępstwo właściciela,
   opisane w ODSTEPSTWA.md. Baza (home.css itd.) nietknięta.
   Ładowany PO stylach bazy — wygrywa kolejnością.
   ============================================================ */

/* #1 (2026-07-24, FINAL v4 — korekty #21/#22/#25) Hover chipa LinkedIn: TYLKO
   ramka, tekst bez zmian. Kolor tekstu MUSI byc powtorzony (#d3d7d5 = spoczynkowy
   z bazy): hover bazy deklaruje color:#fff. #25: 1px morskiej ramki na granacie
   byl niezauwazalny na zywo („ramka sie nie podswietla") — druga obwodka tym
   samym kolorem daje wyrazna ramke 2px BEZ przesuwania ukladu. Selektory
   ROZDZIELONE celowo: nieznany pseudoklasie parser odrzuca cala liste. */
.li-chip:hover {
  background: transparent;
  border-color: #58b7c4;
  color: #d3d7d5;
  box-shadow: 0 0 0 1px #58b7c4;
}
.li-chip:focus-visible {
  background: transparent;
  border-color: #58b7c4;
  color: #d3d7d5;
  box-shadow: 0 0 0 1px #58b7c4;
}

/* #2 (2026-07-24) Kafle szybkich ścieżek — neutralne, jak w wersji astro-r2
   (wybór właściciela: „te kafle w takim neutralnym kolorze lepsze").
   Baza barwiła pierwszy kafel czerwonym gradientem — znika; wszystkie trzy
   dostają jednolite neutralne tło + cienką ramkę + zaokrąglenie; wyróżnik
   pierwszego = morska ramka, nie wypełnienie. */
/* #2/#5/#7 Szybkie ścieżki — WARIANT 1 „edytorski" (wybór właściciela po iteracjach:
   pudełka 14px „zbyt okrągłe i ciasno przylegają do linii").
   Zero pudełek: trzy kolumny na czystym tle strony, pionowe linie włoskowe,
   duży oddech od pasa faktów; hover = strzałka odjeżdża, „Otwórz" bieleje.
   Ten sam język co pas faktów (mono + linie + serif) — sekcja jako ciąg dalszy
   dokumentu, nie widget. Warianty 2/3 do porównania: /_kafle-demo.html */
.quickpaths {
  background: transparent;
  border-bottom: 0;
  padding-block: 84px 48px;
}
.quickgrid {
  gap: 0;
  background: transparent;
}
.quickcard,
.quickcard.primary {
  background: transparent;
  border: 0;
  border-radius: 0;
  min-height: 0;
  padding: 8px 44px;
}
.quickcard:first-child { padding-inline-start: 0; }
.quickcard:last-child { padding-inline-end: 0; }
.quickcard + .quickcard { border-inline-start: 1px solid rgba(255, 255, 255, 0.12); }
.quickcard:hover,
.quickcard:focus-visible {
  background: transparent;
  transform: none;
}
.quickcard .quick-go {
  display: inline-flex;
  gap: 6px;
  transition: translate 0.25s ease, color 0.25s ease;
}
.quickcard:hover .quick-go,
.quickcard:focus-visible .quick-go {
  color: #fff;
  translate: 4px 0;
}

/* #5 (2026-07-24) JEDNA szerokość strony przez całą wysokość — właściciel:
   „powinno być symetrycznie, czyli stała szerokość przez całą wysokość.
   U góry jest szerzej niż na dole". Jedyny odszczepieniec w bazie:
   #products>.wrap miał min(1720px,100%) przy 1560 wszędzie indziej —
   to było źródło „zlepka prostokątów". Wyrównany do wspólnej kolumny. */
#products > .wrap {
  max-width: var(--maxw);
}

/* #3 (2026-07-24) Liczby na hero BEZ linii — właściciel: „bez paska to bez tej
   linii". Znika border-top nad wierszem liczb; odstęp zostaje. */
.hfacts {
  border-top: 0;
}

/* #4 (2026-07-24) Statek: znika jako osobny pas (dublował wideo hero),
   wraca jako LEDWO widoczne tło pod „Czym się zajmujemy" — propozycja
   właściciela („użył jako tło, opacity dostosuj żeby ledwo go było widać").
   Start: 12% — do dostrojenia na żywo. Oś strony (symetria) nienaruszona. */
.dgA-human {
  display: none;
}
.statement {
  position: relative;
  overflow: hidden;
}
.statement::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url(/assets/shipband.webp) center / cover no-repeat;
  background-image: image-set(url(/assets/shipband.avif) type("image/avif"), url(/assets/shipband.webp) type("image/webp"));
  opacity: 0.12;
  pointer-events: none;
}
.statement > * {
  position: relative;
}

/* #8 (2026-07-24) Wejście schodkowe kafli — kolumny pojawiają się kolejno
   (~120 ms) przy pierwszym wejściu sekcji w kadr; unoszenie 12px + zanik.
   Klasę .dgr3-in nadaje /assets/dg-r3.js. Reduced-motion: bez animacji. */
@media (prefers-reduced-motion: no-preference) {
  .quickcard {
    opacity: 0;
    translate: 0 12px;
    transition: opacity 0.6s ease, translate 0.6s ease;
  }
  .quickgrid .quickcard:nth-child(2) { transition-delay: 0.12s; }
  .quickgrid .quickcard:nth-child(3) { transition-delay: 0.24s; }
  .quickpaths.dgr3-in .quickcard {
    opacity: 1;
    translate: 0 0;
  }
}

/* #19 (2026-07-24) Zamkniecie strony — decyzja FINALNA po obejrzeniu na zywo
   (wlasciciel: „statek zdjecie nie wiem po co?"): tlo fotograficzne stopki ZNIKA
   (uchyla wariant 3 z #9). Stopka = czysty granat; pas .close-band nadal
   wylaczony (display:none + lazy = obraz sie nie pobiera, −219 KB). */
.close-band { display: none; }

/* dg-vt.css v2 — #2 programu: plynne przejscia miedzy stronami, CALY SERWIS
   (akceptacja wlasciciela; v3: czas 0.4s — korekta wlasciciela; dryf pionowy zostaje).
   Tresc: stara lekko odplywa w gore, nowa naplywa z dolu — 0.4s, miekkie krzywe.
   Naglowek i stopka maja wlasne nazwy: identyczne migawki = stoja nieruchomo.
   Brak wsparcia / reduced-motion => zwykla nawigacja. */
@view-transition {
  navigation: auto;
}
#hdr { view-transition-name: dg-header; }
footer { view-transition-name: dg-footer; }

::view-transition-old(root) {
  animation: dgvt-out 0.4s cubic-bezier(0.4, 0, 0.2, 1) both;
}
::view-transition-new(root) {
  animation: dgvt-in 0.4s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes dgvt-out {
  to { opacity: 0; translate: 0 -10px; }
}
@keyframes dgvt-in {
  from { opacity: 0; translate: 0 14px; }
}

@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
}

/* #16 (2026-07-24) NAPRAWA REGRESU po rundzie AVIF: owiniecie obrazow w <picture>
   wylamalo je z regul bazy `.be-slab>img` (selektor bezposredniego dziecka) —
   kafle Sztuka/Motorsport stracily tryb "wypelnij kafel" (zgloszenie wlasciciela:
   "obrazy na dole stracily proporcje na Macbook 14"). <picture> przejmuje geometrie
   obrazu; wartosci 1:1 z home.css. */
.be-slab > picture {
  position: absolute;
  inset: 0;
  display: block;
}
.be-slab > picture > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 1.2s var(--e);
  filter: saturate(0.82) contrast(1.05) brightness(0.92);
}
.be-slab:hover > picture > img {
  transform: scale(1.03);
}

/* #18/#22 UCHYLONE przez #24 (2026-07-24): goly link LinkedIn w bloku kontaktu
   USUNIETY z HTML (wlasciciel: „po co ukrywac, wywal!") — regula maskujaca
   niepotrzebna. Jedyny LinkedIn = chip .li-chip w stopce (hover: #1). */

/* #23 (2026-07-24) Akapity dwulamowe „Czym sie zajmujemy" + notka „Siec":
   BEZ justowania i BEZ automatycznego dzielenia wyrazow. Baza dziedziczy
   text-align:justify + hyphens:auto — justowanie rozciaga wiersze tak, ze
   pierwsza linia czyta sie jak JEDNO zdanie przez obie lamy (wlasciciel:
   „pol zdania po jednej stronie, pol po drugiej"), a hyphens lamie
   „Meksykan-skiej"/„Euro-pe". Chorągiewka z prawej przywraca oddech. */
.statement .row .body,
p[data-t="nw_sub"] {
  text-align: left;
  hyphens: manual;
}

/* #20 (2026-07-24, audyt zewn. M11) Pulsujaca kropka statusu (.hud-dot) zamiera
   przy prefers-reduced-motion — jedyna animacja bazy bez tej bramki. */
@media (prefers-reduced-motion: reduce) {
  .hud-dot { animation: none; }
}

/* #21 (2026-07-24, audyt zewn. H1) Cel skip-linku dostaje fokus programowo
   (obsluga w dg-r3.js); bez wlasnej obwodki na <main> — wskaznikiem jest
   przewiniecie, a fokus plynie dalej od poczatku tresci. */
#main-content:focus { outline: 0; }
