
/* Tokeny muszą pozostać zgodne z blokiem :root w en/index.html i pl/index.html.
   Zmiana wartości tutaj bez zmiany tam rozjeżdża wygląd strony głównej i podstron. */
:root {
  --navy-deep:   #081729;
  --navy:        #0B2545;
  --navy-soft:   #16345E;
  --gold:        #B8912F;
  --gold-dark:   #7A5D1C;
  --gold-light:  #E3C878;
  --gold-pale:   #F3E4B8;
  --cream:       #FCF0E4;
  --cream-warm:  #F4E7D4;
  --white:       #FFFFFF;
  --crimson:     #9C2B3A;
  --green-ok:    #3F7A5B;
  --ink-muted:   #52607A;

  /* Libre Baskerville ma WYŁĄCZNIE wagi 400, 400 italic i 700 — nie ma 500 ani 600.
     Nie ustawiać na tym kroju font-weight:500/600, bo przeglądarka podstawi 700.
     Wartości identyczne jak w home.css — oba arkusze muszą pozostać zgodne. */
  --font-display: 'Libre Baskerville', Georgia, 'Times New Roman', serif;
  --font-body: 'Source Sans 3', Arial, Helvetica, sans-serif;

  /* Wyłącznie dla podstron usług — strona główna używa wartości rgba wprost. */
  --line: rgba(11, 37, 69, 0.14);
}

* { box-sizing: border-box; }
/* Odstep pod przyklejony naglowek - patrz komentarz w home.css.
   --header-h ustawia skrypt komponentu naglowka na zmierzona wysokosc
   (61 px u gory strony, 55 px po zwinieciu, 65/59 px ponizej 1120 px). */
/* Wartosc zapasowa 73 px = wysokosc paska na desktopie, gdzie wyznacza ja
   menu (12 + 48 + 12 + 1). Dziala, gdy JavaScript jest wylaczony. */
html { scroll-behavior: smooth; scroll-padding-top: var(--header-h, 73px); }
[id] { scroll-margin-top: var(--header-h, 73px); }
body { margin: 0; background: var(--cream); color: var(--navy); font-family: var(--font-body); line-height: 1.65; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
button, input, textarea { font: inherit; }
/* Widoczny pierscien fokusu - podstrony korzystaly do tej pory z domyslnego
   obramowania przegladarki, ktore na zlotym przycisku ledwo widac.
   Wartosci takie same jak w home.css. */
:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.shell { width: min(1180px, calc(100% - 48px)); margin-inline: auto; }
/* Ciemne złoto, bo bazowo .eyebrow leży na jasnym tle (--gold daje tam 2,6:1).
   Sekcje na granatowym tle nadpisują to poniżej na --gold-light. */
/* 0,82 rem zamiast 0,72 rem (+13,9%) - ten sam krok co w home.css
   (.eyebrow 0,74 -> 0,84 rem), zeby nadtytuly na podstronach mialy ten sam
   rozmiar co na stronie glownej. */
/* Nadtytul - wartosci IDENTYCZNE z home.css: 0,94 rem, odstep 0,16 em, waga 600,
   kreski po obu stronach. Bylo 0,82 rem / 0,19 em / 700, czyli inaczej niz na
   stronie glownej, mimo ze to ta sama etykieta w tej samej roli.
   Kreski biora kolor z currentColor, wiec ida za kolorem etykiety i nie trzeba
   ich nadpisywac osobno w kazdej ciemnej sekcji. flex:0 1 42px sprawia, ze to
   kreski kurcza sie pierwsze, gdy etykieta nie miesci sie w kolumnie -
   pelne uzasadnienie w home.css. */
.eyebrow {
  /* white-space:nowrap - nadtytul zawsze w jednym wierszu, uzasadnienie
     i granica dlugosci (ok. 29 znakow) w home.css. */
  display: inline-flex; align-items: center; gap: 14px; max-width: 100%; white-space: nowrap;
  margin: 0 0 14px; color: var(--gold-dark);
  font-size: .94rem; font-weight: 600; letter-spacing: .16em; line-height: 1.3;
  text-transform: uppercase;
}
.eyebrow::before, .eyebrow::after {
  content: ""; flex: 0 1 42px; height: 1px; background: currentColor; opacity: .45;
}
.service-hero .eyebrow, .light-heading .eyebrow, .hub-hero .eyebrow { color: var(--gold-light); }
/* Waga 400 („główne nagłówki i hasła”), interlinia poluzowana z 1.06 —
   Libre Baskerville ma wysoką literę x i długie wydłużenia dolne, przy 1.06
   wiersze zachodziłyby na siebie. Skala h1/h2 zeszła o stopień, bo ten krój
   jest wyraźnie szerszy od poprzedniego i przy 6.35rem łamał nagłówki. */
h1, h2, h3 { margin: 0; color: var(--navy); font-family: var(--font-display); font-weight: 400; line-height: 1.16; }
h1 { font-size: clamp(2.5rem, 5.4vw, 5.1rem); letter-spacing: -.005em; }
h2 { font-size: clamp(2rem, 3.6vw, 3.5rem); letter-spacing: 0; }
h3 { font-size: 1.36rem; line-height: 1.3; }
p { margin: 0; }

/* ============================================================
   NAGLOWEK - wspolny ze strona glowna.
   Zrodlo znacznikow: _zrodlo/naglowek.html, rozsylane przez
   _zrodlo/wstrzyknij.py. Wartosci musza pozostac IDENTYCZNE z home.css
   (lacznie z punktami zalamania 1120 i 680 px), inaczej ten sam naglowek
   zachowuje sie inaczej na stronie glownej i na podstronach.
   Poprzedni, osobny naglowek podstron (.topbar) zostal usuniety.
   ============================================================ */
header {
  position: sticky; top: 0; z-index: 50;
  background: linear-gradient(110deg,rgba(255,253,250,.97) 0%,rgba(250,243,234,.95) 52%,rgba(255,253,250,.97) 100%);
  backdrop-filter: saturate(130%) blur(14px);
  border-bottom: 1px solid rgba(11,37,69,.055);
  box-shadow: 0 4px 20px rgba(8,23,41,.035);
  isolation: isolate;
  transition: background .45s ease, box-shadow .45s ease, border-color .45s ease;
}
header::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; pointer-events: none;
  background: linear-gradient(90deg,transparent 4%,rgba(184,145,47,.42) 27%,rgba(227,200,120,.66) 50%,rgba(184,145,47,.42) 73%,transparent 96%);
  opacity: .46; transition: opacity .35s ease;
}
header.is-scrolled {
  background: linear-gradient(110deg,rgba(255,253,250,.985) 0%,rgba(250,243,234,.975) 52%,rgba(255,253,250,.985) 100%);
  box-shadow: 0 12px 34px rgba(8,23,41,.095);
  border-color: rgba(184,145,47,.13);
}
header.is-scrolled::after { opacity: .78; }
header.is-scrolled .nav { padding-top: 7px; padding-bottom: 7px; }
.nav { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 12px 28px; gap: 24px; transition: padding .35s ease; }
/* Marka na poziomym srodku paska. Tor srodkowy siatki 1fr auto 1fr jest
 wysrodkowany z definicji, bo oba tory 1fr dostaja rowna szerokosc.
 Zapas sprawdzony: przy 1180 px kontenera kazdy tor 1fr ma 424 px,
 a najszersza kolumna (nawigacja EN, ok. 326 px) miesci sie z zapasem.
 Kolejnosc znacznikow w _zrodlo/naglowek.html zostala przestawiona tak,
 zeby zgadzala sie z ukladem - grid-column sluzy tu tylko do jawnego
 przypisania torow, nie do zmiany kolejnosci. */
