/* ais://lab — wspólne style portalu.
   Tu trafia wszystko, co powtarza się na każdej stronie: tokeny kolorów,
   nawigacja, nagłówek podstrony, stopka. Style specyficzne dla strony
   zostają w jej własnym <style>. */

*{margin:0;padding:0;box-sizing:border-box;}

:root{
  --navy:#0A1E35;--navy2:#152D4A;--navy3:#1E4272;
  --cyan:#00AACC;--cyan-dim:#006680;
  --cream:#F4F1E8;--cream2:#EAE6DB;
  --gold:#7F5B00;--amber:#7F5B00;--warn:#C82222;--warn-bright:#FF5C33;--warn-light:#FF6B6B;
  --ok:#006680;
  --text:#131E2E;--text-dim:#4A6070;
  --text-light:#F0EBE0;--text-light-dim:rgba(240,235,224,0.68);
  --rule:rgba(0,170,204,0.28);--rule-soft:#C8C2B2;
}

/* Strefy serwisu: dowody (domyślna), badania i usługi różnią się tłem i kolorem akcentu.
   Menu, typografia i układ są wspólne. Kontrast sprawdza tools/check_contrast.py. */
body[data-zone="badania"]{--cream:#FFFDF8;--cream2:#EDF3F5;--gold:#005F78;--rule-soft:#C9D6DB;--warn:#9B1414;}
body[data-zone="uslugi"]{--cream:#EEF1F4;--cream2:#E0E6EC;--gold:#1E4272;--rule-soft:#C3CDD8;}
:root{--acc-dowody:#E8826A;--acc-badania:#6CCFB8;--acc-uslugi:#8FB4E0;--acc:var(--cyan);}
body[data-zone="dowody"]{--acc:var(--acc-dowody);--gold:#9A3B22;}
body[data-zone="badania"]{--acc:var(--acc-badania);}
body[data-zone="uslugi"]{--acc:var(--acc-uslugi);}

html{scroll-behavior:smooth;}
body{background:var(--cream);color:var(--text);font-family:'EB Garamond',serif;line-height:1.6;}
[id]{scroll-margin-top:var(--stick,72px);}
a:focus-visible,button:focus-visible{outline:3px solid var(--cyan);outline-offset:3px;}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--navy);color:var(--cyan);padding:12px 18px;font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:2px;text-transform:uppercase;text-decoration:none;z-index:200;}
.skip-link:focus{left:8px;top:8px;}

/* ── Nawigacja (menu z tools/nav.py) ── */
.site-nav{background:var(--navy);padding:0 40px;min-height:56px;display:flex;justify-content:space-between;align-items:center;gap:24px;position:sticky;top:0;z-index:100;border-bottom:1px solid var(--rule);}
.logo{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:3px;color:var(--text-light);text-decoration:none;text-transform:uppercase;white-space:nowrap;padding:18px 0;}
.logo span{color:var(--cyan);}
.nav-menu{list-style:none;display:flex;align-items:center;gap:26px;margin:0;padding:0;}
.nav-item{position:relative;}
.nav-top{display:block;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(240,235,224,0.75);text-decoration:none;padding:19px 0 16px;border-bottom:3px solid transparent;white-space:nowrap;transition:color .2s;}
.nav-top:hover,.nav-item:hover>.nav-top{color:var(--text-light);}
.nav-top[aria-current]{color:var(--acc);border-bottom-color:var(--acc);}
.has-sub>.nav-top::after{content:"";display:inline-block;width:5px;height:5px;margin:0 0 3px 7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);opacity:.7;}
.nav-sub{display:none;list-style:none;position:absolute;left:-16px;top:100%;min-width:250px;margin:0;padding:6px 0;background:var(--navy2);border:1px solid rgba(255,255,255,0.08);border-top:2px solid var(--acc);box-shadow:0 12px 28px rgba(0,0,0,0.35);}
.nav-item:hover>.nav-sub,.nav-item:focus-within>.nav-sub{display:block;}
.nav-sub a{display:block;font-family:'DM Sans',sans-serif;font-size:14px;color:var(--text-light);text-decoration:none;padding:10px 16px;white-space:nowrap;}
.nav-sub a:hover{background:rgba(255,255,255,0.06);}
.nav-sub a[aria-current]{color:var(--acc);}
/* Usługi: jedyna pozycja podana jako zaproszenie, zawsze w kolorze strefy usług */
.nav-cta>.nav-top{color:var(--acc-uslugi);border:1px solid var(--acc-uslugi);border-radius:4px;padding:7px 12px;margin:10px 0;}
.nav-cta>.nav-top:hover,.nav-cta:hover>.nav-top,.nav-cta>.nav-top[aria-current]{color:var(--navy);background:var(--acc-uslugi);border-color:var(--acc-uslugi);}
.nav-cta .nav-sub{left:auto;right:0;border-top-color:var(--acc-uslugi);}
.nav-toggle{display:none;align-items:center;gap:10px;background:none;border:1px solid rgba(240,235,224,0.3);border-radius:6px;color:var(--text-light);font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:2px;text-transform:uppercase;min-height:44px;padding:0 14px;cursor:pointer;}
.nav-bars{display:flex;flex-direction:column;gap:4px;}
.nav-bars span{display:block;width:18px;height:2px;background:var(--text-light);transition:transform .2s,opacity .2s;}
.nav-toggle[aria-expanded="true"] .nav-bars span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] .nav-bars span:nth-child(2){opacity:0;}
.nav-toggle[aria-expanded="true"] .nav-bars span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
@media(min-width:980px) and (max-width:1180px){.site-nav{padding:0 22px;}.nav-menu{gap:18px;}.nav-top{letter-spacing:1px;}}
@media(max-width:979px){
  .site-nav{padding:0 16px;flex-wrap:wrap;}
  .nav-toggle{display:inline-flex;}
  .nav-menu{display:none;flex:0 0 calc(100% + 32px);flex-direction:column;align-items:stretch;gap:0;margin:0 -16px;padding:4px 0 16px;background:var(--navy2);border-top:1px solid rgba(255,255,255,0.08);max-height:calc(100vh - 56px);max-height:calc(100dvh - 56px);overflow-y:auto;overscroll-behavior:contain;}
  .site-nav.open .nav-menu{display:flex;}
  .nav-item{border-bottom:1px solid rgba(255,255,255,0.07);}
  .nav-item:last-child{border-bottom:0;}
  .nav-top{font-size:14px;letter-spacing:2px;color:var(--text-light);padding:15px 20px;border-bottom:0;border-left:4px solid transparent;}
  .nav-top[aria-current]{border-left-color:var(--acc);}
  .has-sub>.nav-top::after{display:none;}
  .nav-sub,.nav-item:hover>.nav-sub,.nav-item:focus-within>.nav-sub{display:block;position:static;min-width:0;background:none;border:0;box-shadow:none;padding:0 0 10px;}
  .nav-sub a{font-size:15px;color:rgba(240,235,224,0.8);padding:9px 20px 9px 40px;white-space:normal;}
  .nav-sub a::before{content:"– ";color:rgba(240,235,224,0.45);}
  .nav-cta>.nav-top{margin:0;border:0;border-radius:0;padding:15px 20px;border-left:4px solid var(--acc-uslugi);color:var(--acc-uslugi);background:none;}
  .nav-cta>.nav-top[aria-current]{background:rgba(143,180,224,0.12);color:var(--acc-uslugi);}
}

