/* ==========================================================================
   DATA SERWIS — arkusz stylów strony głównej (wersja 2, foto)
   Paleta i typografia wynikają wprost z logo firmy:
   granat (#16324F) + pomarańcz (#EE6C1E) na ciepłym, jasnym tle.
   Zasady jakości wg checklisty UI/UX: kontrast min. 4.5:1, cele dotykowe
   min. 44px, zdjęcia z zadeklarowanymi wymiarami (brak skoków layoutu),
   lazy loading poniżej pierwszego ekranu, obsługa prefers-reduced-motion.
   ========================================================================== */

/* ----- Zmienne globalne: kolory, fonty, promienie zaokrągleń ----- */
:root{
  --navy-950:#0C2238;        /* najciemniejszy granat — tła stopki i pasków */
  --navy-900:#0F2A44;        /* granat hero i sekcji kontaktu */
  --navy-800:#16324F;        /* granat z logo — przyciski, akcenty */
  --navy-700:#1E4066;
  --orange:#EE6C1E;          /* pomarańcz z logo — główny kolor akcji (CTA) */
  --orange-hot:#F97F2E;      /* jaśniejszy pomarańcz na ciemnym tle / hover */
  --orange-deep:#C9520D;     /* ciemniejszy pomarańcz — tekst na jasnym tle */
  --paper:#FBF7F1;           /* ciepłe tło strony */
  --paper-deep:#F3EDE3;      /* nieco ciemniejsze tło sekcji naprzemiennych */
  --card:#FFFFFF;
  --ink:#1B2B3B;             /* kolor tekstu podstawowego */
  --muted:#57697B;           /* tekst drugorzędny */
  --line:#E6DDCF;            /* obramowania na jasnym tle */
  --line-navy:rgba(255,255,255,.14); /* obramowania na granacie */
  --ok:#4CBF7E;              /* zielony status "działa" (rozjaśniony dla kontrastu na granacie) */
  --radius:14px;
  --font-display:"Bricolage Grotesque",system-ui,sans-serif; /* nagłówki */
  --font-body:"Instrument Sans",system-ui,sans-serif;        /* tekst */
  --font-mono:"IBM Plex Mono",ui-monospace,monospace;        /* etykiety techniczne */
  /* Skala odstępów (rytm 8px) i warstw (z-index) — jedna dla całej strony */
  --z-header:50; --z-overlay:10; --z-base:1;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
/* Szanujemy ustawienie systemowe "ogranicz animacje" (dostępność) */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--paper);
  line-height:1.6;
  font-size:16.5px;
  overflow-x:clip; /* siatka bezpieczeństwa: nic nie może wymusić poziomego przewijania */
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
/* Eliminacja 300 ms opóźnienia dotyku + widoczny fokus dla klawiatury */
a,button,summary{touch-action:manipulation}
:focus-visible{outline:3px solid var(--orange);outline-offset:3px;border-radius:4px}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}

/* ----- Skip-link: ukryty do momentu otrzymania fokusa (nawigacja klawiaturą).
   Pozwala przeskoczyć menu prosto do treści — wymóg dostępności WCAG. ----- */
.skip-link{
  position:absolute;left:16px;top:-100px;z-index:100;
  background:var(--navy-800);color:#fff;text-decoration:none;
  font-weight:700;padding:12px 20px;border-radius:0 0 10px 10px;
  transition:top .2s;
}
.skip-link:focus{top:0}

/* ----- "Eyebrow" — mała etykieta nad nagłówkiem sekcji.
   Pikselowy znaczek przed tekstem nawiązuje do rozsypanych
   pikseli w literze "D" logo firmy. ----- */
