.elementor-kit-24{--e-global-color-primary:#FFFFFF;--e-global-color-secondary:#B41C1B;--e-global-color-text:#111115;--e-global-color-accent:#E32C2A;--e-global-color-90a41ec:#27262D;--e-global-color-bb8d4b7:#3A3941;--e-global-color-6bcb93c:#656473;--e-global-color-d95b8a9:#898895;--e-global-color-6436c7b:#BCBAC9;--e-global-color-452434d:#E4E3EC;--e-global-color-9dbcb54:#0B0B0D80;--e-global-color-370d875:#11111166;--e-global-color-cb4aa88:#1111114D;--e-global-color-4e96127:#FFFFFF33;--e-global-typography-primary-font-family:"Sora";--e-global-typography-primary-font-size:clamp(1.875rem, 1.2766rem + 1.9149vw, 3rem);--e-global-typography-primary-font-weight:400;--e-global-typography-primary-text-transform:none;--e-global-typography-primary-text-decoration:none;--e-global-typography-primary-line-height:1.3em;--e-global-typography-primary-letter-spacing:-0.02em;--e-global-typography-secondary-font-family:"Sora";--e-global-typography-secondary-font-size:clamp(1.75rem, 1.4176rem + 1.0638vw, 2.375rem);--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-text-transform:none;--e-global-typography-secondary-text-decoration:none;--e-global-typography-secondary-line-height:1.26em;--e-global-typography-secondary-letter-spacing:-0.01em;--e-global-typography-text-font-family:"Albert Sans";--e-global-typography-text-font-size:clamp(1rem, 0.9668rem + 0.1064vw, 1.0625rem);--e-global-typography-text-font-weight:400;--e-global-typography-text-text-transform:none;--e-global-typography-text-text-decoration:none;--e-global-typography-text-line-height:1.55em;--e-global-typography-text-letter-spacing:0.01em;--e-global-typography-accent-font-family:"Sora";--e-global-typography-accent-font-size:clamp(0.9375rem, 0.9043rem + 0.1064vw, 1rem);--e-global-typography-accent-font-weight:600;--e-global-typography-accent-text-transform:none;--e-global-typography-accent-text-decoration:none;--e-global-typography-accent-line-height:1.5em;--e-global-typography-accent-letter-spacing:0.02em;--e-global-typography-029cc72-font-family:"Sora";--e-global-typography-029cc72-font-size:clamp(2.125rem, 1.3271rem + 2.5532vw, 3.625rem);--e-global-typography-029cc72-font-weight:400;--e-global-typography-029cc72-text-transform:none;--e-global-typography-029cc72-text-decoration:none;--e-global-typography-029cc72-line-height:1.26em;--e-global-typography-029cc72-letter-spacing:-0.02em;--e-global-typography-f169abf-font-family:"Sora";--e-global-typography-f169abf-font-size:clamp(2.875rem, 2.0771rem + 2.5532vw, 4.375rem);--e-global-typography-f169abf-font-weight:400;--e-global-typography-f169abf-text-transform:none;--e-global-typography-f169abf-text-decoration:none;--e-global-typography-f169abf-line-height:1.26em;--e-global-typography-f169abf-letter-spacing:0.02em;--e-global-typography-8bdaf5d-font-family:"Sora";--e-global-typography-8bdaf5d-font-size:clamp(1.25rem, 1.0505rem + 0.6383vw, 1.625rem);--e-global-typography-8bdaf5d-font-weight:400;--e-global-typography-8bdaf5d-text-transform:none;--e-global-typography-8bdaf5d-text-decoration:none;--e-global-typography-8bdaf5d-line-height:1.3em;--e-global-typography-8bdaf5d-letter-spacing:0em;--e-global-typography-a870f3a-font-family:"Sora";--e-global-typography-a870f3a-font-size:clamp(1.125rem, 0.992rem + 0.4255vw, 1.375rem);--e-global-typography-a870f3a-font-weight:400;--e-global-typography-a870f3a-text-transform:none;--e-global-typography-a870f3a-text-decoration:none;--e-global-typography-a870f3a-line-height:1.3em;--e-global-typography-a870f3a-letter-spacing:0em;--e-global-typography-5265166-font-family:"Sora";--e-global-typography-5265166-font-size:clamp(1rem, 0.9335rem + 0.2128vw, 1.125rem);--e-global-typography-5265166-font-weight:400;--e-global-typography-5265166-text-transform:none;--e-global-typography-5265166-text-decoration:none;--e-global-typography-5265166-line-height:1.45em;--e-global-typography-5265166-letter-spacing:0em;--e-global-typography-0d0382a-font-family:"Sora";--e-global-typography-0d0382a-font-size:clamp(0.9375rem, 0.9043rem + 0.1064vw, 1rem);--e-global-typography-0d0382a-font-weight:600;--e-global-typography-0d0382a-text-transform:none;--e-global-typography-0d0382a-text-decoration:none;--e-global-typography-0d0382a-line-height:1.45em;--e-global-typography-0d0382a-letter-spacing:0em;--e-global-typography-d6e93cf-font-family:"Albert Sans";--e-global-typography-d6e93cf-font-size:clamp(1rem, 0.9668rem + 0.1064vw, 1.0625rem);--e-global-typography-d6e93cf-font-weight:600;--e-global-typography-d6e93cf-text-transform:none;--e-global-typography-d6e93cf-text-decoration:none;--e-global-typography-d6e93cf-line-height:1.55em;--e-global-typography-d6e93cf-letter-spacing:0em;--e-global-typography-994bb69-font-family:"Albert Sans";--e-global-typography-994bb69-font-size:clamp(0.875rem, 0.8418rem + 0.1064vw, 0.9375rem);--e-global-typography-994bb69-font-weight:400;--e-global-typography-994bb69-text-transform:none;--e-global-typography-994bb69-text-decoration:none;--e-global-typography-994bb69-line-height:1.55em;--e-global-typography-994bb69-letter-spacing:0.02em;--e-global-typography-186e41a-font-family:"Albert Sans";--e-global-typography-186e41a-font-size:12px;--e-global-typography-186e41a-font-weight:400;--e-global-typography-186e41a-text-transform:none;--e-global-typography-186e41a-text-decoration:none;--e-global-typography-186e41a-line-height:1.5em;--e-global-typography-186e41a-letter-spacing:0em;--e-global-typography-3ac4c78-font-family:"Sora";--e-global-typography-3ac4c78-font-size:clamp(0.8125rem, 0.7793rem + 0.1064vw, 0.875rem);--e-global-typography-3ac4c78-font-weight:400;--e-global-typography-3ac4c78-text-transform:none;--e-global-typography-3ac4c78-text-decoration:none;--e-global-typography-3ac4c78-line-height:1.45em;--e-global-typography-3ac4c78-letter-spacing:0.03em;color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );text-transform:var( --e-global-typography-text-text-transform );text-decoration:var( --e-global-typography-text-text-decoration );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-24 e-page-transition{background-color:#FFBC7D;}.elementor-kit-24 a{color:var( --e-global-color-bb8d4b7 );}.elementor-kit-24 a:hover{color:var( --e-global-color-accent );}.elementor-kit-24 h1{color:var( --e-global-color-text );font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-size:var( --e-global-typography-primary-font-size );font-weight:var( --e-global-typography-primary-font-weight );text-transform:var( --e-global-typography-primary-text-transform );text-decoration:var( --e-global-typography-primary-text-decoration );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-24 h2{color:var( --e-global-color-text );font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-size:var( --e-global-typography-secondary-font-size );font-weight:var( --e-global-typography-secondary-font-weight );text-transform:var( --e-global-typography-secondary-text-transform );text-decoration:var( --e-global-typography-secondary-text-decoration );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-24 h3{color:var( --e-global-color-text );font-family:var( --e-global-typography-8bdaf5d-font-family ), Sans-serif;font-size:var( --e-global-typography-8bdaf5d-font-size );font-weight:var( --e-global-typography-8bdaf5d-font-weight );text-transform:var( --e-global-typography-8bdaf5d-text-transform );text-decoration:var( --e-global-typography-8bdaf5d-text-decoration );line-height:var( --e-global-typography-8bdaf5d-line-height );letter-spacing:var( --e-global-typography-8bdaf5d-letter-spacing );}.elementor-kit-24 h4{color:var( --e-global-color-text );font-family:var( --e-global-typography-a870f3a-font-family ), Sans-serif;font-size:var( --e-global-typography-a870f3a-font-size );font-weight:var( --e-global-typography-a870f3a-font-weight );text-transform:var( --e-global-typography-a870f3a-text-transform );text-decoration:var( --e-global-typography-a870f3a-text-decoration );line-height:var( --e-global-typography-a870f3a-line-height );letter-spacing:var( --e-global-typography-a870f3a-letter-spacing );}.elementor-kit-24 h5{color:var( --e-global-color-text );font-family:var( --e-global-typography-5265166-font-family ), Sans-serif;font-size:var( --e-global-typography-5265166-font-size );font-weight:var( --e-global-typography-5265166-font-weight );text-transform:var( --e-global-typography-5265166-text-transform );text-decoration:var( --e-global-typography-5265166-text-decoration );line-height:var( --e-global-typography-5265166-line-height );letter-spacing:var( --e-global-typography-5265166-letter-spacing );}.elementor-kit-24 h6{color:var( --e-global-color-text );font-family:var( --e-global-typography-0d0382a-font-family ), Sans-serif;font-size:var( --e-global-typography-0d0382a-font-size );font-weight:var( --e-global-typography-0d0382a-font-weight );text-transform:var( --e-global-typography-0d0382a-text-transform );text-decoration:var( --e-global-typography-0d0382a-text-decoration );line-height:var( --e-global-typography-0d0382a-line-height );letter-spacing:var( --e-global-typography-0d0382a-letter-spacing );}.elementor-kit-24 button,.elementor-kit-24 input[type="button"],.elementor-kit-24 input[type="submit"],.elementor-kit-24 .elementor-button{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-size:var( --e-global-typography-accent-font-size );font-weight:var( --e-global-typography-accent-font-weight );text-transform:var( --e-global-typography-accent-text-transform );text-decoration:var( --e-global-typography-accent-text-decoration );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1440px;}.e-con{--container-max-width:1440px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){margin-block-end:0px;}.elementor-element{--widgets-spacing:0px 0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1366px){.elementor-kit-24{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-24 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-24 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-24 h3{font-size:var( --e-global-typography-8bdaf5d-font-size );line-height:var( --e-global-typography-8bdaf5d-line-height );letter-spacing:var( --e-global-typography-8bdaf5d-letter-spacing );}.elementor-kit-24 h4{font-size:var( --e-global-typography-a870f3a-font-size );line-height:var( --e-global-typography-a870f3a-line-height );letter-spacing:var( --e-global-typography-a870f3a-letter-spacing );}.elementor-kit-24 h5{font-size:var( --e-global-typography-5265166-font-size );line-height:var( --e-global-typography-5265166-line-height );letter-spacing:var( --e-global-typography-5265166-letter-spacing );}.elementor-kit-24 h6{font-size:var( --e-global-typography-0d0382a-font-size );line-height:var( --e-global-typography-0d0382a-line-height );letter-spacing:var( --e-global-typography-0d0382a-letter-spacing );}.elementor-kit-24 button,.elementor-kit-24 input[type="button"],.elementor-kit-24 input[type="submit"],.elementor-kit-24 .elementor-button{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}}@media(max-width:1024px){.elementor-kit-24{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-24 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-24 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-24 h3{font-size:var( --e-global-typography-8bdaf5d-font-size );line-height:var( --e-global-typography-8bdaf5d-line-height );letter-spacing:var( --e-global-typography-8bdaf5d-letter-spacing );}.elementor-kit-24 h4{font-size:var( --e-global-typography-a870f3a-font-size );line-height:var( --e-global-typography-a870f3a-line-height );letter-spacing:var( --e-global-typography-a870f3a-letter-spacing );}.elementor-kit-24 h5{font-size:var( --e-global-typography-5265166-font-size );line-height:var( --e-global-typography-5265166-line-height );letter-spacing:var( --e-global-typography-5265166-letter-spacing );}.elementor-kit-24 h6{font-size:var( --e-global-typography-0d0382a-font-size );line-height:var( --e-global-typography-0d0382a-line-height );letter-spacing:var( --e-global-typography-0d0382a-letter-spacing );}.elementor-kit-24 button,.elementor-kit-24 input[type="button"],.elementor-kit-24 input[type="submit"],.elementor-kit-24 .elementor-button{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;}}@media(max-width:767px){.elementor-kit-24{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-24 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-24 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-24 h3{font-size:var( --e-global-typography-8bdaf5d-font-size );line-height:var( --e-global-typography-8bdaf5d-line-height );letter-spacing:var( --e-global-typography-8bdaf5d-letter-spacing );}.elementor-kit-24 h4{font-size:var( --e-global-typography-a870f3a-font-size );line-height:var( --e-global-typography-a870f3a-line-height );letter-spacing:var( --e-global-typography-a870f3a-letter-spacing );}.elementor-kit-24 h5{font-size:var( --e-global-typography-5265166-font-size );line-height:var( --e-global-typography-5265166-line-height );letter-spacing:var( --e-global-typography-5265166-letter-spacing );}.elementor-kit-24 h6{font-size:var( --e-global-typography-0d0382a-font-size );line-height:var( --e-global-typography-0d0382a-line-height );letter-spacing:var( --e-global-typography-0d0382a-letter-spacing );}.elementor-kit-24 button,.elementor-kit-24 input[type="button"],.elementor-kit-24 input[type="submit"],.elementor-kit-24 .elementor-button{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;}}
/* Start custom CSS *//* =====================================================================
   Zawłocki Gałęski Adwokaci — Site Settings → Custom CSS (kit custom_css)
   Source of values: reference/zawlockigaleski-design-tokens.md + MAPPING.md
   Fluid range 500–1440 px (Figma desktop frame 1440, mobile frame 390).
   v1 2026-10-16. clamp() lives ONLY here and in the kit typography.
   Anything typed in Elementor = plain px, desktop + mobile (MAPPING › Spacing).
   Colours = kit globals (--e-global-color-*), so a colour change in the kit
   reaches every class below.
   Order: 0) motion  1) base fixes  2) sections / boxes  3) radius
          4) buttons  5) brand square  6) text links  7) hero  8) language switcher
          9) Przewaga card  10) bullet list  11) Specjalizacje  12) Zespół
          13) Autorytet  14) Kontakt + stopka  15) Dziękujemy  16) legal text
   ===================================================================== */


/* ---------- 0) MOTION TOKENS ---------------------------------------- */
/* One easing + one duration for every hover (Apollo precedent, Marek:
   "smooth"). The design has no prototype transitions, so this is ours. */
:root {
    --zg-ease: cubic-bezier(.22, .61, .36, 1);
    --zg-hover: .45s;
}

a, .elementor-nav-menu--main .elementor-nav-menu a.elementor-item,
.elementor-nav-menu--main .elementor-item::before,
.elementor-nav-menu--main .elementor-item::after {
    transition: color var(--zg-hover) var(--zg-ease),
                background-color var(--zg-hover) var(--zg-ease),
                border-color var(--zg-hover) var(--zg-ease),
                opacity var(--zg-hover) var(--zg-ease);
}

@media (prefers-reduced-motion: reduce) {
    :root { --zg-hover: 0s; }
}


/* ---------- 1) BASE FIXES (Marek's standard set) ---------------------- */

/* clip instead of hidden: hidden turns <body> into a scroll container,
   which breaks position:sticky (Specjalizacje). First line = Safari < 16 */
html, body {
    overflow-x: hidden;
    overflow-x: clip;
}

.elementor-widget-text-editor p:last-child { margin-bottom: 0; }

.elementor-icon-wrapper { line-height: 0; }

.elementor-widget-text-editor ul,
.elementor-widget-text-editor ol { margin-bottom: 1em; }

.elementor-widget-text-editor li { margin-bottom: 0.3em; }

.elementor-widget-text-editor ul:last-child,
.elementor-widget-text-editor ol:last-child { margin-bottom: 0; }


/* ---------- 2) SECTIONS / BOXES ------------------------------------- */
/* Outer section containers get their padding ONLY from a class here.
   Figma tokens: space/section 80 -> 48, space/inset 40 -> 20, space/card 32 -> 24. */

/* OPEN section: section vertical + inset sides.
   Usługi, Obszary wsparcia, Zespół, Publikacje (Figma 420:120, 167:715, 455:1454, 130:200). */
.pad-80 { padding: clamp(3rem, 1.9362rem + 3.4043vw, 5rem) clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem); }

