/* adekspert.pl — wizytówka */

/* Source Serif 4, waga 400, self-hosted (OFL). Krój display: h1, h2, .stats .n,
   nazwy firm w timelinie — wszystkie w jednej wadze, stąd statyczna instancja
   zamiast wariantu zmiennego (88 KB zamiast 220 KB).
   Polskie diakrytyki (ą ć ę ł ń ś ź ż) siedzą w latin-ext, więc oba subsety są
   wymagane — samo latin dałoby "Pawe? ?cieszko". */
@font-face{
  font-family:"Source Serif 4";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(fonts/source-serif-4-v14-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Source Serif 4";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(fonts/source-serif-4-v14-latin-ext.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root{
  --bg:#fbfaf8;
  --bg-soft:#f4f2ee;
  --bg-card:#ffffff;
  --line:#dfdbd3;
  --line-soft:#e9e6e0;
  --line-ui:#8a8378;          /* obramowania kontrolek — 3.60:1 wobec --bg (WCAG 1.4.11) */
  --line-hover:#c7c1b6;
  --ink:#17191c;
  --ink-dim:#3d434b;
  --muted:#5f6874;
  --accent:#c2410c;           /* przyciemniony na kontrast AA wobec bieli */
  --accent-dim:#a8340a;
  --accent-solid:#ff5a1f;     /* wypełnienia zostają w kolorze marki */
  --accent-btn-hover:#e8511a; /* hover .btn-primary — 5.15:1 wobec --on-accent */
  --on-accent:#1a0a03;
  --head-bg:rgba(251,250,248,.84);
  --hero-glow:rgba(255,90,31,.10);
  color-scheme:light;
  /* dotychczasowy stack zostaje jako fallback na czas ładowania i przy błędzie sieci */
  --serif:"Source Serif 4","Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;
  --wrap:1080px;

  /* skala typograficzna — siedem stopni zamiast dziewięciu stłoczonych w 15–17 px */
  --fs-1:.72rem;    /* 11.5 — .eyebrow, .card .num, .proj-item .kind, .contact-list .k */
  --fs-2:.8125rem;  /* 13   — .roles .d, .org .span, .firm dl, .stats .l */
  --fs-3:.875rem;   /* 14   — nav a, .place, footer, .stack, .firm, .edu, .tags span */
  --fs-4:1rem;      /* 16   — .card p, .proj-item p, .roles .about, .btn */
  --fs-5:1.0625rem; /* 17   — body, .roles .t */
  --fs-6:1.1875rem; /* 19   — .card h3, .proj-item h3, .contact-list .v, .sect-lead */
  --fs-7:1.5rem;    /* 24   — .stats .n, .tl-org .org h3 */
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font:400 var(--fs-5)/1.65 var(--sans);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit}

/* fokus klawiaturowy */
:where(a,button,[tabindex]):focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}
.btn-primary:focus-visible{outline-color:var(--ink)}   /* pomarańcz na pomarańczu byłby niewidoczny */

/* Skip link — pierwszy element w <body>, pozwala przeskoczyć nawigację i wejść
   prosto w <main id="main">. Ukryty przez odsunięcie poza ekran, a NIE przez
   display:none ani visibility:hidden — te dwa wyjmują element z kolejności
   tabulacji, więc link przestałby istnieć dokładnie dla tych osób, dla których
   powstał. body ma overflow-x:hidden, więc odsunięcie nie robi paska przewijania.
   z-index musi przebić .site-head (50), bo header jest sticky i zasłoniłby link. */
.skip{
  position:absolute;left:-9999px;top:8px;z-index:60;
  padding:10px 16px;border:1px solid var(--line);border-radius:8px;
  background:var(--bg-card);color:var(--ink);
  font-size:var(--fs-3);text-decoration:none;
}
.skip:focus{left:8px}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}
.eyebrow{
  font:600 var(--fs-1)/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;
  color:var(--accent);margin:0 0 18px;display:flex;align-items:center;gap:10px;
}
.eyebrow::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,var(--line),transparent)}

