
/* Jedna semantyczna paleta; Konfigurator ustawia sześć wartości bazowych. */
:root {
    --jh-theme-background: #F7F6F2;
    --jh-theme-surface: #FEFDFB;
    --jh-theme-text: #292D2E;
    --jh-theme-primary: #344959;
    --jh-theme-olive: #747D67;
    --jh-theme-brown: #99806C;
    --jh-theme-muted: color-mix(in srgb, var(--jh-theme-text) 68%, var(--jh-theme-background));
    --jh-theme-line: color-mix(in srgb, var(--jh-theme-text) 15%, transparent);
    --jh-theme-contrast: #FFFFFF;
    --jh-theme-hover: color-mix(in srgb, var(--jh-theme-primary) 85%, #000000);
    --jh-theme-soft: color-mix(in srgb, var(--jh-theme-background) 93%, var(--jh-theme-primary));
    --jh-theme-darker: color-mix(in srgb, var(--jh-theme-primary) 65%, var(--jh-theme-text));
    --jh-focus-color: var(--jh-theme-primary);
}
/* HERTMEDIA Starter Default | wspólny system komponentów i Warm Graphite. */


:is(.jh-hs-page, .jh-hs-section, .jh-hs-dialog) {
    --jh-hs-type-body: 15px;
    --jh-hs-type-meta: 11px;
    --jh-hs-type-label: 11px;
    --jh-hs-type-action: 12px;
    --jh-hs-type-nav: 14px;
    --jh-hs-type-form-label: 12px;
    --jh-hs-type-footer: 14px;
    --jh-hs-leading-body: 1.66;
    --jh-hs-leading-meta: 1.5;
    --jh-hs-leading-footer: 1.65;
}

.jh-hs-page {
    --jh-hs-header-height: 80px;
    --jh-hs-screen-height: 100svh;
    --jh-hs-hero-screen-height: 100svh;
    --jh-hs-admin-offset: 0px;
    --jh-hs-wide: 1200px;
    --jh-hs-gutter: clamp(22px, 4.2vw, 72px);
    --jh-hs-ink: var(--jh-theme-text);
    --jh-hs-muted: var(--jh-theme-muted);
    --jh-hs-soft: var(--jh-theme-surface);
    --jh-hs-border: color-mix(in srgb, var(--jh-theme-text) 12%, transparent);
    --jh-hs-radius: 6px;
    color: var(--jh-hs-ink);
}

body.admin-bar .jh-hs-page {
    --jh-hs-admin-offset: 32px;
    --jh-hs-screen-height: calc(100svh - var(--jh-hs-admin-offset));
    --jh-hs-hero-screen-height: 100svh;
}
.jh-hs-page, .jh-hs-page *, .jh-hs-page *::before, .jh-hs-page *::after { box-sizing: border-box; }
.jh-hs-page > *, .jh-hs-page__main, .jh-hs-page__main > .wp-block-post-content, .jh-hs-page__main > .wp-block-post-content > :not(dialog) { margin-block: 0 !important; }

.jh-hs-page .wp-block-button__link,
.jh-hs-page button,
.jh-hs-page .jh-hs-action-link {
    text-transform: uppercase;
    letter-spacing: .08em;
}

.jh-hs-page .wp-block-button__link {
    padding: 20px 34px;
    border-radius: var(--jh-hs-radius) !important;
    font-size: var(--jh-hs-type-action);
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transform: none;
    transition: background-color .28s ease, border-color .28s ease, color .28s ease, box-shadow .28s ease;
}

/* Każdy świetlny refleks należy do własnego przycisku, nie do okna dialogowego. */
.jh-hs-page .jh-hs-action-link,
.jh-hs-page .jh-hs-contact__form-bottom button {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

/* Subtelne muśnięcie światłem zamiast przesuwania przycisku. */
.jh-hs-page .wp-block-button__link::after,
.jh-hs-page .jh-hs-action-link::after,
.jh-hs-page .jh-hs-contact__form-bottom button::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    background: linear-gradient(105deg, transparent 0%, rgba(255,255,255,.04) 30%, rgba(255,255,255,.42) 50%, rgba(255,255,255,.04) 70%, transparent 100%);
    transform: translateX(-130%);
    transition: transform .72s cubic-bezier(.2,.75,.22,1);
    z-index: 1;
}
@media (hover: hover) {
    .jh-hs-page .wp-block-button__link:hover::after,
    .jh-hs-page .jh-hs-action-link:hover::after,
    .jh-hs-page .jh-hs-contact__form-bottom button:not(:disabled):hover::after { transform: translateX(130%); }
    .jh-hs-hero--cover .jh-hs-hero__cta-primary .wp-block-button__link:hover {background-color: var(--jh-theme-background); border-color: var(--jh-theme-background); box-shadow: 0 0 0 1px rgba(255,255,255,.15), 0 6px 22px rgba(0,0,0,.08);}
    .jh-hs-hero--cover .jh-hs-hero__cta-secondary .wp-block-button__link:hover {background-color: rgba(255,255,255,.19); border-color: rgba(255,255,255,.77); box-shadow: 0 0 18px rgba(255,255,255,.08);}
    .jh-hs-dialog .jh-hs-action-link:hover {background-color:var(--jh-theme-darker);box-shadow:0 0 18px color-mix(in srgb, var(--jh-theme-primary) 16%, transparent);}
}

.jh-hs-page :focus-visible,
.jh-hs-dialog :focus-visible {
    outline: 2px solid var(--jh-focus-color);
    outline-offset: 4px;
}
/* Dialog dostaje programatyczny fokus: nie rysujemy ramki na całym oknie. */
.jh-hs-dialog:focus, .jh-hs-dialog:focus-visible {outline:none!important;}

.jh-hs-is-hidden { display:none !important; }



.jh-hs-page > .wp-block-template-part:first-child {
    position: sticky;
    top: 0;
    z-index: 110;
    height: var(--jh-hs-header-height);
    margin-top: 0 !important;
    margin-bottom: calc(-1 * var(--jh-hs-header-height)) !important;
}
body.admin-bar .jh-hs-page > .wp-block-template-part:first-child { top: var(--jh-hs-admin-offset); }

.jh-hs-header {
    height:var(--jh-hs-header-height);
    color:#fff;
    background:transparent;
    transition:background .2s, color .2s, box-shadow .2s;
}
.jh-hs-header__inner {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
    align-items:center;
    width:100%;max-width:var(--jh-hs-wide);
    min-height:var(--jh-hs-header-height);
    margin-inline:auto;
    padding-inline:var(--jh-hs-gutter);
    gap:18px;
}
.jh-hs-header__inner > * {margin:0 !important;}
.jh-hs-header .jh-hs-header__brand {
    justify-self:start;margin:0;font-size:19px;font-weight:600;
    letter-spacing:-.03em;white-space:nowrap;
}
.jh-hs-header .jh-hs-header__brand a,
.jh-hs-header .wp-block-navigation-item__content {color:inherit;text-decoration:none;}
.jh-hs-header .jh-hs-header__nav {justify-self:center;gap:clamp(12px,1.7vw,24px);font-size: var(--jh-hs-type-nav);font-weight:400;white-space:nowrap;}
.jh-hs-header .jh-hs-header__utility {justify-self:end;}


/* Ikony social - bez ramek i powierzchni, również na fotografii. */
.jh-hs-socials {display:flex;align-items:center;flex-wrap:wrap;gap:clamp(8px,1vw,15px);}
.jh-hs-socials > :is(a,span) {
    display:inline-grid;
    place-items:center;
    width:26px;
    height:30px;
    padding:0;
    border:0;
    border-radius:0;
    outline-offset:4px;
    color:inherit;
    background:transparent;
    text-decoration:none;
    transition:opacity .2s,transform .2s;
}
.jh-hs-socials svg {display:block;width:19px;height:19px;}
.jh-hs-socials > .jh-hs-social--unset {opacity:.68;cursor:default;}
@media(hover:hover){.jh-hs-socials a:hover{opacity:.62;transform:translateY(-2px)}}
.jh-hs-header.is-scrolled {
    background:color-mix(in srgb, var(--jh-theme-text) 38%, transparent);
    -webkit-backdrop-filter:blur(16px);
    backdrop-filter:blur(16px);
    box-shadow:0 8px 24px rgba(0,0,0,.065);
}
.jh-hs-header.is-on-light {
    color:var(--jh-hs-ink);
    background:color-mix(in srgb, var(--jh-theme-surface) 94%, transparent);
    box-shadow:0 8px 26px color-mix(in srgb, var(--jh-theme-text) 5.5%, transparent);
}

@media(hover:hover){.jh-hs-header .wp-block-navigation-item__content:hover{opacity:.65}}

/* Main */
.jh-hs-page__main,
.jh-hs-page__main > .wp-block-post-content {
    display:flex;
    flex-direction:column;
    min-width:0;
    padding:0;
    gap:0;
}

/* Hero */
.jh-hs-page__main .jh-hs-hero {
    position: relative;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    min-height: var(--jh-hs-hero-screen-height);
    padding: calc(var(--jh-hs-header-height) + 44px) var(--jh-hs-gutter) clamp(64px,10vh,120px);
    margin: 0;
}
.jh-hs-hero--cover {
    color:#fff;
    background-color:var(--jh-theme-primary);
    background-image:linear-gradient(100deg,color-mix(in srgb,var(--jh-theme-text) 80%,transparent),color-mix(in srgb,var(--jh-theme-text) 52%,transparent) 65%,color-mix(in srgb,var(--jh-theme-primary) 28%,transparent)),var(--jh-hs-hero-image,linear-gradient(130deg,var(--jh-theme-primary) 0%,var(--jh-theme-olive) 72%,var(--jh-theme-brown) 100%));
    background-position: center, var(--jh-hs-hero-x,72%) var(--jh-hs-hero-y,24%); /* Osie zdjęcia i powiększenie. */
    background-size: cover, var(--jh-hs-hero-size,cover); /* Dwie warstwy: gradient i obraz. */
    background-repeat: no-repeat; /* Bez powtarzania fotografii. */
}
.jh-hs-hero--cover .jh-hs-hero__columns {
    display:grid;
    grid-template-columns: repeat(12, minmax(0,1fr));
    gap: clamp(14px, 2vw, 30px);
    width:100%;
    max-width: var(--jh-hs-wide);
    margin:0 auto;
    align-items:end;
}
.jh-hs-hero--cover .jh-hs-hero__content {
    grid-column: 1 / span 7;
    width: 100%;
    min-width: 0;
    margin: 0;
}
.jh-hs-hero--cover .jh-hs-hero__eyebrow {
    margin: 0 0 18px;
    font-size: var(--jh-hs-type-label);
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(255,255,255,.76);
}
.jh-hs-hero--cover .jh-hs-hero__content h1 {
    max-width: 690px;
    margin: 0 0 22px;
    font-size: clamp(48px, 5.5vw, 82px) !important;
    font-weight: 460;
    line-height: 1.04;
    letter-spacing: -.06em;
    color:#fff;
}
.jh-hs-hero--cover .jh-hs-hero__content > p:not(.jh-hs-hero__eyebrow) {
    max-width: 540px;
    margin: 0 0 32px;
    font-size: clamp(16px, 1.25vw, 18px);
    font-weight: 400;
    line-height: 1.65;
    color: rgba(255,255,255,.9);
}
.jh-hs-hero--cover .wp-block-buttons { display:flex; flex-wrap:wrap; gap:14px; }
.jh-hs-hero--cover .jh-hs-hero__cta-primary .wp-block-button__link {
    border:1px solid #fff;
    background:#fff;
    color:var(--jh-theme-text);
}
.jh-hs-hero--cover .jh-hs-hero__cta-secondary .wp-block-button__link {
    border:1px solid rgba(255,255,255,.45);
    background: rgba(255,255,255,.08);
    color:#fff;
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
}
.jh-hs-hero--cover .jh-hs-hero__scroll {
    position:absolute;
    right: var(--jh-hs-gutter);
    bottom: clamp(28px, 5vh, 56px);
    margin:0;
    font-size: var(--jh-hs-type-label);
    letter-spacing:.08em;
    color:rgba(255,255,255,.82);
}

/* Sections */
.jh-hs-page__main .jh-hs-section {
    display:flex;
    flex-direction:column;
    justify-content:center;
    min-height: var(--jh-hs-screen-height);
    padding: clamp(100px, 12vh, 138px) var(--jh-hs-gutter) clamp(60px, 8vh, 95px);
    margin: 0;
}
.jh-hs-section .jh-hs-section__inner {
    display:grid;
    grid-template-columns: repeat(12, minmax(0,1fr));
    gap: clamp(20px, 2.4vw, 36px);
    width:100%;
    max-width: var(--jh-hs-wide);
    margin-inline:auto;
}
.jh-hs-section .jh-hs-section__inner > *,
.jh-hs-section .jh-hs-section__inner > * > * { min-width:0; }
.jh-hs-section .jh-hs-section__label {
    margin:0 0 22px;
    font-size: var(--jh-hs-type-label);
    font-weight:600;
    letter-spacing:.125em;
    text-transform: uppercase;
    opacity:.64;
}
.jh-hs-section h2 {
    margin:0 0 22px;
    font-size: clamp(42px, 5vw, 74px);
    font-weight: 460;
    line-height:1.08;
    letter-spacing:-.058em;
}
.jh-hs-section .jh-hs-section__intro {
    max-width: 580px;
    margin:0;
    font-size: clamp(16px, 1.2vw, 18px);
    line-height:1.72;
    font-weight:400;
}


.jh-hs-section--about {background:var(--jh-theme-background);}
.jh-hs-about__copy {grid-column:1/span 7;align-self:center;}
.jh-hs-about__copy h2 {max-width:700px;}
.jh-hs-about__note {margin:30px 0 0;max-width:460px;font-size: var(--jh-hs-type-body);line-height: var(--jh-hs-leading-body);color:var(--jh-theme-muted);}
.jh-hs-about__media {grid-column:8/-1;align-self:center;}
.jh-hs-about__image {margin:0 !important;}
.jh-hs-about__image img {display:block;width:100%;height:clamp(330px,56vh,560px);object-fit:cover;object-position:center center;border-radius:5px;}
.jh-hs-about__social-row {display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:16px;}
.jh-hs-about__social-label {font-size: var(--jh-hs-type-label);font-weight:600;letter-spacing:.1em;color:var(--jh-theme-muted);}
.jh-hs-socials--about > :is(a,span) {background:transparent;border:0;color:var(--jh-hs-ink);width:24px;height:28px;border-radius:0;}

/* Services */
.jh-hs-section--services { background:var(--jh-theme-surface); }
.jh-hs-services__intro { grid-column: 1 / span 7; align-self:center; }
.jh-hs-services__graphic { grid-column: 8 / -1; align-self:center; }
.jh-hs-services__graphic-scene {
    position:relative;
    min-height: 280px;
    display:grid;
    place-items:center;
    padding: 24px 0;
}
.jh-hs-services__mockup {
    position:absolute;
    width:min(100%, 420px);
    border-radius: 6px;
    border: 1px solid color-mix(in srgb, var(--jh-theme-text) 8%, transparent);
    box-shadow: 0 24px 60px color-mix(in srgb, var(--jh-theme-text) 8%, transparent);
    overflow:hidden;
}
.jh-hs-services__mockup--back {
    top:12px;
    left:12px;
    padding:26px 28px 24px;
    background: linear-gradient(135deg, var(--jh-theme-background), var(--jh-theme-surface));
    color:var(--jh-theme-darker);
    transform: rotate(-4deg);
}
.jh-hs-services__mockup--front {
    position:relative;
    right:auto;
    left:auto;
    padding:28px;
    background: linear-gradient(135deg, var(--jh-theme-darker), var(--jh-theme-olive));
    color:#fff;
    transform: rotate(2deg);
}
.jh-hs-services__mockup-kicker {
    display:block;
    margin-bottom:16px;
    font-size: var(--jh-hs-type-label);
    font-weight:600;
    letter-spacing:.12em;
    opacity:.72;
}
.jh-hs-services__mockup strong {
    display:block;
    font-size: clamp(30px, 3vw, 42px);
    line-height: 1;
    font-weight: 480;
    letter-spacing:-.05em;
}
.jh-hs-services__mockup small {
    display:block;
    margin-top:18px;
    font-size: var(--jh-hs-type-meta);
    letter-spacing:.04em;
    opacity:.78;
}
.jh-hs-services__mockup-ui {
    display:grid;
    grid-template-columns: repeat(3,1fr);
    gap: 10px;
    margin-top: 22px;
}
.jh-hs-services__mockup-ui span {
    display:block;
    height: 70px;
    border-radius: 5px;
    background: rgba(255,255,255,.13);
    border: 1px solid rgba(255,255,255,.16);
}
.jh-hs-services__mockup-chip {
    position:absolute;
    right:18px;
    bottom:8px;
    padding:12px 18px;
    border-radius:5px;
    background:#fff;
    border:1px solid color-mix(in srgb, var(--jh-theme-text) 10%, transparent);
    box-shadow:0 14px 34px color-mix(in srgb, var(--jh-theme-text) 8%, transparent);
    font-size: var(--jh-hs-type-label);
    font-weight:600;
    letter-spacing:.1em;
}
.jh-hs-section .jh-hs-services__list {
    grid-column: 1 / -1;
    display:grid;
    grid-template-columns: repeat(3, minmax(0,1fr));
    gap: clamp(18px, 2.2vw, 35px);
    margin-top: clamp(14px, 2vh, 28px);
    align-items: stretch;
}
.jh-hs-services__item {
    display:grid;
    grid-template-rows: auto auto 1fr auto;
    align-items:start;
    padding-top:17px;
    border-top:1px solid var(--jh-theme-soft);
    min-width:0;
}
.jh-hs-services__item > * { margin-top:0 !important; }
.jh-hs-services__item .jh-hs-services__index { margin:0 0 18px; font-size: var(--jh-hs-type-label); color:var(--jh-theme-muted); }
.jh-hs-services__item h3 { margin:0 0 11px; font-size:clamp(24px, 2.2vw, 31px); font-weight:470; letter-spacing:-.045em; line-height:1.12; }
.jh-hs-services__item .jh-hs-services__description { margin:0; color:var(--jh-theme-muted); font-size: var(--jh-hs-type-body); line-height: var(--jh-hs-leading-body); max-width:370px; }
.jh-hs-services__actions { margin-top:auto; padding-top:26px; }
.jh-hs-services__more {
    display:inline-flex;
    gap:10px;
    align-items:center;
    text-decoration:none;
    font-weight:600;
    font-size: var(--jh-hs-type-action);
    color:var(--jh-hs-ink);
    border-bottom:1px solid color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive));
    padding-bottom:8px;
}
.jh-hs-services__more:hover { border-color: var(--jh-hs-ink); }
.jh-hs-services--onepage .jh-hs-services__actions { display:none; }