/* CARD section = a rounded panel with a side gutter: 40 on desktop, 0 on a phone,
   where the panel runs edge to edge (Figma Mobile 472:439: Przewaga, Specjalizacje).
   A step at 767, not fluid: the design switches layout there, it does not scale. */
.card-x { padding-inline: 40px; }
@media (max-width: 767px) { .card-x { padding-inline: 0; } }

/* Card interiors */
.box-32 { padding: clamp(1.5rem, 1.234rem + 0.8511vw, 2rem); }          /* space/card: team, publications, accordion items (16x) */
.box-40 { padding: clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem); }      /* space/inset: Obszary wsparcia cards, Specjalizacje panel (7x) */

/* Unique sections (hero, Przewaga card, Autorytet, Kontakt + stopka) get their
   own class when that section is built, so the values are checked against it. */


/* ---------- 3) RADIUS ----------------------------------------------- */
/* radius/m 20 -> 16 (cards, photos: 21x) and radius/l 40 -> 24 (big panels).
   On a container it also sets Elementor's --border-radius, so the background
   overlay follows the corners. On an Image widget it rounds the <img>.
   radius/s 4, radius/xs 2, radius/full 999 do not change on mobile:
   type them in the widget (px). Leave the widget's own Border Radius EMPTY
   when a class is used. */