/* Marka po LEWEJ, nawigacja na srodku, akcje po prawej - uklad klasyczny.
 Byla przez chwile wysrodkowana; wrocila na lewo, bo badanie NN/g
 (14 serwisow, 50 uczestnikow) wykazalo szesciokrotnie czestsza porazke
 przy powrocie na strone glowna, gdy logo stoi na srodku, a lewy gorny rog
 daje tez o 89% lepsza zapamietywalnosc znaku. Kolejnosc znacznikow
 w _zrodlo/naglowek.html zgadza sie z ukladem. */
/* Odstep 8 px, nie 12 px - uzasadnienie w home.css. */
.brand { display: flex; align-items: center; grid-column: 1; justify-self: start; gap: 8px; flex-shrink: 0; }
/* Rozmiar przez WYSOKOSC: 31 px = 2,47 x wersalik napisu obok (bylo 51 px
   przy 1,38 rem, czyli 3,00 x). Pelne uzasadnienie w home.css. */
.brand img { display: block; height: 31px; width: auto; flex-shrink: 0; opacity: 0; animation: brandIn .7s ease .1s forwards; }
@keyframes brandIn { from { opacity: 0; transform: scale(.7) rotate(-8deg); } to { opacity: 1; transform: scale(1) rotate(0); } }
.brand-word { display: flex; align-items: center; color: var(--navy); font-family: var(--font-display); font-size: 1.02rem; font-weight: 700; line-height: 1; letter-spacing: .04em; white-space: nowrap; }
.brand-word span { color: var(--gold); }
nav.links { display: flex; align-items: center; grid-column: 2; justify-self: center; gap: 22px; }
/* WERSALIKI. Menu ma byc rozpoznawalne jako menu, a nie jako zdanie obok
   logotypu - stad wielkie litery, mniejszy stopien pisma i wieksze swiatlo
   miedzy literami. 0,84 rem zamiast 0,92, bo wersalik jest optycznie wiekszy
   od tekstu mieszanego przy tym samym stopniu; tracking 0,13 em to wartosc
   juz obecna w serwisie (nadtytul na telefonie), wiec nie dokladamy kolejnej
   do listy z Priorytetu 6.
   Szerokosc sprawdzona: menu EN strony glownej ok. 431 px, PL ok. 412 px,
   menu podstrony (trzy pozycje) ok. 200-250 px - w pasie 1124 px zostaje
   ponad 270 px zapasu.

   WLASNY PAS 48 px. Pozycje dostaja jawna wysokosc wieksza niz przycisk
   po prawej (44 px) i godlo po lewej (31 px), zeby menu czytalo sie jako
   osobny element paska, a nie jako trzecia rzecz na tej samej linii.
   To ONO wyznacza teraz wysokosc naglowka: 12 + 48 + 12 + 1 = 73 px.
   line-height 1.2 jest wpisane wprost, bo bez tego wysokosc pola zalezalaby
   od line-height <body>, ktory rozni sie miedzy arkuszami (1,6 i 1,65). */
nav.links a {
  display: flex; align-items: center; min-height: 48px;
  font-size: .84rem; font-weight: 600; letter-spacing: .13em; text-transform: uppercase;
  line-height: 1.2; color: var(--navy);
  position: relative; white-space: nowrap; transition: color .25s ease;
  opacity: 0; transform: translateY(-6px); animation: navLinkIn .45s ease forwards;
}
nav.links a:nth-child(1) { animation-delay: .12s; }
nav.links a:nth-child(2) { animation-delay: .17s; }
nav.links a:nth-child(3) { animation-delay: .22s; }
nav.links a:nth-child(4) { animation-delay: .27s; }
nav.links a:nth-child(5) { animation-delay: .32s; }
@keyframes navLinkIn { to { opacity: 1; transform: translateY(0); } }
/* Podkreslenie 2 px w --gold-dark - identycznie jak w home.css. */
nav.links a::after { content: ""; position: absolute; left: 0; bottom: 11px; width: 0; height: 2px; background: var(--gold-dark); transition: width .25s ease; }
nav.links a:hover::after { width: 100%; }
nav.links a:hover, nav.links a:focus-visible { color: var(--gold-dark); }
.nav-cta { display: flex; align-items: center; grid-column: 3; justify-self: end; gap: 11px; flex-shrink: 0; opacity: 0; animation: navToolsIn .5s ease .34s forwards; }
@keyframes navToolsIn { from { opacity: 0; transform: translateX(8px); } to { opacity: 1; transform: translateX(0); } }
/* 44 px = minimalny cel dotykowy. Wartosci identyczne z home.css. */
.nav-cta > .btn { min-height: 44px; padding: 12px 20px; font-size: .86rem; }
#langToggle { gap: 5px; }
#langToggle a { border-width: 1px; border-radius: 5px; padding: 3px; opacity: .58; transform: none; }
#langToggle a svg { width: 22px; height: 15px; }
#langToggle a:hover { opacity: 1; transform: translateY(-1px); }
#langToggle a.active { opacity: 1; transform: none; background: rgba(184,145,47,.07); }
/* Jawne 44x44 px - minimalny cel dotykowy, a zarazem element wyznaczajacy
   wysokosc naglowka ponizej 1120 px. Musi byc identyczne z home.css. */
.menu-btn { display: none; flex-direction: column; align-items: center; justify-content: center; padding: 0; width: 44px; height: 44px; border: none; background: none; }
.menu-btn span { display: block; width: 24px; height: 2px; margin: 5px 0; background: var(--navy); transition: .25s; }

@media (max-width: 1120px) {
  .nav { grid-template-columns: 1fr auto; gap: 14px; }
  /* Ponizej 1120 px marka wraca na lewa strone. */
  .brand { grid-column: 1; justify-self: start; }
  .nav-cta { grid-column: 2; }
  /* 12+44+12+1 = 69 px. Menu jest tu zwiniete i wypada z siatki, wiec
     wysokosc wyznacza hamburger; na desktopie robi to menu i pasek ma 73 px. */
  nav.links { position: fixed; top: 69px; left: 0; right: 0; z-index: 40; display: flex; flex-direction: column; gap: 0; padding: 8px 0 20px; border-bottom: 1px solid rgba(11,37,69,.1); background: rgba(255,250,244,.98); backdrop-filter: blur(14px); transform: translateY(-130%); transition: transform .3s ease; }
  nav.links.open { transform: translateY(0); }
  nav.links a { width: 100%; padding: 14px 28px; border-top: 1px solid rgba(11,37,69,.06); }
  /* W rozwinietym menu podkreslenie wraca na sam dol pozycji - 11 px nad
     krawedzia wisialoby w powietrzu obok kreski rozdzielajacej. */
  nav.links a::after { bottom: 0; }
  .nav-cta > .btn { min-height: 38px; padding: 9px 14px; font-size: .78rem; }
  .menu-btn { display: flex; }
  /* Godlo 25 px przy napisie 0,88 rem = 2,31 x. Godlo jest nizsze od
     hamburgera (44 px), wiec wysokosc paska zostaje przy 65 px. */
  .brand img { height: 25px; }
  .brand-word { font-size: 0.88rem; }
  /* 7+44+7+1 = 59 px. */
  header.is-scrolled nav.links { top: 59px; }
}

/* Ponizej 680 px przycisk z naglowka ustepuje miejsca przyklejonemu CTA na
   dole ekranu (.mobile-cta). TEN SAM punkt zalamania jest w home.css. */
