/* Publiczny BIP: neutralny urzędowo, WCAG 2.2 AA. Bez fontów zewnętrznych i frameworków. */

:root {
    --bg: #ffffff;
    --surface: #f3f4f6;
    --fg: #1b1b1b;
    --muted: #4d4d4d;
    --link: #0a4a8f;
    --line: #c9ccd1;
    --border: #6b7280;
    --btn-bg: #0a4a8f;
    --btn-fg: #ffffff;
    --notice-bg: #e7f0fa;
    --notice-line: #0a4a8f;
    --warn-bg: #fff3c4;
    --warn-line: #7a5c00;
    --mark-bg: #ffe58a;
    --mark-fg: #1b1b1b;
    --focus: #ffdd00;
    --focus-fg: #0b0c0c;
    color-scheme: light dark;
}

@media (prefers-color-scheme: dark) {
    :root {
        --bg: #121417;
        --surface: #1d2127;
        --fg: #ecedef;
        --muted: #b9bec6;
        --link: #9cc8ff;
        --line: #3a414b;
        --border: #8a919c;
        --btn-bg: #9cc8ff;
        --btn-fg: #0b0c0c;
        --notice-bg: #13263b;
        --notice-line: #9cc8ff;
        --warn-bg: #3a2e00;
        --warn-line: #ffd34d;
    }
}

/* Wysoki kontrast: przycisk (klasa .hc) albo ustawienie systemu. */
html.hc {
    --bg: #000000; --surface: #000000; --fg: #ffffff; --muted: #ffffff; --link: #ffff00;
    --line: #ffffff; --border: #ffffff; --btn-bg: #ffff00; --btn-fg: #000000;
    --notice-bg: #000000; --notice-line: #ffff00; --warn-bg: #000000; --warn-line: #ffff00;
    --mark-bg: #ffff00; --mark-fg: #000000; --focus: #ffffff; --focus-fg: #000000;
}
@media (prefers-contrast: more) {
    :root {
        --bg: #000000; --surface: #000000; --fg: #ffffff; --muted: #ffffff; --link: #ffff00;
        --line: #ffffff; --border: #ffffff; --btn-bg: #ffff00; --btn-fg: #000000;
        --notice-bg: #000000; --notice-line: #ffff00; --warn-bg: #000000; --warn-line: #ffff00;
        --mark-bg: #ffff00; --mark-fg: #000000; --focus: #ffffff; --focus-fg: #000000;
    }
}
html.hc a { text-decoration-thickness: 2px; }

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    background: var(--bg);
    color: var(--fg);
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 1.0625rem;
    line-height: 1.6;
    overflow-wrap: break-word;
}

a { color: var(--link); text-underline-offset: 0.15em; }
a:hover { text-decoration-thickness: 2px; }

a:focus-visible {
    outline: 3px solid transparent;
    background: var(--focus);
    color: var(--focus-fg);
    box-shadow: 0 -2px var(--focus), 0 4px var(--focus-fg);
    text-decoration: none;
}
button:focus-visible, input:focus-visible, select:focus-visible, [tabindex="-1"]:focus-visible {
    outline: 3px solid var(--focus);
    outline-offset: 0;
    box-shadow: 0 0 0 6px var(--focus-fg);
}
main:focus, nav:focus { outline: none; box-shadow: none; }
.table-wrap:focus-visible { outline: 3px solid var(--focus); box-shadow: 0 0 0 6px var(--focus-fg); }

h1, h2, h3 { line-height: 1.25; margin: 1.5em 0 0.5em; }
h1 { font-size: 1.875rem; margin-top: 0.5em; }
h2 { font-size: 1.375rem; }
h3 { font-size: 1.15rem; }
.h1-sub { font-weight: 400; font-size: 1.25rem; }

img { max-width: 100%; height: auto; }

mark { background: var(--mark-bg); color: var(--mark-fg); padding: 0 0.1em; }

.wrap { max-width: 76rem; margin: 0 auto; padding: 0 1rem; }

/* Odnośniki pomijające */
.skip {
    position: absolute;
    left: 0.5rem;
    top: -10rem;
    z-index: 10;
    padding: 0.75rem 1rem;
    background: var(--focus);
    color: var(--focus-fg);
    font-weight: 700;
}
.skip:focus { top: 0.5rem; }

.test-banner {
    background: var(--warn-bg);
    border-bottom: 4px solid var(--warn-line);
    margin: 0;
    padding: 0.75rem 1rem;
    text-align: center;
}