/* okruszki — wykorzystują styl .eyebrow, ostatni element to bieżąca strona */
.crumbs a{color:var(--muted);text-decoration:none;border-bottom:1px solid transparent}
.crumbs a:hover{color:var(--accent);border-bottom-color:currentColor}
.crumbs [aria-hidden="true"]{color:var(--muted)}
.crumbs [aria-current="page"]{color:var(--accent)}

/* ---------- header ---------- */
.site-head{
  position:sticky;top:0;z-index:50;
  background:var(--head-bg);backdrop-filter:saturate(160%) blur(12px);
  border-bottom:1px solid var(--line-soft);
}
.site-head .wrap{display:flex;align-items:center;gap:16px;height:62px}
.mark{
  font:600 .95rem/1 var(--sans);letter-spacing:-.01em;text-decoration:none;
  display:flex;align-items:center;gap:9px;white-space:nowrap;
}
.mark .dot{width:9px;height:9px;border-radius:50%;background:var(--accent-solid);flex:none}
.mark span{color:var(--muted);font-weight:400}
.site-head nav{margin-left:auto;display:flex;align-items:center;gap:22px}
.site-head nav a{
  color:var(--muted);text-decoration:none;font-size:var(--fs-3);transition:color .15s;
  white-space:nowrap;
}
.site-head nav a:not(.lang){padding:10px 0}   /* cel dotyku ≥44 px */
.site-head nav a:hover{color:var(--ink)}
.lang{
  font:600 .78rem/1 var(--mono);letter-spacing:.06em;
  border:1px solid var(--line);border-radius:999px;padding:14px 12px;
  color:var(--muted)!important;text-decoration:none;
}
.lang:hover{border-color:var(--accent);color:var(--accent)!important}
@media(max-width:1000px){.mark span{display:none}}
@media(max-width:820px){.site-head nav .hide-sm{display:none}}
@media(max-width:720px){
  .site-head nav{gap:14px}
  .site-head .wrap{gap:10px}
}
@media(max-width:380px){.mark{font-size:.88rem}.wrap{padding:0 18px}}

/* ---------- hero ---------- */
.hero{position:relative;padding:96px 0 72px;overflow:hidden}
.hero::before{
  content:"";position:absolute;inset:-40% -20% auto -20%;height:640px;
  background:radial-gradient(60% 60% at 30% 0%,var(--hero-glow),transparent 70%);
  pointer-events:none;
}
.hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.7;
  background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),
                   linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(70% 60% at 50% 0%,#000,transparent 75%);
  -webkit-mask-image:radial-gradient(70% 60% at 50% 0%,#000,transparent 75%);
}
.hero .wrap{position:relative;z-index:1}
.hero h1{
  font:400 clamp(2.9rem,7.5vw,4.6rem)/1.08 var(--serif);
  letter-spacing:-.02em;margin:0 0 6px;
}
.hero .role{
  font:600 clamp(1.05rem,2.4vw,1.3rem)/1.35 var(--sans);
  color:var(--accent);margin:0 0 26px;letter-spacing:-.01em;text-wrap:balance;
}
.hero .lead{
  font-size:clamp(1.125rem,2.1vw,1.375rem);line-height:1.6;color:var(--ink-dim);
  max-width:62ch;margin:0 0 34px;
}
.hero .lead strong{color:var(--ink);font-weight:600}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:56px}
.btn{
  display:inline-flex;align-items:center;gap:9px;
  padding:13px 22px;border-radius:10px;text-decoration:none;
  font-weight:600;font-size:var(--fs-4);transition:.18s;border:1px solid transparent;
}
.btn-primary{background:var(--accent-solid);color:var(--on-accent)}
.btn-primary:hover{background:var(--accent-btn-hover)}
.btn-ghost{border-color:var(--line);color:var(--ink-dim)}
.btn-ghost:hover{border-color:var(--muted);color:var(--ink)}

.stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--line-soft);border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;
}
.stats div{background:var(--bg);padding:20px 22px}
.stats .n{font:400 var(--fs-7)/1 var(--serif);color:var(--ink);display:block;margin-bottom:6px}
.stats .l{font-size:var(--fs-2);color:var(--muted);line-height:1.45;display:block}
@media(max-width:860px){.stats{grid-template-columns:repeat(2,1fr)}}

/* ---------- pierwszy ekran: kopia obok przebiegu diagnostycznego ---------- */
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:44px;align-items:center;margin-bottom:56px}
.hero-grid .cta-row{margin-bottom:0}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr;gap:34px}}

/* motyw strony: dane → walidacja → werdykt → alert */
.trace{
  margin:0;padding:22px 24px;border:1px solid var(--line);border-radius:14px;
  background:var(--bg-card);font-family:var(--mono);
}
.trace-flow{
  display:flex;flex-wrap:wrap;align-items:center;gap:9px;
  font-size:var(--fs-1);font-weight:600;letter-spacing:.13em;text-transform:uppercase;
  color:var(--muted);padding-bottom:16px;border-bottom:1px solid var(--line-soft);
}
.trace-flow span:not(:first-child)::before{content:"→";margin-right:9px;color:var(--line-ui)}
.trace-rows{margin:0}
.trace-rows div{
  display:flex;justify-content:space-between;align-items:baseline;gap:18px;
  padding:13px 0;border-bottom:1px solid var(--line-soft);
}
.trace-rows div:last-child{border-bottom:0;padding-bottom:0}
.trace-rows dt{margin:0;font-size:var(--fs-2);color:var(--ink-dim)}
.trace-rows dd{margin:0;font-size:var(--fs-2);color:var(--muted);white-space:nowrap}
.trace-rows dd.flag{color:var(--accent);font-weight:600}

/* ---------- sekcja problemowa ---------- */
.probs{
  list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--line-soft);border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;
}
.probs li{
  background:var(--bg);padding:26px 28px;display:flex;gap:15px;align-items:flex-start;
  font-size:var(--fs-4);line-height:1.5;color:var(--ink-dim);
}
.probs li::before{
  content:"";flex:0 0 auto;width:7px;height:7px;border-radius:50%;
  background:var(--accent);margin-top:.6em;
}
@media(max-width:760px){.probs{grid-template-columns:1fr}}

/* ---------- odsyłacz do podstrony automatyzacji ---------- */
.crosslink{margin:28px 0 0;font-size:var(--fs-4);color:var(--muted)}
.crosslink a{color:var(--accent);font-weight:600}

/* ---------- wdrożenia: etykiety problem / co zbudowałem ---------- */
.proj-item .pl-label{
  margin:0 0 7px;font-family:var(--mono);font-size:var(--fs-1);font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
}
.proj-item > div > p{margin:0 0 20px}
.proj-item > div > p:last-child{margin-bottom:0}
.proj-more{margin-top:34px;padding:24px 26px;border:1px dashed var(--line);border-radius:14px}
.proj-more h3{
  margin:0 0 10px;font-family:var(--mono);font-size:var(--fs-1);font-weight:600;
  letter-spacing:.13em;text-transform:uppercase;color:var(--muted);
}
.proj-more p{margin:0;color:var(--ink-dim);font-size:var(--fs-3);line-height:1.6;max-width:74ch}
.proj-more strong{color:var(--ink)}

/* ---------- kroki współpracy ---------- */
.steps{
  list-style:none;margin:0;padding:0;display:grid;gap:1px;
  background:var(--line-soft);border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;
}
.steps li{background:var(--bg);display:grid;grid-template-columns:60px 1fr;gap:20px;padding:26px 28px;align-items:start}
.steps .s-n{font:400 var(--fs-7)/1 var(--serif);color:var(--accent)}
.steps h3{margin:0 0 7px;font-size:var(--fs-5);letter-spacing:-.01em}
.steps p{margin:0;color:var(--muted);font-size:var(--fs-3);line-height:1.55;max-width:60ch}
@media(max-width:560px){.steps li{grid-template-columns:42px 1fr;gap:14px;padding:22px}}