.e-con.r-m, .elementor-widget-image.r-m img {
    --border-radius: clamp(1rem, 0.867rem + 0.4255vw, 1.25rem);
    border-radius: var(--border-radius);
}
.e-con.r-l, .elementor-widget-image.r-l img {
    --border-radius: clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem);
    border-radius: var(--border-radius);
}


/* ---------- 4) BUTTONS ---------------------------------------------- */
/* Class goes in the widget's Advanced → CSS Classes. Icon and the global
   font (accent = UI/Button) are set IN the widget. Selector = .elementor-button,
   so it covers link buttons (<a>) AND the Pro Form submit (<button>).
     .btn1 red            KONTAKT (header), WYŚLIJ (form), UMÓW KONSULTACJĘ
     .btn2 white outline  on dark: phone in Kontakt, STRONA GŁÓWNA (/dziekujemy/)
   Figma: UI/Button 16 -> 15, line 150 %, padding space/14 x space/inset
   (40 -> 20), pill, 52 -> 51 tall. Both have a 1px border, so padding = token - 1. */
.btn1 .elementor-button,
.btn2 .elementor-button {
    padding: 13px clamp(1.1875rem, 0.5226rem + 2.1277vw, 2.4375rem);
    border-radius: 999px;
    transition: background-color var(--zg-hover) var(--zg-ease),
                border-color var(--zg-hover) var(--zg-ease),
                color var(--zg-hover) var(--zg-ease);
}
.btn1 .elementor-button svg, .btn2 .elementor-button svg { fill: currentColor; }

