/* ============================================================================
   Base Styles - Reset, Typography, Accessibility
   ============================================================================ */

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}

body {
    margin: 0;
    font-family: var(--ptasi-font-family);
    font-size: var(--ptasi-text-base);
    line-height: 1.65;
    color: var(--ptasi-muted);
    background: var(--ptasi-background);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Fix sticky positioning - ensure parent containers don't block it */
html,
body,
.wp-site-blocks,
.wp-block-template-part,
header.wp-block-template-part {
    overflow: visible !important;
    /* These properties break sticky positioning - force reset them */
    transform: none !important;
    filter: none !important;
    perspective: none !important;
}

/* Reasonable initial estimates so content doesn't flash under header before JS runs */
:root {
    --ptasi-est-topbar: 44px;   /* Topbar approx height */
    --ptasi-est-header: 96px;   /* Header approx height (logo + padding) */
    --ptasi-header-h-expanded: 96px; /* Desktop header target height at top */
    --ptasi-header-h-scrolled: 64px; /* Desktop header target height scrolled */
}

/* Headings use dark navy */
h1, h2, h3, h4, h5, h6 {
    color: var(--ptasi-text);
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: -0.02em;
}

/* Improved paragraph spacing */
p {
    margin-bottom: 1.25rem;
    line-height: 1.7;
}

p:last-child {
    margin-bottom: 0;
}

/* Lists spacing */
ul, ol {
    margin-bottom: 1.5rem;
    padding-left: 1.5rem;
}

ul li, ol li {
    margin-bottom: 0.5rem;
    line-height: 1.7;
}

/* Text selection styling */
::selection {
    background: rgb(var(--ptasi-primary-rgb) / 0.2);
    color: var(--ptasi-text);
}

::-moz-selection {
    background: rgb(var(--ptasi-primary-rgb) / 0.2);
    color: var(--ptasi-text);
}

main {
    display: block;
    margin-top: 0;
}

/* Block theme root wrapper: pad down by header wrap height */
.wp-site-blocks {
    padding-top: var(--ptasi-header-offset, calc(var(--ptasi-est-topbar, 44px) + var(--ptasi-est-header, 96px)));
    transition: padding-top 280ms ease;
}

/* Remove fallback top padding on tablet/mobile to avoid large initial gap */
@media (max-width: 1024px) {
    :root {
        --ptasi-est-topbar: 0px;
        --ptasi-est-header: 0px;
    }
    .wp-site-blocks {
        padding-top: 0 !important;
        transition: none;
    }
}

/* Footer template part spacing */
footer.wp-block-template-part {
    margin-top: 40px;
}

a {
    color: var(--ptasi-primary);
    text-decoration: none;
    transition: color var(--ptasi-transition);
}

a:hover,
a:focus {
    color: var(--ptasi-primary-dark);
}

/* ============================================
   Focus Styles - Keyboard Accessibility
   ============================================ */

/* Visible focus for keyboard navigation (WCAG 2.1 compliant) */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
.wp-block-button__link:focus-visible,
.wp-element-button:focus-visible,
.site-btn:focus-visible {
    outline: 2px solid var(--ptasi-primary);
    outline-offset: 2px;
    transition: outline-offset 0.2s ease;
}

/* Remove outline ONLY for mouse clicks (not keyboard) */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
input:focus:not(:focus-visible),
textarea:focus:not(:focus-visible),
select:focus:not(:focus-visible) {
    outline: none;
}

/* Enhanced focus for form inputs */
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
    outline: 2px solid var(--ptasi-primary);
    outline-offset: 0px;
    box-shadow: 0 0 0 3px rgb(var(--ptasi-primary-rgb) / 0.1);
}

/* High contrast mode support */
@media (prefers-contrast: high) {
    .wp-element-button:where(:not(.ptasi-btn-bestia, .ptasi-btn-stroke)),
    .wp-block-button__link:where(:not(.ptasi-btn-bestia, .ptasi-btn-stroke)),
    .site-btn:where(:not(.ptasi-btn-bestia, .ptasi-btn-stroke)) {
        border: 2px solid var(--ptasi-secondary);
    }

    .site-btn--primary,
    .wp-block-button.is-style-fill .wp-block-button__link {
        background: var(--ptasi-button-primary);
        color: var(--ptasi-secondary);
    }

    .site-btn--outline,
    .wp-block-button.is-style-outline .wp-block-button__link {
        background: transparent;
        border: 3px solid var(--ptasi-primary);
    }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
    .wp-element-button:where(:not(.ptasi-btn-bestia, .ptasi-btn-stroke)),
    .wp-block-button__link:where(:not(.ptasi-btn-bestia, .ptasi-btn-stroke)),
    .site-btn:where(:not(.ptasi-btn-bestia, .ptasi-btn-stroke)) {
        transition: none !important;
        transform: none !important;
    }

    .wp-element-button::before,
    .wp-block-button__link::before,
    .site-btn::before {
        display: none;
    }
}

img,
svg,
video {
    display: block;
    max-width: 100%;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin: 0 0 1.2rem;
    color: var(--ptasi-secondary);
    letter-spacing: -0.01em;
}

h1 { 
    font-size: clamp(2.6rem, 5vw, var(--ptasi-text-5xl)); 
    line-height: 1.08;
}
h2 { 
    font-size: clamp(2.1rem, 4vw, var(--ptasi-text-4xl)); 
    line-height: 1.12;
}
h3 { 
    font-size: clamp(1.7rem, 3vw, var(--ptasi-text-3xl));
}
h4 { 
    font-size: clamp(1.4rem, 2.5vw, var(--ptasi-text-2xl));
}

p {
    margin: 0 0 1.2rem;
    word-spacing: 0.01em;
}

/* Additional orphan prevention for all paragraph blocks */
p::after,
.wp-block-paragraph::after {
    content: '\00A0'; /* Non-breaking space */
    white-space: nowrap;
    width: 0;
    display: inline-block;
}

/* Prevent orphans specifically for Polish prepositions/conjunctions */
p br::after,
.wp-block-paragraph br::after {
    content: '';
}

blockquote {
    margin: 0 0 2rem;
    padding: 1.4rem 2rem;
    background: rgb(var(--ptasi-primary-rgb) / 0.06);
    border-left: 4px solid var(--ptasi-primary);
    border-radius: 0 var(--ptasi-radius) var(--ptasi-radius) 0;
    font-style: italic;
    color: rgb(var(--ptasi-secondary-rgb) / 0.85);
}
