@charset "UTF-8";

/* ==========================================================================
   Standards layer - loaded last. Mobile hardening, a11y helpers, tokens.
   Desktop-first: rules without @media apply to XXL and larger.
   ========================================================================== */

/* Tokens - START */
:root {
    --border-radius: 32px;
    --border-radius-small: 12px;
    --font-size-input: 1rem; /* 16px - prevents iOS auto-zoom */
    --font-size-large: 3.625rem;
    --spacing-section: 5rem;
}
/* Tokens - END */

/* Mobile standard - START */
/* overflow-x na html (nie na body) - body z overflow-x staje sie kontenerem
   przewijania i psuje position: sticky w naglowku */
html {
    overflow-x: clip;
}

@supports not (overflow: clip) {
    html {
        overflow-x: hidden;
    }
}

a,
button,
.theme-btn,
.theme-btn-s2,
.navbar-toggler,
.menu-close {
    -webkit-tap-highlight-color: transparent;
}

input,
select,
textarea {
    font-size: var(--font-size-input);
}

img,
svg {
    max-width: 100%;
}
/* Mobile standard - END */

/* Figma export - backdrop blur inside SVG foreignObject (was inline style) - START */
.svg-backdrop-blur {
    width: 100%;
    height: 100%;
    backdrop-filter: blur(20px);
}
/* Figma export - END */

/* Accessibility helpers - START */
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

:where(a, button, [tabindex]):focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 3px;
}
/* Accessibility helpers - END */

/* Motion preferences - START */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
}
/* Motion preferences - END */

/* Optional: smoother cross-page navigation. Verify routing after enabling.
@view-transition { navigation: auto; }
*/

/* Smooth scroll dla linkow kotwiczacych - START */
/* :root, nie html - motyw ustawia :root { scroll-behavior: unset } */
:root {
    scroll-behavior: smooth;
    scroll-padding-top: 110px;
}

:target {
    scroll-margin-top: 110px;
}

@media (max-width: 991px) {
    :root {
        scroll-padding-top: 84px;
    }

    :target {
        scroll-margin-top: 84px;
    }
}
/* Smooth scroll dla linkow kotwiczacych - END */

/* Reduced motion - wylacza takze smooth scroll (regula ponizej ma !important) */
@media (prefers-reduced-motion: reduce) {
    :root {
        scroll-behavior: auto !important;
    }
}

/* Sticky header - kontener strony nie moze tworzyc kontekstu przewijania - START */
.page-wrapper {
    overflow: clip;
}

@supports not (overflow: clip) {
    .page-wrapper {
        overflow: hidden;
    }
}
/* Sticky header - kontener strony - END */

/* Sticky header - body nie moze byc kontenerem przewijania (clipping robi html) - START */
body {
    overflow-x: visible;
}
/* Sticky header - body - END */

/* Sticky header - element nadrzedny (#header) jest kontekstem sticky.
   Sticky na .wpo-site-header nie dziala, bo jego rodzic ma tylko wysokosc paska. - START */
#header {
    position: sticky;
    top: 0;
    z-index: 1000;
    background-color: #fff;
}

#header .wpo-site-header {
    position: static;
}
/* Sticky header - END */