@media (max-width: 680px) {
  /* 0,78 rem, tracking 0,13 em, kreski 24 px, odstep 10 px -
     wartosci identyczne z home.css. */
  .eyebrow, .team-core-label { font-size: .78rem; letter-spacing: .13em; gap: 10px; }
  .eyebrow::before, .eyebrow::after,
  .team-core-label::before, .team-core-label::after { flex-basis: 24px; }
  .nav-cta > .btn { display: none; }
}
/* WERSALIKI na przyciskach - decyzja uzytkownika: napis ma byc bardziej
 widoczny. Tracking podniesiony z 0,01 na 0,07 em, bo wielkie litery bez
 zwiekszonego swiatla zlewaja sie w jeden blok - to jedyny powod, dla
 ktorego wersaliki bywaja MNIEJ czytelne, nie bardziej. Rozmiar zostaje
 bez zmian (0,89 rem), zeby nie odbierac tego, po co ta zmiana powstala.
 Wartosc 0,07 em jest wspolna dla home.css i service-pages.css. */
/* Przyciski podstron - ten sam jezyk co .btn nizej: 42 px, promien 6 px,
   zwykla wielkosc liter (wersaliki z rozstrzelonymi literami czytaly sie jako
   maniera sprzed dekady i wymuszaly szerokie przyciski).

   Zloto idzie za tlem: WARTOSC BAZOWA .button-gold jest dla jasnego tla
   (karta boczna artykulu, przyklejone CTA nad trescia), a sekcje granatowe
   nadpisuja ja na --gold-light. Ten sam wzorzec co przy .eyebrow. */
.button { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 42px; line-height: 1.2; padding: 11px 22px; border: 1px solid var(--navy); border-radius: 6px; background: var(--navy); color: white; font-size: .89rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; transition: background-color .18s ease, border-color .18s ease, color .18s ease; }
.button:hover { border-color: var(--navy-soft); background: var(--navy-soft); }
.button:active { transform: translateY(1px); }
.button-gold { border-color: var(--gold); background: var(--gold); color: var(--navy-deep); }
.button-gold:hover { border-color: var(--gold-dark); background: var(--gold-dark); color: var(--white); }
.service-hero .button-gold, .article-cta .button-gold, .hub-hero .button-gold { border-color: var(--gold-light); background: var(--gold-light); color: var(--navy-deep); }
/* Na granatowym tle hover idzie W GORE jasnosci (--gold-light -> --gold-pale,
   11,0:1 -> 14,25:1), a nie w dol jak wczesniej. Obramowanie w --gold utrzymuje
   sylwetke. Warianty dla JASNEGO tla wyzej celowo ciemnieja - tam pojasnienie
   zmniejszyloby kontrast wobec tla, zamiast go zwiekszyc. */
.service-hero .button-gold:hover, .article-cta .button-gold:hover, .hub-hero .button-gold:hover { border-color: var(--gold); background: var(--gold-pale); color: var(--navy-deep); }
/* Glowne CTA w hero podstrony i pod artykulem: 56 px, padding 18/34, 1 rem -
   te same wartosci co .hero-ctas .btn-primary w home.css. Przycisk w kolumnie
   bocznej ZOSTAJE przy 48 px: .aside-card ma 300 px szerokosci, wiec padding
   34 px lamalby w nim napis. */
.hero-actions .button, .article-cta .button { min-height: 56px; padding: 18px 34px; font-size: 1rem; }
.aside-card .button { min-height: 48px; padding: 14px 26px; font-size: .92rem; }
/* Przyciski NIE MAJA znaku strzalki obok napisu - byla, zostala usunieta
   na zyczenie. Nie dodawac jej ponownie. Uwage na przycisk kieruja
   wylacznie wielkosc i hover rozjasniajacy - tak samo jak w home.css. */
.text-link { display: inline-flex; align-items: center; gap: 12px; color: white; font-size: .79rem; font-weight: 700; letter-spacing: .04em; border-bottom: 1px solid rgba(255,255,255,.34); padding-bottom: 6px; }