/* ── Nagłówek podstrony ── */
.page-header{background:var(--navy);padding:64px 40px 56px;position:relative;overflow:hidden;border-bottom:4px solid var(--acc);}
.page-header::before{content:'';position:absolute;inset:0;background-image:linear-gradient(var(--rule) 1px,transparent 1px),linear-gradient(90deg,var(--rule) 1px,transparent 1px);background-size:64px 64px;opacity:0.4;pointer-events:none;--grid:color-mix(in srgb,var(--acc) 28%,transparent);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);}
.page-header-inner{position:relative;max-width:1180px;margin:0 auto;}
.breadcrumb{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--text-light-dim);margin-bottom:22px;line-height:1.8;}
.breadcrumb a{color:var(--acc);text-decoration:none;}
.page-kicker{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:4px;text-transform:uppercase;color:var(--acc);margin-bottom:16px;display:inline-block;padding:5px 12px;background:rgba(0,170,204,0.10);border:1px solid var(--rule);background:color-mix(in srgb,var(--acc) 10%,transparent);border-color:color-mix(in srgb,var(--acc) 40%,transparent);}
.page-header h1{font-family:'Playfair Display',serif;font-size:clamp(30px,4.6vw,52px);font-weight:900;line-height:1.08;color:var(--text-light);max-width:880px;margin-bottom:20px;}
.page-header h1 em{font-style:italic;color:var(--acc);}
/* strona z case.css (mniejszy tytuł kart), która ma mieć tytuł jak reszta działu */
.page-header.page-header-full h1{font-size:clamp(30px,4.6vw,52px);line-height:1.08;max-width:880px;margin-bottom:20px;}
.page-header-sub{font-family:'EB Garamond',serif;font-size:20px;line-height:1.65;color:var(--text-light-dim);max-width:780px;font-style:italic;}
.page-header-sub a{color:var(--acc);text-decoration:none;border-bottom:1px solid var(--acc);}
.page-meta{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:1.5px;color:var(--text-light-dim);margin-top:24px;line-height:2;}
.page-meta a{color:var(--acc);text-decoration:none;}
@media(max-width:600px){.page-header{padding:44px 20px 40px;}}