.eyebrow{
  font-family:var(--font-mono);
  font-size:.72rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--orange-deep);
  display:inline-flex;
  align-items:center;
  gap:.65em;
}
.eyebrow::before{
  content:"";
  width:22px;height:12px;flex:none;
  /* Kilka "pikseli" narysowanych gradientami — bez obrazków */
  background:
    conic-gradient(var(--orange) 0 0) 0 0/4px 4px,
    conic-gradient(var(--orange) 0 0) 6px 4px/4px 4px,
    conic-gradient(var(--orange) 0 0) 12px 0/3px 3px,
    conic-gradient(var(--orange) 0 0) 18px 6px/3px 3px,
    conic-gradient(var(--orange) 0 0) 12px 8px/4px 4px;
  background-repeat:no-repeat;
}
.on-dark .eyebrow{color:var(--orange-hot)}

h1,h2,h3{font-family:var(--font-display);line-height:1.12;letter-spacing:-.015em}
h2{font-size:clamp(1.7rem,3.4vw,2.5rem);font-weight:800;margin:.5rem 0 .8rem}
.section-lead{max-width:620px;color:var(--muted);font-size:1.05rem}

section{padding:88px 0}
@media (max-width:720px){section{padding:64px 0}}

/* ==========================================================================
   NAGŁÓWEK STRONY (przyklejony do góry)
   ========================================================================== */
.site-header{
  position:sticky;top:0;z-index:var(--z-header);
  background:rgba(251,247,241,.92);
  -webkit-backdrop-filter:blur(10px); /* prefiks wymagany przez Safari */
  backdrop-filter:blur(10px);
  border-bottom:1px solid transparent;
  transition:border-color .25s,box-shadow .25s;
}
/* Cień pojawia się dopiero po przewinięciu strony (klasa dodawana w JS) */
.site-header.scrolled{border-bottom-color:var(--line);box-shadow:0 4px 24px rgba(22,50,79,.07)}
.header-in{display:flex;align-items:center;gap:28px;height:76px}
.logo-link{flex:none;display:flex;align-items:center}
.logo-link img{height:30px;width:auto}
.main-nav{margin-left:auto;display:flex;gap:26px}
.main-nav a{
  text-decoration:none;font-weight:600;font-size:.95rem;color:var(--ink);
  padding:10px 0;border-bottom:2px solid transparent;transition:border-color .2s,color .2s;
}
.main-nav a:hover{color:var(--orange-deep);border-bottom-color:var(--orange)}
/* Numer telefonu w nagłówku — najważniejsza akcja, zawsze widoczna.
   Wysokość min. 44px = wygodny cel dotykowy. */
.header-phone{
  flex:none;display:inline-flex;align-items:center;gap:9px;
  background:var(--navy-800);color:#fff;text-decoration:none;
  font-weight:700;font-size:.95rem;
  min-height:44px;padding:10px 20px;border-radius:999px;
  transition:background .2s,transform .15s;
}
.header-phone:hover{background:var(--navy-700);transform:translateY(-1px)}
.header-phone svg{width:15px;height:15px;fill:var(--orange-hot)}
/* Na węższych ekranach chowamy menu — zostaje logo i telefon */
@media (max-width:920px){.main-nav{display:none}}
/* Ciasny nagłówek mobilny: mniejsze logo + kompaktowy przycisk telefonu,
   żeby oba elementy zmieściły się obok siebie (bez poziomego przewijania) */
@media (max-width:520px){
  .header-in{height:60px;gap:12px;justify-content:space-between}
  .logo-link img{height:20px}
  .header-phone{padding:10px 14px;font-size:.85rem;gap:7px}
}
/* Najwęższe telefony: zostaje sama ikona słuchawki (opisana aria-label) */
@media (max-width:400px){
  .header-phone{width:44px;height:44px;padding:0;justify-content:center;border-radius:50%}
  .header-phone span{display:none}
  .header-phone svg{width:17px;height:17px}
}

/* ==========================================================================
   HERO — granatowa sekcja otwierająca ze zdjęciem serwisanta
   ========================================================================== */
