/* ==========================================================================
   STRONA GŁÓWNA W ELEMENTORZE — most do arkusza motywu
   --------------------------------------------------------------------------
   Wczytywany wyłącznie na stronie startowej, PO arkuszu Elementora i po
   glowna.css (inc/elementor.php → mp_elementor_style).

   Zasada: wygląd opisuje glowna.css, bez zmiany. Każdy kontener i widget
   niesie tę samą klasę, którą miał odpowiadający mu element w szablonie,
   więc reguły trafiają tam, gdzie trafiały dotąd.

   To, co dotyczy KAŻDEGO układu składanego z widgetów — przezroczysty
   element wewnętrzny (mp-el), pas .mp-wrap, wygląd przycisku — siedzi
   w moście ogólnym, czyli w elementor.css. Tutaj zostaje wyłącznie to,
   co jest właściwe tej jednej stronie:

   1. Kontener Elementora ma inne wartości DOMYŚLNE niż zwykły <div>:
      display:flex, flex-direction:column, odstęp 20 px między dziećmi,
      10 px marginesu wewnętrznego i szerokość 100%.
   2. Przyciski i odnośniki tekstowe strony głównej mają trzy warianty,
      których motyw opisuje klasami — a Elementor rysuje przycisk jako <a>
      wewnątrz opakowania.
   3. Trzy elementy szablonu (<li> siatki liczb, <li> etykiety, <i> kreska)
      nie mają odpowiednika wśród widgetów i dostały własne klasy.
   4. Rytm pionowy: Elementor zeruje marginesy widgetów regułą (0,4,0).

   Każda reguła niżej ma przy sobie powód, dla którego istnieje. Skąd
   wiadomo, że komplet jest pełny: tests/jakosc/glowna-1-1.spec.js porównuje
   220 pudełek, 78 elementów z tekstem i 24 zrzuty sekcji ze wzorcem zdjętym
   po korekcie z 10 września 2026 (przedtem: 131 pudełek, 84 teksty
   i 30 zrzutów stanu sprzed przeniesienia). Przy pustym tym pliku 3 z 6
   testów nie przechodzą — sprawdzone ponownie 17 września.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Domyślne odstępy kontenerów
   --------------------------------------------------------------------------
   Zerujemy przez ZMIENNE, których Elementor używa tylko wtedy, gdy
   w edytorze nic nie wpisano — własne ustawienie z panelu dalej wygrywa.
   -------------------------------------------------------------------------- */

.mp-glowna{
  --container-default-padding-top:0px;
  --container-default-padding-right:0px;
  --container-default-padding-bottom:0px;
  --container-default-padding-left:0px;
  --widgets-spacing-row:0px;
  --widgets-spacing-column:0px;
}

/* Zestaw stylów Elementora wypisuje odstępy na KAŻDY element osobno:
   .elementor-element{--widgets-spacing-row:20px} oraz
   .elementor-widget:not(:last-child){--kit-widget-spacing:20px}.
   Ustawienie zmiennej na sekcji nic nie dawało — każdy potomek
   przywracał sobie 20 px. Stąd 20 px doklejone między każdą parą
   widgetów: nagłówek odsuwał się od akapitu, kafle liczb rozjeżdżały
   siatkę. Odstępy w tym projekcie opisuje arkusz motywu, co do piksela. */
.mp-glowna .elementor-element{
  --widgets-spacing:0px 0px;
  --widgets-spacing-row:0px;
  --widgets-spacing-column:0px;
  --kit-widget-spacing:0px;
}

/* Kontenery, które w szablonie były zwykłym <div> albo <p> — czyli blokiem,
   nie układem. Bez tego Elementor ustawia im pionowy flex. */
.mp-wrap,
.mp-glowna-pracownia__kolumna,
.mp-glowna-naglowek__kolumna,
.mp-glowna-autorka__kolumna,
.mp-glowna-kontakt__kolumna,
.mp-glowna-firmy__tresc{ display:block; }