/* ── Stopka ── */
.site-footer{background:var(--navy);padding:52px 40px 32px;color:var(--text-light);}
.footer-inner{max-width:1180px;margin:0 auto;}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;padding-bottom:36px;border-bottom:1px solid rgba(240,235,224,0.1);}
@media(max-width:820px){.footer-grid{grid-template-columns:1fr 1fr;gap:30px;}}
@media(max-width:520px){.footer-grid{grid-template-columns:1fr;}}
.footer-brand{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:3px;color:var(--cyan);margin-bottom:14px;text-transform:uppercase;}
.footer-desc{font-family:'EB Garamond',serif;font-size:16px;color:var(--text-light-dim);line-height:1.65;}
.footer-col h2{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--text-light-dim);margin-bottom:16px;font-weight:400;}
.footer-col a{display:block;font-family:'DM Sans',sans-serif;font-size:14px;color:rgba(240,235,224,0.62);text-decoration:none;margin-bottom:10px;transition:color 0.2s;}
.footer-col a:hover{color:var(--cyan);}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:22px;flex-wrap:wrap;gap:12px;}
.footer-bottom p{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text-light-dim);letter-spacing:1px;}
.footer-bottom a{color:rgba(240,235,224,0.6);text-decoration:none;}
.footer-bottom a:hover{color:var(--cyan);}
@media(max-width:600px){.site-footer{padding:44px 20px 28px;}}