/* btn1 — brand/red, hover brand/red-dark, white label */
.btn1 .elementor-button {
    border: 1px solid var(--e-global-color-accent);
    background: var(--e-global-color-accent) !important;
    color: var(--e-global-color-primary) !important;
}
.btn1 .elementor-button:hover {
    border-color: var(--e-global-color-secondary);
    background: var(--e-global-color-secondary) !important;
}

/* btn2 — white outline on dark, hover = white fill + black label */
.btn2 .elementor-button {
    border: 1px solid var(--e-global-color-primary);
    background: transparent !important;
    color: var(--e-global-color-primary) !important;
}
.btn2 .elementor-button:hover {
    background: var(--e-global-color-primary) !important;
    color: var(--e-global-color-text) !important;
}

/* Keyboard focus (EAA), invisible to mouse users. brand/red #E32C2A has
   4.5:1 on white and 4.2:1 on #111115, so one colour works on every surface. */
.btn1 .elementor-button:focus-visible,
.btn2 .elementor-button:focus-visible {
    outline: 2px solid var(--e-global-color-accent);
    outline-offset: 3px;
}


/* ---------- 5) BRAND SQUARE ----------------------------------------- */
/* .sq on a Heading widget = the 12x12 square (radius/xs 2) before the text,
   gap space/20 (same on mobile). Section labels (H5): Usługi kancelarii,
   Obszary wsparcia, Specjalizacje, Zespół adwokacki, Publikacje; contact
   lines (H4): e-mail, address. Square colour = --sq, default brand/red.
   The label's indent (40 desktop / 0 or 20 mobile) is the widget's own
   padding in px, because it depends on the section. */