/* Układy poziome. glowna.css ustawia im display:flex, ale kierunku nie
   podaje — bo <div> ma rząd domyślnie. Kontener Elementora ma kolumnę.
   Podajemy kierunek ZMIENNĄ, nie własnością: Elementor czyta
   flex-direction:var(--flex-direction) regułą .e-con-full.e-flex
   o szczegółowości (0,2,0), której zwykłe flex-direction:row w klasie
   (0,1,0) nie pokona. Zmienna trafia dokładnie tam, gdzie trzeba, i dalej
   ustępuje wartości ustawionej w edytorze — ta ląduje na
   .elementor-element-XXXX, czyli wyżej.

   Klasa .e-con w selektorze nie jest ozdobą: wartość „column” przychodzi
   z reguły .e-con.e-flex, czyli (0,2,0). Zmienna ustawiona samą klasą
   motywu (0,1,0) by przegrała i wiersze kontaktu dalej stały w słupku. */
/* Kontener Elementora dostaje width:100%, przez co jako element układu
   flex nie kurczy się do treści. W szablonie były to zwykłe <div>, <p>
   i <li>, które kurczyły się same:
     — nadtytuł i pas przycisków w hero stały na środku kolumny,
     — lewa kolumna nagłówka „w rzędzie” zostawiała miejsce na odnośnik
       po prawej (rozciągnięta spychała go do drugiego wiersza),
     — etykiety przy biogramie układały się w rządek, a nie w słupek. */
.mp-glowna-oko.e-con,
.mp-glowna-hero__akcje.e-con,
.mp-glowna-naglowek__kolumna.e-con,
.mp-glowna-autorka__tag.e-con{ width:auto; }

.mp-glowna-oko.e-con,
.mp-glowna-naglowek--rzad.e-con,
.mp-glowna-hero__akcje.e-con,
.mp-glowna-wiecej.e-con,
.mp-glowna-autorka__tagi.e-con,
.mp-glowna-kontakt__wiersz.e-con,
.mp-glowna-kontakt__kanal.e-con{ --flex-direction:row; }

/* Elementor przycina KAŻDY widget regułą
   .elementor.elementor .e-con > .elementor-widget{max-width:100%}
   o szczegółowości (0,4,0) — klasa .elementor policzona DWA RAZY, co łatwo
   przeoczyć. Kasuje ona miary czytelności z glowna.css,
   przez co akapit wiodący rozciągał się na całą szerokość sekcji zamiast
   na 540 px. Zdejmujemy przycięcie i przywracamy miary — wartości są
   przepisane z glowna.css, a test glowna-1-1 pilnuje, żeby się nie
   rozjechały. Prefiks .elementor.elementor jest tu po to, żeby wyrównać
   szczegółowość do reguły, którą znosimy — przy remisie wygrywa arkusz
   wczytany później, czyli ten. */
.elementor.elementor .e-con > .elementor-widget{ max-width:none; }
.elementor.elementor .e-con > .mp-glowna-hero__lead{ max-width:540px; }
.elementor.elementor .e-con > .mp-glowna-naglowek__lead{ max-width:500px; }
.elementor.elementor .e-con > .mp-glowna-naglowek__lead--szeroki{ max-width:520px; }
.elementor.elementor .e-con > .mp-glowna-pracownia__akapit{ max-width:560px; }
.elementor.elementor .e-con > .mp-glowna-firmy__lead{ max-width:440px; }
.elementor.elementor .e-con > .mp-glowna-autorka__tresc{ max-width:660px; }

/* Widget ze skrótem ma być przezroczysty — siatka pod nim rysuje się tak
   samo, jak gdy stała bezpośrednio w .mp-wrap. */
.mp-glowna-siatka-skrot,
.mp-glowna-siatka-skrot > .elementor-shortcode{ display:block; }