/* ── Wspólne etykiety statusów dowodowych ── */
.status{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:1.5px;font-weight:600;text-transform:uppercase;padding:4px 9px;display:inline-block;line-height:1;}
.status-reproduced{background:rgba(0,136,170,0.18);color:#006688;border:1px solid #006688;}
.status-verified{background:rgba(0,136,170,0.12);color:#006680;border:1px solid #006680;}
.status-documented{background:rgba(154,110,0,0.10);color:var(--amber);border:1px solid var(--amber);}
.status-partial{background:rgba(154,110,0,0.14);color:var(--amber);border:1px solid var(--amber);}
.status-unverified{background:rgba(214,40,40,0.10);color:var(--warn);border:1px solid var(--warn);}
.status-disputed{background:rgba(214,40,40,0.16);color:var(--warn);border:1px solid var(--warn);}
.status-inference{background:rgba(122,92,0,0.10);color:#7A5C00;border:1px solid #7A5C00;}

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

/* ── „Który audyt dla mnie?” (/uslugi/, assets/picker.js) ── */
.picker{margin:28px 0 36px;max-width:980px;background:var(--cream2);border:1px solid var(--rule-soft);border-top:3px solid var(--gold);padding:22px 24px 24px;}
.pk-head h3{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;color:var(--text);margin:0 0 6px;}
.pk-head h3 em{color:var(--gold);}
.pk-head p{font-family:'EB Garamond',serif;font-size:17px;color:var(--text-dim);margin:0 0 6px;}
.pk-q{border:0;margin:16px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;}
.pk-q[hidden]{display:none;}
.pk-q legend{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);margin-bottom:8px;padding:0;}
.pk-q label{display:flex;gap:10px;align-items:flex-start;font-family:'DM Sans',sans-serif;font-size:15px;line-height:1.4;color:var(--text);background:var(--cream);border:1px solid var(--rule-soft);padding:11px 12px;cursor:pointer;}
.pk-q label:hover{border-color:var(--gold);}
.pk-q input{accent-color:var(--gold);margin-top:3px;flex:none;}
.pk-q label:has(input:checked){border-color:var(--gold);box-shadow:inset 3px 0 0 var(--gold);}
.pk-result{margin-top:18px;background:var(--navy);color:var(--text-light);padding:20px 22px;border-left:5px solid var(--acc);}
.pk-kick{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:2px;text-transform:uppercase;color:var(--acc);}
.pk-name{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;margin-top:4px;}
.pk-price{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--acc);margin-top:4px;}
.pk-why{font-family:'EB Garamond',serif;font-size:18px;line-height:1.55;color:var(--text-light);margin:10px 0 14px;}
.pk-acts{display:flex;flex-wrap:wrap;gap:8px;}
.pk-btn{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:1.5px;text-transform:uppercase;text-decoration:none;padding:11px 16px;background:var(--acc);color:var(--navy);border:1.5px solid var(--acc);}
.pk-ghost{background:transparent;color:var(--text-light);border-color:rgba(240,235,224,0.6);}
.pk-btn:hover{filter:brightness(1.08);}
@media(max-width:600px){.picker{padding:18px 16px 20px;}.pk-q{grid-template-columns:1fr;}}

/* ── Pasek faktów i spis „Na tej stronie” (wspólne dla długich stron) ── */
.facts{background:var(--navy2);padding:0 40px;border-bottom:1px solid var(--rule);}
.facts-inner{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);}
.fact{display:flex;flex-direction:column;padding:26px 22px 22px;border-right:1px solid var(--rule);border-top:4px solid var(--acc);}
.fact:first-child{padding-left:0;}
.fact:last-child{border-right:none;}
.fact-n{font-family:'Playfair Display',serif;font-size:clamp(34px,3.6vw,46px);font-weight:900;color:var(--acc);line-height:0.95;letter-spacing:-0.5px;}
.fact-l{font-family:'EB Garamond',serif;font-size:17px;line-height:1.35;color:var(--text-light);margin-top:10px;}
.fact-s{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;line-height:1.5;color:var(--text-light-dim);margin-top:auto;padding-top:12px;}
@media(max-width:900px){.facts-inner{grid-template-columns:1fr 1fr;}.fact{padding:22px 16px 20px;border-bottom:1px solid var(--rule);}.fact:nth-child(odd){padding-left:0;}.fact:nth-child(2n){border-right:none;}}
@media(max-width:400px){.fact{padding:18px 12px 16px;}.fact-l{font-size:15.5px;}}
.toc-bar{background:var(--cream2);border-bottom:2px solid var(--text);padding:16px 40px;display:flex;flex-wrap:wrap;align-items:center;}
.toc-label{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--text-dim);margin-right:22px;}
.toc-bar a{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text);text-decoration:none;padding:6px 15px;letter-spacing:1px;border-left:1px solid var(--rule-soft);}
.toc-bar a:hover{color:var(--gold);}
.toc-bar a[aria-current]{color:var(--gold);box-shadow:inset 0 -2px 0 var(--gold);}
@media(min-width:980px){.toc-bar{position:sticky;top:var(--nav-h,56px);z-index:90;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;padding-top:10px;padding-bottom:10px;}.toc-bar a,.toc-label{white-space:nowrap;flex:none;}}
.read-progress{position:fixed;top:0;left:0;right:0;height:3px;background:var(--acc);transform:scaleX(0);transform-origin:0 50%;z-index:200;pointer-events:none;}
.read-time{white-space:nowrap;}
@media(max-width:600px){.toc-bar{padding:12px 20px;}.toc-bar a{padding:6px 10px;}.facts{padding:0 20px;}}