.hero{
  background:
    radial-gradient(900px 500px at 85% -10%, rgba(238,108,30,.16), transparent 60%),
    linear-gradient(180deg,var(--navy-900),var(--navy-950));
  color:#fff;
  padding:88px 0 96px;
  position:relative;
  overflow:hidden;
}
/* Dekoracyjne "rozsypane piksele" — motyw z logo */
.hero::after{
  content:"";position:absolute;inset:0;
  pointer-events:none;opacity:.5;
  background:
    conic-gradient(rgba(238,108,30,.5) 0 0) 4% 18%/6px 6px,
    conic-gradient(rgba(238,108,30,.28) 0 0) 7% 26%/4px 4px,
    conic-gradient(rgba(255,255,255,.12) 0 0) 3% 34%/5px 5px,
    conic-gradient(rgba(238,108,30,.34) 0 0) 9% 12%/4px 4px,
    conic-gradient(rgba(255,255,255,.10) 0 0) 12% 20%/3px 3px,
    conic-gradient(rgba(238,108,30,.4) 0 0) 96% 78%/6px 6px,
    conic-gradient(rgba(255,255,255,.10) 0 0) 93% 86%/4px 4px,
    conic-gradient(rgba(238,108,30,.25) 0 0) 90% 72%/4px 4px;
  background-repeat:no-repeat;
}
.hero-grid{
  display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;
  position:relative;z-index:var(--z-base);
}
.hero h1{
  font-size:clamp(2.15rem,4.6vw,3.3rem);
  font-weight:800;
  margin:.9rem 0 1.1rem;
}
.hero h1 em{font-style:normal;color:var(--orange-hot)}
.hero-sub{color:#C4D2E0;font-size:1.12rem;max-width:33em;margin-bottom:2rem}
.hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:2.2rem}

/* ----- Przyciski (wspólne dla całej strony) ----- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  font-weight:700;font-size:1.02rem;text-decoration:none;
  min-height:48px;padding:12px 28px;border-radius:999px;
  transition:transform .15s,background .2s,border-color .2s;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:scale(.97)}       /* wyczuwalna reakcja na wciśnięcie */