/* --------------------------------------------------------------------------
   2. Przyciski i odnośniki tekstowe
   --------------------------------------------------------------------------
   Elementor rysuje przycisk jako <a class="elementor-button"> wewnątrz
   opakowania. Całe pudełko — marginesy wewnętrzne, tło, minimalna wysokość —
   musi być na <a>, nie na opakowaniu, inaczej klikalny byłby sam napis,
   a nie przycisk (i cel dotykowy spadłby poniżej 44 px z sekcji 10 briefu).

   Deklaracje są przepisane z .mp-glowna-btn, .mp-glowna-btn-obwodka
   i .mp-glowna-link w glowna.css i idą przez te same tokeny. Test
   tests/jakosc/glowna-1-1.spec.js porównuje jedno z drugim wyliczonymi
   stylami, więc rozjazd wyjdzie od razu.
   -------------------------------------------------------------------------- */

/* Opakowanie przycisku znika z drzewa pudełek: całe pudełko — marginesy
   wewnętrzne, tło, minimalna wysokość — siedzi na <a>, więc opakowanie
   z tą samą klasą rysowałoby je drugi raz (podwójne tło, podwójna
   obwódka, cel dotykowy dwa razy większy niż widać). display:contents
   zdejmuje pudełko, ale zostawia element w drzewie: klasa dalej działa
   jako uchwyt, a Elementor i tak celuje swoimi stylami w .elementor-button. */
.mp-glowna .elementor-widget-button,
.mp-glowna .elementor-widget-button > .elementor-button-wrapper{ display:contents; }

.mp-glowna-btn .elementor-button{
  background-color:var(--mp-ink); color:var(--mp-paper);
  padding:19px 38px; min-height:var(--mp-tap);
  display:inline-flex; align-items:center; justify-content:center;
  font:400 11px/1 var(--mp-sans); letter-spacing:.17em; text-transform:uppercase;
  border:0; border-radius:0; fill:var(--mp-paper); transition:none;
}
/* :visited musi być wypisane osobno przy KAŻDYM wariancie. Elementor
   maluje `.elementor-button:hover,:focus,:visited{color:#fff}`, a most
   ogólny (elementor.css) odbija to na barwę motywu — obie reguły łapią
   też :visited, więc odnośnik do już odwiedzonej podstrony dostawał kolor
   przycisku pełnego. Na przycisku obrysowym dawało to napis kremem na
   kremie: ramka widoczna, tekst nie.

   Tego nie da się złapać ani pomiarem, ani zrzutem: ze względu na
   prywatność przeglądarka zwraca z getComputedStyle kolor SPRZED
   odwiedzenia, a Chromium uruchomiony przez Playwrighta nie prowadzi
   historii — sprawdzone, :visited nie włącza się tam nawet po wejściu
   na wszystkie cele. Pilnuje tego osobny test, który czyta kaskadę wprost
   (narzedzia/glowna-odwiedzone.js). */
.mp-glowna-btn .elementor-button:hover,
.mp-glowna-btn .elementor-button:focus{ background-color:var(--mp-strong); color:var(--mp-paper); }
.mp-glowna-btn .elementor-button:visited{ color:var(--mp-paper); }

.mp-glowna-btn-obwodka .elementor-button{
  background-color:transparent;
  border:1px solid var(--mp-rule); border-radius:0;
  padding:18px 40px; min-height:var(--mp-tap);
  display:inline-flex; align-items:center; justify-content:center;
  font:400 11px/1 var(--mp-sans); letter-spacing:.17em; text-transform:uppercase;
  color:var(--mp-ink); fill:var(--mp-ink);
  transition:background-color .25s ease, color .25s ease, border-color .25s ease;
}
.mp-glowna-btn-obwodka .elementor-button:visited{ color:var(--mp-ink); }
.mp-glowna-btn-obwodka .elementor-button:hover,
.mp-glowna-btn-obwodka .elementor-button:focus{
  background-color:var(--mp-ink); color:var(--mp-paper); border-color:var(--mp-ink);
}