.sq .elementor-heading-title {
    display: flex;
    align-items: center;
    gap: 20px;
}
.sq .elementor-heading-title::before {
    content: "";
    flex: none;
    width: 12px;
    height: 12px;
    border-radius: 2px;
    background: var(--sq, var(--e-global-color-accent));
}


/* ---------- 6) TEXT LINKS ------------------------------------------- */
/* Figma Text / Link: neutral/800 -> hover brand/red + underline.
   Colours come from Theme Style (links); the underline lives here. */
.elementor-widget-text-editor a:hover,
.elementor-widget-text-editor a:focus-visible { text-decoration: underline; }


/* ---------- 7) HERO (01 Hero + Nawigacja) ----------------------------- */
/* Figma desktop 130:81, mobile 472:440, open mobile menu 661:542. v2 2026-10-16.
   .hero-x    outer section (boxed 1440): gutter 40 on top + sides, 0 below;
              phone: none, the panel runs edge to edge (step at 767, like .card-x).
   .hero-box  photo panel: space/inset x3 + space/section below
              (40/40/80/40 -> 20/20/48/20) and radius/l; phone: bottom corners only.
              The top gradient is the container's native Background Overlay. Tablet +
              phone (stacked layout, heading at the bottom, Marek 2026-10-16 "B") add
              a 2nd one (bottom, black 60 % at 2 % -> 0 at 50 %, Figma 472:441) under
              the heading: isolation + z-index -1 keep it above the photo and below
              the content.
   .hero-menu panel inside the mobile menu (Off-Canvas, full screen): the same
              offsets as the hero top row, so the X lands exactly on the burger. */
.e-con.hero-x { padding: 40px 40px 0; }
.e-con.hero-box {
    padding: clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem) clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem) clamp(3rem, 1.9362rem + 3.4043vw, 5rem);
    --border-radius: clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem);
    border-radius: var(--border-radius);
}
.e-con.hero-menu {
    padding: calc(40px + clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem)) calc(40px + clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem)) clamp(3rem, 1.9362rem + 3.4043vw, 5rem);
}
@media (max-width: 1024px) {
    .e-con.hero-box { isolation: isolate; }
    .e-con.hero-box::after {
        content: "";
        position: absolute;
        inset: 0;
        z-index: -1;
        border-radius: inherit;
        pointer-events: none;
        background: linear-gradient(0deg, rgba(0, 0, 0, .6) 2%, rgba(0, 0, 0, 0) 50%);
    }
}
@media (max-width: 767px) {
    .e-con.hero-x { padding: 0; }
    .e-con.hero-box {
        --border-radius: 0 0 clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem) clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem);
    }
    .e-con.hero-menu {
        padding: clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem) clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem) clamp(3rem, 1.9362rem + 3.4043vw, 5rem);
    }
}


/* ---------- 8) LANGUAGE SWITCHER -------------------------------------- */
/* .lang on a Nav Menu widget showing the WP menu "Języki" = Polylang switcher
   (language names renamed to PL / EN, 2026-10-16). Figma 661:541: outline pill
   1px neutral/800, padding 4, segments 4/12 pill, gap 4 = widget controls.
   Active language = neutral/800 fill + white label; Polylang marks it
   .current-lang, not Elementor's active class. Mobile menu now, footer later. */
.lang .elementor-nav-menu--main .elementor-item { border-radius: 999px; }
.lang .elementor-nav-menu--main .current-lang > .elementor-item {
    background-color: var(--e-global-color-bb8d4b7);
    color: var(--e-global-color-primary) !important;
}


/* ---------- 9) PRZEWAGA (03, dark card) ------------------------------- */
/* Figma desktop 130:90 / card 257:1034, mobile 472:509. v3 2026-10-16.
   .przewaga-box  the dark card inside a .card-x section: 80/32 -> 48/20 as in
                  the frames (vertical = space/section; the sides 32 -> 20 are no
                  token pair, MAPPING planned them this way), same 500-1440 range. */
.e-con.przewaga-box { padding: clamp(3rem, 1.9362rem + 3.4043vw, 5rem) clamp(1.25rem, 0.8511rem + 1.2766vw, 2rem); }


/* ---------- 10) BULLET LIST ------------------------------------------ */
/* .bullets on a Text Editor holding a plain <ul> (Obszary wsparcia 167:715 /
   472:513, component "Lista / Punkt z bulletem"): 6x6 brand/red square,
   radius/xs 2, centred in a 21 px row (top 7.5), text 8 after it, items 12
   apart (space/12; Figma space/8 - Iga, Trello 2026-10-17: "ciut większe
   odległości", v11). Font + colour = the widget's own global (Heading/H6).
   v4 2026-10-16. Wins over the base list rules in §1 (same weight, later). */
.bullets ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.bullets li { position: relative; margin: 0; padding-left: 14px; }
.bullets li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 7.5px;
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: var(--e-global-color-accent);
}