/* Nagłówek */
.site-header { border-bottom: 1px solid var(--line); }
.header-top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1.5rem;
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
}
.bip-logo { display: inline-block; }
.bip-logo img { display: block; background: #ffffff; padding: 2px; }
.header-links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; align-items: center; }

.header-main {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem 2rem;
    padding-top: 1rem;
    padding-bottom: 1.25rem;
}
.org {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    color: var(--fg);
    text-decoration: none;
}
.org-text { display: flex; flex-direction: column; }
.org-name { font-size: 1.5rem; font-weight: 700; line-height: 1.2; }
.org-sub { color: var(--muted); }
.org:hover .org-name { text-decoration: underline; }

.site-search { flex: 1 1 18rem; max-width: 28rem; min-width: 0; }
.site-search label, .field label { display: block; font-weight: 600; margin-bottom: 0.25rem; }
.search-row { display: flex; gap: 0.5rem; }
.search-row input { flex: 1 1 auto; width: 0; min-width: 0; } /* width: 0 - pole nie wypycha nagłówka przy 320 px (WCAG 1.4.10) */

input, select, button { font: inherit; }
input[type="search"], select {
    min-height: 2.75rem;
    padding: 0.4rem 0.6rem;
    border: 2px solid var(--border);
    border-radius: 0;
    background: var(--bg);
    color: var(--fg);
    max-width: 100%;
}
button {
    min-height: 2.75rem;
    padding: 0.4rem 1rem;
    border: 2px solid var(--btn-bg);
    background: var(--btn-bg);
    color: var(--btn-fg);
    font-weight: 600;
    cursor: pointer;
}
.contrast-toggle { background: var(--bg); color: var(--fg); border-color: var(--border); }
.contrast-toggle[aria-pressed="true"] { background: var(--btn-bg); color: var(--btn-fg); border-color: var(--btn-bg); }

/* Układ: menu i treść */
.layout { display: grid; gap: 1.5rem; padding-top: 1.5rem; padding-bottom: 3rem; }
@media (min-width: 60em) {
    /* W kodzie treść jest przed menu (najpierw treść dla klawiatury i czytnika), na szerokim ekranie menu stoi po lewej. */
    .layout { grid-template-columns: 17rem minmax(0, 1fr); gap: 2.5rem; }
    .layout > main { grid-column: 2; grid-row: 1; }
    .layout > .menu { grid-column: 1; grid-row: 1; }
}
main { min-width: 0; }
@media (min-width: 60em) { .menu-link { display: none; } } /* na wąskim ekranie menu jest pod treścią */

.menu { background: var(--surface); padding: 0.75rem 0; align-self: start; border: 1px solid var(--line); }
.menu-title { font-size: 1.05rem; margin: 0 0 0.25rem; padding: 0 1rem; }
.menu ul { list-style: none; margin: 0; padding: 0; }
.menu ul ul { padding-left: 1rem; }
.menu a {
    display: block;
    padding: 0.4rem 1rem 0.4rem 0.75rem;
    border-left: 4px solid transparent;
    text-decoration: none;
}
.menu a:hover { text-decoration: underline; }
.menu a[aria-current] { border-left-color: var(--link); font-weight: 700; color: var(--fg); }
.menu .open > a { font-weight: 600; }

.crumbs ol { list-style: none; margin: 0 0 1rem; padding: 0; color: var(--muted); font-size: 0.95rem; line-height: 1.8; }
.crumbs li { display: inline; }
.crumbs li:not(:last-child)::after { content: " / "; }

.lead { font-size: 1.15rem; color: var(--muted); margin-top: 0; }
.legal, .pub-meta, .hint { color: var(--muted); font-size: 0.95rem; }
.pub-meta { margin: 0.25rem 0 0; }

.content { max-width: 75ch; overflow-x: auto; }
.content table, table { border-collapse: collapse; margin: 1rem 0; }
th, td { border: 1px solid var(--border); padding: 0.5rem 0.75rem; text-align: left; vertical-align: top; }
thead th { background: var(--surface); }
caption { text-align: left; font-weight: 600; padding-bottom: 0.5rem; }
.table-wrap { overflow-x: auto; }