.mp-glowna-link .elementor-button{
  background-color:transparent; border-radius:0; border:0;
  display:inline-flex; align-items:flex-end; min-height:var(--mp-tap);
  font:400 11px/1 var(--mp-sans); letter-spacing:.17em; text-transform:uppercase;
  color:var(--mp-body); fill:var(--mp-body);
  border-bottom:1px solid var(--g-rule); padding:0 0 7px;
  transition:none;
}
.mp-glowna-link .elementor-button:visited{ color:var(--mp-body); }
.mp-glowna-link .elementor-button:hover,
.mp-glowna-link .elementor-button:focus{ color:var(--mp-ink); border-bottom-color:var(--mp-ink); }
.mp-glowna-link--ciemny .elementor-button,
.mp-glowna-link--ciemny .elementor-button:visited{
  color:var(--mp-ink); fill:var(--mp-ink);
  border-bottom-color:var(--mp-rule); padding-bottom:8px;
}

/* --------------------------------------------------------------------------
   3. Elementy bez odpowiednika wśród widgetów
   -------------------------------------------------------------------------- */

/* Kreska przy nadtytule — w szablonie pusty <i>. */
.mp-glowna-oko__kreska{
  width:32px; height:1px; background:var(--mp-rule);
  display:block; flex:0 0 auto;
}
.mp-glowna-oko--srodek .mp-glowna-oko__kreska{ width:36px; background:var(--g-rule); }
.mp-glowna-oko--band .mp-glowna-oko__kreska{ background:var(--g-rule-band); }
.mp-glowna-oko--stone .mp-glowna-oko__kreska{ background:var(--g-rule-stone); }

/* Komórka siatki liczb — w szablonie <li>. */
.mp-glowna-liczby__pole{
  border-right:1px solid var(--mp-line); border-bottom:1px solid var(--mp-line);
  padding:clamp(22px,3vw,44px) clamp(16px,2.2vw,32px);
  display:block;
}

/* Etykieta przy biogramie — w szablonie <li>. */
.mp-glowna-autorka__tag{
  border:1px solid var(--g-tag); padding:11px 16px; display:block;
}
.mp-glowna-autorka__tag .elementor-widget-heading,
.mp-glowna-autorka__tag .elementor-heading-title{
  font:400 11px/1 var(--mp-sans); letter-spacing:.15em;
  text-transform:uppercase; color:var(--mp-body-3);
}

/* Kontakt: wiersz danych. W szablonie <dl> z parami <dt>/<dd> — Elementor
   nie ma widgetu, który by je odtworzył, więc etykieta i wartość są
   osobnymi widgetami. Wygląd i kolejność czytania bez zmiany. */
.mp-glowna-kontakt__wiersz{
  display:flex; align-items:baseline; gap:20px;
  padding:20px 0; border-bottom:1px solid var(--g-linia-kontakt);
}
.mp-glowna-kontakt__etykieta{
  flex:0 0 128px; font:400 11px/1.4 var(--mp-sans); letter-spacing:.17em;
  text-transform:uppercase; color:var(--mp-body);
}
.mp-glowna-kontakt__wartosc{
  font:300 15px/1.6 var(--mp-sans); color:var(--mp-deep);
}
.mp-glowna-kontakt__wartosc a{
  color:var(--mp-deep); border-bottom:1px solid var(--g-linia-kontakt);
}
.mp-glowna-kontakt__wartosc a:hover{ color:var(--mp-ink); border-bottom-color:var(--mp-ink); }

