/* ==========================================================================
   Base — reset, typografia, keyframes, a11y
   ========================================================================== */
*{box-sizing:border-box;margin:0;}
html{scroll-behavior:auto;}
body{font-family:'Geist',Helvetica,Arial,sans-serif;background:#0A0A0B;color:#fff;overflow-x:clip;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
a:hover{color:var(--accent-soft,#93C5FD);}
::selection{background:#3B82F6;color:#fff;}
@keyframes blink{0%,49%{opacity:1;}50%,100%{opacity:0;}}
@keyframes pulseDot{0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.6);}50%{box-shadow:0 0 0 6px rgba(34,197,94,0);}}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal;}
@media (pointer:fine){.v7 , .v7 a, .v7 button{cursor:none;}}
@media (hover: none), (pointer: coarse){[data-cursor-dot],[data-cursor-ring]{display:none;} *{cursor:auto;}}
html,body{overflow-x:clip;}
@keyframes bfBd{from{opacity:0;}to{opacity:1;}}
@keyframes bfBdOut{from{opacity:1;}to{opacity:0;}}
@keyframes bfIn{from{clip-path:inset(100% 0 0 0 round 28px);transform:translateY(40px);}to{clip-path:inset(0 0 0 0 round 28px);transform:none;}}
@keyframes bfOut{from{clip-path:inset(0 0 0 0 round 28px);transform:none;opacity:1;}to{clip-path:inset(0 0 100% 0 round 28px);transform:translateY(-30px);opacity:.6;}}
@keyframes bfUp{from{opacity:0;transform:translateY(22px);}to{opacity:1;transform:none;}}
@keyframes bfSpin{to{transform:rotate(360deg);}}
@keyframes bfDraw{to{stroke-dashoffset:0;}}
@keyframes bfPop{0%{transform:scale(.4);opacity:0;}60%{transform:scale(1.08);opacity:1;}100%{transform:scale(1);}}
@keyframes bfShake{0%,100%{transform:none;}20%{transform:translateX(-8px);}40%{transform:translateX(8px);}60%{transform:translateX(-5px);}80%{transform:translateX(5px);}}

html body [hidden][hidden] { display: none; }
/* Kotwice (#sekcja): odstęp pod przyklejonym nagłówkiem; płynność przewijania obsługuje core.js */
section[id], article[id], main[id] { scroll-margin-top: 90px; }
[tabindex="-1"]:focus { outline: none; }
.skip-link { position: absolute; left: 16px; top: -60px; z-index: 300; padding: 12px 18px; border-radius: 999px; background: #3B82F6; color: #fff; font-weight: 600; }
.skip-link:focus-visible { top: 16px; }
:where(a, button, input, textarea, [tabindex]):focus-visible { outline: 2px solid #3B82F6; outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms; animation-iteration-count: 1; transition-duration: .01ms; scroll-behavior: auto; }
}

/* ==========================================================================
   consent — baner zgody na cookies analityczne (wszystkie strony)
   ========================================================================== */
.consent {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 16px;
  z-index: 250;
  max-width: 420px;
  padding: 20px;
  border-radius: 20px;
  border: 1px solid color-mix(in srgb, var(--fg) 14%, transparent);
  background: color-mix(in srgb, var(--bg) 92%, transparent);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: var(--fg);
  box-shadow: 0 20px 60px rgba(0,0,0,.35);
  font-family: 'Geist', Helvetica, Arial, sans-serif;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .3s ease, transform .3s ease;
}
.consent.is-visible {
  opacity: 1;
  transform: none;
}
.consent__title {
  font-family: 'Geist Mono', monospace;
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--accent-soft);
  margin-bottom: 8px;
}
.consent__text {
  font-size: 14px;
  line-height: 1.55;
  color: color-mix(in srgb, var(--fg) 75%, transparent);
  margin-bottom: 16px;
}
.consent__link {
  color: var(--fg);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.consent__actions {
  display: flex;
  gap: 8px;
}
.consent__button {
  flex: 1;
  height: 44px;
  padding: 0 18px;
  border-radius: 999px;
  border: 1px solid #3B82F6;
  background: #3B82F6;
  color: #fff;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background .25s ease, border-color .25s ease;
}
.consent__button:hover {
  background: #2563EB;
  border-color: #2563EB;
}
.consent__button--ghost {
  border-color: color-mix(in srgb, var(--fg) 22%, transparent);
  background: transparent;
  color: var(--fg);
}
.consent__button--ghost:hover {
  background: color-mix(in srgb, var(--fg) 8%, transparent);
  border-color: color-mix(in srgb, var(--fg) 30%, transparent);
}
.consent-open {
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.consent-open:hover {
  color: var(--accent-soft, #93C5FD);
}
@media (min-width: 640px) {
  .consent {
    left: 24px;
    right: auto;
    bottom: 24px;
  }
}