.pub-list, .results, .attachments, .subcats, .people { padding: 0; list-style: none; }
.results { list-style: decimal; padding-left: 1.75rem; }
.pub-list > li, .results > li, .attachments > li, .people > li { padding: 0.75rem 0; border-bottom: 1px solid var(--line); }
.pub-list a, .results a { font-weight: 600; font-size: 1.05rem; }
.subcats { display: grid; gap: 0.25rem; }
.subcats a { display: inline-block; padding: 0.2rem 0; }
.excerpt { margin: 0.25rem 0 0; }
.att-info { color: var(--muted); font-weight: 400; }
.attachments a:focus-visible .att-info { color: var(--focus-fg); }
.person-name { font-weight: 700; margin: 0; }

dl { margin: 0.5rem 0 1rem; }
dl > div { display: grid; grid-template-columns: minmax(9rem, 17rem) minmax(0, 1fr); gap: 0.1rem 1rem; padding: 0.5rem 0; border-bottom: 1px solid var(--line); }
dt { font-weight: 600; }
dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 40em) { dl > div { grid-template-columns: minmax(0, 1fr); } }

.metryczka { margin-top: 2.5rem; padding: 0.5rem 1rem 1rem; background: var(--surface); border: 1px solid var(--line); }
.metryczka h2 { margin-top: 0.5rem; }

.notice, .warn, .redaction {
    padding: 0.75rem 1rem;
    border-left: 6px solid var(--notice-line);
    background: var(--notice-bg);
    max-width: 75ch;
}
.warn { border-left-color: var(--warn-line); background: var(--warn-bg); margin: 0.5rem 0 0; font-size: 0.95rem; }
.redaction { border-left-color: var(--warn-line); background: var(--warn-bg); margin: 1rem 0; }
.redaction h2 { margin-top: 0.25rem; }

.badge { display: inline-block; padding: 0 0.4rem; border: 1px solid var(--border); font-size: 0.85rem; color: var(--fg); }
.todo { background: var(--mark-bg); color: var(--mark-fg); font-weight: 700; padding: 0 0.2rem; }

.tabs { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; gap: 0.5rem; flex-wrap: wrap; }
.tabs a { display: inline-block; padding: 0.4rem 1rem; border: 2px solid var(--border); text-decoration: none; min-height: 2.75rem; }
.tabs a[aria-current] { background: var(--btn-bg); border-color: var(--btn-bg); color: var(--btn-fg); font-weight: 700; }

.pagination ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.pagination a, .pagination span { display: inline-block; min-width: 2.75rem; min-height: 2.75rem; padding: 0.4rem 0.75rem; border: 2px solid var(--border); text-align: center; text-decoration: none; }
.pagination span[aria-current] { background: var(--btn-bg); border-color: var(--btn-bg); color: var(--btn-fg); font-weight: 700; }

.search-form { background: var(--surface); padding: 1rem; border: 1px solid var(--line); }
.search-form .field { margin-bottom: 1rem; }
.search-form input[type="search"] { width: 100%; }
.filters { display: grid; gap: 0 1rem; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); }
.filters select { width: 100%; }
.hint { margin: 0.25rem 0 0; }

address { font-style: normal; }

.site-footer { border-top: 1px solid var(--line); background: var(--surface); padding: 1.5rem 0; }
.footer-links { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; }
.footer-links a { display: inline-block; padding: 0.15rem 0; }
.footer-org, .footer-bip { margin: 0.25rem 0; }

.plain { padding-top: 2rem; padding-bottom: 3rem; }
.print-url { display: none; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

@media (forced-colors: active) {
    .badge, .todo, mark, .notice, .warn, .redaction { border: 2px solid CanvasText; }
    .tabs a[aria-current], .pagination span[aria-current] { border: 4px solid CanvasText; text-decoration: underline; }
    a:focus-visible { outline: 3px solid Highlight; }
    .bip-logo img { forced-color-adjust: none; }
    /* przezroczysta ramka staje się widoczna w trybie wymuszonych kolorów: zostaje tylko przy bieżącej kategorii */
    .menu a { border-left-color: Canvas; }
    .menu a[aria-current] { border: 0; border-left: 4px solid CanvasText; }
}

@media print {
    .skip, .test-banner, .site-search, .header-links, .menu, .crumbs, .tabs, .pagination, .site-footer nav, .contrast-toggle { display: none !important; }
    body { background: #fff; color: #000; font-size: 11pt; }
    a { color: #000; }
    .layout { display: block; padding: 0; }
    .metryczka, .notice, .warn, .redaction, .search-form { background: #fff; border-color: #000; }
    .content a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.9em; }
    .print-url { display: block; margin-top: 2rem; font-size: 0.9em; }
    .content { overflow: visible; }
}