/* Gutenberg dodaje kolejnym grupom margin-block-start. Wyzeruj go dla każdego kafla. */
.jh-hs-services__list > .jh-hs-services__item {margin-block-start:0 !important;margin-block-end:0 !important;}
.jh-hs-services__item > * {margin-block-start:0 !important;}
.jh-hs-services__item {grid-template-rows:auto auto 1fr auto;}
.jh-hs-services__item .jh-hs-services__index {min-height:22px;}


.jh-hs-dialog {
    
    --jh-hs-dialog-rail-inset:14px;
    --jh-hs-dialog-inline-pad:clamp(34px,4vw,54px);
    --jh-hs-dialog-rail-gap:22px;
    padding:0;
    border:1px solid rgba(255,255,255,.38);
    border-radius:8px;
    color:var(--jh-theme-text);
    /* Zewnętrzna rama pozostaje nieruchoma; przewijanie odbywa się tylko w treści. */
    position:relative;
    overflow:hidden;
    box-sizing:border-box;
    box-shadow:0 26px 90px color-mix(in srgb, var(--jh-theme-text) 22%, transparent);
    -webkit-backdrop-filter:blur(28px) saturate(1.12);
    backdrop-filter:blur(28px) saturate(1.12);
}
.jh-hs-dialog[open] {display:flex;flex-direction:column;}