.btn-orange{background:var(--orange);color:#fff;box-shadow:0 10px 28px rgba(238,108,30,.35)}
.btn-orange:hover{background:var(--orange-hot)}
.btn-ghost{border:1.5px solid var(--line-navy);color:#fff}
.btn-ghost:hover{border-color:rgba(255,255,255,.4)}
.btn svg{width:16px;height:16px;fill:currentColor;flex:none}
.hero-note{
  font-family:var(--font-mono);font-size:.74rem;letter-spacing:.08em;
  color:#A9BCCE;display:flex;align-items:center;gap:.7em;
  flex-wrap:wrap; /* długa linia łamie się na wąskich ekranach zamiast wystawać */
}
.hero-note b{color:#fff;font-weight:500}

/* ----- Element podpisowy: zdjęcie w "wizjerze kamery CCTV".
   Prawdziwa fotografia serwisanta ujęta w narożniki celownika,
   z plakietką REC i pływającą kartą statusu — łączy oba filary:
   monitoring wizyjny i czuwanie nad infrastrukturą IT. ----- */
.hero-photo{position:relative}
.hero-photo .frame{
  position:relative;border-radius:18px;overflow:hidden;
  box-shadow:0 30px 70px rgba(0,0,0,.45);
}
.hero-photo .frame img{
  width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;
}
/* Delikatna granatowa mgła, żeby zdjęcie zlewało się z tłem sekcji */
.hero-photo .frame::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(200deg,rgba(15,42,68,0) 55%,rgba(12,34,56,.55));
}
/* Cztery narożniki wizjera: dwa górne na .corners, dwa dolne na ::before/::after */
.hero-photo .corners::before,.hero-photo .corners::after,
.hero-photo::before,.hero-photo::after{
  content:"";position:absolute;width:30px;height:30px;
  border:3px solid var(--orange);z-index:var(--z-overlay);
}
.hero-photo .corners::before{top:-6px;left:-6px;border-right:0;border-bottom:0;border-radius:14px 0 0 0}
.hero-photo .corners::after{top:-6px;right:-6px;border-left:0;border-bottom:0;border-radius:0 14px 0 0}
.hero-photo::before{bottom:-6px;left:-6px;border-right:0;border-top:0;border-radius:0 0 0 14px}
.hero-photo::after{bottom:-6px;right:-6px;border-left:0;border-top:0;border-radius:0 0 14px 0}
/* Plakietka "POD OPIEKĄ" z migającą kropką nagrywania */
.rec-badge{
  position:absolute;top:16px;left:16px;z-index:var(--z-overlay);
  display:inline-flex;align-items:center;gap:8px;
  background:rgba(12,34,56,.78);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  border:1px solid var(--line-navy);border-radius:999px;
  padding:8px 14px;
  font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;color:#fff;
}
.rec-badge i{
  width:9px;height:9px;border-radius:50%;background:#FF4A3D;flex:none;
  animation:blink 1.6s steps(1) infinite;
}
@keyframes blink{50%{opacity:.25}}
/* Pływająca karta statusu — nachodzi na dół zdjęcia */
.status-card{
  position:absolute;left:-18px;bottom:-26px;z-index:var(--z-overlay);
  background:rgba(12,34,56,.92);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border:1px solid var(--line-navy);border-radius:14px;
  padding:14px 18px;
  display:grid;gap:9px;
  box-shadow:0 18px 44px rgba(0,0,0,.4);
}
.status-card span{
  display:flex;align-items:center;gap:9px;
  font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;color:#DCE6EF;
}
.status-card span::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
@media (max-width:920px){
  .hero-grid{grid-template-columns:1fr;gap:44px}
  .hero{padding:64px 0 96px}
  .status-card{left:12px}
}
/* Dopracowanie hero na telefonach: mniejsza typografia,
   przyciski na całą szerokość (łatwiejsze do trafienia kciukiem) */
@media (max-width:520px){
  .hero{padding:48px 0 88px}
  .hero h1{font-size:1.9rem}
  .hero-sub{font-size:1.02rem;margin-bottom:1.6rem}
  .hero-ctas{flex-direction:column;align-items:stretch;margin-bottom:1.8rem}
  .hero-ctas .btn{justify-content:center}
  .status-card{padding:12px 14px;gap:7px}
  .status-card span{font-size:.65rem}
}

/* ==========================================================================
   PASEK ZAUFANIA — trzy krótkie argumenty pod hero
   ========================================================================== */
.trust{background:var(--navy-950);border-top:1px solid var(--line-navy);padding:0}
/* Sztuczka: tło siatki robi 1-pikselowe linie oddzielające kolumny */
.trust-in{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;background:var(--line-navy);
}
.trust-item{background:var(--navy-950);padding:26px 28px;color:#C4D2E0;font-size:.95rem}
.trust-item b{display:block;color:#fff;font-family:var(--font-display);font-size:1.05rem;font-weight:700;margin-bottom:2px}
@media (max-width:760px){
  .trust-in{grid-template-columns:1fr}
  .trust-item{padding:20px 24px}
}

/* ==========================================================================
   USŁUGI — dwa filary ze zdjęciami + siatka usług uzupełniających
   ========================================================================== */
.pillars{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:44px}
.pillar{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
  position:relative;
  transition:transform .2s,box-shadow .2s;
}
.pillar:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(22,50,79,.10)}
/* Zdjęcie w nagłówku karty; stała proporcja = brak skoku layoutu */
.pillar-photo{position:relative;aspect-ratio:16/7;overflow:hidden}
.pillar-photo img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}
.pillar:hover .pillar-photo img{transform:scale(1.04)}
/* Kolorowa belka na zdjęciu: pomarańcz = monitoring, granat = IT */
.pillar-photo::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:5px;
  background:linear-gradient(90deg,var(--orange),var(--orange-hot));
}
.pillar.navy .pillar-photo::after{background:linear-gradient(90deg,var(--navy-800),var(--navy-700))}
/* Plakietka z logotypem marki — biały "kafelek" na zdjęciu karty */
.brand-badge{
  position:absolute;top:14px;right:14px;z-index:var(--z-base);
  display:inline-flex;align-items:center;gap:9px;
  background:#fff;border-radius:10px;padding:8px 13px;
  box-shadow:0 8px 22px rgba(0,0,0,.28);
}
.brand-badge img{height:24px;width:auto}
/* Plik nice.svg ma wbudowany pusty margines wokół niebieskiego kafla —
   powiększamy obrazek i kompensujemy margines ujemnym odstępem */
.brand-badge .logo-nice{height:40px;margin:-8px -6px}
.brand-badge span{
  font-family:var(--font-display);font-weight:800;font-size:.85rem;
  letter-spacing:.05em;color:#141414;
}
/* Plakietka "certyfikowany monter" — ciemne tło zapewnia czytelność na zdjęciu */
.cert-chip{
  position:absolute;left:14px;bottom:16px;z-index:var(--z-base);
  display:inline-flex;align-items:center;gap:7px;
  background:rgba(12,34,56,.85);backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  border:1px solid rgba(238,108,30,.55);
  border-radius:999px;padding:7px 13px;
  font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--orange-hot);
}
.cert-chip svg{width:12px;height:12px;fill:var(--orange-hot);flex:none}