/* ---------- 11) SPECJALIZACJE (05) ------------------------------------ */
/* Figma desktop 264:1834 (panel 451:1377), mobile 472:563, motion preview
   813:1163 (Iga). v5 2026-10-16. Decisions (Marek): tablet = phone layout;
   spiral stays put on desktop; CSS sticky; phone accordion, items open
   independently, first open; list names = links to the cards.
   .inset-l     label indent = the panel's own padding (space/inset 40 -> 20)
   .spec-box    the dark panel (+ .box-40 .r-l); background-attachment fixed
                comes from the widget, the phone/tablet go back to scroll
   .spec-nav    left column, sticky under the viewport top (+ WP admin bar)
   .spec-list   Icon List of the 9 names; .is-active = white (script)
   .spec-card   card (+ .box-32 .r-m): blur 40, 70 % until .is-active
                (desktop), red square before .spec-title when active
   .spec-head / .spec-body / .spec-toggle  phone + tablet accordion; the
                script adds .spec-acc to the section and wraps each title
                in a <button aria-expanded> (WAI-ARIA accordion pattern) */
.inset-l { padding-left: clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem); }

.spec-card {
    -webkit-backdrop-filter: blur(40px);
    backdrop-filter: blur(40px);
    transition: opacity var(--zg-hover) var(--zg-ease);
}
.spec-card .spec-body strong { color: var(--e-global-color-primary); font-weight: 600; letter-spacing: 0; }
.spec-card .spec-title .elementor-heading-title { position: relative; }
.spec-list .elementor-icon-list-text { transition: color var(--zg-hover) var(--zg-ease); }
.spec-list .elementor-icon-list-item.is-active .elementor-icon-list-text { color: var(--e-global-color-primary) !important; }

@media (min-width: 1025px) {
    .e-con.spec-nav {
        position: sticky;
        top: calc(40px + var(--wp-admin--admin-bar--height, 0px));
        align-self: flex-start;
    }
    .spec-card { opacity: .7; }
    .spec-card.is-active { opacity: 1; }
    /* brand square in the 24 px title indent, centred on the first line (Figma x 0, y 11) */
    .spec-card .spec-title .elementor-heading-title::before {
        content: "";
        position: absolute;
        left: -24px;
        top: calc(.65em - 6px);
        width: 12px;
        height: 12px;
        border-radius: 2px;
        background: var(--e-global-color-accent);
        opacity: 0;
        transition: opacity var(--zg-hover) var(--zg-ease);
    }
    .spec-card.is-active .spec-title .elementor-heading-title::before { opacity: 1; }
    /* Pinned panel (Iga, Trello 2026-10-17, v11): the section script adds
       .spec-pin when the name list fits the screen height. The panel sticks
       40 px under the viewport top (+ admin bar) - white above it - and is
       --spec-h tall (screen - 40 - 40); the cards slide inside it by --spec-y
       and the panel's rounded edge clips them; the ::after spacer (+ the 40
       gap before it) adds the cards' travel --spec-d to the section, so the
       panel stays put for exactly that much scroll. */
    .spec-pin .e-con.spec-box {
        position: sticky;
        top: calc(40px + var(--wp-admin--admin-bar--height, 0px));
        height: var(--spec-h);
        overflow: hidden;
    }
    .spec-pin .e-con.spec-nav { position: static; }
    .spec-pin .spec-card { transform: translateY(var(--spec-y, 0px)); }
    .spec-pin > .e-con-inner::after {
        content: "";
        flex: none;
        height: max(0px, calc(var(--spec-d, 0px) - 40px));
    }
}

@media (max-width: 1024px) {
    .e-con.spec-box { background-attachment: scroll !important; }
    .spec-acc .spec-head { cursor: pointer; }
    .spec-acc .spec-card:not(.is-open) .spec-body { display: none; }
    /* the title button looks like the h3: beats the kit button style (UI/Button, 0,1,1)
       and Hello's reset.css button:hover background (measured bold Sora 600 before) */
    .spec-card .spec-btn,
    .spec-card .spec-btn:hover,
    .spec-card .spec-btn:focus {
        all: unset;
        display: block;
        cursor: pointer;
    }
    .spec-card .spec-btn:focus-visible { outline: 2px solid var(--e-global-color-accent); outline-offset: 4px; border-radius: 2px; }
    .spec-toggle .elementor-icon { transition: background-color .2s ease; }
    .spec-toggle .elementor-icon svg { transition: transform .2s ease; }
    /* open = overlay/white-20 alone (decision F, 2026-10-16) + the "+" turned into an "x" */
    .spec-card.is-open .spec-toggle .elementor-icon { background-color: var(--e-global-color-4e96127) !important; }
    .spec-card.is-open .spec-toggle .elementor-icon svg { transform: rotate(45deg); }
}


/* ---------- 12) ZESPÓŁ (06) ------------------------------------------- */
/* Figma desktop 455:1454, flipped cards 589:488, mobile 472:592, toggle
   "Team / Bio toggle" 456:279. v6 2026-10-16. Decisions (Marek, "go all"):
   containers + script instead of Pro Flip Box; laptop + tablet 2 columns;
   3D flip 0.6 s (reduce motion = crossfade 0.2 s); "open" toggle =
   overlay/white-20 alone; caption = overlay/dark-50 (as Usługi B).
   .team-card   the card = native Grid 1 x 1; both faces sit in the same
                cell (grid item 1 / 1), so the card is as tall as the
                taller face (each min 440, phone 360)
   .team-front  photo + caption (+ .r-m); turns away when .is-open
   .team-back   red-dark bio (+ .box-32 .r-m); hidden from screen readers
                until .is-open; top padding keeps the bio under the toggle
   .team-cap    caption bar (+ .box-32): blur 10 (Figma)
   .team-btn    the real <button aria-expanded> the script puts over the
                toggle; each face shows its own icon (+ / x) underneath
   Script (b6e06xx): mouse hover opens, tap anywhere on the card / Enter /
   Space toggles, Esc closes; cards open independently. */