/* ---------- sections ---------- */
section{padding:86px 0;border-top:1px solid var(--line-soft);scroll-margin-top:70px}
section > .wrap > h2{
  font:400 clamp(1.9rem,4vw,2.5rem)/1.15 var(--serif);
  letter-spacing:-.02em;margin:0 0 14px;
}
.sect-lead{color:var(--muted);max-width:62ch;margin:0 0 40px;font-size:var(--fs-6)}
.sect-lead strong{color:var(--ink)}
/* nota o modelu współpracy — inny rodzaj wypowiedzi niż lead, więc odcięta linią */
.engagement{
  max-width:62ch;margin:0 0 44px;padding-top:16px;
  border-top:1px solid var(--line-soft);
  font-size:var(--fs-4);color:var(--ink-dim);
}

/* services */
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
@media(max-width:820px){.cards{grid-template-columns:1fr}}
.card{
  background:var(--bg-card);border:1px solid var(--line);border-radius:16px;
  padding:28px 28px 26px;position:relative;
  scroll-margin-top:86px;
  display:flex;flex-direction:column;   /* żeby .tags{margin-top:auto} realnie dociskało tagi do dołu */
  transition:border-color .2s,transform .2s;
  box-shadow:0 1px 2px rgba(23,25,28,.04);
}
.card:hover{border-color:var(--line-hover);transform:translateY(-2px);box-shadow:0 6px 20px rgba(23,25,28,.07)}
.card .num{
  font:600 var(--fs-1)/1 var(--mono);color:var(--accent);letter-spacing:.14em;
  display:block;margin-bottom:14px;
}
.card h3{font:600 var(--fs-6)/1.3 var(--sans);letter-spacing:-.01em;margin:0 0 12px}
.card p{margin:0 0 16px;color:var(--ink-dim);font-size:var(--fs-4);line-height:1.6}
.card p:last-child{margin-bottom:0}
.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto}
.tags span{
  font:500 var(--fs-3)/1 var(--mono);color:var(--muted);
  border:1px solid var(--line);border-radius:6px;padding:6px 9px;letter-spacing:.02em;
}

/* ---------- pierwszy ekran: dwie ścieżki ---------- */
/* Karty ścieżek to zwykłe .card — dzięki temu dziedziczą hover, cień i cały
   blok motywu ciemnego. Różnią się tylko tym, że zamiast .tags kończą się
   linkiem .go, i że nie mają numeru .num. */
/* Linia zaufania jest teraz całym zdaniem, nie samym stanowiskiem, więc
   potrzebuje odstępu od nagłówka — bez tego na wąskim ekranie zlewa się z h1. */
.hero .role{margin-top:14px}
/* Pierwszy ekran bez bloku statystyk kończy się na przyciskach; bez tego
   zostaje pod nimi 128 px pustki (margines .cta-row + dolny padding .hero). */
.hero .cta-row:last-child{margin-bottom:0}
.card .go{
  margin-top:auto;padding-top:2px;
  font-weight:600;font-size:var(--fs-4);color:var(--accent);text-decoration:none;
}
.card .go:hover{text-decoration:underline;text-underline-offset:3px}

/* rama czasowa przy kroku współpracy — ten sam rytm co .proj-item .kind,
   ale w linii z nagłówkiem, bo kroki są krótsze niż opisy projektów */
.steps h3 .kind{
  display:block;margin-top:5px;
  font:500 var(--fs-1)/1.45 var(--mono);
  color:var(--accent);letter-spacing:.1em;text-transform:uppercase;
}

/* Statystyki otwierają sekcję doświadczenia, nie pierwszy ekran: cztery liczby
   pod nagłówkiem to profil kandydata, a strona ma sprzedawać usługę. */
#doswiadczenie .stats{margin-bottom:44px}