.pillar-body{padding:30px 34px 30px}
.pillar h3{font-size:1.45rem;font-weight:800;margin-bottom:.6rem}
.pillar-body>p{color:var(--muted);margin-bottom:1.2rem}
.pillar ul{list-style:none;display:grid;gap:10px}
.pillar li{display:flex;gap:11px;font-size:.97rem}
/* Kwadratowy (pikselowy) punktor zamiast kropki — spójny z motywem logo */
.pillar li::before{
  content:"";flex:none;width:8px;height:8px;margin-top:8px;
  background:var(--orange);
}
.pillar.navy li::before{background:var(--navy-700)}
.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:26px}
.mini{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px 22px 20px;
  transition:border-color .2s;
}
.mini:hover{border-color:var(--orange)}
.mini b{display:block;font-family:var(--font-display);font-weight:700;font-size:1.02rem;margin-bottom:4px}
.mini span{color:var(--muted);font-size:.9rem;line-height:1.5;display:block}
@media (max-width:880px){.pillars{grid-template-columns:1fr}.mini-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){
  .mini-grid{grid-template-columns:1fr}
  .pillar-body{padding:24px 20px}
  .mini{padding:18px 18px 16px}
}

/* ==========================================================================
   PROCES WSPÓŁPRACY — cztery ponumerowane kroki
   ========================================================================== */
.process{background:var(--paper-deep)}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:46px;counter-reset:step}
.step{position:relative;padding-top:18px}
/* Numeracja kroków (01–04) generowana licznikiem CSS */
.step::before{
  counter-increment:step;
  content:"0" counter(step);
  font-family:var(--font-mono);font-size:.78rem;letter-spacing:.12em;
  color:var(--orange-deep);
  display:block;margin-bottom:12px;
}
.step::after{
  content:"";position:absolute;top:0;left:0;width:44px;height:3px;background:var(--orange);
}
.step h3{font-size:1.12rem;font-weight:700;margin-bottom:.45rem}
.step p{color:var(--muted);font-size:.94rem}
@media (max-width:880px){.steps{grid-template-columns:1fr 1fr;gap:34px 26px}}
@media (max-width:520px){.steps{grid-template-columns:1fr}}