.service-hero { position: relative; overflow: hidden; min-height: 720px; padding: 76px 0 72px; background: var(--navy-deep); color: white; }
.hero-lines { position: absolute; inset: 0; opacity: .4; background: radial-gradient(circle at 85% 18%, rgba(227,200,120,.16), transparent 25%), linear-gradient(115deg, transparent 0 68%, rgba(255,255,255,.035) 68% 68.15%, transparent 68.15% 100%); }
.hero-lines::before, .hero-lines::after { content: ""; position: absolute; width: 420px; height: 420px; border: 1px solid rgba(227,200,120,.16); border-radius: 50%; right: -125px; top: -130px; }
.hero-lines::after { width: 560px; height: 560px; right: -195px; top: -200px; }
.hero-grid { position: relative; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(330px, .8fr); gap: 76px; align-items: center; }
.hero-copy { max-width: 800px; }
.back-link { display: inline-block; margin-bottom: 70px; color: rgba(255,255,255,.6); font-size: .74rem; font-weight: 600; }
.service-hero h1 { max-width: 850px; color: white; }
.hero-summary { max-width: 770px; margin-top: 30px; color: rgba(255,255,255,.82); font-size: clamp(1.12rem, 2vw, 1.42rem); line-height: 1.65; }
.hero-intro { max-width: 700px; margin-top: 16px; color: rgba(255,255,255,.55); font-size: .98rem; }
.hero-actions { display: flex; align-items: center; gap: 32px; margin-top: 38px; }
.hero-aside { position: relative; align-self: stretch; display: flex; flex-direction: column; justify-content: center; border-left: 1px solid rgba(255,255,255,.14); padding: 10px 0 10px 38px; }
.service-photo { position: relative; isolation: isolate; aspect-ratio: 4 / 3; margin: 0 0 28px; overflow: hidden; border: 1px solid rgba(227,200,120,.44); background: #102b49; box-shadow: 0 28px 70px rgba(0,0,0,.26); }
.service-photo::after { content: ""; position: absolute; z-index: 1; inset: 0; background: linear-gradient(180deg, rgba(6,24,45,.04) 36%, rgba(6,24,45,.88) 100%); pointer-events: none; }
.service-photo img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.75) contrast(1.03); transition: transform .9s cubic-bezier(.22,1,.36,1), filter .5s ease; }
.service-photo:hover img { transform: scale(1.035); filter: saturate(.9) contrast(1.03); }
.service-photo figcaption { position: absolute; z-index: 2; right: 22px; bottom: 20px; left: 22px; display: flex; align-items: baseline; justify-content: space-between; gap: 18px; color: rgba(255,255,255,.8); font-size: .65rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.service-photo figcaption span { color: var(--gold-light); font-family: var(--font-display); font-size: 2.4rem; font-weight: 400; letter-spacing: 0; line-height: .8; }
.hero-aside > p { margin-bottom: 15px; color: var(--gold-light); font-size: .69rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.hero-aside nav { display: grid; }
.hero-aside nav a { display: flex; justify-content: space-between; padding: 14px 0; border-top: 1px solid rgba(255,255,255,.12); color: rgba(255,255,255,.76); font-family: var(--font-body); font-size: .92rem; font-weight: 600; }
.hero-aside nav a span { color: var(--gold-light); }

.section { padding-block: 112px; }
.section-heading { max-width: 720px; margin-bottom: 54px; }
.section-heading > p:last-child { margin-top: 20px; color: var(--ink-muted); }
.split-heading { max-width: none; display: grid; grid-template-columns: 1.05fr .75fr; gap: 100px; align-items: end; }
.split-heading > p:last-child { margin: 0 0 8px; }
.scope-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.scope-card { position: relative; min-height: 190px; padding: 28px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(255,255,255,.26); transition: background .25s ease, transform .25s ease; }
.scope-card:hover { z-index: 1; background: var(--white); transform: translateY(-3px); }
.scope-card > span { display: block; margin-bottom: 44px; color: var(--gold-dark); font-size: .68rem; font-weight: 700; letter-spacing: .12em; }
/* Nagłówki serif poniżej ~1,5rem dostają wagę 700 — Libre Baskerville w wadze 400
   przy rozmiarze zbliżonym do tekstu przestaje czytać się jak nagłówek. */
.scope-card h3 { max-width: 250px; font-size: 1.28rem; font-weight: 700; text-transform: none; }
.scope-card b { position: absolute; right: 25px; bottom: 24px; color: var(--gold-dark); font-weight: 400; }

.process-section { padding-block: 110px; background: var(--navy); color: white; }
.light-heading h2 { color: white; max-width: 720px; }
.process-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(255,255,255,.16); }
.process-grid article { min-height: 280px; padding: 34px 42px 16px 0; border-right: 1px solid rgba(255,255,255,.16); }
.process-grid article + article { padding-left: 42px; }
.process-grid article:last-child { border-right: 0; }
.process-grid article > span { color: var(--gold-light); font-family: var(--font-display); font-size: 2.5rem; }
.process-grid h3 { margin-top: 56px; color: white; font-size: 1.75rem; }
.process-grid p { max-width: 300px; margin-top: 14px; color: rgba(255,255,255,.58); font-size: .94rem; }

.tips-section { display: grid; grid-template-columns: .78fr 1.22fr; gap: 90px; }
.tips-grid { display: grid; }
.tips-grid article { display: grid; grid-template-columns: 52px 1fr; gap: 20px; padding: 24px 0; border-top: 1px solid var(--line); }
.tips-grid article:last-child { border-bottom: 1px solid var(--line); }
.tips-grid span { color: var(--gold-dark); font-family: var(--font-body); font-size: .95rem; font-weight: 700; letter-spacing: .06em; }
.tips-grid p { color: var(--navy); }

.knowledge-section { padding-block: 110px; background: #eee4d4; }
.article-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.article-card { background: var(--white); border: 1px solid transparent; transition: transform .25s ease, border .25s ease; }
.article-card:hover { transform: translateY(-4px); border-color: rgba(184,145,47,.45); }
.article-card summary { min-height: 285px; padding: 28px; display: flex; flex-direction: column; list-style: none; cursor: pointer; }
.article-card summary::-webkit-details-marker { display: none; }
.article-card summary > span { color: var(--gold-dark); font-size: .67rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.article-card h3 { margin-top: 46px; font-size: 1.65rem; }
.article-card summary b { display: flex; justify-content: space-between; align-items: center; margin-top: auto; padding-top: 24px; border-top: 1px solid var(--line); color: var(--navy); font-size: .7rem; letter-spacing: .04em; }
.article-card summary i { font-size: 1.2rem; font-style: normal; font-weight: 400; }
.article-card[open] summary i { transform: rotate(45deg); }
.article-card > p { padding: 0 28px 28px; color: var(--ink-muted); font-size: .9rem; }

/* Karta jako link do pełnego artykułu. Wariant DODANY OBOK reguł <details> powyżej,
   które nadal obsługują podstrony bez gotowych artykułów — nie usuwać ich. */
.article-card-link { display: flex; flex-direction: column; min-height: 285px; padding: 28px; }
.article-card-link > span { color: var(--gold-dark); font-size: .67rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.article-card-link h3 { margin-top: 28px; font-size: 1.6rem; }
.article-card-link > p { padding: 0; margin-top: 14px; color: var(--ink-muted); font-size: .9rem; line-height: 1.7; }
.article-card-link b { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: auto; padding-top: 24px; border-top: 1px solid var(--line); color: var(--navy); font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.article-card-link i { color: var(--gold-dark); font-size: 1.05rem; font-style: normal; transition: transform .25s ease; }
.article-card-link:hover i { transform: translateX(4px); }

.pricing-section { padding-bottom: 88px; }
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; align-items: stretch; }
.pricing-grid article { position: relative; display: flex; flex-direction: column; min-height: 390px; padding: 34px; border: 1px solid var(--line); background: rgba(255,255,255,.28); }
.pricing-grid article.featured { border-color: var(--gold); background: var(--white); box-shadow: 0 20px 55px rgba(11,37,69,.08); }
.recommended { position: absolute; top: 0; right: 0; left: 0; padding: 7px 12px; background: var(--gold); color: var(--navy-deep); text-align: center; font-size: .63rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.featured .price-number { margin-top: 16px; }
.price-number { color: var(--gold-dark); font-size: .72rem; font-weight: 700; }
.pricing-grid h3 { margin-top: 54px; font-size: 1.65rem; }
.pricing-grid strong { margin-top: 16px; color: var(--navy); font-size: .94rem; }
.pricing-grid p { margin-top: 16px; color: var(--ink-muted); font-size: .9rem; }
.pricing-grid a { display: flex; justify-content: space-between; margin-top: auto; padding-top: 22px; border-top: 1px solid var(--line); color: var(--navy); font-size: .72rem; font-weight: 700; text-transform: uppercase; }
.included-row { display: flex; align-items: center; gap: 22px 34px; flex-wrap: wrap; padding: 30px 0; border-bottom: 1px solid var(--line); }
.included-row h3 { margin-right: auto; font-size: 1.2rem; font-weight: 700; }
.included-row span { color: var(--ink-muted); font-size: .83rem; }


.wrap { max-width: 1180px; margin: 0 auto; padding: 0 28px; }
.contact { position: relative; overflow: hidden; padding: 100px 0 110px; background: var(--navy-deep); color: var(--cream); }
.contact::before { content: ""; position: absolute; width: 620px; height: 620px; right: -250px; top: -260px; border-radius: 50%; background: radial-gradient(circle,rgba(227,200,120,.12),transparent 67%); animation: contactGlow 9s ease-in-out infinite alternate; pointer-events: none; }
.contact-inner { position: relative; display: grid; grid-template-columns: .85fr 1fr; gap: 64px; }
.contact .section-head { max-width: 100%; margin: 0 0 36px; text-align: left; }
.contact .section-head h2 { color: var(--gold-light); font-size: clamp(1.9rem,3.4vw,2.6rem); line-height: 1.15; }
.contact-info { display: flex; flex-direction: column; gap: 22px; margin-bottom: 36px; }
.contact-row { display: flex; align-items: center; gap: 16px; font-size: .98rem; }
.contact-row svg { width: 20px; height: 20px; flex-shrink: 0; color: var(--gold-light); }
.contact-row a:hover { color: var(--gold-light); }

/* Kopiowanie adresu e-mail - dla osob, ktore nie korzystaja z klienta poczty
   na tym urzadzeniu i chca wkleic adres gdzie indziej. */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.copy-btn { position: relative; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; margin-left: -6px; padding: 0; border: 1px solid rgba(255,255,255,.18); border-radius: 6px; background: rgba(255,255,255,.06); color: rgba(251,246,236,.72); cursor: pointer; transition: color .2s ease, border-color .2s ease, background-color .2s ease; }
/* powiekszenie pola dotyku do 46x46 px bez powiekszania samego przycisku */
.copy-btn::before { content: ""; position: absolute; inset: -5px; }
.copy-btn:hover { color: var(--gold-light); border-color: rgba(227,200,120,.5); background: rgba(255,255,255,.1); }
.copy-btn svg { width: 16px; height: 16px; color: inherit; }
.copy-btn .copy-check { display: none; }
.copy-btn.is-copied { color: var(--gold-light); border-color: rgba(227,200,120,.55); }
.copy-btn.is-copied .copy-icon { display: none; }
.copy-btn.is-copied .copy-check { display: block; }
.copy-btn::after { content: attr(data-label-copied); position: absolute; bottom: calc(100% + 9px); left: 50%; transform: translateX(-50%) translateY(4px); padding: 5px 10px; border-radius: 2px; background: var(--gold-light); color: var(--navy-deep); font-size: .7rem; font-weight: 600; letter-spacing: .01em; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; }
.copy-btn.is-copied::after { opacity: 1; transform: translateX(-50%) translateY(0); }
.qr-block { display: flex; align-items: center; gap: 18px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.12); }
.qr-block .qr { width: 120px; height: 120px; flex-shrink: 0; padding: 6px; background: white; }
.qr-block .qr img { display: block; width: 100%; height: 100%; object-fit: contain; }
.qr-block p { max-width: 220px; color: rgba(251,246,236,.6); font-size: .84rem; }
/* Tlo karty jest NIEPRZEZROCZYSTE (#132133 = rgba(255,255,255,.045) zlozone
   z --navy-deep), zeby pole <select> - ktore musi miec wlasne, pelne tlo -
   dalo sie ustawic dokladnie na ten sam kolor co pozostale pola. */
.consult-card { position: relative; padding: 36px; border: 1px solid rgba(255,255,255,.14); background: #132133; box-shadow: 0 28px 75px rgba(0,0,0,.18); transition: transform .6s cubic-bezier(.22,1,.36,1),box-shadow .6s cubic-bezier(.22,1,.36,1),border-color .4s ease; }
.consult-card:focus-within { transform: translateY(-5px); border-color: rgba(227,200,120,.36); box-shadow: 0 38px 90px rgba(0,0,0,.24),0 0 0 1px rgba(227,200,120,.08); }
.consult-card h3 { color: white; }
.step-hint { margin: 5px 0 22px; color: rgba(251,246,236,.55); font-size: .88rem; }
.field { margin-bottom: 18px; }
.field label { display: block; margin-bottom: 8px; color: rgba(251,246,236,.55); font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; }
.field input, .field textarea, .field select { width: 100%; padding: 13px 14px; border: 1px solid rgba(255,255,255,.18); border-radius: 6px; outline: none; background: rgba(255,255,255,.06); color: white; font-family: var(--font-body); font-size: .95rem; transition: border-color .3s ease,background .3s ease,box-shadow .3s ease,transform .3s ease; }
.field input::placeholder, .field textarea::placeholder { color: rgba(251,246,236,.35); }
.field input:focus, .field textarea:focus, .field select:focus { border-color: var(--gold-light); box-shadow: 0 0 0 3px rgba(227,200,120,.11); transform: translateY(-1px); }
/* Pole wyboru rodzaju sprawy.
   - appearance:none zdejmuje natywny wyglad (na Windows byl jasny i obcy),
     wlasna strzalka jest wrysowana jako tlo SVG - bez pliku z zewnatrz;
   - #212E3F to dokladnie ten sam kolor, jaki daje rgba(255,255,255,.06)
     na tle karty, wiec pole nie odcina sie od sasiednich;
   - color-scheme:dark sprawia, ze rozwinieta lista jest ciemna zamiast bialej. */
.field select {
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
  color-scheme: dark;
  background-color: #212E3F;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E3C878' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 9 7 7 7-7'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 13px 13px;
  padding-right: 42px;
  cursor: pointer;
}
.field select:invalid { color: rgba(251,246,236,.42); }
.field select option { background-color: #132133; color: var(--cream); }
.field select option[value=""] { color: rgba(251,246,236,.55); }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.char-hint { margin-top: 6px; color: rgba(251,246,236,.4); font-size: .76rem; text-align: right; }
.consent-field { margin-top: 4px; }
.consent-label { display: flex !important; align-items: flex-start; gap: 10px; text-transform: none !important; letter-spacing: 0 !important; line-height: 1.45; cursor: pointer; }
.consent-label input { width: 17px !important; height: 17px; flex: 0 0 auto; margin-top: 2px; accent-color: var(--gold); }
/* Przyciski formularza - wartosci identyczne jak w home.css.
   Kontrast: --navy-deep na --gold = 6,2:1, na --gold-light = 11,2:1,
   biel na --gold-dark = 4,7:1 (wszystkie spelniaja WCAG AA). */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 42px; line-height: 1.2; padding: 11px 22px; border: 1px solid transparent; border-radius: 6px; font-family: var(--font-body); font-size: .89rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; white-space: nowrap; cursor: pointer; transition: background-color .18s ease, border-color .18s ease, color .18s ease; }
.btn-primary { border-color: var(--gold); background: var(--gold); color: var(--navy-deep); }
.btn-primary:hover { border-color: var(--gold-dark); background: var(--gold-dark); color: var(--white); }
.btn-primary:active { transform: translateY(1px); }
.btn-primary:disabled { opacity: .45; cursor: not-allowed; }
.btn-primary:disabled:hover { border-color: var(--gold); background: var(--gold); color: var(--navy-deep); }
.btn-block { width: 100%; }
/* Wariant granatowy - wylacznie przycisk w naglowku. NAPIS ZLOTY, nie bialy
   (--gold-light na --navy = 9,38:1). Podstawowe --gold odpada, bo po najechaniu
   ma 4,23:1, poniżej progu dla tekstu 13,76 px. Uzasadnienie w home.css. */
.btn-navy { border-color: var(--navy); background: var(--navy); color: var(--gold-light); }
/* Hover przycisku w naglowku - musi byc IDENTYCZNY z home.css, bo naglowek
   pochodzi z jednego zrodla (_zrodlo/naglowek.html) i lezy na wszystkich 28 stronach.
   Przycisk ZOSTAJE GRANATOWY, tylko o stopien jasniejszy; wczesniej zmienial sie
   w calosci na zloto, co oko czytalo jako podmiane elementu. Napis idzie w gore
   razem z tlem: --gold-light -> --gold-pale (9,84:1 na --navy-soft), wiec zostaje
   zloty. Pelne uzasadnienie przy tej samej regule w home.css. */
.btn-navy:hover { border-color: var(--gold); background: var(--navy-soft); color: var(--gold-pale); }
/* Formularz lezy na granatowej sekcji - jasniejsze zloto. */
.contact .btn-primary { border-color: var(--gold-light); background: var(--gold-light); color: var(--navy-deep); }
.contact .btn-primary:hover { border-color: var(--gold); background: var(--gold-pale); color: var(--navy-deep); }
.contact .btn-primary:disabled:hover { border-color: var(--gold-light); background: var(--gold-light); }
.contact .btn-block { min-height: 48px; padding: 14px 24px; }
.form-note { display: flex; align-items: flex-start; gap: 8px; margin-top: 16px; color: rgba(251,246,236,.45); font-size: .78rem; }
.form-note svg { width: 15px; height: 15px; flex-shrink: 0; margin-top: 1px; color: var(--gold-light); }
.consult-card .success { min-height: 22px; margin-top: 12px; color: #bce7c5; font-size: .9rem; }
.consult-card.is-sent > *:not(.success) { display: none; }
.consult-card.is-sent .success { padding: 26px 0; font-size: 1rem; line-height: 1.65; }
@keyframes contactGlow { from { transform: translate3d(0,0,0) scale(.9); opacity: .55; } to { transform: translate3d(-55px,60px,0) scale(1.1); opacity: 1; } }

/* ============================================================
   STOPKA - wspolna z strona glowna.
   Zrodlo znacznikow: _zrodlo/stopka.html, rozsylane przez
   _zrodlo/wstrzyknij.py. Wartosci musza pozostac zgodne z home.css,
   inaczej stopka wyglada inaczej na stronie glownej i na podstronach.
   ============================================================ */
footer { padding: 34px 0; border-top: 1px solid rgba(255,255,255,.08); background: var(--navy-deep); }
.footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.footer-brand { display: flex; align-items: center; gap: 10px; color: rgba(251,246,236,.7); font-size: .85rem; }
/* Wysokosc zamiast szerokosci - odpowiada dotychczasowej widocznej wysokosci znaku. */
.footer-brand img { height: 22px; width: auto; filter: brightness(0) saturate(100%) invert(88%) sepia(16%) saturate(694%) hue-rotate(357deg) brightness(96%) contrast(93%); }
footer nav { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }
footer nav a { padding: 8px 0; color: rgba(251,246,236,.55); font-size: .83rem; }
footer nav a:hover { color: var(--gold-light); }
.footer-legal { margin-top: 22px; color: rgba(251,246,236,.35); font-size: .76rem; text-align: center; }

.lang-toggle { display: flex; align-items: center; gap: 8px; }
.lang-toggle a { padding: 2px; border: 2px solid transparent; border-radius: 4px; background: transparent; line-height: 0; opacity: .45; transform: scale(.94); transition: opacity .2s ease, border-color .2s ease, transform .2s ease; }
.lang-toggle a svg { display: block; width: 26px; height: 18px; border-radius: 2px; }
.lang-toggle a:hover { opacity: .8; }
.lang-toggle a.active { opacity: 1; border-color: var(--gold); transform: scale(1); }
.lang-toggle.light a.active { border-color: var(--gold-light); }

.hub-hero { padding: 105px 0 78px; background: var(--navy-deep); color: white; }
.hub-hero h1 { max-width: 900px; color: white; }
.hub-hero > .shell > p:last-child { max-width: 680px; margin-top: 26px; color: rgba(255,255,255,.62); }
.hub-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; padding-block: 70px 110px; }
.hub-card { position: relative; min-height: 340px; padding: 34px; border: 1px solid var(--line); background: rgba(255,255,255,.25); transition: transform .25s ease, background .25s ease; }
.hub-card:hover { background: var(--white); transform: translateY(-4px); }
.card-number { float: right; color: rgba(11,37,69,.2); font-family: var(--font-display); font-size: 3rem; line-height: 1; }
.card-tag { color: var(--gold-dark); font-size: .67rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.hub-card h2 { max-width: 480px; margin-top: 40px; font-size: 2rem; }
.hub-card p { max-width: 510px; margin-top: 16px; color: var(--ink-muted); font-size: .88rem; }
.card-link { position: absolute; right: 34px; bottom: 28px; left: 34px; display: flex; justify-content: space-between; padding-top: 18px; border-top: 1px solid var(--line); color: var(--navy); font-size: .7rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }

.team-preview-page { min-height: 100vh; background: linear-gradient(180deg, var(--white), #fff 62%, var(--cream)); }
.team-section { overflow: hidden; padding: 104px 0 124px; }
.team-head { max-width: 960px; margin: 0 auto 43px; text-align: center; }
.team-head h1 { margin: 17px 0 21px; color: var(--navy); font-size: clamp(2.35rem, 4.2vw, 4rem); line-height: 1.16; }
.team-head p { color: var(--ink-muted); font-size: 1.02rem; line-height: 1.85; }
/* Etykieta "Wspolnicy". Uzywa jej dzis wylacznie strona glowna, ale regula stoi
   rowniez tutaj i musi miec TE SAME wartosci co w home.css - inaczej ten sam
   element wygladalby inaczej w zaleznosci od arkusza. Typografia i kreski
   przychodza z bloku .eyebrow wyzej; tu zostaje sama geometria. */
.team-core-label {
  display: flex; justify-content: center; align-items: center; gap: 14px; max-width: 100%; white-space: nowrap;
  margin: 0 auto 30px; color: var(--gold-dark);
  font-size: .94rem; font-weight: 600; letter-spacing: .16em; line-height: 1.3;
  text-transform: uppercase;
}
.team-core-label::before, .team-core-label::after {
  content: ""; flex: 0 1 42px; height: 1px; background: currentColor; opacity: .45;
}
.team-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; align-items: stretch; }
.team-card { position: relative; display: flex; flex-direction: column; border: 1px solid rgba(11,37,69,.11); background: #fff; box-shadow: 0 18px 44px rgba(11,37,69,.08); }
.team-photo-frame { position: relative; overflow: visible; aspect-ratio: 4/5; padding: 11px; border: 1px solid rgba(184,145,47,.5); background: #fff; box-shadow: 0 22px 50px rgba(11,37,69,.13); transition: transform .3s ease, box-shadow .3s ease; }
.team-card:hover .team-photo-frame { transform: translateY(-6px); box-shadow: 0 28px 58px rgba(11,37,69,.17); }
.team-photo-frame::before, .team-photo-frame::after { position: absolute; z-index: 3; width: 52px; height: 52px; pointer-events: none; content: ""; }
.team-photo-frame::before { top: -7px; left: -7px; border-top: 3px solid var(--gold); border-left: 3px solid var(--gold); }
.team-photo-frame::after { right: -7px; bottom: -7px; border-right: 3px solid var(--gold); border-bottom: 3px solid var(--gold); }
.team-photo-frame img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center top; background: var(--cream); filter: saturate(.88) contrast(1.02); }
.team-card-info { display: flex; flex: 1; flex-direction: column; align-items: flex-start; padding: 30px 28px 32px; text-align: left; }
/* Nazwiska — waga 700, tak samo jak na stronie głównej. */
.team-card-info h2 { margin-bottom: 8px; color: var(--navy); font-size: 1.75rem; font-weight: 700; line-height: 1.22; }
.team-role { display: inline-flex; align-items: center; gap: 10px; color: var(--gold-dark); font-size: .72rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.team-role::after { width: 28px; height: 1px; background: rgba(184,145,47,.5); content: ""; }
.team-bio { margin-top: 22px; color: var(--ink-muted); font-size: .91rem; line-height: 1.76; }
.team-partner-mark { margin-top: auto; padding-top: 25px; color: var(--navy); font-size: .68rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.team-partner-mark::before { display: inline-block; width: 7px; height: 7px; margin-right: 9px; border-radius: 50%; background: var(--gold); content: ""; }
.team-collaboration { display: grid; grid-template-columns: .78fr 1.22fr; gap: 58px; align-items: center; margin-top: 54px; padding: 46px 50px; background: var(--navy); color: #fff; box-shadow: 0 24px 55px rgba(11,37,69,.16); }
.team-collaboration h2 { margin: 10px 0 16px; color: #fff; font-size: clamp(2rem,3vw,2.75rem); line-height: 1.22; }
.team-collaboration-copy > p:last-child { color: rgba(255,255,255,.72); font-size: .94rem; line-height: 1.78; }
.team-specialties { display: flex; flex-wrap: wrap; gap: 10px; align-content: center; }
.team-specialties span { padding: 10px 13px; border: 1px solid rgba(227,200,120,.34); background: rgba(255,255,255,.045); color: rgba(255,255,255,.88); font-size: .73rem; line-height: 1.35; }
.team-specialties-note { flex-basis: 100%; margin-top: 8px; color: var(--gold-light); font-size: .75rem; font-weight: 600; }

@media (max-width: 980px) {
  .hero-grid, .split-heading, .tips-section { grid-template-columns: 1fr; gap: 48px; }
  .contact-inner { grid-template-columns: 1fr; }
  .field-row { grid-template-columns: 1fr; }
  .hero-aside { min-height: auto; border-left: 0; padding: 0; }
  .service-photo { aspect-ratio: 16 / 9; max-height: 460px; }
  .scope-grid, .process-grid, .article-grid, .pricing-grid { grid-template-columns: 1fr 1fr; }
  .process-grid article:nth-child(2) { border-right: 0; }
  .process-grid article:nth-child(3) { border-top: 1px solid rgba(255,255,255,.16); padding-left: 0; }
  .team-grid { gap: 18px; }
  .team-card-info { padding: 27px 22px 29px; }
}

@media (max-width: 820px) {
  .team-section { padding: 82px 0; }
  .team-grid { grid-template-columns: 1fr; gap: 22px; max-width: 720px; margin: 0 auto; }
  .team-card { display: grid; grid-template-columns: 240px 1fr; }
  .team-photo-frame { height: 100%; min-height: 350px; aspect-ratio: auto; }
  .team-collaboration { grid-template-columns: 1fr; gap: 30px; padding: 38px 34px; }
}

@media (max-width: 680px) {
  .shell { width: min(100% - 32px, 1180px); }
  h1 { font-size: clamp(2.7rem, 14vw, 4rem); }
  h2 { font-size: clamp(2.1rem, 10vw, 3rem); }
  .service-hero { min-height: auto; padding-top: 46px; }
  .back-link { margin-bottom: 48px; }
  .hero-summary { margin-top: 24px; }
  .hero-actions { align-items: flex-start; flex-direction: column; gap: 24px; }
  .hero-aside > p, .hero-aside nav { display: none; }
  .service-photo { aspect-ratio: 4 / 3; max-height: none; margin: 12px 0 0; }
  .section, .process-section, .knowledge-section { padding-block: 78px; }
  .scope-grid, .process-grid, .article-grid, .pricing-grid, .hub-grid { grid-template-columns: 1fr; }
  .scope-card { min-height: 165px; }
  .process-grid article, .process-grid article + article, .process-grid article:nth-child(3) { min-height: auto; padding: 30px 0 38px; border-right: 0; border-top: 1px solid rgba(255,255,255,.16); }
  .team-card { display: flex; }
  .team-photo-frame { height: auto; min-height: 0; aspect-ratio: 4/5; }
  .team-collaboration { margin-top: 38px; padding: 32px 24px; }
  .process-grid h3 { margin-top: 36px; }
  .article-card summary { min-height: 260px; }
  .pricing-grid article { min-height: 340px; }
  .included-row { align-items: flex-start; flex-direction: column; }
  .contact { padding: 78px 0; }
  .consult-card { padding: 26px 20px; }
  .footer-inner { align-items: flex-start; flex-direction: column; gap: 18px; }
  .hub-card { min-height: 370px; padding: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; }
  .contact::before { animation: none !important; }
}

/* ============================================================
   STRONY ARTYKUŁÓW (baza wiedzy)
   Używane przez /en/services/<usługa>/<artykuł>/
   oraz /pl/uslugi/<usluga>/<artykul>/
   ============================================================ */

.article-hero { padding: 68px 0 76px; background: var(--navy-deep); color: white; }
.article-hero .eyebrow { color: var(--gold-light); }
.article-hero h1 { max-width: 900px; color: white; font-size: clamp(2.05rem, 4.2vw, 3.45rem); line-height: 1.18; }
.article-lede { max-width: 760px; margin-top: 26px; color: rgba(255,255,255,.82); font-size: clamp(1.05rem, 1.8vw, 1.3rem); line-height: 1.62; }
.article-meta { display: flex; flex-wrap: wrap; gap: 10px 26px; margin-top: 34px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.16); color: rgba(255,255,255,.55); font-size: .76rem; letter-spacing: .04em; }
.article-meta b { color: var(--gold-light); font-weight: 700; }

.article-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 72px; padding-block: 76px 96px; align-items: start; }

/* Source Sans 3 ma niższą literę x niż poprzedni krój tekstowy, więc przy tym samym
   rozmiarze czyta się optycznie mniejsza — stąd podniesienie rozmiaru tekstu ciągłego. */
.prose { max-width: 720px; color: var(--navy); font-size: 1.07rem; line-height: 1.78; }
.prose > * + * { margin-top: 22px; }
.prose h2 { margin-top: 52px; font-size: clamp(1.6rem, 2.7vw, 2.15rem); line-height: 1.24; }
.prose h3 { margin-top: 38px; font-size: 1.2rem; font-weight: 700; line-height: 1.36; }
.prose ul, .prose ol { padding-left: 22px; }
.prose li + li { margin-top: 11px; }
.prose ul { list-style: disc; }
.prose ol { list-style: decimal; }
.prose li::marker { color: var(--gold-dark); }
.prose strong { font-weight: 700; }
.prose a:not(.button) { border-bottom: 1px solid var(--gold); color: var(--navy); font-weight: 600; }
.prose a:not(.button):hover { border-bottom-color: var(--navy); }

/* Objaśnienie polskiego terminu prawniczego — kluczowe dla czytelnika w USA. */
.term { margin-top: 30px; padding: 22px 26px; border-left: 3px solid var(--gold); background: var(--white); }
.term b { display: block; margin-bottom: 7px; color: var(--gold-dark); font-size: .72rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.term p { font-size: .95rem; line-height: 1.72; }

.key-points { margin-top: 44px; padding: 30px 32px; border: 1px solid var(--line); background: var(--white); }
.key-points h2 { margin-top: 0; font-size: 1.35rem; }
.key-points ul { margin-top: 18px; padding-left: 20px; list-style: disc; font-size: .95rem; }

.article-note { margin-top: 44px; padding-top: 22px; border-top: 1px solid var(--line); color: var(--ink-muted); font-size: .84rem; line-height: 1.7; }

/* Miejsce oczekujace na tresc - widoczne, zeby pusta sekcja nie wygladala
   na gotowa. Uzywane na stronie polityki prywatnosci do czasu uzupelnienia. */
.prose-todo { padding-left: 16px; border-left: 2px dashed rgba(184,145,47,.5); color: var(--ink-muted); font-size: .92rem; font-style: italic; }

/* Przyklejona kolumna "Na tej stronie" trzymala sie starego zalozenia 92 px.
   Pasek ma dzis 55-65 px, wiec liczymy odstep od zmierzonej wysokosci. */
.article-aside { position: sticky; top: calc(var(--header-h, 73px) + 20px); display: grid; gap: 20px; }
.aside-card { padding: 26px 24px; border: 1px solid var(--line); background: var(--white); }
.aside-card p:first-child { color: var(--gold-dark); font-size: .69rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.aside-card h2 { margin-top: 12px; font-size: 1.45rem; line-height: 1.16; }
.aside-card > p:nth-of-type(2) { margin-top: 12px; color: var(--ink-muted); font-size: .88rem; line-height: 1.7; }
.aside-card .button { width: 100%; margin-top: 20px; }
.aside-card nav { display: grid; margin-top: 14px; }
.aside-card nav a { display: flex; justify-content: space-between; gap: 14px; padding: 13px 0; border-top: 1px solid var(--line); color: var(--navy); font-size: .87rem; font-weight: 600; line-height: 1.45; }
.aside-card nav a span { color: var(--gold-dark); }
.aside-card nav a:hover { color: var(--gold-dark); }

.article-cta { padding: 62px 0 70px; background: var(--navy); color: white; }
.article-cta h2 { max-width: 640px; color: white; }
.article-cta p { max-width: 620px; margin-top: 18px; color: rgba(255,255,255,.68); font-size: .98rem; line-height: 1.72; }
.article-cta .button { margin-top: 30px; }

@media (max-width: 980px) {
  .article-layout { grid-template-columns: 1fr; gap: 46px; padding-block: 56px 72px; }
  .article-aside { position: static; }
}

@media (max-width: 680px) {
  .article-hero { padding: 46px 0 54px; }
  .prose { font-size: 1.03rem; }
  .term, .key-points, .aside-card { padding: 22px 20px; }
  .article-cta { padding: 52px 0 58px; }
}

.hp-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}.captcha-wrap{margin:4px 0 18px;min-height:65px}#form-status{min-height:22px;margin-top:12px;color:var(--gold-light);font-size:.9rem}#form-status.error{color:#ffb4b4}#form-status.success{color:#bce7c5}.consult-card.is-sent>*:not(#form-status){display:none}.consult-card.is-sent #form-status{padding:26px 0;font-size:1rem;line-height:1.65}.mobile-cta{display:none}@media(max-width:680px){body{padding-bottom:68px}.mobile-cta{position:fixed;z-index:30;right:12px;bottom:10px;left:12px;display:flex;min-height:48px;box-shadow:0 8px 30px rgba(6,24,45,.28)}}
/* ============================================================
   SCIEZKA NAWIGACYJNA (BREADCRUMBS)
   Stoi w hero, ktore na kazdej podstronie i na kazdym artykule jest
   granatowe - stad kolory liczone wzgledem --navy-deep.
   Zastapila dawny odnosnik "Wroc na strone glowna": pokazuje pelna
   sciezke, ma odpowiednik w JSON-LD BreadcrumbList i oznacza biezaca
   pozycje przez aria-current, wiec czytnik ekranu nie czyta jej jak
   zwyklego odnosnika.
   Kontrast: rgba(255,255,255,.72) na #081729 = 11,0:1 (odnosniki),
   --gold-light na #081729 = 11,0:1 (pozycja biezaca).
   ============================================================ */
.breadcrumbs { margin-bottom: 44px; font-size: .8rem; line-height: 1.5; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0; padding: 0; list-style: none; }
.breadcrumbs li { display: flex; align-items: center; gap: 12px; }
/* Separator jako ::before elementu listy, a nie osobny znacznik - czytnik
   ekranu nie odczytuje wtedy ukosnika jako tresci. */
.breadcrumbs li + li::before { content: ""; width: 14px; height: 1px; background: rgba(227,200,120,.55); }
.breadcrumbs a { color: rgba(255,255,255,.72); font-weight: 600; }
.breadcrumbs a:hover, .breadcrumbs a:focus-visible { color: var(--gold-light); }
.breadcrumbs [aria-current="page"] { color: var(--gold-light); font-weight: 600; }

/* ============================================================
   HERO PODSTRONY - elementy dolozone do istniejacego ukladu.
   ============================================================ */
/* Informacja "sprawe prowadzimy bez Twojego przyjazdu" - wlaczana tylko tam,
   gdzie jest prawdziwa dla danego rodzaju sprawy (pole "zdalnie" w danych). */
.hero-remote { display: flex; align-items: flex-start; gap: 12px; max-width: 620px; margin-top: 26px; padding: 14px 18px; border-left: 2px solid var(--gold); background: rgba(255,255,255,.05); color: rgba(255,255,255,.86); font-size: .93rem; line-height: 1.6; }
.hero-remote svg { flex: 0 0 auto; width: 19px; height: 19px; margin-top: 2px; color: var(--gold-light); }
/* Drobna informacja o czasie odpowiedzi. Nie jest obietnica wyniku sprawy -
   dotyczy wylacznie kontaktu zwrotnego. */
.hero-assurance { display: flex; align-items: center; gap: 10px; margin-top: 22px; color: rgba(255,255,255,.62); font-size: .84rem; }
.hero-assurance::before { content: ""; flex: 0 0 auto; width: 6px; height: 6px; border-radius: 50%; background: var(--green-ok); box-shadow: 0 0 0 4px rgba(63,122,91,.22); }

/* ============================================================
   PORADNIK NA PODSTRONIE USLUGI
   Ta sama typografia co na osobnych stronach artykulow (.prose), ten sam
   uklad dwukolumnowy (.article-layout) i ta sama przyklejona kolumna
   (.article-aside) - poradnik na podstronie i poradnik pod wlasnym adresem
   maja czytac sie identycznie.
   ============================================================ */
.guide-section { padding-block: 96px 0; background: var(--white); }
.guide-section .article-layout { padding-block: 44px 92px; }
.guide-section .section-heading { margin-bottom: 0; }

/* Spis tresci - stoi na poczatku prozy, zeby dzialal takze na telefonie,
   gdzie przyklejona kolumna boczna przechodzi pod tekst. */
.guide-toc { margin-top: 34px; padding: 24px 28px; border: 1px solid var(--line); background: var(--cream); }
.guide-toc > p { color: var(--gold-dark); font-size: .69rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.guide-toc ol { margin: 14px 0 0; padding-left: 20px; font-size: .95rem; list-style: decimal; }
.guide-toc li + li { margin-top: 9px; }
.guide-toc li::marker { color: var(--gold-dark); }
.guide-toc a { border-bottom: 1px solid transparent; color: var(--navy); font-weight: 600; }
.guide-toc a:hover, .guide-toc a:focus-visible { border-bottom-color: var(--gold); }

/* Przyklad sytuacji - odrozniony od prozy, ale spokojniejszy niz .term,
   bo pojawia sie czesciej. */
.guide-example { margin-top: 30px; padding: 22px 26px; border: 1px solid var(--line); background: var(--cream); }
.guide-example b { display: block; margin-bottom: 8px; color: var(--gold-dark); font-size: .72rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.guide-example p { font-size: .97rem; line-height: 1.74; }

/* Stopka poradnika - autor i daty. Daty sa prawdziwe: pochodza z danych
   artykulu, nie sa wstawiane automatycznie z dzisiejszej daty. */
.guide-byline { display: flex; flex-wrap: wrap; gap: 8px 26px; margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--ink-muted); font-size: .8rem; letter-spacing: .02em; }
.guide-byline b { color: var(--navy); font-weight: 700; }

/* Kolumna boczna poradnika na podstronie - ta sama co na artykulach,
   ale ze spisem tresci zamiast drugiej karty odnosnikow. */
.aside-card nav.aside-toc a { font-weight: 600; }
.aside-card nav.aside-toc a[aria-current="true"] { color: var(--gold-dark); }

@media (max-width: 680px) {
  .breadcrumbs { margin-bottom: 30px; font-size: .74rem; }
  .guide-section { padding-block: 62px 0; }
  .guide-section .article-layout { padding-block: 30px 60px; }
  .guide-toc { padding: 20px 22px; }
}
/* ============================================================
   CENNIK "CO ZA ILE"
   Trzy karty: nazwa czynnosci, widelki kwotowe, jedno zdanie opisu
   i lista tego, co w kwocie siedzi. Kwoty stoja WYLACZNIE w
   _zrodlo/uslugi.json - podmiana cennika kancelarii to jedna zmiana
   w jednym pliku i uruchomienie generatora, a nie edycja 20 stron.
   ============================================================ */
/* Kwota jest najwazniejsza informacja w karcie, wiec dostaje krój
   szeryfowy i stopien powyzej 1,5 rem - czyli wage 400, bo Libre
   Baskerville nie ma wag posrednich. */
.price-amount { margin-top: 18px; color: var(--navy); font-family: var(--font-display); font-size: 1.5rem; font-weight: 400; line-height: 1.22; }
.price-amount span { display: block; margin-top: 9px; color: var(--gold-dark); font-family: var(--font-body); font-size: .74rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.pricing-grid .price-desc { margin-top: 14px; color: var(--ink-muted); font-size: .92rem; line-height: 1.68; }
.price-items { margin: 20px 0 0; padding: 18px 0 0; border-top: 1px solid var(--line); list-style: none; }
.price-items li { position: relative; padding-left: 20px; color: var(--navy); font-size: .88rem; line-height: 1.6; }
.price-items li + li { margin-top: 9px; }
.price-items li::before { content: ""; position: absolute; top: .68em; left: 0; width: 9px; height: 1px; background: var(--gold); }
/* Zastrzezenie pod siatka - widelki sa orientacyjne, a nie oferta. */
.pricing-note { max-width: 820px; margin-top: 36px; padding-top: 26px; border-top: 1px solid var(--line); color: var(--ink-muted); font-size: .92rem; line-height: 1.72; }

/* Przyklejone CTA chowa sie w hero i w sekcji kontaktu - stan ustawia
   assets/js/formularz.js. Bez JavaScriptu przycisk pozostaje widoczny,
   czyli zachowuje sie tak jak dotad. */
.mobile-cta { transition: opacity .25s ease, transform .25s ease; }
.mobile-cta.is-hidden { opacity: 0; transform: translateY(120%); pointer-events: none; }
@media (prefers-reduced-motion: reduce) {
  .mobile-cta { transition: none; }
  .mobile-cta.is-hidden { transform: none; }
}