.team-card { perspective: 1600px; }
.team-card > .e-con {
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    transition: transform .6s var(--zg-ease);
}
.team-card > .team-back {
    transform: rotateY(180deg);
    visibility: hidden;
    transition: transform .6s var(--zg-ease), visibility 0s linear .6s;
}
.team-card.is-open > .team-front { transform: rotateY(-180deg); }
.team-card.is-open > .team-back {
    transform: rotateY(0deg);
    visibility: visible;
    transition: transform .6s var(--zg-ease), visibility 0s;
}
.e-con.team-back.box-32 { padding-top: 80px; } /* toggle 32 + 32 + gap 16 */
/* Phone: bio in Body/Copy (16) instead of Body/Small (14) - Marek 2026-10-21,
   cards 360 there. The widget keeps the Body/Small global, which can't be
   changed for one breakpoint; 0-4-0 beats the widget's own 0-3-0. */
@media (max-width: 767px) {
    .team-card > .e-con.team-back .elementor-widget-text-editor {
        font-size: var(--e-global-typography-text-font-size);
        line-height: var(--e-global-typography-text-line-height);
        letter-spacing: var(--e-global-typography-text-letter-spacing);
    }
}
/* Contact links under the bio (e-mail, phone) - Iga, Trello 2026-10-22: white,
   underlined like the .legal links; a long address breaks instead of leaving
   the card (v14). */
.team-card > .e-con.team-back .elementor-widget-text-editor a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
    overflow-wrap: anywhere;
}
.team-card > .e-con.team-back .elementor-widget-text-editor a:hover {
    text-decoration: none; /* underlined by default, gone on hover (Marek 2026-10-22, v15) */
}
.team-card > .e-con.team-back .elementor-widget-text-editor a:focus-visible {
    outline: 2px solid var(--e-global-color-primary);
    outline-offset: 2px;
}
.team-cap {
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}
/* beats the kit button style (UI/Button) and Hello's button:hover (decision map) */
.team-card .team-btn,
.team-card .team-btn:hover,
.team-card .team-btn:focus {
    all: unset;
    position: absolute;
    top: 32px;
    right: 32px;
    z-index: 3;
    width: 32px;
    height: 32px;
    border-radius: 4px;
    cursor: pointer;
}
.team-card .team-btn:focus-visible {
    outline: 2px solid var(--e-global-color-primary);
    box-shadow: 0 0 0 4px var(--e-global-color-text);
}
@media (prefers-reduced-motion: reduce) {
    .team-card > .e-con,
    .team-card.is-open > .e-con { transform: none; }
    .team-card > .team-back { opacity: 0; transition: opacity .2s ease, visibility 0s linear .2s; }
    .team-card.is-open > .team-back { opacity: 1; transition: opacity .2s ease, visibility 0s; }
}


/* ---------- 13) AUTORYTET (08) ---------------------------------------- */
/* Figma desktop 257:1046 (panel 130:222), mobile 472:638. v7 2026-10-17.
   .autorytet-box  the white panel (boxed 1440) inside the black 08 section:
                   space/section all round on desktop (80), 48 / 20 on a phone,
                   same 500-1440 range. Edge to edge at every width (Marek E);
                   only the bottom corners are rounded (radius/l 40 -> 24), so the
                   black of the next section (Kontakt) shows under them. */
.e-con.autorytet-box {
    padding: clamp(3rem, 1.9362rem + 3.4043vw, 5rem) clamp(1.25rem, -0.7447rem + 6.383vw, 5rem);
    --border-radius: 0 0 clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem) clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem);
    border-radius: var(--border-radius);
}


/* ---------- 14) KONTAKT + STOPKA (09) --------------------------------- */
/* Figma desktop 264:1440 (frame 130:80), mobile 472:662, footer component
   446:1372 (phone 472:916). v8 2026-10-17. Decisions (Marek, "zgoda na
   wszystko"): footer = Theme Builder template for the whole site (A);
   tablet = phone layout (B); textarea one line on a phone as in Figma (E);
   short form messages, one line in the card (F).
   .kontakt-box  section 09 (boxed 1440, #111115): space/section on top and
                 the Figma 80 sides (80 -> 48 / 20, as .autorytet-box);
                 bottom 0 - the 40 -> 20 gap above the footer line belongs
                 to the footer, so the footer also works on other pages
   .stopka-box   Theme Builder footer (boxed 1440, #111115): 40 -> 20 above
                 the line and under the text, sides as .kontakt-box; the
                 line + 40 -> 20 under it = the inner container's own
                 border + padding (px in the editor)
   .kontakt-form Pro Form in the dark card (field 264:1474): Pro has no
                 field padding or placeholder colour controls. Padding
                 space/14 (beats Pro's .elementor-size-sm 5/14, min-height
                 40), placeholder neutral/600 (6.0:1 on white), textarea 128
                 -> one line on a phone, red focus ring (3.4:1 on
                 neutral/900, same as the buttons). Font, colours, radius 4,
                 gaps, messages = widget controls. */