/* ==========================================================================
   PAS AWARYJNEGO CTA — zdjęcie serwerowni z granatową nakładką
   ========================================================================== */
.cta-band{
  position:relative;color:#fff;padding:84px 0;overflow:hidden;
  background:var(--navy-950);
}
.cta-band>img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
}
/* Nakładka zapewnia czytelność tekstu na zdjęciu (kontrast!) */
.cta-band::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(12,34,56,.94) 30%,rgba(12,34,56,.72));
}
.cta-band .wrap{position:relative;z-index:var(--z-base)}
.cta-band h2{max-width:15em}
.cta-band p{color:#C4D2E0;max-width:36em;margin-bottom:1.8rem}
@media (max-width:720px){.cta-band{padding:64px 0}}

/* ==========================================================================
   DLACZEGO MY + OBSZAR DZIAŁANIA
   ========================================================================== */
.area-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start;margin-top:8px}
.why-list{list-style:none;display:grid;gap:22px;margin-top:34px}
.why-list li{display:flex;gap:16px}
.why-ico{
  flex:none;width:44px;height:44px;border-radius:11px;
  background:rgba(238,108,30,.12);display:grid;place-items:center;
}
.why-ico svg{width:21px;height:21px;fill:var(--orange-deep)}
.why-list b{display:block;font-family:var(--font-display);font-weight:700;margin-bottom:2px}
.why-list p{color:var(--muted);font-size:.94rem}
/* Granatowa karta z listą miejscowości */
.towns{
  background:var(--navy-900);color:#fff;border-radius:18px;
  padding:34px 34px 30px;position:relative;overflow:hidden;
}
.towns::after{
  content:"";position:absolute;right:-8px;bottom:-8px;width:150px;height:150px;opacity:.6;
  background:
    conic-gradient(rgba(238,108,30,.5) 0 0) 70% 20%/7px 7px,
    conic-gradient(rgba(238,108,30,.3) 0 0) 84% 34%/5px 5px,
    conic-gradient(rgba(255,255,255,.12) 0 0) 60% 44%/5px 5px,
    conic-gradient(rgba(238,108,30,.4) 0 0) 78% 58%/6px 6px,
    conic-gradient(rgba(255,255,255,.1) 0 0) 88% 70%/4px 4px;
  background-repeat:no-repeat;
}
.towns h3{font-size:1.3rem;font-weight:800;margin:.4rem 0 1.2rem}
.town-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;position:relative;z-index:var(--z-base)}
.town-list li{display:flex;align-items:center;gap:10px;font-size:.98rem;color:#DCE6EF}
.town-list li::before{content:"";width:8px;height:8px;flex:none;background:var(--orange)}
/* Lubin — siedziba firmy — wyróżniony większym znacznikiem */
.town-list li.home{color:#fff;font-weight:700}
.town-list li.home::before{width:10px;height:10px;outline:3px solid rgba(238,108,30,.3)}
.towns small{display:block;margin-top:20px;color:#A9BCCE;font-size:.85rem;position:relative;z-index:var(--z-base)}
@media (max-width:880px){.area-grid{grid-template-columns:1fr;gap:40px}}
/* Na wąskich ekranach lista miejscowości w jednej kolumnie —
   dwie kolumny długich nazw robiły się ciasne */
@media (max-width:560px){
  .towns{padding:26px 22px 24px}
  .town-list{grid-template-columns:1fr}
}

/* ==========================================================================
   OPINIE KLIENTÓW
   ========================================================================== */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}
.quote{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 26px 24px;display:flex;flex-direction:column;gap:16px;
}
.quote p{font-size:.98rem;flex:1}
.quote p::before{
  content:"„";display:block;font-family:var(--font-display);font-size:2.6rem;
  line-height:.5;color:var(--orange);margin-bottom:10px;
}
.quote footer{font-size:.87rem;color:var(--muted)}
.quote footer b{color:var(--ink);display:block;font-size:.93rem}
@media (max-width:880px){.quotes{grid-template-columns:1fr}}

/* ==========================================================================
   FAQ — natywny akordeon <details> (działa bez JavaScriptu)
   ========================================================================== */
.faq{background:var(--paper-deep)}
.faq-list{max-width:780px;margin-top:38px}
.faq-list details{
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  margin-bottom:12px;overflow:hidden;
}
.faq-list summary{
  cursor:pointer;list-style:none;
  padding:19px 54px 19px 22px;      /* wysokość >44px = wygodny cel dotykowy */
  font-weight:700;font-family:var(--font-display);font-size:1.03rem;
  position:relative;
}
.faq-list summary::-webkit-details-marker{display:none}
/* Znak "+" obraca się w "×" po rozwinięciu odpowiedzi */
.faq-list summary::after{
  content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);
  font-family:var(--font-mono);font-size:1.2rem;color:var(--orange-deep);
  transition:transform .2s;
}
.faq-list details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq-list details p{padding:0 22px 20px;color:var(--muted);font-size:.96rem;max-width:60em}

/* ==========================================================================
   KONTAKT — granatowa sekcja z kartami kontaktu i formularzem
   ========================================================================== */
.contact{
  background:linear-gradient(180deg,var(--navy-900),var(--navy-950));
  color:#fff;
}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;margin-top:10px}
.contact .section-lead{color:#C4D2E0}
.contact-cards{display:grid;gap:16px;margin-top:34px}
.ccard{
  display:flex;align-items:center;gap:18px;text-decoration:none;
  background:rgba(255,255,255,.05);border:1px solid var(--line-navy);
  border-radius:14px;padding:20px 22px;
  transition:border-color .2s,background .2s;
}
a.ccard:hover{border-color:var(--orange);background:rgba(238,108,30,.08)}
.ccard-ico{
  flex:none;width:46px;height:46px;border-radius:12px;
  background:rgba(238,108,30,.16);display:grid;place-items:center;
}
.ccard-ico svg{width:21px;height:21px;fill:var(--orange-hot)}
.ccard small{display:block;color:#A9BCCE;font-size:.8rem;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase}
.ccard b{font-size:1.15rem;font-family:var(--font-display)}
.contact-form{
  background:rgba(255,255,255,.05);border:1px solid var(--line-navy);
  border-radius:18px;padding:32px 30px;
}
.contact-form h3{font-size:1.25rem;font-weight:800;margin-bottom:6px}
.contact-form>p{color:#A9BCCE;font-size:.9rem;margin-bottom:22px}
.field{margin-bottom:16px}
/* Każde pole ma widoczną etykietę (nie tylko placeholder) — dostępność */
.field label{display:block;font-size:.85rem;font-weight:600;margin-bottom:6px;color:#DCE6EF}
.field input,.field textarea{
  width:100%;min-height:48px;padding:13px 15px;border-radius:10px;
  border:1px solid var(--line-navy);
  background:rgba(12,34,56,.5);color:#fff;
  font:inherit;font-size:.96rem;
}
.field textarea{min-height:0}
.field input::placeholder,.field textarea::placeholder{color:#8FA5BA}
.field input:focus,.field textarea:focus{outline:2px solid var(--orange);outline-offset:0;border-color:transparent}
.contact-form button{border:0;cursor:pointer;width:100%;justify-content:center;font-family:var(--font-body)}
@media (max-width:880px){.contact-grid{grid-template-columns:1fr;gap:44px}}
@media (max-width:520px){
  .contact-form{padding:24px 20px}
  .ccard{padding:16px 18px}
  .ccard b{font-size:1.05rem}
}

/* ==========================================================================
   STOPKA
   ========================================================================== */
.site-footer{background:var(--navy-950);color:#A9BCCE;border-top:1px solid var(--line-navy);padding:38px 0}
.footer-in{display:flex;flex-wrap:wrap;gap:18px 40px;align-items:center;justify-content:space-between;font-size:.88rem}
.footer-brand{font-family:var(--font-display);font-weight:800;font-size:1.05rem;color:#fff}
.footer-brand span{color:var(--orange-hot)}
.footer-in a{color:#C4D2E0;text-decoration:none;padding:6px 0}
.footer-in a:hover{color:#fff}
/* Stopka mobilna: elementy jeden pod drugim, wyśrodkowane */
@media (max-width:640px){
  .footer-in{flex-direction:column;gap:8px;text-align:center}
}

/* ==========================================================================
   BANER COOKIES — pasek przypięty do dołu ekranu.
   Domyślnie ukryty atrybutem hidden; skrypt pokazuje go tylko wtedy,
   gdy użytkownik nie zaakceptował go wcześniej (zapis w localStorage).
   ========================================================================== */
.cookie-bar{
  position:fixed;left:16px;right:16px;bottom:16px;z-index:90; /* nad nagłówkiem, pod niczym */
  max-width:720px;margin:0 auto;
  display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  background:var(--navy-900);color:#DCE6EF;
  border:1px solid var(--line-navy);border-radius:16px;
  padding:18px 22px;
  box-shadow:0 18px 44px rgba(0,0,0,.35);
  font-size:.9rem;line-height:1.5;
}
.cookie-bar[hidden]{display:none}   /* hidden musi wygrać z display:flex */
.cookie-bar p{flex:1;min-width:240px;margin:0}
.cookie-bar a{color:var(--orange-hot)}
.cookie-bar .btn{flex:none;padding:10px 24px;min-height:44px;font-size:.95rem}
@media (max-width:520px){
  .cookie-bar{left:12px;right:12px;bottom:12px;padding:16px 18px;font-size:.85rem}
  .cookie-bar .btn{width:100%;justify-content:center}
}

/* ==========================================================================
   PODSTRONY PRAWNE (polityka prywatności) — typografia długiego tekstu
   ========================================================================== */
.legal{max-width:780px}
.legal h1{font-size:clamp(1.8rem,3.6vw,2.4rem);font-weight:800;margin:.4rem 0 1rem}
.legal h2{font-size:1.25rem;margin:2.2rem 0 .6rem}
.legal p,.legal li{color:var(--muted);font-size:.98rem}
.legal ul{padding-left:1.3em;display:grid;gap:8px;margin:.6rem 0}
.legal a{color:var(--orange-deep)}
.legal .updated{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.1em;color:var(--muted)}

/* ==========================================================================
   STRONA BŁĘDU 404 — "brak sygnału" w stylistyce monitoringu
   ========================================================================== */
.error-hero{
  min-height:calc(100dvh - 76px);          /* pełny ekran minus nagłówek */
  display:grid;place-items:center;text-align:center;
  background:
    radial-gradient(900px 500px at 50% -10%, rgba(238,108,30,.14), transparent 60%),
    linear-gradient(180deg,var(--navy-900),var(--navy-950));
  color:#fff;padding:64px 24px;
}
.error-code{
  font-family:var(--font-mono);font-size:clamp(4rem,14vw,7rem);
  font-weight:500;letter-spacing:.06em;color:var(--orange-hot);
  line-height:1;
}
.error-hero h1{font-size:clamp(1.5rem,3.6vw,2.2rem);font-weight:800;margin:.8rem 0 .6rem}
.error-hero p{color:#C4D2E0;max-width:34em;margin:0 auto 2rem}
.error-ctas{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

/* ==========================================================================
   ANIMACJA WEJŚCIA — elementy z klasą .reveal wjeżdżają przy przewijaniu
   (klasę .in dodaje IntersectionObserver w skrypcie strony;
   animujemy tylko transform i opacity — nie powodują przeliczeń layoutu)
   ========================================================================== */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}