/* Kontakt: wiersz kanału. */
.mp-glowna-kontakt__kanal{
  background:var(--mp-stone); display:flex; align-items:center; gap:16px;
  padding:18px 20px; min-height:var(--mp-tap);
}
a.mp-glowna-kontakt__kanal:hover{ background:var(--g-social-hover); }
/* Fokus tych trzech kafelków rysuje RESET MOTYWU NADRZĘDNEGO, nie token.
   hello-elementor/assets/css/reset.css ma `a:focus-visible{ outline:2px
   solid #000; outline-offset:2px; box-shadow:0 0 0 4px #fff }`
   o szczegółowości (0,1,1) i wygrywa z `:focus-visible` ze style.css
   (0,1,0), gdzie stoi --mp-focus. Zostawione świadomie: tak wygląda dziś
   KAŻDY odnośnik w serwisie, a na TYM kafelku czerń ma kontrast 17,22:1,
   podczas gdy sam token — 3,66:1 (#8A7452 na --mp-stone #ECE8E3). Podmiana
   na token pogorszyłaby więc widoczność fokusu blisko pięciokrotnie.
   (Liczba „4,33:1” z pierwszej wersji tego komentarza to kontrast tokenu
   na --mp-paper #FDFBF9, a nie na tym kafelku ani na czystej bieli, gdzie
   wychodzi 4,47:1 — przeliczone wzorem WCAG 24 września.) Zmierzone
   24 września 2026: „rgb(0, 0, 0) solid 2px”, offset 2 px, przy 1440
   i 390 px. Białej otoczki tu nie widać — zdejmuje ją `.elementor a{
   box-shadow:none }` o tej samej szczegółowości, z późniejszego arkusza;
   na blogu (home.php, bez Elementora) otoczka zostaje. Jeżeli kiedyś
   kafelek dostanie ciemne tło, obrys trzeba nadpisać tak jak zakładki
   w glowna.css — inaczej czarne na ciemnym zniknie. */

/* Drugi akapit w „O pracowni” ma większy odstęp przed odnośnikiem.
   W szablonie robiło to :last-of-type, które tutaj trafiłoby w przycisk —
   bo rodzeństwem są opakowania widgetów, wszystkie <div>. */
.mp-glowna-pracownia__akapit--ostatni{ margin-bottom:26px; }

/* --------------------------------------------------------------------------
   4. Rytm pionowy — marginesy widgetów
   --------------------------------------------------------------------------
   Elementor zeruje marginesy KAŻDEGO widgetu w kontenerze regułą
   `.e-con .elementor-widget.elementor-widget{margin:0}` o szczegółowości
   (0,4,0). Klasa motywu na opakowaniu — (0,1,0) — nie ma z nią szans,
   więc cały rytm pionowy strony znikał: nagłówek przyklejał się do
   akapitu, akapit do przycisku, sekcje robiły się o kilkadziesiąt
   pikseli za niskie.

   Poniżej te same wartości co w glowna.css, wypowiedziane na tyle
   szczegółowo, żeby wygrały. Marginesy zerowe pomijamy — tam Elementor
   trafia w to samo. Test tests/jakosc/glowna-1-1.spec.js porównuje
   wyliczone style ze wzorcem, więc rozjazd wartości wyjdzie od razu.
   -------------------------------------------------------------------------- */

.elementor.elementor .e-con .mp-glowna-naglowek__oko{ margin:0 0 18px; }
.elementor.elementor .e-con .mp-glowna-naglowek__lead{ margin:16px 0 0; }
.elementor.elementor .e-con .mp-glowna-hero__lead{ margin:clamp(18px,2vw,28px) 0 0; }
.elementor.elementor .e-con .mp-glowna-pracownia__tytul{ margin:0 0 26px; }
.elementor.elementor .e-con .mp-glowna-pracownia__akapit{ margin:0 0 20px; }
.elementor.elementor .e-con .mp-glowna-pracownia__akapit--ostatni{ margin:0 0 26px; }
.elementor.elementor .e-con .mp-glowna-liczby__etykieta{ margin:12px 0 0; }
.elementor.elementor .e-con .mp-glowna-autorka__rola{ margin:15px 0 0; }
.elementor.elementor .e-con .mp-glowna-autorka__tresc{ margin:30px 0 28px; }
.elementor.elementor .e-con .mp-glowna-firmy__tytul{ margin:0 0 16px; }
.elementor.elementor .e-con .mp-glowna-firmy__lead{ margin:0 0 24px; }
.elementor.elementor .e-con .mp-glowna-firmy__etykieta{ margin:11px 0 0; }
.elementor.elementor .e-con .mp-glowna-kontakt__tytul{ margin:0 0 clamp(30px,4vw,52px); }
.elementor.elementor .e-con .mp-glowna-kontakt__podtytul{ margin:0 0 22px; }