/* ── „Czytaj dalej” na końcu stron (tools/build_next.py) ── */
.read-next{background:var(--cream2);border-top:1px solid var(--rule-soft);padding:44px 40px 48px;}
.rn-inner{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.rn-label{grid-column:1/-1;font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);}
.rn-card{display:flex;flex-direction:column;gap:6px;background:var(--cream);border:1px solid var(--rule-soft);border-left:4px solid var(--gold);padding:20px 22px;text-decoration:none;color:var(--text);transition:border-color .2s,transform .2s;}
.rn-card:hover{border-color:var(--gold);transform:translateY(-2px);}
.rn-kind{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);}
.rn-title{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;line-height:1.3;}
.rn-title::after{content:" →";color:var(--gold);}
.rn-desc{font-family:'EB Garamond',serif;font-size:16.5px;line-height:1.5;color:var(--text-dim);}
@media(max-width:720px){.read-next{padding:36px 20px 40px;}.rn-inner{grid-template-columns:1fr;}}

/* ── Podpowiedzi pojęć ze słownika (assets/hints.js) ── */
.gl-hint{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:help;border-bottom:1px dotted var(--gold);line-height:inherit;}
.gl-hint:hover,.gl-hint[aria-expanded="true"]{color:var(--gold);}
.gl-tip{position:absolute;z-index:150;background:var(--navy);color:var(--text-light);border-top:3px solid var(--acc);padding:14px 16px 12px;box-shadow:0 12px 28px rgba(0,0,0,0.3);font-family:'EB Garamond',serif;}
.gl-tip[hidden]{display:none;}
.gl-head{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:1px;color:var(--acc);}
.gl-own{color:rgba(240,235,224,0.75);}
.gl-pl{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(240,235,224,0.75);margin-top:3px;}
.gl-def{font-size:16px;line-height:1.5;margin:8px 0 10px;color:var(--text-light);}
.gl-more{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:1px;color:var(--acc);text-decoration:none;}

/* ── Ramka cytowania ── */
.cite-box{max-width:900px;margin:28px 0 8px;background:var(--cream2);border:1px solid var(--rule-soft);border-left:4px solid var(--gold);padding:16px 20px;}
.cite-label{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:8px;}
.cite-text{font-family:'IBM Plex Mono',monospace;font-size:12.5px;line-height:1.7;color:var(--text);margin:0;overflow-wrap:anywhere;}
.cite-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;}
.cite-btn{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;background:var(--cream);color:var(--text);border:1.5px solid var(--text);padding:8px 12px;cursor:pointer;}
.cite-btn:hover{background:var(--text);color:var(--cream);}
.cite-note{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text-dim);}
.cite-fallback{display:block;width:100%;min-height:120px;margin-top:10px;font-family:'IBM Plex Mono',monospace;font-size:12px;}

/* ---------- wersja do druku: bez menu, stopki i przycisków, czarny tekst na białym tle ---------- */
@media print{
  *,*::before,*::after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important;}
  html,body{background:#fff !important;font-size:11pt;}
  .site-nav,.site-footer,.read-next,.toc-bar,.read-progress,.skip-link,.ticker,.gl-tip,.cite-acts,.cite-fallback,.picker,.nav-toggle,button,.filters{display:none !important;}
  .toc-bar,.facts,.page-header,.stats-bar{position:static !important;}
  .gl-hint{border:0 !important;padding:0 !important;font:inherit !important;text-decoration:none !important;}
  a{text-decoration:underline;}
  main a[href^="http"]::after,section a[href^="http"]::after,article a[href^="http"]::after{content:" (" attr(href) ")";font-size:90%;word-break:break-all;}
  main a[href^="/"]::after,section a[href^="/"]::after,article a[href^="/"]::after{content:" (aisecurity.org.pl" attr(href) ")";font-size:90%;word-break:break-all;}
  main a[href^="mailto:"]::after,section a[href^="mailto:"]::after,main a[href^="tel:"]::after,section a[href^="tel:"]::after{content:" (" attr(href) ")";font-size:90%;}
  .fact,.stat{border-color:#000 !important;}
  h1,h2,h3,h4{break-after:avoid;page-break-after:avoid;}
  tr,li,.fact,.stat,.service-card,.case-block,.cite-box,figure,pre{break-inside:avoid;page-break-inside:avoid;}
  img,svg{max-width:100% !important;}
  /* tabele przewijane na ekranie w poziomie — na papierze mieszczą się na szerokość strony */
  div:has(> table),.pt-wrap{overflow:visible !important;}
  table{min-width:0 !important;width:100% !important;}
  th,td{padding:6px 8px !important;font-size:9pt !important;white-space:normal !important;}
  pre,.logbox{white-space:pre-wrap !important;overflow:visible !important;}
}