.jh-hs-dialog__header {
    box-sizing:border-box;
    position:relative;
    z-index:12;
    flex:0 0 66px;
    width:100%;
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    padding:20px calc(var(--jh-hs-dialog-rail-inset) + var(--jh-hs-edge-overshoot, 0px)) 0 0;
    pointer-events:none;
}
.jh-hs-dialog__header .jh-hs-dialog__close {pointer-events:auto;}
.jh-hs-dialog--modal[open] {
    position:fixed;
    inset:auto !important;
    top:50% !important;
    left:50% !important;
    right:auto !important;
    bottom:auto !important;
    transform:translate(-50%,-50%);
    width:min(930px,calc(100vw - 60px));
    max-width:min(930px,calc(100vw - 60px));
    max-height:calc(100dvh - 80px);
    height:auto;
    margin:0 !important;
    background:color-mix(in srgb, var(--jh-theme-surface) 72%, transparent);
}
.jh-hs-dialog--modal::backdrop {
    background:color-mix(in srgb, var(--jh-theme-text) 42%, transparent);
    -webkit-backdrop-filter:blur(14px);
    backdrop-filter:blur(14px);
}
.jh-hs-dialog--drawer[open] {
    position:fixed;
    top:0 !important;
    /* Gdy html rezerwuje scrollbar-gutter, 100vw bywa o 15px szersze od
       obszaru fixed. Ten offset dosuwa panel do fizycznej krawędzi viewportu. */
    right:calc(100% - 100vw) !important;
    bottom:0 !important;
    left:auto !important;
    width:min(760px,calc(100vw - 72px));
    max-width:calc(100vw - 72px);
    height:100dvh;
    max-height:100dvh;
    border-radius:8px 0 0 8px;
    margin:0 !important;
    background:color-mix(in srgb, var(--jh-theme-surface) 72%, transparent);
    -webkit-backdrop-filter:blur(28px) saturate(1.12);
    backdrop-filter:blur(28px) saturate(1.12);
}
.jh-hs-dialog--drawer::backdrop {
    background:color-mix(in srgb, var(--jh-theme-text) 38%, transparent);
    -webkit-backdrop-filter:blur(6px);
    backdrop-filter:blur(6px);
}
.jh-hs-dialog__content {
    box-sizing:border-box;
    position:relative;
    flex:1 1 auto;
    min-width:0;
    min-height:0;
    width:100%;
    overflow-x:hidden;
    overflow-y:auto;
    
    scrollbar-width:none;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    
    padding:0 calc(var(--jh-hs-dialog-inline-pad) + var(--jh-hs-dialog-rail-gap) + var(--jh-hs-edge-overshoot,0px)) clamp(34px,4vw,54px) var(--jh-hs-dialog-inline-pad);
}
.jh-hs-dialog__content::-webkit-scrollbar {width:0;height:0;display:none;}
/* Własny dostępny scrollbar: nie zmienia szerokości treści ani pozycji X. */
.jh-hs-dialog__scrollbar {
    position:absolute;z-index:11;
    top:76px;bottom:12px;right:calc(var(--jh-hs-dialog-rail-inset) + var(--jh-hs-edge-overshoot,0px));
    width:13px;box-sizing:border-box;border-radius:8px;
    background:color-mix(in srgb, var(--jh-theme-text) 5.5%, transparent);
    cursor:default;touch-action:none;user-select:none;
    -webkit-user-select:none;
}
.jh-hs-dialog__scrollbar[hidden] {display:none!important;}
.jh-hs-dialog__scrollbar-thumb {
    position:absolute;top:0;right:4px;width:5px;min-height:30px;
    box-sizing:border-box;border-radius:12px;background:color-mix(in srgb, var(--jh-theme-text) 34%, transparent);
    transition:background-color .18s ease;
    pointer-events:none;
}
.jh-hs-dialog__scrollbar:hover .jh-hs-dialog__scrollbar-thumb,
.jh-hs-dialog__scrollbar.is-dragging .jh-hs-dialog__scrollbar-thumb,
.jh-hs-dialog__scrollbar:focus-visible .jh-hs-dialog__scrollbar-thumb {background:color-mix(in srgb, var(--jh-theme-text) 68%, transparent);}
.jh-hs-dialog__scrollbar:focus-visible {outline:2px solid color-mix(in srgb, var(--jh-theme-primary) 65%, transparent);outline-offset:2px;}
.jh-hs-dialog__layout {display:grid;grid-template-columns:minmax(0,1.1fr) minmax(240px,.9fr);gap:clamp(25px,3vw,42px);align-items:start;}
.jh-hs-dialog__copy {min-width:0;}
.jh-hs-dialog__media {min-width:0;padding-top:42px;}
.jh-hs-dialog .jh-hs-dialog__close {
    /* X jest elementem osobnego nagłówka; odstęp ustala padding nagłówka,
       a nie pozycja absolute względem szerokości całego okna. */
    position:static;flex:0 0 26px;z-index:12;display:grid;place-items:center;width:26px;height:26px;padding:0;border:0!important;outline:0!important;outline-offset:0;border-radius:5px;color:var(--jh-theme-primary);background:rgba(255,255,255,.22);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:none;font:inherit;cursor:pointer;transition:background .25s,color .25s,box-shadow .25s;
}
.jh-hs-dialog .jh-hs-dialog__close:hover {background:rgba(255,255,255,.7);color:var(--jh-theme-text);box-shadow:0 0 0 4px rgba(255,255,255,.16),0 0 18px color-mix(in srgb, var(--jh-theme-primary) 34%, transparent);}
/* Widoczny, lecz miękki focus klawiaturowy bez ciemnej ramki. */
.jh-hs-dialog .jh-hs-dialog__close:focus-visible {outline:none!important;box-shadow:0 0 0 3px color-mix(in srgb, var(--jh-theme-background) 90%, transparent),0 0 0 6px color-mix(in srgb, var(--jh-theme-primary) 24%, transparent)!important;}
.jh-hs-dialog .jh-hs-dialog__close:focus-visible:hover {box-shadow:0 0 0 3px color-mix(in srgb, var(--jh-theme-background) 95%, transparent),0 0 0 7px color-mix(in srgb, var(--jh-theme-primary) 32%, transparent),0 0 20px color-mix(in srgb, var(--jh-theme-primary) 45%, transparent)!important;}
.jh-hs-dialog__close span {font-size:17px;line-height:1;}
.jh-hs-dialog__eyebrow {margin:0 0 23px;font-size: var(--jh-hs-type-label);letter-spacing:.12em;color:var(--jh-theme-olive);}
.jh-hs-dialog h2 {margin:0 0 20px;font-size:clamp(33px,3.8vw,56px);font-weight:470;line-height:1.07;letter-spacing:-.053em;}
.jh-hs-dialog p:not(.jh-hs-dialog__eyebrow) {font-size: var(--jh-hs-type-body);line-height: var(--jh-hs-leading-body);color:var(--jh-theme-primary);}
.jh-hs-dialog__tags {display:flex;flex-wrap:wrap;gap:7px;margin:20px 0;}
.jh-hs-dialog__tags span {padding:9px 12px;border:1px solid color-mix(in srgb, var(--jh-theme-text) 12%, transparent);border-radius:5px;background:rgba(255,255,255,.5);font-size: var(--jh-hs-type-meta);font-weight:600;}
.jh-hs-dialog__list {margin:0;padding-left:18px;color:var(--jh-theme-primary);}
.jh-hs-dialog__list li {margin:0 0 8px;font-size: var(--jh-hs-type-body);line-height: var(--jh-hs-leading-body);}
/* Dialogi są pod body, a nie w .jh-hs-page: korzystają z tych samych CTA. */
.jh-hs-dialog .jh-hs-action-link {
    display:inline-flex;align-items:center;justify-content:center;
    position:relative;isolation:isolate;overflow:hidden;
    padding:20px 34px;margin-top:22px;
    border-radius:5px;background:var(--jh-theme-primary);color:#fff;text-decoration:none;
    font-size:var(--jh-hs-type-action);font-weight:600;line-height:1.2;
    letter-spacing:.08em;text-transform:uppercase;
    transition:background-color .28s ease,border-color .28s ease,color .28s ease,box-shadow .28s ease;
}
.jh-hs-dialog .jh-hs-action-link::after {
    content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:linear-gradient(105deg,transparent 0%,rgba(255,255,255,.04) 30%,rgba(255,255,255,.42) 50%,rgba(255,255,255,.04) 70%,transparent 100%);
    transform:translateX(-130%);transition:transform .72s cubic-bezier(.2,.75,.22,1);z-index:1;
}
@media (hover:hover) {
    .jh-hs-dialog .jh-hs-action-link:hover::after {transform:translateX(130%);}
}
@media (prefers-reduced-motion:reduce) {
    .jh-hs-dialog .jh-hs-action-link::after {transition:none;}
}
.jh-hs-dialog__preview {display:flex;flex-direction:column;justify-content:space-between;min-height:280px;padding:22px;border-radius:5px;background:linear-gradient(125deg,var(--jh-theme-darker),var(--jh-theme-olive));color:#fff;}
.jh-hs-dialog__preview span {font-size: var(--jh-hs-type-label);letter-spacing:.12em;opacity:.78;}
.jh-hs-dialog__preview strong {font-size:clamp(30px,3vw,48px);font-weight:470;letter-spacing:-.055em;line-height:1;white-space:pre-line;}
.jh-hs-dialog__preview small {font-size: var(--jh-hs-type-meta);opacity:.8;}
html.jh-hs-dialog-open {overflow:hidden;}

@media (prefers-reduced-motion: no-preference) {
    .jh-hs-dialog[open] {
        opacity: 1;
        transition-property: opacity, transform, translate;
        transition-duration: .82s;
        transition-timing-function: cubic-bezier(.2,.76,.22,1);
    }

    /* Po zamknięciu odwracamy animację do zapamiętanego punktu kliknięcia. */
    .jh-hs-dialog[open].jh-hs-dialog--leave {
        transition-duration: .64s;
        transition-timing-function: cubic-bezier(.42,0,.65,.45);
    }

    .jh-hs-dialog--modal[open] {
        transform: translate(-50%, -50%) scale(1);
    }
    .jh-hs-dialog--modal[open].jh-hs-dialog--enter,
    .jh-hs-dialog--modal[open].jh-hs-dialog--leave {
        opacity: 0;
        transform: translate(
            calc(-50% + var(--jh-hs-modal-origin-x, 0px)),
            calc(-50% + var(--jh-hs-modal-origin-y, 0px))
        ) scale(.56);
    }

    .jh-hs-dialog--drawer[open] { translate: 0 0; }
    .jh-hs-dialog--drawer[open].jh-hs-dialog--enter,
    .jh-hs-dialog--drawer[open].jh-hs-dialog--leave {
        opacity: 0;
        translate: calc(100% + 50px) 0;
    }

    .jh-hs-dialog::backdrop {
        transition: background-color .64s ease, backdrop-filter .64s ease,
                    -webkit-backdrop-filter .64s ease;
    }
    .jh-hs-dialog.jh-hs-dialog--enter::backdrop,
    .jh-hs-dialog.jh-hs-dialog--leave::backdrop {
        background-color: transparent;
        -webkit-backdrop-filter: blur(0);
        backdrop-filter: blur(0);
    }
}
@media (prefers-reduced-motion: reduce) {
    .jh-hs-dialog[open],
    .jh-hs-dialog::backdrop { transition: none !important; animation: none !important; }
}


.jh-hs-section--projects {background:var(--jh-theme-background);}
.jh-hs-projects__heading {grid-column:1/span 8;}
.jh-hs-projects__controls {grid-column:9/-1;display:flex;align-items:center;justify-content:flex-end;gap:14px;}
.jh-hs-projects__toggle {display:flex;gap:4px;padding:4px;background:rgba(255,255,255,.6);border:1px solid var(--jh-theme-soft);border-radius:6px;}
.jh-hs-projects__toggle button {padding:10px 14px;border:0;border-radius:4px;background:transparent;color:var(--jh-theme-muted);font:inherit;font-size: var(--jh-hs-type-action);font-weight:600;cursor:pointer;}
.jh-hs-projects__toggle button.is-active {background:var(--jh-theme-text);color:#fff;}
.jh-hs-projects__controls [data-jh-hs-projects-count] {min-width:50px;font-size: var(--jh-hs-type-meta);letter-spacing:.05em;color:var(--jh-theme-muted);}
.jh-hs-section .jh-hs-projects__viewport {grid-column:1/-1;position:relative;min-width:0;margin:12px 0 0 !important;}
.jh-hs-section .jh-hs-projects__track {
    display:flex;gap:clamp(15px,2vw,26px);
    width:100%;margin:0 !important;padding:0;
    overflow:visible;scroll-snap-type:none;scroll-behavior:auto;
    will-change:transform;
    transition:transform .44s cubic-bezier(.25,.72,.25,1);
}
.jh-hs-projects__viewport {overflow:hidden;}
.jh-hs-projects__item {flex:0 0 clamp(286px,38%,470px);min-width:0;align-self:start;margin-block-start:0 !important;}
.jh-hs-projects__item > * {margin-block-start:0 !important;}
.jh-hs-projects__card {display:block;color:inherit;text-decoration:none;}
.jh-hs-projects__card:focus:not(:focus-visible) {outline:none;}
.jh-hs-projects__card:focus-visible {outline:2px solid color-mix(in srgb, var(--jh-theme-primary) 65%, transparent);outline-offset:4px;border-radius:6px;}
.jh-hs-projects__visual {display:flex;flex-direction:column;justify-content:space-between;min-height:clamp(235px,32vh,345px);padding:clamp(20px,2.5vw,32px);overflow:hidden;background:linear-gradient(125deg,var(--jh-theme-darker),var(--jh-theme-primary));color:#fff;border-radius:5px;}
.jh-hs-projects__visual .jh-hs-projects__visual-top {margin:0 !important;font-size: var(--jh-hs-type-label);letter-spacing:.13em;opacity:.8;}
.jh-hs-projects__visual .jh-hs-projects__visual-title {margin:0 !important;font-size:clamp(27px,3vw,41px);letter-spacing:-.05em;font-weight:480;line-height:1.08;}
.jh-hs-projects__item--02 .jh-hs-projects__visual {background:linear-gradient(120deg,color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive)),var(--jh-theme-muted));}
.jh-hs-projects__item--03 .jh-hs-projects__visual {background:linear-gradient(125deg,var(--jh-theme-darker),var(--jh-theme-muted));}
.jh-hs-projects__item--04 .jh-hs-projects__visual {background:linear-gradient(125deg,var(--jh-theme-olive),var(--jh-theme-soft));}
.jh-hs-projects__item--05 .jh-hs-projects__visual {background:linear-gradient(125deg,var(--jh-theme-muted),var(--jh-theme-darker));}
.jh-hs-projects__item h3 {margin:13px 0 5px !important;font-size:18px;font-weight:480;}
.jh-hs-projects__item .jh-hs-projects__meta {margin:0 !important;font-size: var(--jh-hs-type-meta);color:var(--jh-theme-primary);}

.jh-hs-projects__edge {
    position:absolute;z-index:3;top:40%;transform:translateY(-50%);
    display:grid;place-items:center;width:42px;height:42px;
    border:1px solid color-mix(in srgb, var(--jh-theme-text) 14%, transparent);border-radius:5px;
    background:rgba(255,255,255,.9);color:var(--jh-theme-text);
    font-size:22px;cursor:pointer;box-shadow:0 8px 22px color-mix(in srgb, var(--jh-theme-text) 10%, transparent);
}
.jh-hs-projects__edge--prev {left:8px;}
.jh-hs-projects__edge--next {right:8px;}
.jh-hs-section--projects.is-grid .jh-hs-projects__viewport {overflow:visible;}
.jh-hs-section--projects.is-grid .jh-hs-projects__track {
    display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px;transform:none !important;transition:none !important;
}
.jh-hs-section--projects.is-grid .jh-hs-projects__item {grid-column:span 4;flex:none;}
.jh-hs-section--projects.is-grid .jh-hs-projects__item:nth-child(1) {grid-column:span 7;}
.jh-hs-section--projects.is-grid .jh-hs-projects__item:nth-child(2) {grid-column:span 5;}
.jh-hs-section--projects.is-grid .jh-hs-projects__item .jh-hs-projects__visual {min-height:clamp(145px,17vh,200px);}
.jh-hs-section--projects.is-grid .jh-hs-projects__item:nth-child(-n+2) .jh-hs-projects__visual {min-height:clamp(220px,26vh,290px);}
.jh-hs-section--projects.is-grid .jh-hs-projects__visual .jh-hs-projects__visual-title {font-size:clamp(23px,2.4vw,32px);}
.jh-hs-section--projects.is-grid .jh-hs-projects__edge {display:none;}



.jh-hs-section--contact {
    color:var(--jh-theme-background);
}
.jh-hs-page__main .jh-hs-section--contact {padding-top:clamp(55px,7vh,85px);padding-bottom:clamp(44px,6vh,75px);}
.jh-hs-section--contact .jh-hs-section__inner { gap:clamp(13px,1.7vh,22px); }
.jh-hs-section--contact {
    background: linear-gradient(180deg, var(--jh-theme-text) 0%, var(--jh-theme-text) 46%, var(--jh-theme-text) 100%);
    color:var(--jh-theme-background);
}
.jh-hs-section--contact .jh-hs-section__label {color:color-mix(in srgb, var(--jh-theme-surface) 68%, transparent);}
.jh-hs-contact__heading {grid-column:1/-1;}
.jh-hs-contact__heading h2 {max-width:950px;margin:0 0 22px;color:#fff;}
.jh-hs-contact__heading .jh-hs-section__intro {max-width:700px;color:color-mix(in srgb, var(--jh-theme-surface) 78%, transparent);}
.jh-hs-contact__shell {grid-column:1/-1;display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);align-items:start;gap:clamp(34px,5vw,76px);margin:clamp(10px,1.6vh,22px) 0 0 !important;}
.jh-hs-contact__faq,.jh-hs-contact__form-side {min-width:0;}
.jh-hs-contact__faq .jh-hs-contact__mini,.jh-hs-contact__form-side .jh-hs-contact__mini {margin:0 0 17px;font-size: var(--jh-hs-type-label);font-weight:600;letter-spacing:.13em;color:color-mix(in srgb, var(--jh-theme-surface) 56%, transparent);}
.jh-hs-contact__faq h3,.jh-hs-contact__form-top h3 {margin:0 0 17px;font-size:clamp(28px,2.6vw,36px);font-weight:480;letter-spacing:-.045em;line-height:1.12;color:#fff;}
.jh-hs-faq__items {display:block;width:100%;margin:0;padding:0;border-bottom:1px solid rgba(255,255,255,.14);}
.jh-hs-faq__item {display:block;border:0;border-top:1px solid rgba(255,255,255,.14);margin:0!important;padding:0!important;box-shadow:none;}
.jh-hs-faq__item:last-child {border-bottom:0;}
.jh-hs-faq__item summary {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0;list-style:none;font-size: var(--jh-hs-type-body);font-weight:500;line-height: 1.45;cursor:pointer;color:var(--jh-theme-surface);}
.jh-hs-faq__item summary::-webkit-details-marker {display:none;}
.jh-hs-faq__item summary::marker {content:'';}
.jh-hs-faq__item summary > span {flex:0 0 auto;width:20px;text-align:center;font-size:22px;font-weight:300;transition:transform .2s;opacity:.8;}
.jh-hs-faq__item[open] summary > span {transform:rotate(45deg);}
.jh-hs-faq__answer {max-width:530px;padding:0 25px 20px 0;color:color-mix(in srgb, var(--jh-theme-surface) 72%, transparent);font-size: var(--jh-hs-type-body);line-height: var(--jh-hs-leading-body);}


.jh-hs-faq__item > p {
    max-width:530px;
    margin:0!important;
    padding:0 25px 20px 0;
    color:color-mix(in srgb, var(--jh-theme-surface) 72%, transparent);
    font-size: var(--jh-hs-type-body);
    line-height: var(--jh-hs-leading-body);
}
.jh-hs-faq__item summary::after {
    content:"+";
    flex:0 0 20px;
    width:20px;
    text-align:center;
    font-size:22px;
    font-weight:300;
    line-height:1;
    opacity:.8;
    transition:transform .2s;
}
.jh-hs-faq__item[open] summary::after {transform:rotate(45deg);}
.jh-hs-contact__faq > .wp-block-group,
.jh-hs-contact__form-side > .wp-block-group {margin-block-start:0!important;}

.jh-hs-contact__form-side {background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.12);border-radius:8px;padding:clamp(22px,2.2vw,32px);box-shadow:0 22px 60px color-mix(in srgb, var(--jh-theme-text) 22%, transparent);color:var(--jh-theme-text);}
.jh-hs-contact__form-top {margin:0 0 14px;}
.jh-hs-contact__form-top h3 {margin-bottom:5px;color:var(--jh-theme-text);}
.jh-hs-contact__form {display:grid;gap:12px;}
.jh-hs-contact__two {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.jh-hs-contact__form label.jh-hs-contact__field {display:grid;gap:7px;font-size: var(--jh-hs-type-form-label);font-weight:600;color:var(--jh-theme-darker);}
.jh-hs-contact__field-label {display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:5px;line-height:1.35;}
.jh-hs-contact__required {color:var(--jh-theme-muted);font-size:14px;line-height:1;font-weight:700;}
.jh-hs-contact__meta {font-size: var(--jh-hs-type-form-label);font-weight:400;color:color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive));}
.jh-hs-contact__form :is(input[type=text],input[type=email],select,textarea) {width:100%;padding:12px 15px;border:1px solid var(--jh-theme-soft);border-radius:5px;background:var(--jh-theme-surface);color:var(--jh-theme-darker);font:inherit;font-size: var(--jh-hs-type-body);font-weight:400;line-height: 1.45;box-sizing:border-box;appearance:none;}
/* Kontakt - czytelny chevron listy niezależny od natywnego wyglądu Safari. */
.jh-hs-contact__form select {
    min-height:46px;
    padding-right:44px;
    background-image:none;
    -webkit-appearance:none;
    appearance:none;
    cursor:pointer;
}
.jh-hs-contact__form label.jh-hs-contact__field:has(> select) {
    position:relative;
}
.jh-hs-contact__form label.jh-hs-contact__field:has(> select)::after {
    content:"";
    position:absolute;
    right:20px;
    bottom:20px;
    width:8px;
    height:8px;
    border-right:1.7px solid var(--jh-theme-primary);
    border-bottom:1.7px solid var(--jh-theme-primary);
    transform:rotate(45deg);
    pointer-events:none;
}
.jh-hs-contact__form textarea {min-height:88px;resize:vertical;}
.jh-hs-contact__form :is(input,textarea)::placeholder {color:color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive));font-weight:400;opacity:1;}
/* Focus dotyczy również Safari: bez czarnej obwódki, z delikatnym halo. */
.jh-hs-page .jh-hs-contact__form :is(input[type=text],input[type=email],select,textarea):focus,
.jh-hs-page .jh-hs-contact__form :is(input[type=text],input[type=email],select,textarea):focus-visible {
    outline:none!important;
    border-color:color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive));
    background:var(--jh-theme-surface);
    box-shadow:0 0 0 3px color-mix(in srgb, var(--jh-theme-primary) 18%, transparent)!important;
    transition:border-color .22s ease,background-color .22s ease,box-shadow .22s ease;
}
.jh-hs-page .jh-hs-contact__form :is(input[type=checkbox],input[type=radio]):focus-visible {
    outline:none!important;
    box-shadow:0 0 0 3px color-mix(in srgb, var(--jh-theme-primary) 25%, transparent);
    border-radius:3px;
}
.jh-hs-contact__field-group {min-width:0;margin:0;padding:0;border:0;}
.jh-hs-contact__field-group legend {margin:0 0 8px;padding:0;color:var(--jh-theme-darker);font-size: var(--jh-hs-type-form-label);font-weight:600;}
.jh-hs-contact__choice-row {display:flex;flex-wrap:wrap;gap:8px;}
.jh-hs-contact__choice {display:inline-flex;align-items:center;gap:10px;min-height:38px;padding:7px 12px;border:1px solid var(--jh-theme-soft);border-radius:5px;background:var(--jh-theme-surface);color:var(--jh-theme-darker);font-size: var(--jh-hs-type-body);font-weight:500;cursor:pointer;}
.jh-hs-contact__choice:has(input:checked) {border-color:color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive));background:var(--jh-theme-background);}
.jh-hs-contact__choice input {accent-color:var(--jh-theme-darker);margin:0;width:15px;height:15px;}
.jh-hs-contact__privacy {display:flex;align-items:center;gap:10px;color:var(--jh-theme-olive);font-size: var(--jh-hs-type-meta);line-height:1.5;cursor:pointer;}
.jh-hs-contact__privacy input {flex:0 0 16px;margin:0;width:16px;height:16px;accent-color:var(--jh-theme-darker);}
.jh-hs-contact__privacy a {color:inherit;text-decoration:underline;text-underline-offset:3px;}
.jh-hs-contact__form-bottom {display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.jh-hs-contact__form-bottom button {position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;padding:20px 34px;border:0;border-radius:6px;background:var(--jh-theme-primary);color:#fff;font-size: var(--jh-hs-type-action);font-weight:600;line-height:1.2;text-transform:uppercase;letter-spacing:.08em;transition:background-color .28s ease,box-shadow .28s ease;}
.jh-hs-contact__form-bottom button:disabled {cursor:not-allowed;opacity:1;}
.jh-hs-contact__form-bottom button:disabled::after {display:none;}
@media(hover:hover){.jh-hs-contact__form-bottom button:not(:disabled):hover{background-color:var(--jh-theme-darker);box-shadow:0 6px 18px color-mix(in srgb, var(--jh-theme-primary) 12%, transparent);}}
.jh-hs-contact__map {display:none;grid-column:1/-1;border-radius:6px;overflow:hidden;background:var(--jh-theme-background);}
.jh-hs-section--contact.jh-hs-contact--with-map .jh-hs-contact__map {display:block;}
.jh-hs-contact__map-head {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;color:var(--jh-theme-primary);font-size: var(--jh-hs-type-meta);}
.jh-hs-contact__map-head a {color:inherit;text-decoration:none;}
.jh-hs-contact__map iframe {display:block;width:100%;height:220px;border:0;filter:grayscale(.6);}


.jh-hs-page > .wp-block-template-part:last-child {
    margin-block: 0 !important;
    scroll-snap-align: none;
}

/*
 * Kolor na początku stopki jest identyczny z końcem sekcji Kontakt.
 * Gradient ciemnieje wyłącznie w pionie i osiąga kolor bottom footera.
 * Górny padding jest taki sam jak dolny padding Kontaktu.
 */
.jh-hs-page .jh-hs-footer {
    position: relative;
    margin: 0 !important;
    padding: clamp(44px, 6vh, 75px) 0 0;
    color: var(--jh-theme-background);
    border: 0 !important;
    border-top: 1px solid color-mix(in srgb, var(--jh-theme-surface) 6.5%, transparent) !important;
    box-shadow: none !important;
    background: linear-gradient(180deg, var(--jh-theme-text) 0%, var(--jh-theme-text) 44%, var(--jh-theme-text) 78%, var(--jh-theme-text) 100%);
}

/* Trzy równe kolumny. Wszystkie zaczynają treść od wspólnej linii. */
.jh-hs-footer__inner {
    --jh-hs-footer-heading-height: max(34px, clamp(27.6px, 2.76vw, 36.8px));
    --jh-hs-footer-heading-gap: 18px;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: start;
    gap: clamp(20px, 3.5vw, 56px);
    width: calc(100% - 2 * var(--jh-hs-gutter));
    max-width: var(--jh-hs-wide);
    margin: 0 auto;
    padding: 0;
}

.jh-hs-footer__col { min-width: 0; }

/* Marka - lewa kolumna. */
.jh-hs-footer__col--brand { justify-self: start; text-align: left; }
.jh-hs-footer__brand {
    display: flex;
    align-items: center;
    min-height: var(--jh-hs-footer-heading-height);
    margin: 0 0 var(--jh-hs-footer-heading-gap);
}
.jh-hs-footer__brand a {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    color: inherit;
    font-size: clamp(24px, 2.4vw, 32px);
    font-weight: 650;
    line-height: 1.15;
    letter-spacing: -.035em;
    text-decoration: none;
}
.jh-hs-footer__brand a:hover { opacity: .86; }
.jh-hs-footer__brand img {display:block;width:auto;max-width:min(100%, var(--jh-footer-logo-width, 160px));height:auto;object-fit:contain;}
.jh-hs-footer__logo-icon { display: block; width: 34px; height: 34px; flex: 0 0 34px; }
.jh-hs-footer__text {
    max-width: 350px;
    margin: 0 0 20px;
    color: color-mix(in srgb, var(--jh-theme-surface) 75%, transparent);
    font-size: var(--jh-hs-type-footer);
    font-weight: 400;
    line-height: var(--jh-hs-leading-footer);
}

/* Wspólna, subtelna typografia danych i nawigacji. */
.jh-hs-footer__kicker {
    display: flex;
    align-items: center;
    min-height: var(--jh-hs-footer-heading-height);
    margin: 0 0 var(--jh-hs-footer-heading-gap);
    color: color-mix(in srgb, var(--jh-theme-surface) 61%, transparent);
    font-size: var(--jh-hs-type-label);
    font-weight: 600;
    letter-spacing: .14em;
}
.jh-hs-footer__company { font-weight: 600; color: var(--jh-theme-surface); }
.jh-hs-footer__list {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
    color: color-mix(in srgb, var(--jh-theme-surface) 83%, transparent);
    font-size: var(--jh-hs-type-footer);
    font-weight: 400;
    line-height: var(--jh-hs-leading-footer);
}

/* Wiersze danych i nawigacji mają ten sam rytm co linie akapitu marki. */
.jh-hs-footer__list > li {
    margin: 0;
    min-height: 1.65em;
    line-height: inherit;
}
.jh-hs-footer__list a { color: inherit; text-decoration: none; }
.jh-hs-footer__list a:hover { color: #fff; }
.jh-hs-footer__detail { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.jh-hs-footer__detail svg {
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    margin-top: 3px;
    color: color-mix(in srgb, var(--jh-theme-surface) 65%, transparent);
}
.jh-hs-footer__detail :is(span, a) { min-width: 0; overflow-wrap: anywhere; }

/* Dane firmowe - centrowanie nagłówka i każdego wiersza wraz z ikoną. */
.jh-hs-footer__col--company > .jh-hs-footer__kicker {
    justify-content: center;
}
.jh-hs-footer__col--company {
    justify-self: stretch;
    width: 100%;
    text-align: center;
}
.jh-hs-footer__col--company .jh-hs-footer__list {
    justify-items: center;
    text-align: center;
}
.jh-hs-footer__col--company .jh-hs-footer__company {
    justify-self: center;
    text-align: center;
}
.jh-hs-footer__col--company .jh-hs-footer__detail {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: left;
}
.jh-hs-footer__col--company .jh-hs-footer__detail svg { margin-top: 0; }

/* Nawigacja - prawa kolumna. */
.jh-hs-footer__col--nav { justify-self: end; text-align: right; }
.jh-hs-footer__col--nav .jh-hs-footer__list {
    grid-template-columns: minmax(0, 1fr);
    justify-items: end;
}

/* Ikony społecznościowe bez ramek. */
.jh-hs-socials--footer { display: flex; gap: 16px; justify-content: flex-start; color: var(--jh-theme-background); }
.jh-hs-socials--footer > :is(a, span) {
    display: inline-grid;
    place-items: center;
    width: 25px;
    height: 28px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: inherit;
}
.jh-hs-socials--footer :is(a, span) svg { width: 20px; height: 20px; }

/* Bottom footer - pełna szerokość, czarne tło i sam podpis wykonawcy. */
.jh-hs-footer__bottom {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: none;
    min-height: var(--jh-hs-header-height);
    margin: clamp(40px, 4.5vw, 58px) 0 0;
    padding: 20px var(--jh-hs-gutter);
    border: 0;
    background-color: var(--jh-theme-text);
    color: color-mix(in srgb, var(--jh-theme-surface) 62%, transparent);
    font-size: var(--jh-hs-type-meta);
    line-height: var(--jh-hs-leading-meta);
}
.jh-hs-footer__credit { display: inline-flex; align-items: center; justify-content: center; gap: 8px; white-space: nowrap; }
.jh-hs-footer__credit-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: color-mix(in srgb, var(--jh-theme-surface) 88%, transparent) !important;
    font-size: var(--jh-hs-type-meta);
    font-weight: 600;
    letter-spacing: .01em;
    text-decoration: none;
    transition: color .2s ease;
}
.jh-hs-footer__credit-icon { display: block; width: 16px; height: 16px; flex: 0 0 16px; }
.jh-hs-footer__credit-link:hover { color: #fff !important; }

/* Tablet - marka u góry, dane i nawigacja poniżej. */
@media (max-width: 900px) {
    .jh-hs-footer__inner { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 38px 26px; }
    .jh-hs-footer__col--brand { grid-column: 1 / -1; grid-row: 1; }
    .jh-hs-footer__col--company {
        grid-column: 1;
        grid-row: 2;
        justify-self: start;
        text-align: left;
    }
    .jh-hs-footer__col--company .jh-hs-footer__list { justify-items: start; text-align: left; }
    .jh-hs-footer__col--company .jh-hs-footer__company { justify-self: start; text-align: left; }
    .jh-hs-footer__col--nav { grid-column: 2; grid-row: 2; justify-self: end; }
}

/* Ta sama odległość co dolny padding Kontaktu w widoku mobilnym/tabletowym. */
@media (max-width: 781px) {
    .jh-hs-page .jh-hs-footer { padding-top: 74px; }
}

/* Telefon - elementy jeden pod drugim, naturalne wyrównanie do lewej. */
@media (max-width: 600px) {
    .jh-hs-footer__inner { grid-template-columns: minmax(0, 1fr); gap: 34px; }
    .jh-hs-footer__col--brand,
    .jh-hs-footer__col--company,
    .jh-hs-footer__col--nav {
        grid-column: 1;
        grid-row: auto;
        justify-self: start;
        width: 100%;
        text-align: left;
    }
    .jh-hs-footer__col--company .jh-hs-footer__list { justify-items: start; text-align: left; }
    .jh-hs-footer__col--nav .jh-hs-footer__list { justify-items: start; text-align:left; }
    .jh-hs-footer__col--company > .jh-hs-footer__kicker {justify-content:flex-start;}
    .jh-hs-footer__col--company .jh-hs-footer__company {justify-self:start;text-align:left;}
    .jh-hs-footer__col--company .jh-hs-footer__detail {justify-content:flex-start;text-align:left;}
    .jh-hs-footer__col--nav .jh-hs-footer__kicker {justify-content:flex-start;}
    .jh-hs-footer__bottom { margin-top: 38px; padding: 20px var(--jh-hs-gutter); justify-content:flex-start; text-align:left; }
    .jh-hs-footer__credit {justify-content:flex-start;text-align:left;}
}

/* Hero split fallback */
.jh-hs-hero--split:not(.jh-hs-hero--cover) { justify-content:center; background:#fff; color:var(--jh-hs-ink); }
.jh-hs-hero--split:not(.jh-hs-hero--cover) .jh-hs-hero__columns { display:flex; align-items:center; gap:clamp(32px,4vw,64px); width:100%; max-width:var(--jh-hs-wide); margin:auto; }
.jh-hs-hero--split:not(.jh-hs-hero--cover) .jh-hs-hero__content h1 { font-size:clamp(36px,3.5vw,52px)!important; font-weight:470; line-height:1.12; letter-spacing:-.035em; }
.jh-hs-hero--split:not(.jh-hs-hero--cover) .jh-hs-hero__image img { display:block; width:100%; height:auto; max-height:65svh; aspect-ratio:4/5; object-fit:cover; border-radius:4px; }


html:has(.jh-hs-page) {scroll-snap-type:none !important;scroll-behavior:auto;}
.jh-hs-page__main > .wp-block-post-content > .jh-hs-hero,
.jh-hs-page__main > .wp-block-post-content > .jh-hs-section {scroll-snap-align:none !important;}



@media(max-width:1120px) {
    .jh-hs-header .jh-hs-header__inner {gap:12px;}
    .jh-hs-header .jh-hs-header__nav {gap:14px;}
    .jh-hs-socials--header {gap:8px;}
    .jh-hs-socials--header > :is(a,span) {width:24px;height:28px;}
    .jh-hs-socials--header svg {width:17px;height:17px;}
}
@media(max-width:1000px) {
    .jh-hs-projects__heading,.jh-hs-projects__controls {grid-column:1/-1;}
    .jh-hs-projects__controls {justify-content:flex-start;}
    .jh-hs-contact__shell {gap:24px;}
}
@media(max-width:781px) {
    .jh-hs-page {--jh-hs-header-height:68px;--jh-hs-gutter:22px;}
    body.admin-bar .jh-hs-page {--jh-hs-admin-offset:46px;--jh-hs-screen-height:calc(100svh - var(--jh-hs-admin-offset));--jh-hs-hero-screen-height:100svh;}
    .jh-hs-header__inner {grid-template-columns:1fr auto;gap:12px;}
    .jh-hs-header .jh-hs-header__brand {font-size:17px;}
    .jh-hs-header .jh-hs-header__nav {grid-column:2;justify-self:end;}
    .jh-hs-header .jh-hs-header__utility {display:none;}
    
    .jh-hs-page__main .jh-hs-hero {padding:calc(var(--jh-hs-header-height) + 42px) var(--jh-hs-gutter) 75px;}
    .jh-hs-hero--cover {background-position:center, var(--jh-hs-hero-x,62%) var(--jh-hs-hero-y,25%);}
    .jh-hs-hero--cover .jh-hs-hero__columns {grid-template-columns:repeat(4,minmax(0,1fr));}
    .jh-hs-hero--cover .jh-hs-hero__content {grid-column:1/-1;}
    .jh-hs-hero--cover .jh-hs-hero__content h1 {font-size:clamp(40px,9vw,59px)!important;}
    .jh-hs-hero--cover .jh-hs-hero__scroll {display:none;}
    .jh-hs-page__main .jh-hs-section {padding:100px var(--jh-hs-gutter) 74px;}
    .jh-hs-section .jh-hs-section__inner {grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;}
    .jh-hs-section h2 {font-size:clamp(38px,8.8vw,58px);}
    .jh-hs-about__copy,.jh-hs-about__media,.jh-hs-services__intro,.jh-hs-services__graphic,
    .jh-hs-section .jh-hs-services__list,.jh-hs-projects__heading,.jh-hs-projects__controls,
    .jh-hs-section .jh-hs-projects__viewport,.jh-hs-contact__heading,.jh-hs-contact__shell,.jh-hs-contact__bar,.jh-hs-contact__map {grid-column:1/-1;}
    .jh-hs-about__image img {height:340px;}
    .jh-hs-services__graphic-scene {min-height:250px;}
    .jh-hs-section .jh-hs-services__list {grid-template-columns:1fr;gap:24px;}
    .jh-hs-projects__item {flex-basis:83%;}
    .jh-hs-projects__visual {min-height:245px;}
    .jh-hs-projects__edge {display:none;}
    .jh-hs-section--projects.is-grid .jh-hs-projects__item,
    .jh-hs-section--projects.is-grid .jh-hs-projects__item:nth-child(1),
    .jh-hs-section--projects.is-grid .jh-hs-projects__item:nth-child(2) {grid-column:span 12;}
    .jh-hs-contact__shell {grid-template-columns:1fr;gap:35px;}
    .jh-hs-contact__form-side {padding:23px 20px;}
    .jh-hs-contact__bar {grid-template-columns:1fr 1fr;gap:21px;}
    .jh-hs-contact__bar-social {grid-column:1/-1;}
    
    .jh-hs-dialog--modal[open] {width:calc(100vw - 40px);max-width:calc(100vw - 40px);max-height:calc(100dvh - 32px);}
    .jh-hs-dialog--drawer[open] {top:0!important;right:calc(100% - 100vw)!important;bottom:0!important;width:min(360px,82vw);max-width:82vw;height:100dvh;max-height:100dvh;}
    /* Mobile: ta sama oś X i paska oraz symetryczna optycznie przerwa do treści. */
    .jh-hs-dialog {--jh-hs-dialog-rail-inset:9px;--jh-hs-dialog-inline-pad:clamp(22px,6vw,32px);}
    .jh-hs-dialog__content {padding-bottom:var(--jh-hs-dialog-inline-pad);}
    .jh-hs-dialog__layout {grid-template-columns:1fr;}
    .jh-hs-dialog__media {padding-top:0;}
    .jh-hs-dialog__preview {min-height:180px;}
}
@media(max-width:520px) {
    .jh-hs-contact__two {grid-template-columns:1fr;}
    .jh-hs-contact__bar-social {grid-column:1;}
    .jh-hs-contact__choice-row {gap:7px;}
    .jh-hs-faq__item summary {padding:16px 0;}
}

@media (prefers-reduced-motion: no-preference) {
    .jh-hs-hero--cover .jh-hs-hero__eyebrow,
    .jh-hs-hero--cover .jh-hs-hero__content h1,
    .jh-hs-hero--cover .jh-hs-hero__content > p:not(.jh-hs-hero__eyebrow),
    .jh-hs-hero--cover .wp-block-buttons { animation: jh-hs-reveal .7s cubic-bezier(.22,.67,.2,1) both; }
    .jh-hs-hero--cover .jh-hs-hero__content h1 { animation-delay: .08s; }
    .jh-hs-hero--cover .jh-hs-hero__content > p:not(.jh-hs-hero__eyebrow) { animation-delay: .16s; }
    .jh-hs-hero--cover .wp-block-buttons { animation-delay: .23s; }
}
@keyframes jh-hs-reveal { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
@media (prefers-reduced-motion: reduce) {
    .jh-hs-page .wp-block-button__link,
    .jh-hs-header { transition:none; }
}

/* v7 - Kontrast etykiety formularza */
.jh-hs-contact__form-side .jh-hs-contact__mini {color:var(--jh-theme-olive);}

@media (prefers-reduced-motion:reduce) {
    .jh-hs-page .wp-block-button__link::after,
    .jh-hs-page .jh-hs-action-link::after,
    .jh-hs-page .jh-hs-contact__form-bottom button::after {display:none;transition:none;}
}



.jh-hs-projects__visual {position:relative;isolation:isolate;}
.jh-hs-projects__visual--with-image > .jh-hs-projects__photo {
    position:absolute;inset:0;z-index:0;display:block;
    width:100%;height:100%;object-fit:cover;object-position:center;
}
.jh-hs-projects__visual--with-image::after {
    content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
    background:linear-gradient(180deg,rgba(0,0,0,.22),rgba(0,0,0,.47));
}
.jh-hs-projects__visual--with-image > :not(.jh-hs-projects__photo) {
    position:relative;z-index:2;
}



/* Elementy ukryte w oknach nie pozostawiają pustej przestrzeni. */
.jh-hs-dialog [hidden] {display:none !important;}
.jh-hs-dialog__rich-media {min-width:0;display:grid;gap:16px;}
.jh-hs-dialog__rich-media img {display:block;width:100%;height:auto;border-radius:5px;}
.jh-hs-dialog__rich-media figure {margin:0;min-width:0;}
.jh-hs-dialog__rich-media figcaption {padding:9px 1px 0;color:var(--jh-theme-primary);font-size: var(--jh-hs-type-meta);line-height: var(--jh-hs-leading-meta);}
.jh-hs-dialog__rich-media iframe {display:block;width:100%;min-height:520px;border:1px solid color-mix(in srgb, var(--jh-theme-text) 15%, transparent);border-radius:5px;background:rgba(255,255,255,.8);}
.jh-hs-dialog__pdf-link {display:inline-flex;width:max-content;max-width:100%;padding:12px 0;color:var(--jh-theme-darker);text-decoration:underline;font-weight:600;font-size: var(--jh-hs-type-meta);}
.jh-hs-dialog--media-rich .jh-hs-dialog__layout {grid-template-columns:minmax(0,1fr);}
.jh-hs-dialog--media-rich .jh-hs-dialog__media {padding-top:0;}
.jh-hs-dialog--media-rich .jh-hs-dialog__rich-media {max-width:100%;}
.jh-hs-dialog__preview:not([hidden]) > strong[hidden],
.jh-hs-dialog__preview:not([hidden]) > span[hidden],
.jh-hs-dialog__preview:not([hidden]) > small[hidden] {display:none !important;}
@media(max-width:600px) {
    .jh-hs-dialog__rich-media iframe {min-height:360px;}
}



.jh-hs-dialog__pdf-viewer {display:grid;gap:12px;min-width:0;width:100%;}
.jh-hs-dialog p.jh-hs-dialog__pdf-status {margin:0;padding:10px 0;color:var(--jh-theme-primary);font-size: var(--jh-hs-type-meta);line-height: var(--jh-hs-leading-meta);}
/* Link pozostaje częścią zdania nad podglądem, bez osobnego wiersza. */
/* Odnośnik w komunikacie PDF: ciągłe podkreślenie (również pod "j") i strzałka zewnętrznego linku. */
.jh-hs-dialog .jh-hs-dialog__pdf-status .jh-hs-dialog__pdf-link {
    display:inline;
    padding:0;
    font-size:inherit;
    line-height:inherit;
    white-space:normal;
    text-decoration-line:underline;
    text-decoration-skip-ink:none;
    text-underline-offset:.19em;
    text-decoration-thickness:1px;
}
.jh-hs-dialog .jh-hs-dialog__pdf-status .jh-hs-dialog__pdf-link::after {
    content:" ↗";
    white-space:nowrap;
}
.jh-hs-dialog__pdf-pages {display:grid;gap:20px;min-width:0;width:100%;}
.jh-hs-dialog__pdf-page {display:grid;gap:7px;margin:0;min-width:0;}
.jh-hs-dialog__pdf-surface {
    position:relative;display:grid;place-items:center;width:100%;min-width:0;
    overflow:hidden;background:#fff;border:1px solid color-mix(in srgb, var(--jh-theme-text) 12%, transparent);
    border-radius:3px;box-shadow:0 2px 14px color-mix(in srgb, var(--jh-theme-text) 6%, transparent);
}
.jh-hs-dialog__pdf-surface canvas {display:block;width:100%;height:auto;max-width:100%;}
.jh-hs-dialog__pdf-placeholder {color:var(--jh-theme-olive);font-size: var(--jh-hs-type-meta);}
.jh-hs-dialog__pdf-error {padding:18px;text-align:center;color:var(--jh-theme-muted);font-size: var(--jh-hs-type-meta);}
.jh-hs-dialog__pdf-page figcaption {padding:0;color:var(--jh-theme-olive);text-align:right;font-size: var(--jh-hs-type-meta);}
.jh-hs-dialog p.jh-hs-dialog__pdf-limit {margin:0;color:var(--jh-theme-primary);font-size: var(--jh-hs-type-meta);line-height: var(--jh-hs-leading-meta);}

/* PDF przewija się wewnątrz .jh-hs-dialog__content; przycisk zamknięcia
   należy do nieruchomej ramy dialogu, jak przy innych mediach. */




.jh-hs-socials[hidden], .jh-hs-about__social-label[hidden] {display:none !important;}
.jh-hs-socials .jh-hs-social-custom-icon {display:block;width:19px;height:19px;object-fit:contain;}
.jh-hs-socials--header .jh-hs-social-custom-icon {width:17px;height:17px;}
.jh-hs-socials--footer .jh-hs-social-custom-icon {width:20px;height:20px;}


.jh-hs-services__graphic[hidden] {display:none !important;}
.jh-hs-services--no-graphic .jh-hs-services__intro {grid-column:1/-1;}
.jh-hs-services--no-graphic .jh-hs-services__intro .jh-hs-section__intro {max-width:760px;}
.jh-hs-services__graphic-image {display:block;width:100%;max-height:clamp(260px,52vh,550px);object-fit:cover;border-radius:5px;}
.jh-hs-services__graphic-gallery {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.jh-hs-services__graphic-gallery figure {margin:0;min-width:0;}
.jh-hs-services__graphic-gallery img {display:block;width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:5px;}
.jh-hs-services__graphic-gallery figure:first-child:nth-last-child(odd) {grid-column:1/-1;}
.jh-hs-services__graphic-gallery figure:first-child:nth-last-child(odd) img {aspect-ratio:16/10;}
.jh-hs-services__graphic-gallery figcaption {margin-top:7px;font-size:var(--jh-hs-type-meta,11px);line-height:1.5;color:var(--jh-theme-primary);}


.jh-hs-section--projects.jh-hs-projects--configured .jh-hs-projects__toggle {display:none !important;}
.jh-hs-section--projects.is-gallery .jh-hs-projects__controls,
.jh-hs-section--projects.is-gallery .jh-hs-projects__viewport {display:none !important;}
.jh-hs-projects__gallery {grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,2vw,26px);margin-top:24px;}
.jh-hs-projects__gallery > a {display:block;min-width:0;color:inherit;text-decoration:none;}
.jh-hs-projects__gallery figure {margin:0;}
.jh-hs-projects__gallery img {display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:5px;transition:opacity .2s ease;}
.jh-hs-projects__gallery a:hover img {opacity:.85;}
.jh-hs-projects__gallery figcaption {margin-top:10px;font-size:var(--jh-hs-type-meta,11px);line-height:1.5;color:var(--jh-theme-primary);}


html.jh-hs-anchor-scrolling:has(.jh-hs-page) {scroll-snap-type:none !important;scroll-behavior:auto !important;}
.jh-hs-page [id]:target {scroll-margin-top:calc(var(--jh-hs-header-height) + var(--jh-hs-admin-offset) + 8px);}

@media(max-width:900px) {
    .jh-hs-projects__gallery {grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:600px) {
    .jh-hs-projects__gallery {grid-template-columns:minmax(0,1fr);}
    .jh-hs-services__graphic-gallery {gap:8px;}
}

/* Siatka pokazuje wszystkie realizacje, więc licznik karuzeli jest zbędny. */
.jh-hs-section--projects.jh-hs-projects--configured.is-grid .jh-hs-projects__controls {display:none !important;}

/* Przesunięcie pozycji scroll-snap poniżej przyklejonego nagłówka. */
html:has(.jh-hs-page) {scroll-padding-top:90px;}
html:has(body.admin-bar .jh-hs-page) {scroll-padding-top:122px;}
@media(max-width:782px) {html:has(body.admin-bar .jh-hs-page) {scroll-padding-top:136px;}}




html.jh-hs-dialog-open:has(.jh-hs-page) {
    scroll-snap-type: none !important;
    overflow: hidden;
}
html:has(.jh-hs-page) { scrollbar-gutter: stable; }


.jh-hs-services__graphic-scene { min-height: 375px; padding: 30px 8px; overflow: visible; }
.jh-hs-services__mockup--back {
    top: 2px;
    left: 0;
    width: 88%;
    min-height: 250px;
    z-index: 1;
    transform: rotate(-5deg);
}
.jh-hs-services__mockup--front {
    width: 88%;
    min-height: 255px;
    margin: 74px 0 0 auto;
    z-index: 2;
    transform: translateX(8px) rotate(2deg);
}
.jh-hs-services__mockup--back.is-active {
    z-index: 4;
    transform: translate(10px, 35px) rotate(-2deg);
}
.jh-hs-services__mockup--front.is-back { z-index: 1; }
.jh-hs-services__graphic-scene .jh-hs-services__mockup {
    cursor: pointer;
    transition: transform .26s ease, box-shadow .26s ease;
}
.jh-hs-services__graphic-scene .jh-hs-services__mockup:focus-visible {
    outline: 2px solid var(--jh-theme-primary);
    outline-offset: 4px;
}
.jh-hs-services__mockup-chip { z-index: 5; }


.jh-hs-lightbox-trigger {
    display: block;
    width: 100%;
    padding: 0;
    margin: 0;
    color: inherit;
    border: 0;
    border-radius: 5px;
    background: none;
    text-align: left;
    cursor: zoom-in;
}
.jh-hs-lightbox-trigger img {display:block;width:100%;}
.jh-hs-lightbox-trigger:focus-visible {outline:2px solid var(--jh-theme-primary);outline-offset:4px;}
.jh-hs-projects__gallery > .jh-hs-lightbox-trigger,
.jh-hs-projects__gallery > div {min-width:0;}
.jh-hs-projects__gallery .jh-hs-lightbox-trigger figure {margin:0;}
.jh-hs-projects__gallery .jh-hs-lightbox-trigger:hover img {opacity:.86;}
.jh-hs-image-lightbox {
    position:fixed;
    inset:0;
    width:100vw;
    height:100dvh;
    max-width:none;
    max-height:none;
    margin:0;
    padding:clamp(58px,8vh,85px) clamp(45px,7vw,110px) 30px;
    box-sizing:border-box;
    border:0;
    background:color-mix(in srgb, var(--jh-theme-text) 94%, transparent);
    color:#fff;
    overflow:auto;
    text-align:center;
}
.jh-hs-image-lightbox::backdrop {background:color-mix(in srgb, var(--jh-theme-text) 75%, transparent);backdrop-filter:blur(10px);}
.jh-hs-image-lightbox:not([open]) {display:none;}
.jh-hs-lightbox__image {display:block;max-width:100%;max-height:calc(100dvh - 120px);width:auto;height:auto;object-fit:contain;margin:auto;}
.jh-hs-lightbox__toolbar {position:fixed;top:17px;left:20px;right:20px;display:flex;align-items:center;justify-content:space-between;z-index:3;pointer-events:none;}
.jh-hs-lightbox__toolbar>* {pointer-events:auto;}
.jh-hs-lightbox__count {font-size:11px;letter-spacing:.05em;color:rgba(255,255,255,.72);}
.jh-hs-image-lightbox :is(.jh-hs-lightbox__close,.jh-hs-lightbox__previous,.jh-hs-lightbox__next) {
    display:grid;place-items:center;width:38px;height:38px;padding:0;border:1px solid rgba(255,255,255,.28);
    border-radius:5px;background:color-mix(in srgb, var(--jh-theme-text) 75%, transparent);color:#fff;font-size:24px;line-height:1;cursor:pointer;
}
.jh-hs-image-lightbox :is(.jh-hs-lightbox__previous,.jh-hs-lightbox__next) {position:fixed;top:50%;transform:translateY(-50%);z-index:3;}
.jh-hs-image-lightbox .jh-hs-lightbox__previous {left:14px;}
.jh-hs-image-lightbox .jh-hs-lightbox__next {right:14px;}
.jh-hs-image-lightbox button[hidden] {display:none;}


.jh-hs-section--projects .jh-hs-projects__viewport .jh-hs-projects__edge {
    position:absolute;
    top:clamp(117px,16vh,173px) !important;
    margin:0 !important;
    transform:translateY(-50%) !important;
}
.jh-hs-section--projects .jh-hs-projects__viewport .jh-hs-projects__edge--prev {left:8px;right:auto;}
.jh-hs-section--projects .jh-hs-projects__viewport .jh-hs-projects__edge--next {right:8px;left:auto;}
.jh-hs-projects--configured .jh-hs-projects__controls {display:none !important;}
.jh-hs-projects__counter-below {
    display:block;
    grid-column:1/-1;
    margin:7px 0 0 !important;
    text-align:center;
    color:var(--jh-theme-primary);
    font-size:var(--jh-hs-type-meta);
    letter-spacing:.08em;
}
.jh-hs-section--projects.is-grid .jh-hs-projects__counter-below,
.jh-hs-section--projects.is-gallery .jh-hs-projects__counter-below {display:none;}
@media (max-width:600px) {
    .jh-hs-services__graphic-scene {min-height:330px;}
    .jh-hs-services__mockup--front {margin-top:54px;}
    .jh-hs-image-lightbox {padding:70px 12px 20px;}
    .jh-hs-lightbox__image {max-height:calc(100dvh - 110px);}
}


.jh-hs-projects__gallery {
    align-items: start;
    grid-auto-flow: row;
    grid-auto-rows: max-content;
}
.jh-hs-projects__gallery > * {
    display: block;
    align-self: start;
    justify-self: stretch;
    margin: 0 !important;
    padding: 0 !important;
    min-height: 0;
    line-height: normal;
}
.jh-hs-projects__gallery figure {
    display: block;
    margin: 0 !important;
    padding: 0 !important;
}
.jh-hs-projects__gallery figure img {display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover;}
.jh-hs-projects__gallery figcaption {display:block; margin-top:10px;}
.jh-hs-projects__controls [data-jh-hs-projects-count],
.jh-hs-projects__counter-below {display:none !important;}
/* Na telefonie tło Hero zawsze wypełnia wysokość, a kadr przesuwamy poziomo. */
@media(max-width:781px) {
    .jh-hs-hero--cover {
        background-size:cover, var(--jh-hs-hero-size-mobile, cover) !important;
        background-position:center, var(--jh-hs-hero-mobile-x, 50%) 50% !important;
    }
}



/* Kolumny: etykieta FAQ na poziomie etykiety formularza. */
@media (min-width: 782px) {
    .jh-hs-contact__faq {padding-top:calc(clamp(22px,2.2vw,32px) + 20px);}
}
/* Opis realizacji nie przylega do miniatury, gdy tytuł pod kartą jest pusty. */
.jh-hs-projects__card > .jh-hs-projects__visual + .jh-hs-projects__meta {
    margin-top:13px !important;
}
/* Lightbox zawsze centruje obraz względem dostępnej wysokości ekranu. */
.jh-hs-image-lightbox[open] {
    display:flex !important;
    align-items:center;
    justify-content:center;
    overflow:auto;
}
.jh-hs-image-lightbox .jh-hs-lightbox__image {
    display:block;
    flex:0 1 auto;
    object-fit:contain;
    max-width:100%;
    max-height:calc(100dvh - 120px);
    margin:auto;
}
/* Nie pokazujemy starego licznika ani przełączników widoku. */
.jh-hs-section--projects [data-jh-hs-projects-count],
.jh-hs-section--projects .jh-hs-projects__toggle {display:none !important;}

/* Strona 404 z tym samym nagłówkiem i stopką co reszta motywu. */
.jh-hs-page--404 {min-height:100svh;display:flex;flex-direction:column;background:var(--jh-theme-text);}
.jh-hs-page--404 > .jh-hs-header {flex:0 0 auto;}
.jh-hs-page--404 > .jh-hs-footer {margin-top:0 !important;}
.jh-hs-404 {
    position:relative;isolation:isolate;flex:1;display:flex;align-items:center;justify-content:center;
    min-height:clamp(470px,75svh,900px);padding:calc(var(--jh-hs-header-height,80px) + 42px) 24px 90px;
    overflow:hidden;color:#fff;text-align:center;background:var(--jh-theme-text);
}
.jh-hs-404::before {
    content:"";position:absolute;inset:-28px;z-index:-2;
    background-image:linear-gradient(130deg,var(--jh-theme-primary),var(--jh-theme-olive) 72%,var(--jh-theme-brown));background-position:center;background-size:cover;
    filter:blur(16px) brightness(.48) saturate(.78);transform:scale(1.06);
}
.jh-hs-404::after {content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg,color-mix(in srgb, var(--jh-theme-text) 62%, transparent),color-mix(in srgb, var(--jh-theme-text) 34%, transparent));}
.jh-hs-404__content {max-width:780px;margin:0 auto;}
.jh-hs-404__code {display:block;margin:0 0 18px;font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:rgba(255,255,255,.72);}
.jh-hs-404 h1 {margin:0 0 20px !important;font-size:clamp(40px,6vw,76px);letter-spacing:-.05em;font-weight:500;line-height:1.08;color:#fff;}
.jh-hs-404 p {max-width:480px;margin:0 auto 32px !important;font-size:15px;line-height:1.66;color:rgba(255,255,255,.84);}
.jh-hs-404__button {display:inline-flex;align-items:center;justify-content:center;min-height:49px;padding:15px 24px;border:1px solid #fff;border-radius:5px;background:#fff;text-decoration:none !important;color:var(--jh-theme-text) !important;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;}
.jh-hs-404__button:hover {background:var(--jh-theme-background);border-color:var(--jh-theme-background);}
@media (max-width:782px) {.jh-hs-404 {min-height:65svh;padding:160px 24px 85px;}.jh-hs-contact__faq {padding-top:0;}}
@media (prefers-reduced-motion:reduce) {.jh-hs-404__button {transition:none;}}


@media (max-width:781px) {
    .jh-hs-hero--cover {
        background-image: linear-gradient(90deg,color-mix(in srgb, var(--jh-theme-text) 76%, transparent),color-mix(in srgb, var(--jh-theme-text) 42%, transparent) 44%,color-mix(in srgb, var(--jh-theme-text) 12%, transparent)),
            var(--jh-hs-hero-mobile-image,var(--jh-hs-hero-image,none)) !important;
        background-position: center, var(--jh-hs-hero-mobile-x,50%) var(--jh-hs-hero-mobile-y,50%) !important;
        background-size: cover,var(--jh-hs-hero-size-mobile,cover) !important;
    }
}


html:has(.jh-hs-page) { scroll-padding-top: var(--jh-hs-anchor-offset,85px); }
.jh-hs-page [id]:target { scroll-margin-top: var(--jh-hs-anchor-offset,85px); }


@media (prefers-reduced-motion:no-preference) {
    .jh-hs-image-lightbox[open] {
        opacity:1;
        transition:opacity .3s ease;
    }
    .jh-hs-image-lightbox[open] .jh-hs-lightbox__image {
        opacity:1;
        transform:scale(1);
        transition:opacity .34s cubic-bezier(.22,.72,.22,1),transform .34s cubic-bezier(.22,.72,.22,1);
    }
    .jh-hs-image-lightbox[open].jh-hs-lightbox--enter,
    .jh-hs-image-lightbox[open].jh-hs-lightbox--leave {opacity:0;}
    .jh-hs-image-lightbox[open].jh-hs-lightbox--enter .jh-hs-lightbox__image,
    .jh-hs-image-lightbox[open].jh-hs-lightbox--leave .jh-hs-lightbox__image {opacity:0;transform:scale(.965);}
    .jh-hs-image-lightbox::backdrop {
        transition:background-color .3s ease,backdrop-filter .3s ease,-webkit-backdrop-filter .3s ease;
    }
    .jh-hs-image-lightbox.jh-hs-lightbox--enter::backdrop,
    .jh-hs-image-lightbox.jh-hs-lightbox--leave::backdrop {
        background-color:color-mix(in srgb, var(--jh-theme-text) 0%, transparent);
        -webkit-backdrop-filter:blur(0);
        backdrop-filter:blur(0);
    }
}


.jh-hs-page .jh-hs-404__button {
    position:relative;
    isolation:isolate;
    overflow:hidden;
    transition:background-color .25s,border-color .25s,box-shadow .25s;
}
.jh-hs-page .jh-hs-404__button::after {
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
    border-radius:inherit;
    background:linear-gradient(105deg,transparent 0%,rgba(255,255,255,.04) 30%,rgba(255,255,255,.42) 50%,rgba(255,255,255,.04) 70%,transparent 100%);
    transform:translateX(-130%);
    transition:transform .72s cubic-bezier(.2,.75,.22,1);
}
@media(hover:hover) {
    .jh-hs-page .jh-hs-404__button:hover::after {transform:translateX(130%);}
    .jh-hs-page .jh-hs-404__button:hover {
        background-color:var(--jh-theme-background);
        border-color:var(--jh-theme-background);
        box-shadow:0 0 0 1px rgba(255,255,255,.15),0 6px 22px rgba(0,0,0,.08);
    }
}
@media(prefers-reduced-motion:reduce) {
    .jh-hs-page .jh-hs-404__button::after {transition:none;}
}


.jh-hs-socials[data-jh-hs-icon-palette="light"] a:has(svg) {color:#fff !important;}
.jh-hs-socials[data-jh-hs-icon-palette="dark"] a:has(svg) {color:var(--jh-theme-text) !important;}
.jh-hs-socials[data-jh-hs-icon-palette="brand"] a:has(svg) {color:var(--jh-hs-social-brand-color,currentColor) !important;}
/* Przy kotwicy z panelu wyłączamy snap także w trakcie zamykania i scrollowania. */
html.jh-hs-anchor-navigation:has(.jh-hs-page) {scroll-snap-type:none !important;scroll-behavior:auto !important;}
/* 404: przywracamy odstęp pomiędzy zawartością stopki a dolnym paskiem,
   wizualnie taki sam jak w stopce po formularzu. */
.jh-hs-page--404 > .wp-block-template-part:last-child {flex:0 0 auto;min-height:0;}
.jh-hs-page--404 .jh-hs-footer__bottom {margin-top:clamp(24px,2.5vw,34px);}


html.jh-hs-dialog-open {overflow-anchor:none;}
html:has(.jh-hs-page) {scrollbar-gutter:stable;}


.jh-hs-mobile-menu {
    box-sizing:border-box;
    position:fixed;
    inset:0 0 0 auto;
    width:min(360px,82vw);
    max-width:82vw;
    height:100dvh;
    max-height:100dvh;
    margin:0;
    padding:0;
    border:1px solid color-mix(in srgb, var(--jh-theme-primary) 14%, transparent);
    border-radius:10px 0 0 10px;
    outline:none!important;
    overflow-y:auto;
    overscroll-behavior:contain;
    color:var(--jh-theme-text);
    background:color-mix(in srgb, var(--jh-theme-surface) 97%, transparent);
    -webkit-backdrop-filter:blur(24px) saturate(1.08);
    backdrop-filter:blur(24px) saturate(1.08);
    box-shadow:0 22px 70px color-mix(in srgb, var(--jh-theme-text) 14%, transparent);
    font:inherit;
}
.jh-hs-mobile-menu:focus,.jh-hs-mobile-menu:focus-visible {outline:none!important;}
.jh-hs-mobile-menu::backdrop {background:color-mix(in srgb, var(--jh-theme-text) 38%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.jh-hs-mobile-menu__inner {box-sizing:border-box;display:flex;flex-direction:column;min-height:100%;padding:30px 28px max(30px,env(safe-area-inset-bottom));}
.jh-hs-mobile-menu__top {display:flex;align-items:center;justify-content:space-between;min-height:34px;gap:18px;}
.jh-hs-mobile-menu__title {
    font-size:var(--jh-hs-type-label,11px);font-weight:600;line-height:1.4;
    letter-spacing:.14em;color:var(--jh-theme-olive);
}
.jh-hs-mobile-menu__close {display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;outline:0;border-radius:6px;background:transparent;color:var(--jh-theme-text);cursor:pointer;transition:background .2s;}
.jh-hs-mobile-menu__close:hover {background:color-mix(in srgb, var(--jh-theme-text) 7%, transparent);}
.jh-hs-mobile-menu__links {display:flex;flex-direction:column;align-items:stretch;gap:0;padding:clamp(34px,6vh,58px) 0 32px;}
.jh-hs-mobile-menu__links a {
    display:block;padding:7px 0;color:var(--jh-theme-text);text-decoration:none;
    /* Dokładnie ta sama typografia, co linki NAWIGACJA w stopce. */
    font-size:var(--jh-hs-type-footer,14px);font-weight:400;
    line-height:var(--jh-hs-leading-footer,1.65);letter-spacing:normal;
    transition:opacity .2s;
}
.jh-hs-mobile-menu__links a:hover {opacity:.6;}
.jh-hs-mobile-menu__bottom {margin-top:auto;padding-top:22px;border-top:1px solid color-mix(in srgb, var(--jh-theme-text) 14%, transparent);}
.jh-hs-mobile-menu__bottom[hidden] {display:none;}
.jh-hs-socials--mobile-menu {display:flex;align-items:center;gap:14px;color:var(--jh-theme-text);}
.jh-hs-socials--mobile-menu a {width:32px;height:34px;}
.jh-hs-socials--mobile-menu svg {width:22px;height:22px;}
.jh-hs-mobile-menu :focus-visible {outline:2px solid color-mix(in srgb, var(--jh-theme-primary) 70%, transparent);outline-offset:3px;}
@media (prefers-reduced-motion:no-preference) {
    .jh-hs-mobile-menu[open] {opacity:1;translate:0 0;transition:opacity .3s ease,translate .35s cubic-bezier(.2,.78,.2,1);}
    .jh-hs-mobile-menu[open].jh-hs-mobile-menu--enter,
    .jh-hs-mobile-menu[open].jh-hs-mobile-menu--leave {opacity:0;translate:calc(100% + 18px) 0;}
    .jh-hs-mobile-menu::backdrop {transition:background-color .3s;}
    .jh-hs-mobile-menu.jh-hs-mobile-menu--enter::backdrop,
    .jh-hs-mobile-menu.jh-hs-mobile-menu--leave::backdrop {background-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;}
}
@media(max-width:781px) {
    html:has(.jh-hs-page) {scrollbar-gutter:auto;}
    .jh-hs-mobile-menu {top:0;right:0;bottom:0;height:100dvh;max-height:100dvh;}
    .jh-hs-mobile-menu__inner {padding:25px 24px max(25px,env(safe-area-inset-bottom));}
}


.jh-hs-contact__trap{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.jh-hs-contact__result,.jh-hs-contact__config-note{min-height:1.2em;margin:0;color:var(--jh-theme-text);font-size:13px}
.jh-hs-about__placeholder{display:grid;place-items:center;aspect-ratio:4/5;border-radius:6px;background:linear-gradient(155deg,var(--jh-theme-soft),color-mix(in srgb, var(--jh-theme-background) 78%, var(--jh-theme-olive)));color:var(--jh-theme-text);text-align:center;padding:30px;font-size:15px}
.jh-hs-privacy-policy{max-width:780px;margin:auto;line-height:1.75;padding:30px 0}.jh-hs-privacy-policy h2{margin-top:2em}
.jh-hs-footer__credit-button{background:none;border:0;color:inherit;text-decoration:underline;cursor:pointer;font-size:inherit}

/* Fokus klawiatury jest czytelny, ale programowe przywracanie fokusu po kliknięciu
   myszą/dotykiem nie zostawia zbędnej obwódki. */
html.jh-hs-pointer-navigation :is(.jh-hs-page,.jh-hs-dialog,.jh-hs-mobile-menu) :focus-visible,
html.jh-hs-pointer-navigation .jh-hs-page :focus-visible,
html.jh-hs-pointer-navigation .jh-hs-mobile-menu :focus-visible { outline-color:transparent !important; }
html:not(.jh-hs-pointer-navigation) :is(.jh-hs-page,.jh-hs-dialog,.jh-hs-mobile-menu) :focus-visible,
html:not(.jh-hs-pointer-navigation) .jh-hs-page :focus-visible { outline:2px solid var(--jh-focus-color);outline-offset:4px; }


/* Zgody na opcjonalne integracje: dostępny baner niezależny od okien ofert. */
.jh-hs-consent:not([hidden]) {
    position:fixed; z-index:999999; inset:auto clamp(12px,2vw,28px) clamp(12px,2vw,28px) auto;
    display:flex; flex-direction:column; gap:12px;
    width:min(430px,calc(100vw - 24px)); max-height:calc(100dvh - 32px); overflow-y:auto;
    padding:24px; border-radius:14px;
    background:var(--jh-theme-surface); color:var(--jh-theme-text);
    border:1px solid var(--jh-theme-line);
    box-shadow:0 22px 70px color-mix(in srgb,var(--jh-theme-text) 18%,transparent);
    font:inherit; line-height:1.5;
}
.jh-hs-consent[hidden] { display:none !important; }
.jh-hs-consent p { margin:0 0 4px; }
.jh-hs-consent label { display:flex; align-items:center; gap:9px; margin:0; }
.jh-hs-consent button { padding:12px 16px; cursor:pointer; border-radius:8px; font-weight:600;font-size:13px;line-height:1.35;font-family:inherit;
    background:var(--jh-theme-surface); color:var(--jh-theme-text); border:1px solid var(--jh-theme-line); }
.jh-hs-consent button[data-jh-hs-consent="all"] { background:var(--jh-theme-primary);color:#fff;border-color:var(--jh-theme-primary); }
.jh-hs-consent button:hover { border-color:var(--jh-theme-primary); }
.jh-hs-consent :focus-visible { outline:2px solid var(--jh-focus-color); outline-offset:3px; }


/* Logo i tekst to jedna komórka siatki nagłówka, bez przesuwania nawigacji. */
.jh-hs-header__inner > .jh-hs-header__identity {
    justify-self:start; min-width:0; display:flex; align-items:center; gap:12px; flex-wrap:nowrap;
}
.jh-hs-header__site-logo { flex:0 1 auto; margin:0; }
.jh-hs-header__site-logo img { display:block; width:auto; max-width:min(200px,34vw); max-height:min(var(--jh-header-logo-height, 60px), calc(var(--jh-hs-header-height) - 12px)); height:auto; object-fit:contain; }
.jh-hs-header__identity:has(.wp-block-site-logo img) .jh-hs-header__brand { display:none; }
.jh-hs-header__identity .jh-hs-header__brand { min-width:0; overflow:hidden; text-overflow:ellipsis; }