/* --------------------------------------------------------------------------
   5. Napis nadtytułu
   --------------------------------------------------------------------------
   glowna.css opisuje go selektorem `.mp-glowna-oko span`, który trafia
   w element wewnętrzny widgetu. Opakowanie zostawało z wysokością wiersza
   z <body> (27 px zamiast 11) i rozpychało nadtytuł w każdej sekcji.
   -------------------------------------------------------------------------- */

.mp-glowna-oko__tekst{
  font:400 11px/1 var(--mp-sans); letter-spacing:.15em;
  text-transform:uppercase; color:var(--mp-body);
}
.mp-glowna-oko--srodek .mp-glowna-oko__tekst{ line-height:1.6; }

/* --------------------------------------------------------------------------
   6. Obrazy w kadrach o stałych proporcjach
   --------------------------------------------------------------------------
   Elementor narzuca każdemu obrazowi `.elementor img{height:auto}` —
   szczegółowość (0,1,1). Kafle motywu (produktowy, seria) wpisują obraz
   w kadr o stałych proporcjach i dają mu height:100% selektorem klasowym
   (0,1,0), który tamtej reguły nie pokona. Skutek: obraz wychodził poza
   kadr (409×529 zamiast 409×281) i ilustracja w kaflu była w innej skali
   niż w projekcie.

   Kadr ma overflow:hidden, więc wysokość kafla się nie zmieniała —
   pomiar sekcji tego nie pokazywał. Widać było dopiero na obrazku.

   Od rundy 2 (punkt 1) wyjątków nie ma: kafel w galerii zakładek i kafel
   kompletów mają ten sam kadr 5:7 ze style.css, a plakat wypełnia go
   w całości. Dotąd galeria zakładek miała własną wysokość 300 px.
   -------------------------------------------------------------------------- */

.mp-glowna .mp-card__img,
.mp-glowna .mp-glowna-seria__img{ height:100%; }

/* --------------------------------------------------------------------------
   7. Portret autorki
   -------------------------------------------------------------------------- */

/* Portret wypełnia pudełko — height:100% z glowna.css przegrywało
   z `.elementor img{height:auto}` (0,1,1), przez co obraz miał naturalną
   wysokość zamiast wysokości kadru. */
.mp-glowna .mp-glowna-autorka__portret img{ height:100%; }

/* Opakowanie widgetu „Obraz” wypada z układu (korekta, punkt 10). Wysokość
   pudełka portretu ma wyznaczać kolumna tekstu obok, a nie naturalna
   wysokość zdjęcia — opakowanie w przepływie rozpychałoby wiersz siatki
   do 1400 px. Zdjęcie w środku bierze pudełko opakowania za kadr. */
.mp-glowna-autorka__portret .elementor-widget-image{ position:absolute; inset:0; }

/* --------------------------------------------------------------------------
   8. Telefon — te same progi co w glowna.css
   -------------------------------------------------------------------------- */

@media (max-width:860px){
  .mp-glowna-kontakt__etykieta{ flex-basis:104px; }
}

@media (max-width:520px){
  /* Kierunek znowu zmienną, nie własnością — reguła .e-con-full.e-flex
     ma (0,2,0) i wygrałaby także tutaj. */
  .mp-glowna-kontakt__wiersz.e-con{ --flex-direction:column; gap:8px; }
  .mp-glowna-kontakt__etykieta{ flex-basis:auto; }
}