/* projects */
.proj{border-top:1px solid var(--line-soft)}
.proj-item{
  display:grid;grid-template-columns:220px 1fr;gap:32px;
  padding:30px 0;border-bottom:1px solid var(--line-soft);align-items:start;
}
@media(max-width:760px){.proj-item{grid-template-columns:1fr;gap:10px}}
.proj-item h3{
  display:block;font:600 var(--fs-6)/1.3 var(--sans);letter-spacing:-.01em;margin:0;
}
.proj-item .kind{
  display:block;margin-top:6px;
  font:500 var(--fs-1)/1.45 var(--mono);
  color:var(--accent);letter-spacing:.1em;text-transform:uppercase;
}
.proj-item p{margin:0;color:var(--ink-dim);font-size:var(--fs-4);max-width:66ch}
.proj-item .stack{margin-top:10px;font:500 var(--fs-3)/1.5 var(--mono);color:var(--muted)}

/* linki inline w treści */
.proj-item p a,.edu a{
  color:var(--accent);
  text-decoration-thickness:1px;text-underline-offset:3px;
  text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);
  transition:text-decoration-color .15s;
}
.proj-item p a:hover{text-decoration-color:currentColor}

/* contact */
#kontakt,#contact{background:var(--bg-soft)}
.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:52px;align-items:start}
@media(max-width:860px){.contact-grid{grid-template-columns:1fr;gap:36px}}
.contact-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.contact-list li{border-bottom:1px solid var(--line-soft)}
.contact-list a,.contact-list .static,.contact-list button{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px 2px;text-decoration:none;transition:.15s;
}
/* przycisk "Pokaż numer" ma wyglądać jak pozostałe wiersze kontaktu */
.contact-list button{
  width:100%;background:none;border:0;margin:0;
  font:inherit;color:inherit;text-align:left;
}
.contact-list a,.contact-list button{transition:transform .15s ease,color .15s ease}
.contact-list a:hover,.contact-list button:hover{transform:translateX(6px);color:var(--accent)}
.contact-list .k{font:500 var(--fs-1)/1 var(--mono);color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.contact-list .v{font-size:var(--fs-6);font-weight:500;text-align:right;word-break:break-word}
.firm{
  border:1px solid var(--line);border-radius:14px;padding:26px;background:var(--bg);
  font-size:var(--fs-3);line-height:1.75;color:var(--ink-dim);
}
.firm strong{display:block;color:var(--ink);font-size:1rem;margin-bottom:10px}
.firm dl{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;margin:14px 0 0;font-family:var(--mono);font-size:var(--fs-2)}
.firm dt{color:var(--muted)}
.firm dd{margin:0}

/* footer */
footer{padding:34px 0;border-top:1px solid var(--line-soft);color:var(--muted);font-size:var(--fs-3)}
footer .wrap{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between}
footer a{color:var(--muted);text-decoration:none}
footer a:hover{color:var(--ink)}

/* ---------- timeline (doświadczenie) ---------- */
.tl{position:relative;margin-top:8px}
.tl-org{
  display:grid;grid-template-columns:220px 1fr;gap:32px;
  padding:32px 0;border-top:1px solid var(--line-soft);
}
.tl-org:first-child{border-top:0;padding-top:8px}
@media(max-width:760px){.tl-org{grid-template-columns:1fr;gap:14px}}
.tl-org .org{position:sticky;top:82px;align-self:start}
@media(max-width:760px){.tl-org .org{position:static}}
.tl-org .org h3{
  font:400 var(--fs-7)/1.2 var(--serif);
  letter-spacing:-.015em;margin:0 0 8px;
}
.tl-org .org .span{font:500 var(--fs-2)/1.5 var(--mono);color:var(--accent);letter-spacing:.04em}
.tl-org .org .place{font-size:var(--fs-3);color:var(--muted);margin-top:4px}
.roles{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.roles li{
  display:grid;grid-template-columns:1fr auto;gap:10px 20px;align-items:baseline;
  padding:11px 0;border-bottom:1px solid var(--line-soft);
}
.roles li:last-child{border-bottom:0}
.roles .t{font-size:var(--fs-5);font-weight:600;color:var(--ink)}
.roles .d{font:500 var(--fs-2)/1.4 var(--mono);color:var(--muted);white-space:nowrap;text-align:right}
.roles .now{color:var(--accent)}
.roles .about{grid-column:1/-1;margin:6px 0 0;color:var(--ink-dim);font-size:var(--fs-4);line-height:1.6;max-width:66ch}
.edu{
  margin-top:26px;padding-top:22px;border-top:1px solid var(--line-soft);
  font-size:var(--fs-3);color:var(--muted);
}
.edu strong{color:var(--ink-dim);font-weight:600}

@media(max-width:820px){
  .tl-org .org{padding-bottom:16px;border-bottom:1px solid var(--line)}
}
@media(max-width:600px){
  .roles li{grid-template-columns:1fr;gap:4px}
  .roles .d{text-align:left}
  .roles .about{margin-top:8px}
}

/* phone reveal */
.tel-link{cursor:pointer}
.js-note{margin-top:14px;font-size:.82rem;color:var(--muted)}

@media(max-width:480px){
  .hero .eyebrow{font-size:.64rem;letter-spacing:.1em;line-height:1.6}
}

/* ============================================================================
   MOTYW CIEMNY — UWAGA: tokeny i reguły towarzyszące żyją w DWÓCH blokach:
     1) :root[data-theme="dark"]                   — jawny wybór użytkownika
     2) @media (prefers-color-scheme: dark)        — ciemny system, bez wyboru
                :root:not([data-theme="light"])
   Bloki muszą pozostać IDENTYCZNE co do listy tokenów i reguł. Dodajesz token
   w jednym — dodaj w drugim ORAZ w jasnym :root na górze pliku, inaczej ciemny
   motyw odziedziczy jasną wartość. Trzymamy je obok siebie właśnie po to, żeby
   rozjazd był widoczny gołym okiem.
   ============================================================================ */
:root[data-theme="dark"]{
  --bg:#0b0d10;
  --bg-soft:#11141a;
  --bg-card:#14181f;
  --line:#232830;
  --line-soft:#1a1e25;
  --line-ui:#5a6472;
  --line-hover:#333a45;
  --ink:#eef0f3;
  --ink-dim:#c6ccd5;
  --muted:#8d96a3;
  --accent:#ff5a1f;
  --accent-dim:#ff8a5c;
  --accent-solid:#ff5a1f;
  --accent-btn-hover:#ff8a5c;
  --on-accent:#1a0a03;
  --head-bg:rgba(11,13,16,.82);
  --hero-glow:rgba(255,90,31,.20);
  color-scheme:dark;
}
:root[data-theme="dark"] .hero::after{opacity:.8}
:root[data-theme="dark"] .card{box-shadow:none}
:root[data-theme="dark"] .card:hover{background:#191e27;border-color:#3a4250;box-shadow:none}
:root[data-theme="dark"] .firm{background:var(--bg-card)}

@media (prefers-color-scheme: dark){
  /* LUSTRO bloku powyżej — patrz komentarz ostrzegawczy */
  :root:not([data-theme="light"]){
    --bg:#0b0d10;
    --bg-soft:#11141a;
    --bg-card:#14181f;
    --line:#232830;
    --line-soft:#1a1e25;
    --line-ui:#5a6472;
    --line-hover:#333a45;
    --ink:#eef0f3;
    --ink-dim:#c6ccd5;
    --muted:#8d96a3;
    --accent:#ff5a1f;
    --accent-dim:#ff8a5c;
    --accent-solid:#ff5a1f;
    --accent-btn-hover:#ff8a5c;
    --on-accent:#1a0a03;
    --head-bg:rgba(11,13,16,.82);
    --hero-glow:rgba(255,90,31,.20);
    color-scheme:dark;
  }
  :root:not([data-theme="light"]) .hero::after{opacity:.8}
  :root:not([data-theme="light"]) .card{box-shadow:none}
  :root:not([data-theme="light"]) .card:hover{background:#191e27;border-color:#3a4250;box-shadow:none}
  :root:not([data-theme="light"]) .firm{background:var(--bg-card)}
}

/* przełącznik motywu */
.theme-t{
  background:none;border:1px solid var(--line);color:var(--muted);
  width:44px;height:44px;border-radius:8px;display:grid;place-items:center;
  cursor:pointer;padding:0;flex:none;transition:.18s;
}
.theme-t:hover{border-color:var(--accent);color:var(--accent)}
.theme-t svg{width:15px;height:15px;display:block}
.theme-t .i-moon{display:none}
:root[data-theme="dark"] .theme-t .i-moon{display:block}
:root[data-theme="dark"] .theme-t .i-sun{display:none}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .theme-t .i-moon{display:block}
  :root:not([data-theme="light"]) .theme-t .i-sun{display:none}
}

/* WCAG 1.4.11 — obramowanie jest jedynym oznaczeniem tych kontrolek */
.theme-t,.lang,.btn-ghost{border-color:var(--line-ui)}

/* ---------- dopasowanie do telefonu ---------- */
@media(max-width:720px){
  /* 86+86 px pustki między sekcjami to na telefonie ponad 20% ekranu */
  section{padding:56px 0}
  .hero{padding:56px 0 48px}

  /* kontakt: etykieta nad wartością zamiast rozjeżdżania się na boki */
  .contact-list a,.contact-list .static,.contact-list button{
    flex-direction:column;align-items:flex-start;gap:5px;padding:14px 2px;
  }
  .contact-list .v{text-align:left}

  .site-head nav{gap:12px}
}
@media(max-width:600px){
  .cta-row{gap:10px}
  .cta-row .btn{width:100%;justify-content:center}
}

/* ---------- ograniczony ruch ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms!important; animation-iteration-count:1!important;
    transition-duration:.01ms!important; scroll-behavior:auto!important;
  }
  .card:hover{transform:none}
}

/* ---------- wydruk ---------- */
/* trzeci selektor musi tu być, żeby przebić blok @media (prefers-color-scheme: dark) */
@media print{
  :root,:root[data-theme="dark"],:root:not([data-theme="light"]){
    --bg:#fff;--bg-soft:#fff;--bg-card:#fff;--line:#bbb;--line-soft:#ddd;
    --ink:#000;--ink-dim:#222;--muted:#444;--accent:#000;--accent-solid:#000;
    --head-bg:#fff;--hero-glow:transparent;color-scheme:light;
  }
  .site-head,.cta-row{display:none!important}
  .hero::before,.hero::after{display:none!important}
  .hero{padding:0 0 24px}
  section{padding:18px 0}
  .card,.firm,.tl-org,.proj-item{break-inside:avoid}
  a{color:#000;text-decoration:underline}
  body{font:400 11pt/1.45 var(--sans)}
}


/* ---------- mini baner zgody na analitykę ---------- */
.analytics-consent[hidden]{display:none}
.analytics-consent{
  position:fixed;z-index:20;left:20px;right:20px;bottom:20px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  max-width:760px;margin:0 auto;padding:14px 16px;
  color:var(--ink);background:var(--bg-card);border:1px solid var(--line-ui);
  box-shadow:0 10px 34px rgba(23,25,28,.16);border-radius:8px;
  font-size:var(--fs-3);line-height:1.4;
}
.analytics-consent-copy{display:flex;flex-direction:column;gap:2px}
.analytics-consent-copy strong{font-size:var(--fs-4)}
.analytics-consent-copy span{color:var(--ink-dim)}
.analytics-consent-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
.analytics-consent button{
  min-height:38px;padding:7px 13px;border-radius:5px;font:inherit;cursor:pointer;
}
.analytics-consent-reject{color:var(--ink);background:transparent;border:1px solid var(--line-ui)}
.analytics-consent-accept{color:var(--on-accent);background:var(--accent-solid);border:1px solid var(--accent-solid);font-weight:600}
.analytics-consent button:hover{filter:brightness(.96)}
@media(max-width:600px){
  .analytics-consent{left:12px;right:12px;bottom:12px;display:block;padding:14px}
  .analytics-consent-actions{justify-content:flex-end;margin-top:12px}
}
@media print{.analytics-consent{display:none!important}}