.e-con.kontakt-box {
    padding: clamp(3rem, 1.9362rem + 3.4043vw, 5rem) clamp(1.25rem, -0.7447rem + 6.383vw, 5rem) 0;
}
.e-con.stopka-box {
    padding: clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem) clamp(1.25rem, -0.7447rem + 6.383vw, 5rem);
}
.kontakt-form .elementor-field-group .elementor-field-textual {
    min-height: 0;
    padding: 14px;
}
.kontakt-form .elementor-field-group .elementor-field-textual::placeholder {
    color: var(--e-global-color-6bcb93c);
    opacity: 1;
}
.kontakt-form .elementor-field-group textarea.elementor-field-textual {
    height: 128px;
    resize: vertical;
}
.kontakt-form .elementor-field-group .elementor-field-textual:focus-visible {
    outline: 2px solid var(--e-global-color-accent);
    outline-offset: 2px;
}
@media (max-width: 767px) {
    .kontakt-form .elementor-field-group textarea.elementor-field-textual { height: calc(1.55em + 28px); }
}
/* Reveal (Iga, Trello 2026-10-17: "stopka ma wyjeżdżać jakby spod spodu",
   v11). The Kontakt script adds .zg-reveal to <body> once the bottom of
   08 Autorytet is on screen AND Kontakt + footer fit the screen height (no
   reveal on phones / short screens). Kontakt and the footer then stick to the
   screen bottom UNDER the sections marked .zg-cover (07 + 08: positioned,
   z-index 2, own background), so the white Autorytet panel slides up and
   uncovers them; they reach their own place exactly at the end of the page.
   --zg-foot-h = footer height (script); Kontakt overlaps the footer by 1 px
   (no seam, as the -1 px margins). */
.zg-reveal .e-con.zg-cover { position: relative; z-index: 2; }
.zg-reveal .e-con.kontakt-box {
    position: sticky;
    bottom: calc(var(--zg-foot-h, 0px) - 1px);
    z-index: 1;
}
.zg-reveal .elementor-location-footer { position: sticky; bottom: 0; z-index: 0; }


/* ---------- 15) DZIEKUJEMY (/dziekujemy/) ----------------------------- */
/* Figma 441:917 (desktop only; phone = the hero phone layout, Marek 17.10).
   v9 2026-10-17.
   .dzieki-box  white page area (boxed 1440) inside a black backdrop section:
                the hero gutter (40 on top + sides; phone 0, the panel runs
                edge to edge, as .hero-x) + 40 white under the panel (phone 20)
                and radius/l on the bottom corners only (40 -> 24, as
                .autorytet-box), so the black of the footer shows under them.
                The panel inside is .hero-box. Below it, black space so the footer
                line sits space/section (80 -> 48) under the white area as in
                Figma (441:1098 padding 80): the footer brings 40 -> 20 itself,
                this margin adds the rest (v10). */
.e-con.dzieki-box {
    padding: 40px;
    margin-bottom: calc(clamp(3rem, 1.9362rem + 3.4043vw, 5rem) - clamp(1.25rem, 0.5851rem + 2.1277vw, 2.5rem));
    --border-radius: 0 0 clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem) clamp(1.5rem, 0.9681rem + 1.7021vw, 2.5rem);
    border-radius: var(--border-radius);
}
@media (max-width: 767px) {
    .e-con.dzieki-box { padding: 0 0 20px; }
}


/* ---------- 16) LEGAL TEXT (/polityka-prywatnosci/) ------------------- */
/* .legal on the Text Editor holding a long legal text (the client's privacy
   policy, Trello 2026-10-21; no Figma frame). v12 2026-10-21.
   h2 = the policy's numbered chapters in the Heading/H3 style (26 -> 20; the
   page's h1 is in the photo panel, Theme Style H2 38 was too loud for nine
   chapter titles), space/block above (40 -> 32), 16 under. Lists: numbers
   and square bullets in brand/red, items space/8 apart, sub-lists 8 under
   their item. Links always underlined: in running text the colour alone
   (neutral/800 vs ink) does not tell them apart (WCAG 1.4.1). Long URLs
   and digit runs (NIP, KRS, REGON typed without spaces) wrap instead of
   running out of the column on a phone (38 px at 360). */
.legal h2 {
    font-size: clamp(1.25rem, 1.0505rem + 0.6383vw, 1.625rem);
    line-height: 1.3;
    letter-spacing: 0;
    margin: clamp(2rem, 1.734rem + 0.8511vw, 2.5rem) 0 16px;
}
.legal h2:first-child { margin-top: 0; }
.legal ol,
.legal ul { padding-left: 1.5em; }
.legal ul { list-style: square; }
.legal li { margin-bottom: 8px; }
.legal li::marker { color: var(--e-global-color-accent); }
.legal li > ol,
.legal li > ul,
.legal li > p { margin: 8px 0 0; }
.legal { overflow-wrap: break-word; }
.legal a { text-decoration: underline; text-underline-offset: 2px; }/* End custom CSS */