/* =============================================
   SmartNetStudio - Główny arkusz stylów
   Wersja: 1.1 | 2026 - Dark/Light + Hamburger
   ============================================= */

:root {
  --bg:       #050508;
  --bg2:      #0a0a10;
  --bg3:      #0f0f18;
  --surface:  #13131e;
  --surface2: #1a1a28;
  --border:   rgba(120,100,255,0.15);
  --accent:   #7c5cff;
  --accent2:  #00e5ff;
  --accent3:  #ff4d8d;
  --text:     #f0eeff;
  --text2:    #d8d4f0;
  --text3:    #b0accc;
  --radius:   12px;
  --transition: 0.25s ease;
  --glass-bg: rgba(255,255,255,.04);
  --glass-border: rgba(124,92,255,.2);
  --glass-shadow: 0 8px 32px rgba(0,0,0,.4);
  --nav-bg: rgba(10,10,18,0.75);
  --grid-line: rgba(124,92,255,0.025);
  --ticker-bg: var(--accent);
  --ticker-text: #fff;
}

/* ===== LIGHT THEME ===== */
[data-theme="light"] {
  --bg:       #eef0ff;
  --bg2:      #eef0ff;
  --bg3:      #eef0ff;
  --surface:  rgba(255,255,255,.8);
  --surface2: rgba(255,255,255,.95);
  --border:   rgba(124,92,255,.18);
  --accent:   #6b46e5;
  --accent2:  #0099cc;
  --accent3:  #e0357a;
  --text:     #1a1530;
  --text2:    #3d3660;
  --text3:    #6b6490;
  --glass-bg: rgba(255,255,255,.7);
  --glass-border: rgba(124,92,255,.2);
  --glass-shadow: 0 8px 32px rgba(124,92,255,.1);
  --nav-bg: rgba(255,255,255,.88);
  --grid-line: rgba(124,92,255,0.04);
  --ticker-bg: var(--accent);
  --ticker-text: #fff;
}
/* body::before light - reguła w bloku końcowym */
/* nav, stat-box, footer, social-icon light - reguły w bloku końcowym */
/* chk, crs, table, modals, cookie-banner light - reguły w bloku końcowym */

/* ===== THEME TOGGLE ===== */
.theme-toggle {
  width: 44px; height: 24px;
  background: rgba(255,255,255,.1);
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 12px;
  cursor: pointer;
  position: relative;
  transition: all .3s ease;
  flex-shrink: 0;
  padding: 0;
}
.theme-toggle::after {
  content: '';
  position: absolute;
  top: 2px; left: 2px;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: #fff;
  transition: transform .3s cubic-bezier(.4,0,.2,1);
  box-shadow: 0 1px 4px rgba(0,0,0,.2);
}
.theme-toggle .toggle-icon {
  position: absolute;
  top: 50%; transform: translateY(-50%);
  font-size: 11px; line-height: 1;
  transition: opacity .2s;
  pointer-events: none;
}
.theme-toggle .icon-moon { right: 5px; opacity: 1; }
.theme-toggle .icon-sun  { left: 5px; opacity: 0; }
[data-theme="light"] .theme-toggle {
  background: rgba(124,92,255,.1);
  border-color: rgba(124,92,255,.25);
}
[data-theme="light"] .theme-toggle::after {
  transform: translateX(20px);
  background: var(--accent);
}
[data-theme="light"] .theme-toggle .icon-moon { opacity: 0; }
[data-theme="light"] .theme-toggle .icon-sun  { opacity: 1; }

/* ===== HAMBURGER MENU ===== */
.hamburger {
  display: none;
  width: 36px; height: 36px;
  background: none;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 8px;
  cursor: pointer;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 0;
  flex-shrink: 0;
  transition: border-color .2s;
  position: relative;
  z-index: 101;
}
.hamburger:hover { border-color: rgba(255,255,255,.25); }
[data-theme="light"] .hamburger { border-color: rgba(124,92,255,.2); }
[data-theme="light"] .hamburger:hover { border-color: rgba(124,92,255,.4); }
.hamburger span {
  display: block;
  width: 18px; height: 2px;
  background: var(--text2);
  border-radius: 1px;
  transition: all .3s cubic-bezier(.4,0,.2,1);
  transform-origin: center;
}
.hamburger.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.active span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.hamburger.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile slide menu */
.mobile-menu {
  position: fixed;
  top: 0; right: 0;
  width: 300px; max-width: 85vw;
  height: 100vh; height: 100dvh;
  background: rgba(10,10,18,.97);
  backdrop-filter: blur(32px);
  -webkit-backdrop-filter: blur(32px);
  border-left: 1px solid rgba(124,92,255,.2);
  z-index: 100;
  transform: translateX(100%);
  transition: transform .35s cubic-bezier(.4,0,.2,1);
  display: flex;
  flex-direction: column;
  padding: 90px 28px 32px;
  overflow-y: auto;
  box-shadow: -8px 0 40px rgba(0,0,0,.5);
}
[data-theme="light"] .mobile-menu {
  background: rgba(255,255,255,.97) !important;
  border-left-color: rgba(124,92,255,.15) !important;
  box-shadow: -8px 0 40px rgba(124,92,255,.1) !important;
}
.mobile-menu.open { transform: translateX(0); }
.mobile-menu-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.5);
  z-index: 99;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s ease;
}
.mobile-menu-overlay.open {
  opacity: 1;
  pointer-events: auto;
}
.mobile-menu a {
  font-family: 'Space Mono', monospace;
  font-size: 13px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text);
  text-decoration: none;
  padding: 16px 18px;
  border: 1px solid rgba(124,92,255,.15);
  border-radius: 10px;
  background: rgba(255,255,255,.04);
  backdrop-filter: blur(8px);
  transition: all .2s;
  display: block;
  margin-bottom: 8px;
}
[data-theme="light"] .mobile-menu a {
  border-color: rgba(124,92,255,.15);
  background: rgba(255,255,255,.5);
}
.mobile-menu a:hover,
.mobile-menu a.active {
  color: #fff;
  background: var(--accent);
  border-color: var(--accent);
}
[data-theme="light"] .mobile-menu a:hover,
[data-theme="light"] .mobile-menu a.active {
  color: #fff;
  background: var(--accent);
  border-color: var(--accent);
}
.mobile-menu .mobile-theme-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 0;
  margin-bottom: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
[data-theme="light"] .mobile-menu .mobile-theme-row {
  border-bottom-color: rgba(124,92,255,.08);
}
.mobile-menu .mobile-theme-row span {
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text3);
}

/* ===== LANG SWITCHER ===== */
.lang-switch {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  margin-left: 2px;
}
.lang-switch a {
  font-size: 20px;
  text-decoration: none;
  padding: 2px 4px;
  border-radius: 4px;
  transition: all .2s;
  line-height: 1;
  opacity: 0.45;
  filter: grayscale(60%);
}
.lang-switch a:hover { opacity: 0.8; filter: grayscale(20%); }
.lang-switch a.active {
  opacity: 1;
  filter: none;
}
.mobile-lang-row {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  padding: 12px 0 4px;
  border-top: 1px solid rgba(255,255,255,.06);
  margin-top: 12px;
}
[data-theme="light"] .mobile-lang-row {
  border-top-color: rgba(124,92,255,.08);
}
.mobile-lang-row a {
  font-size: 28px;
  text-decoration: none;
  padding: 6px 10px;
  border-radius: 8px;
  transition: all .2s;
  line-height: 1;
  opacity: 0.45;
  filter: grayscale(60%);
}
.mobile-lang-row a:hover { opacity: 0.8; filter: grayscale(20%); }
.mobile-lang-row a.active {
  opacity: 1;
  filter: none;
}

@media (max-width: 900px) {
  .hamburger { display: flex; }
  .nav-desktop-toggle { display: none !important; }
  .lang-switch.nav-lang { display: none !important; }
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: 'DM Sans', sans-serif;
  font-size: 16px;
  line-height: 1.6;
  overflow-x: hidden;
}

/* Grid overlay - USUNIĘTO 2026-07-23 na życzenie Artura (widoczna na wszystkich stronach) */

/* ===== TICKER ===== */
.ticker {
  background: #7857ff; /* WCAG fix: lekko ciemniejszy niż --accent (#7c5cff) - biały tekst 4.35:1 -> 4.56:1 */
  padding: 7px 0;
  overflow: hidden;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
}
.ticker-track {
  display: flex;
  gap: 60px;
  animation: ticker 97s linear infinite; /* v1792: 30s→58s - pasek 2x dłuższy (kody rabatowe), tempo przewijania bez zmian; 20.10: 58s→97s, 10 pozycji zamiast 6 (MagisterAI, Depositphotos + 2 liczniki), to samo tempo */
  white-space: nowrap;
  width: max-content;
}
.ticker-item {
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 10px;
}
.ticker-item::before { content: '◆'; opacity: 0.5; font-size: 7px; }
@keyframes ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ===== NAV ===== */
nav {
  position: fixed;
  top: 48px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 90;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 24px;
  width: calc(100% - 40px);
  max-width: 1280px;
  background: var(--nav-bg);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid var(--glass-border);
  border-radius: 14px;
  box-shadow: var(--glass-shadow), inset 0 1px 0 rgba(255,255,255,.05);
  transition: top .35s cubic-bezier(.4,0,.2,1), opacity .35s ease, transform .35s cubic-bezier(.4,0,.2,1);
}
nav.nav-hidden {
  top: -90px;
  opacity: 0;
  transform: translateX(-50%) translateY(-10px);
}
/* Push content down so it's not hidden under fixed ticker + nav */
body { padding-top: 112px; }
/* Strefa pod ticker+nav (0-112px) - wypełnia lukę wokół pływającej "pigułki"
   nav, gdzie inaczej przeświecałoby zwykłe tło body. Domyślnie transparent
   (zero zmian na stronach, które już mają własne ciemne body, np.
   narzedzia-ai.html). Strona z jasnym body ale ciemnym hero ustawia
   własny kolor jedną linią:
   [data-theme="light"] { --hero-top-bg: #KOLOR; }
   position:absolute (NIE fixed) - scrolluje się normalnie z dokumentem,
   widoczne tylko na starcie strony, nie zostaje "przyklejone" niżej. */
body::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 112px;
  background: var(--hero-top-bg, transparent);
  z-index: 1;
  pointer-events: none;
}
.logo {
  display: flex;
  align-items: center;
  gap: 9px;
  text-decoration: none;
  flex-shrink: 0;
}
.logo-badge {
  width: 60px;
  height: auto;
  flex-shrink: 0;
  display: block;
}
.logo-badge--light { display: none; }
[data-theme="light"] .logo-badge--dark { display: none; }
[data-theme="light"] .logo-badge--light { display: block; }
.logo-text {
  font-family: 'Syne', sans-serif;
  font-weight: 800;
  font-size: 16px;
  letter-spacing: -0.02em;
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size: 100% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.logo span {
  -webkit-text-fill-color: transparent;
}
.nav-links {
  display: flex;
  gap: 28px;
  list-style: none;
  flex-shrink: 0;
}
.nav-links a {
  font-family: 'Space Mono', monospace;
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text2);
  text-decoration: none;
  transition: color var(--transition);
  white-space: nowrap;
}
.nav-links a:hover,
.nav-links a.active { color: var(--accent2); }
.nav-cta {
  background: linear-gradient(90deg, #00e5ff, #2dd4bf);
  color: #1e0a4a !important;
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 9px 18px;
  text-decoration: none;
  border-radius: var(--radius);
  border: none;
  transition: opacity 0.2s, transform 0.2s;
  flex-shrink: 0;
  cursor: pointer;
}
.nav-cta:hover { opacity: .88; transform: translateY(-1px); }
/* ===== SEARCH BUTTON - dark mode (klasa nadrzędna) ===== */
.sns-search-btn {
  display: flex; align-items: center; gap: 8px;
  background: #0a1a1a;
  border: 1px solid rgba(0,229,255,.8);
  border-radius: 8px; padding: 7px 14px; cursor: pointer;
  color: #00e5ff;
  font-family: 'Space Mono', monospace; font-size: 11px; letter-spacing: .06em;
  flex-shrink: 0; margin-right: 4px;
  box-shadow: 0 0 10px rgba(0,229,255,.4), 0 0 20px rgba(0,229,255,.15), inset 0 0 10px rgba(0,229,255,.05);
  animation: searchBreathe 3s ease-in-out infinite;
  transition: color .15s;
}
[data-theme="light"] .sns-search-btn {
  background: #16113a !important;
  border-color: rgba(0,229,255,.6) !important;
  color: #fff !important;
  box-shadow: 0 2px 16px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.06);
  animation: searchBreathe 3s ease-in-out infinite !important;
  backdrop-filter: none;
}
[data-theme="light"] .sns-search-btn kbd {
  border-color: rgba(255,255,255,.2) !important;
  color: rgba(255,255,255,.6) !important;
}
.sns-search-btn:hover {
  box-shadow: 0 0 18px rgba(0,229,255,.7), 0 0 35px rgba(0,229,255,.3), inset 0 0 12px rgba(0,229,255,.1);
  border-color: rgba(0,229,255,1);
  color: #fff;
}
[data-theme="light"] .sns-search-btn:hover {
  box-shadow: 0 0 18px rgba(0,229,255,.5), 0 2px 24px rgba(0,0,0,.3) !important;
  border-color: rgba(0,229,255,1) !important;
  color: #fff !important;
}
/* Ikona-lupa bez tekstu, WSZĘDZIE (nie tylko mobile) - na życzenie Artura
   2026-08-31, żeby zrobić miejsce w navbarze na przycisk logowania. Pełna
   wersja z tekstem "Szukaj" + Ctrl K przeniesiona do hero na index.html
   (.hero-search-btn) - funkcja nie znika, tylko zmienia miejsce. */
nav .sns-search-btn span,
nav .sns-search-btn kbd { display: none !important; }
nav .sns-search-btn { padding: 8px !important; margin-right: 0 !important; gap: 0 !important; }

/* ===== VS BUTTON - dark mode (klasa nadrzędna) ===== */
.sns-vs-btn {
  cursor: pointer; position: relative; padding: 7px 16px; border-radius: 8px;
  background: transparent; border: none;
  font-family: 'Space Mono', monospace; font-size: 10px; font-weight: 700;
  color: #fff; letter-spacing: .08em; text-transform: uppercase;
  overflow: hidden; transition: opacity .2s;
  min-width: 92px; width: 92px; text-align: center; box-sizing: border-box;
}
/* span[1] = obracający się gradient */
.sns-vs-btn > span:nth-child(1) {
  position: absolute; inset: -1px; border-radius: 9px;
  background: conic-gradient(from 0deg,#7c5cff,#00e5ff,#ff3b7a,#c9a84c,#7c5cff);
  animation: vsSpin 2.5s linear infinite; z-index: 0;
}
/* span[2] = wewnętrzne tło */
.sns-vs-btn > span:nth-child(2) {
  position: absolute; inset: 1px; border-radius: 7px;
  background: #0d0820; z-index: 1;
}
/* span[3] = tekst */
.sns-vs-btn > span:nth-child(3) {
  position: relative; z-index: 2;
}
/* Light mode - solidne ciemne tło środka (jak dark mode) + biały tekst.
   Poprzedni wariant (szklany, niska opacity) "wysysał" kolor tła strony
   pod navbarem (hero image / gradienty sekcji) i wyglądał jak rozmyta
   plama na różnych tłach. Solidne tło rozwiązuje to niezależnie od tego,
   co jest pod navbarem. */
[data-theme="light"] .sns-vs-btn > span:nth-child(1) {
  background: conic-gradient(from 0deg,#7c5cff,#00e5ff,#ff3b7a,#c9a84c,#7c5cff);
  opacity: 1;
}
[data-theme="light"] .sns-vs-btn > span:nth-child(2) {
  background: #16113a !important;
  backdrop-filter: none;
}
[data-theme="light"] .sns-vs-btn > span:nth-child(3) {
  color: #fff;
  background: none;
}

/* ===== HOLOGRAPHIC BACK BUTTON - dark mode ===== */
.nav-cta--back {
  background: transparent !important;
  border: none !important;
  color: #00e5ff !important;
  position: relative;
  overflow: hidden;
  padding: 8px 16px !important;
}
.nav-cta--back::before {
  content: '';
  position: absolute; inset: 0; border-radius: 9px;
  background: linear-gradient(135deg, rgba(0,229,255,.12), rgba(124,92,255,.1));
  z-index: 0;
}
.nav-cta--back::after {
  content: '';
  position: absolute; inset: 0; border-radius: 9px;
  background: linear-gradient(90deg, #00e5ff, #7c5cff, #ff3b7a, #00e5ff);
  background-size: 300%;
  animation: holoBorder 3s linear infinite;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: destination-out;
  mask-composite: exclude;
  padding: 1px;
  z-index: 1;
}
.nav-cta--back span {
  position: relative; z-index: 2;
}
.nav-cta--back:hover { opacity: .88; transform: translateY(-1px); }

/* ===== HOLOGRAPHIC - light mode =====
   Solidne ciemne tło środka (jak dark mode) + biały tekst - patrz uwaga
   przy .sns-vs-btn powyżej. Poprzedni szklany wariant (niska opacity)
   wyglądał jak rozmyta plama na różnych tłach strony pod navbarem. */
[data-theme="light"] .nav-cta--back {
  color: #fff !important;
}
[data-theme="light"] .nav-cta--back::before {
  background: #16113a;
  backdrop-filter: none;
}
[data-theme="light"] .nav-cta--back::after {
  background: linear-gradient(90deg, #7c5cff, #00e5ff, #ff3b7a, #c9a84c, #7c5cff);
  background-size: 300%;
  animation: holoBorder 3s linear infinite;
}

/* ===== SNS LOGIN BUTTON (nav) - dark mode =====
   Reużywa holoBorder (ten sam ruch co nav-cta--back / sns-vs-btn), pełna
   pigułka (radius:999px) zamiast prostokątnej - wariant zatwierdzony przez
   Artura jako "najlepiej pasujący do obecnego menu". */
.sns-login-btn {
  display: inline-flex; align-items: center; gap: 6px;
  background: transparent !important;
  border: none !important;
  color: #fff !important;
  position: relative;
  overflow: hidden;
  padding: 8px 18px !important;
  border-radius: 999px;
  font-family: 'Space Mono', monospace; font-size: 11px; font-weight: 700;
  letter-spacing: .04em; text-decoration: none; cursor: pointer;
  flex-shrink: 0;
  transition: opacity .2s, transform .2s;
}
.sns-login-btn::before {
  content: '';
  position: absolute; inset: 0; border-radius: 999px;
  background: linear-gradient(135deg, rgba(0,229,255,.12), rgba(124,92,255,.1));
  z-index: 0;
}
.sns-login-btn::after {
  content: '';
  position: absolute; inset: 0; border-radius: 999px;
  background: linear-gradient(90deg, #00e5ff, #7c5cff, #ff3b7a, #00e5ff);
  background-size: 300%;
  animation: holoBorder 3s linear infinite;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: destination-out;
  mask-composite: exclude;
  padding: 1.5px;
  z-index: 1;
}
.sns-login-btn span { position: relative; z-index: 2; }
.sns-login-btn:hover { opacity: .88; transform: translateY(-1px); }
.sns-login-icon { position: relative; z-index: 2; width: 14px; height: 14px; flex-shrink: 0; display: flex; }
.sns-login-icon svg { width: 100%; height: 100%; }
@media (max-width: 600px) {
  .sns-login-icon { width: 16px; height: 16px; }
}

/* ===== SNS LOGIN BUTTON - light mode ===== */
[data-theme="light"] .sns-login-btn { color: #fff !important; }
[data-theme="light"] .sns-login-btn::before { background: #16113a; backdrop-filter: none; }
[data-theme="light"] .sns-login-btn::after {
  background: linear-gradient(90deg, #7c5cff, #00e5ff, #ff3b7a, #c9a84c, #7c5cff);
  background-size: 300%;
  animation: holoBorder 3s linear infinite;
}

/* ===== SNS ACCOUNT PILL (stan zalogowany) - zastępuje .sns-login-btn przez JS =====
   POPRAWKA (test na żywo, 2026-08-31): tekstowa odznaka FREE/PREMIUM obok
   awatara nie mieściła się w navbarze przy niektórych szerokościach -
   pigułka "wychodziła" poza zaokrąglony kontener nav. Zamiast łatać kolejne
   breakpointy, plan jest teraz kodowany KOLOREM OBWÓDKI awatara (teal=free,
   złoty=premium) - sam awatar, stała szerokość ~34px, niezależnie od
   szerokości ekranu. Pełna nazwa planu w atrybucie title (tooltip).
   Dodatkowo: kliknięcie otwiera mini-dropdown z "Moje konto" / "Wyloguj się"
   - bezpośredni dostęp do wylogowania bez przechodzenia przez konto.php. */
.sns-account-wrap { position: relative; flex-shrink: 0; }
.sns-account-btn {
  display: flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%;
  cursor: pointer; flex-shrink: 0;
  background: #0a1a1a;
  border: 2px solid rgba(45,212,191,.7);
  box-shadow: 0 0 10px rgba(45,212,191,.35), inset 0 0 8px rgba(45,212,191,.05);
  transition: box-shadow .2s, border-color .2s;
}
.sns-account-btn.premium {
  border-color: rgba(247,201,72,.8);
  box-shadow: 0 0 10px rgba(247,201,72,.4), inset 0 0 8px rgba(247,201,72,.08);
}
.sns-account-btn:hover { box-shadow: 0 0 16px rgba(45,212,191,.55), inset 0 0 10px rgba(45,212,191,.08); }
.sns-account-btn.premium:hover { box-shadow: 0 0 16px rgba(247,201,72,.6), inset 0 0 10px rgba(247,201,72,.1); }
[data-theme="light"] .sns-account-btn { background: #16113a !important; }
.sns-avatar-circle {
  width: 100%; height: 100%; border-radius: 50%;
  background: linear-gradient(135deg, #7c5cff, #00e5ff);
  display: flex; align-items: center; justify-content: center;
  font-family: 'Syne', sans-serif; font-size: 13px; font-weight: 800; color: #fff;
}

/* Dropdown - POZYCJONOWANY PRZEZ JS (position:fixed + top/left liczone z
   getBoundingClientRect), NIE przez CSS position:absolute względem rodzica.
   Powód: <nav class="glass-noise"> ma overflow:hidden (do obcięcia tekstury
   szumu) ORAZ transform+backdrop-filter (tworzą containing block dla
   position:fixed) - więc każdy potomek nav, nawet fixed, byłby obcięty do
   zaokrąglonego prostokąta navbaru. Naprawa: dropdown jest w JS przenoszony
   do document.body przy pierwszym otwarciu, więc żadne z powyższych go nie
   dotyczy. Style poniżej to tylko wygląd - top/left/right ZAWSZE nadpisywane
   inline przez JS w SNS_toggleAccountDropdown(). */
.sns-account-dropdown {
  display: none;
  position: fixed;
  min-width: 170px;
  background: #0d0820;
  border: 1px solid rgba(124,92,255,.3);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.5);
  padding: 6px;
  z-index: 9999;
}
.sns-account-dropdown.open { display: block; }
[data-theme="light"] .sns-account-dropdown { background: #16113a; border-color: rgba(255,255,255,.12); }
.sns-account-dropdown a {
  display: block; padding: 9px 12px; border-radius: 7px;
  color: #d8d4f0; text-decoration: none;
  font-family: 'Space Mono', monospace; font-size: 12px;
  transition: background .15s, color .15s;
}
.sns-account-dropdown a:hover { background: rgba(0,229,255,.08); color: #00e5ff; }
.sns-account-dropdown a.logout { color: #ff6f7a; }
.sns-account-dropdown a.logout:hover { background: rgba(255,111,122,.1); color: #ff8a94; }
.sns-account-dropdown .dropdown-plan {
  padding: 6px 12px 8px; font-size: 10px; letter-spacing: .06em;
  color: rgba(216,212,240,.5); border-bottom: 1px solid rgba(124,92,255,.15); margin-bottom: 4px;
}

/* Responsywność - login-btn kurczy się do samej ikony na wąskim ekranie,
   jak przycisk Szukaj. Account-btn jest już stały (34px), nie wymaga zmian. */
@media (min-width: 901px) and (max-width: 1180px) {
  .sns-login-btn { padding: 8px 14px !important; font-size: 10px; }
}
/* v1781: na telefonie w navbarze jest miejsce - pigułka z ikoną i napisem
   "Zaloguj się" zamiast gołej ikony (decyzja Artura 2026-09-29). Sama ikona
   dopiero na bardzo wąskich ekranach (<360px). */
@media (max-width: 600px) {
  .sns-login-btn { padding: 8px 14px !important; font-size: 10px; gap: 6px; }
}
@media (max-width: 359px) {
  .sns-login-btn span { display: none; }
  .sns-login-btn { padding: 8px !important; }
}
/* v1765: 7. link w nav (Porównywarka) - w wąskim pasie 901-1040px przycisk
   logowania wypadał za prawą krawędź navbaru. Tam pokazujemy samą ikonę
   (jak na mobile); etykieta zostaje w aria-label/title linku. */
@media (min-width: 901px) and (max-width: 1040px) {
  .sns-login-btn span { display: none; }
  .sns-login-btn { padding: 8px !important; }
}
/* v1766: 7. link w nav (Porównywarka) - w pasie 1181-1260px navbar z
   przyciskiem logowania był o kilka px za szeroki. Od 2026-10-20 przycisk
   logowania jest na KAŻDEJ stronie, także z "← Wstecz" (decyzja Artura,
   zastępuje decyzję z 2026-09-28). */
@media (min-width: 1181px) and (max-width: 1260px) {
  .nav-links { gap: 20px; }
}
/* Strony z "← Wstecz" (kategorie, artykuły, mechanizm-ai): przy 7 linkach
   w pasie 901-990px przycisk Wstecz wychodził poza navbar - chowamy napis
   obok logo (samo logo zostaje). */
@media (min-width: 901px) and (max-width: 990px) {
  nav:has(.nav-cta--back) .logo-text { display: none; }
}
/* Od 2026-10-20 strony z "← Wstecz" (kategorie, artykuły, porównania, mechanizm-ai) mają też
   przycisk logowania. Żeby oba mieściły się w pasku na komputerze: logowanie jako sama ikona
   (etykieta w title/aria-label), a w pasie 901-1100px dodatkowo bez napisu obok logo
   i z mniejszym odstępem między linkami. */
@media (min-width: 901px) {
  nav:has(.nav-cta--back, .sns-back-btn) #snsLoginBtn span { display: none; }
  nav:has(.nav-cta--back, .sns-back-btn) #snsLoginBtn { padding: 8px !important; }
}
@media (min-width: 901px) and (max-width: 1100px) {
  nav:has(.nav-cta--back, .sns-back-btn) .logo-text { display: none; }
  nav:has(.nav-cta--back, .sns-back-btn) .nav-links { gap: 14px; }
}

/* ===== KEYFRAMES HOLOGRAPHIC ===== */
@keyframes holoBorder { 0%{background-position:0%} 100%{background-position:300%} }
@keyframes holoShine { 0%,100%{background-position:-100%} 50%{background-position:200%} }
@keyframes holoBg { 0%,100%{background-position:0% 50%} 50%{background-position:100% 50%} }
@keyframes vsSpin { to { transform: rotate(360deg); } }

/* ===== BUTTONS ===== */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  padding: 14px 28px;
  border-radius: var(--radius);
  transition: all var(--transition);
  cursor: pointer;
  border: none;
}
.btn-primary {
  background: linear-gradient(90deg,#7c5cff,#00e5ff);
  color: #fff;
  box-shadow: 0 0 30px rgba(124,92,255,0.25);
  position: relative;
  overflow: hidden;
}
.btn-primary::after {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 60%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.22), transparent);
  transform: skewX(-15deg);
  transition: none;
  pointer-events: none;
}
.btn-primary:hover::after { left: 150%; transition: left 0.55s ease; }
.btn-primary:hover { background: linear-gradient(90deg,#9575ff,#33eaff); transform: translateY(-2px); box-shadow: 0 0 50px rgba(124,92,255,0.45); }
.btn-ghost {
  border: 1px solid var(--border);
  color: var(--text2);
  background: transparent;
}
.btn-ghost:hover { border-color: var(--accent2); color: var(--accent2); }

/* ===== SECTION ===== */
section { position: relative; z-index: 2; padding: 90px 5%; }
.section-tag {
  font-family: 'Space Mono', monospace;
  font-size: 10.5px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.section-tag::before { content: none; display: none; } /* 2026-09-30: bez kresek przy etykietach sekcji na wszystkich stronach (Artur) */
h1, h2, h3 {
  font-family: 'Syne', sans-serif;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.1;
}
h1 { font-size: clamp(32px, 5.5vw, 76px); margin-bottom: 22px; }
.article-hero h1 { font-size: clamp(28px,5vw,52px); line-height: 1.1; letter-spacing:-0.03em; margin-bottom:20px; }

h2 { font-size: clamp(24px, 3.5vw, 48px); margin-bottom: 18px; }
h3 { font-size: clamp(16px, 2vw, 24px); margin-bottom: 12px; }
.gradient-text {
  background: linear-gradient(90deg, var(--accent), var(--accent2));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.section-intro {
  font-size: 16px;
  color: var(--text2);
  max-width: 540px;
  margin-bottom: 52px;
  line-height: 1.75;
  font-weight: 300;
}

/* ===== CARDS ===== */
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 32px;
  transition: all var(--transition);
  position: relative;
  overflow: hidden;
}
.card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--accent), var(--accent2));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transition);
}
.card:hover { background: var(--surface2); transform: translateY(-3px); border-color: rgba(124,92,255,0.3); }
.card:hover::before { transform: scaleX(1); }

/* ===== BADGE ===== */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(124,92,255,0.1);
  border: 1px solid rgba(124,92,255,0.25);
  color: var(--accent2);
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 6px;
}
.badge-cyan { background: rgba(0,229,255,0.08); border-color: rgba(0,229,255,0.2); color: var(--accent2); }
.badge-pink { background: rgba(255,77,141,0.08); border-color: rgba(255,77,141,0.2); color: var(--accent3); }

/* ===== STATS ROW ===== */
.stats-row {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 1px;
  background: var(--border);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  position: relative;
  z-index: 2;
}
.stat-box {
  background: var(--bg);
  padding: 38px 5%;
  text-align: center;
  transition: background var(--transition);
}
.stat-box:hover { background: var(--surface); transform: translateY(-2px); box-shadow: 0 8px 32px rgba(124,92,255,0.15); border-color: rgba(124,92,255,0.25); }
.stat-num {
  font-family: 'Syne', sans-serif;
  font-size: 48px;
  font-weight: 800;
  line-height: 1.2;
  margin-bottom: 6px;
  color: #00e5ff; /* Narzędzia AI - cyan */
  overflow: visible;
}
.stat-num.c { color: #2dd4bf; } /* Prompty AI - teal */
.stat-num.p { color: #c9a84c; } /* Claude Skills - złoty */
.stat-label {
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--text3);
}

/* ===== FOOTER ===== */
footer {
  background: var(--bg);
  border-top: 1px solid var(--border);
  padding: 56px 5% 28px;
  position: relative;
  z-index: 2;
}
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 2fr;
  gap: 44px;
  margin-bottom: 44px;
}
.footer-cats-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2px 16px;
}
.footer-col--blog { min-width: 0; }
.footer-blog-link {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
  text-decoration: none;
  transition: border-color .2s;
}
.footer-blog-link:last-child { border-bottom: none; }
.footer-blog-link:hover .footer-blog-title { color: var(--accent2); }
.footer-blog-title {
  font-size: 12px;
  font-weight: 400;
  color: rgba(255,255,255,.75);
  line-height: 1.4;
  transition: color .2s;
}
.footer-brand p { font-size: 13px; color: var(--text3); line-height: 1.7; margin-top: 12px; max-width: 250px; }
.footer-col h4 {
  font-family: 'Space Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #00e5ff;
  margin-bottom: 14px;
}
.footer-col a {
  display: block;
  font-size: 13px;
  text-decoration: none;
  margin-bottom: 9px;
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size: 300% 300%;
  animation: lmGradBorder 5s ease-in-out infinite alternate;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.footer-col a:hover {
  background: none;
  -webkit-text-fill-color: #7c5cff;
  color: #7c5cff;
}
.footer-bottom {
  position: relative;
  border-top: 1px solid var(--border);
  padding-top: 22px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: 'Space Mono', monospace;
  font-size: 10.5px;
  color: var(--text3);
}
.footer-bottom-center {
  position: absolute;
  left: 50%;
  top: 22px;
  transform: translateX(-50%);
  font-family: 'Space Mono', monospace;
  font-size: 10.5px;
  color: var(--text3);
  text-decoration: none;
}
.footer-bottom-center:hover { color: #00e5ff; }

/* ===== FAQ ===== */
.faq-item { border-bottom: 1px solid var(--border); }
.faq-q {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 0;
  cursor: pointer;
  font-weight: 500;
  font-size: 15px;
  color: var(--text);
  user-select: none;
  gap: 20px;
}
.faq-q:hover { color: var(--accent2); }
.faq-icon {
  flex-shrink: 0;
  width: 22px; height: 22px;
  border: 1px solid var(--border);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Space Mono', monospace;
  font-size: 14px;
  color: var(--accent);
  transition: all 0.2s;
}
.faq-item.open .faq-icon { background: var(--accent); color: #fff; border-color: var(--accent); transform: rotate(45deg); }
.faq-a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease, padding 0.2s;
  font-size: 14px;
  color: var(--text2);
  line-height: 1.8;
}
.faq-item.open .faq-a { max-height: 300px; padding-bottom: 20px; }

/* ===== FADE UP ===== */
.fade-up {
  opacity: 0;
  transform: translateY(55px);
  transition: opacity 0.85s cubic-bezier(0.22,1,0.36,1), transform 0.85s cubic-bezier(0.22,1,0.36,1);
}
.fade-up.visible { opacity: 1; transform: translateY(0); animation: none; }

/* ===== CARD REVEAL (per-karta, nie per-grid - fix 2026-08 mobile bug) =====
   Używane w tools-grid (categories/*.html) i prompts-grid (prompty-ai.html).
   Powód: fade-up na CAŁYM gridzie nigdy nie osiąga progu 0.12 na mobile
   (1 kolumna = grid wysokości kilku tysięcy px, próg intersection nigdy
   nie spełniony). Każda karta obserwowana osobno rozwiązuje problem. */
.card-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s cubic-bezier(0.22,1,0.36,1), transform 0.6s cubic-bezier(0.22,1,0.36,1);
}
.card-reveal.visible { opacity: 1; transform: translateY(0); }

.fade-left {
  opacity: 0;
  transform: translateX(-55px);
  transition: opacity 0.85s cubic-bezier(0.22,1,0.36,1), transform 0.85s cubic-bezier(0.22,1,0.36,1);
}
.fade-left.visible { opacity: 1; transform: translateX(0); }

.fade-right {
  opacity: 0;
  transform: translateX(55px);
  transition: opacity 0.85s cubic-bezier(0.22,1,0.36,1), transform 0.85s cubic-bezier(0.22,1,0.36,1);
}
.fade-right.visible { opacity: 1; transform: translateX(0); }

.fade-scale {
  opacity: 0;
  transform: scale(0.88) translateY(20px);
  transition: opacity 0.8s cubic-bezier(0.22,1,0.36,1), transform 0.8s cubic-bezier(0.22,1,0.36,1);
}
.fade-scale.visible { opacity: 1; transform: scale(1) translateY(0); }

.stagger-item {
  opacity: 0;
  transform: translateY(50px);
  transition: opacity 0.75s cubic-bezier(0.22,1,0.36,1), transform 0.75s cubic-bezier(0.22,1,0.36,1);
}
.stagger-item.visible { opacity: 1; transform: translateY(0); }

/* Scroll progress bar */
#sns-scroll-bar {
  position: fixed; top: 0; left: 0; height: 3px; z-index: 9999;
  background: linear-gradient(90deg, #7c5cff, #00e5ff, #7c5cff);
  background-size: 200% 100%;
  animation: barShimmer 2s linear infinite;
  width: 0%; transition: width 0.15s linear;
  pointer-events: none;
  box-shadow: 0 0 8px rgba(124,92,255,0.6);
}
@keyframes barShimmer { 0%{background-position:0% 0%} 100%{background-position:200% 0%} }

/* Section reveal line */
.reveal-line {
  display: block; width: 0; height: 3px;
  background: linear-gradient(90deg, #7c5cff, #00e5ff);
  margin-bottom: 14px;
  transition: width 1s cubic-bezier(0.22,1,0.36,1) 0.2s;
}
.reveal-line.visible { width: 56px; }

/* Counter glow */
.stat-num.counting {
  text-shadow: 0 0 40px rgba(124,92,255,0.8);
}

@keyframes fadeUpFallback { to { opacity: 1; transform: translateY(0); } }

/* ===== RESPONSIVE ===== */
@media (max-width: 900px) {
  .stats-row { grid-template-columns: repeat(2,1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 28px; }
  .nav-links { display: none; }
}
/* Strefa pośrednia 901-1180px: linki widoczne (hamburger jeszcze nieaktywny),
   ale przy gap:28px/font-size:10.5px i 6 linkach + flagi + toggle + search +
   VS button nie mieszczą się w jednej linii - zawijają się na dwie, co
   rozciąga wysokość navbaru i rozjeżdża go względem elementów liczących na
   jego standardową wysokość (np. fixed paski pod navbarem). Zwężamy gap
   i font, żeby zmieściło się w jednej linii bez zawijania. */
@media (min-width: 901px) and (max-width: 1180px) {
  .nav-links { gap: 12px; }
  .nav-links a { font-size: 9px; white-space: nowrap; }
  nav { padding: 12px 14px; gap: 10px; }
  .logo-text { font-size: 15px; }
  .logo-badge { width: 48px; }
  .sns-vs-btn, .sns-vs-btn span { white-space: nowrap; }
  .sns-search-btn span { white-space: nowrap; }
}
@media (max-width: 600px) {
  section { padding: 60px 5%; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-bottom { flex-direction: column; gap: 8px; text-align: center; }
  .footer-bottom-center { position: static; transform: none; }

  /* HEADINGS - prevent overflow on mobile */
  h1 { font-size: clamp(22px, 6.5vw, 36px) !important; line-height: 1.2; word-break: break-word; overflow-wrap: break-word; hyphens: manual; } /* v1781: bez automatycznego dzielenia (np. "na-rzędzi") */
  h2 { font-size: clamp(20px, 6.5vw, 32px) !important; line-height: 1.2; word-break: break-word; overflow-wrap: break-word; }
  h3 { font-size: clamp(15px, 4.5vw, 20px) !important; }

  /* STAT numbers */
  .stat-num { font-size: clamp(28px, 10vw, 48px) !important; }

  /* NAV MOBILE */
  nav {
    flex-wrap: nowrap;
    justify-content: space-between;
    align-items: center;
    gap: 0;
    padding: 6px 16px;
    top: 40px;
    width: calc(100% - 16px);
    border-radius: 12px;
  }
  nav .logo {
    width: auto;
    gap: 0;
    display: flex;
    align-items: center;
  }
  nav .logo-text { display: none; }
  nav .logo-badge { width: 42px; }
  nav .nav-cta { display: none; }
  nav .nav-desktop-toggle { display: flex !important; margin: 0; }
  nav button kbd { display: none; }
  nav button[onclick="openSearchModal()"] span { display: none; }
  nav button[onclick="openSearchModal()"] { padding: 7px 10px; margin: 0; }
  nav .lang-switch.nav-lang { display: none !important; }
  nav .hamburger {
    margin: 0;
  }
}

/* ===== SOCIAL ICONS (footer) ===== */
.social-icons { display:flex; flex-direction:row; align-items:center; gap:10px; margin-top:16px; }
.social-icon {
  width:40px; height:40px;
  border:1px solid rgba(124,92,255,.2);
  border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  text-decoration:none;
  background:rgba(0,0,0,.2);
  transition:all .22s;
  flex-shrink:0;
  overflow:hidden;
}
.social-icon svg {
  width:26px !important;
  height:26px !important;
  max-width:26px !important;
  max-height:26px !important;
  display:block;
}
.social-icon:hover { transform:translateY(-2px); border-color:rgba(255,255,255,.2); box-shadow:0 4px 16px rgba(0,0,0,.4); }
.social-icon[data-brand="fb"]:hover { box-shadow:0 4px 16px rgba(0,0,0,.4), 0 0 16px rgba(24,119,242,.45); }
.social-icon[data-brand="ig"]:hover { box-shadow:0 4px 16px rgba(0,0,0,.4), 0 0 16px rgba(214,36,159,.45); }
.social-icon[data-brand="yt"]:hover { box-shadow:0 4px 16px rgba(0,0,0,.4), 0 0 16px rgba(255,0,0,.45); }
.social-icon[data-brand="li"]:hover { box-shadow:0 4px 16px rgba(0,0,0,.4), 0 0 16px rgba(10,102,194,.45); }

/* ===== SEARCH ===== */
.nav-search-btn {
  width: 36px; height: 36px; min-width: 36px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: transparent;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: all .2s;
  color: var(--text2);
  flex-shrink: 0;
  margin-right: 8px;
  overflow: hidden;
  padding: 0;
}
.nav-search-btn:hover { border-color: var(--accent2); color: var(--accent2); background: rgba(0,229,255,.06); }
.nav-search-btn svg { width: 16px !important; height: 16px !important; max-width: 16px !important; max-height: 16px !important; flex-shrink: 0; display: block; }

/* Search overlay */
.search-overlay {
  position: fixed; inset: 0; z-index: 999;
  background: rgba(5,5,8,.92);
  backdrop-filter: blur(16px);
  display: none; align-items: flex-start; justify-content: center;
  padding-top: 120px;
}
.search-overlay.open { display: flex; }
.search-box {
  width: 100%; max-width: 680px;
  padding: 0 20px;
  animation: searchIn .2s ease;
}
@keyframes searchIn { from { opacity:0; transform:translateY(-20px); } to { opacity:1; transform:translateY(0); } }
@keyframes searchBreathe { 0%,100%{box-shadow:0 0 8px rgba(0,229,255,.35),0 0 16px rgba(0,229,255,.1),inset 0 0 8px rgba(0,229,255,.04);border-color:rgba(0,229,255,.65)} 50%{box-shadow:0 0 14px rgba(0,229,255,.6),0 0 28px rgba(0,229,255,.2),inset 0 0 12px rgba(0,229,255,.07);border-color:rgba(0,229,255,1)} }
.search-input-wrap {
  position: relative; display: flex; align-items: center;
}
.search-input-wrap svg {
  position: absolute; left: 18px;
  width: 20px; height: 20px; color: var(--text3); pointer-events: none;
}
#search-input {
  width: 100%;
  background: var(--surface);
  border: 1px solid rgba(124,92,255,.4);
  border-radius: 8px;
  padding: 18px 18px 18px 52px;
  font-family: 'DM Sans', sans-serif;
  font-size: 18px;
  color: var(--text);
  outline: none;
  transition: border-color .2s;
  box-shadow: 0 0 40px rgba(124,92,255,.2);
}
#search-input:focus { border-color: var(--accent); }
#search-input::placeholder { color: var(--text3); }
.search-hint {
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  color: var(--text3);
  text-align: center;
  margin-top: 14px;
  letter-spacing: .06em;
}
.search-results {
  margin-top: 20px;
  display: flex; flex-direction: column; gap: 8px;
  max-height: 400px; overflow-y: auto;
}
.search-result-item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 14px 18px;
  text-decoration: none;
  display: flex; align-items: center; gap: 14px;
  transition: all .2s;
}
.search-result-item:hover { border-color: var(--accent); background: var(--surface2); }
.sr-emoji { font-size: 22px; flex-shrink: 0; }
.sr-name { font-family: 'Syne', sans-serif; font-size: 16px; font-weight: 700; color: var(--text); }
.sr-desc { font-size: 12px; color: var(--text2); margin-top: 2px; }
.sr-tag { font-family: 'Space Mono', monospace; font-size: 10px; color: var(--accent2); margin-left: auto; padding: 3px 8px; border: 1px solid rgba(0,229,255,.2); border-radius: 2px; background: rgba(0,229,255,.06); flex-shrink:0; }
.search-no-results { text-align: center; color: var(--text3); font-size: 14px; padding: 24px; }

@media(max-width:600px) {
  .search-overlay { padding-top: 60px; align-items: flex-start; }
  .search-box { padding: 0 12px; }
  #search-input { font-size: 15px; padding: 13px 13px 13px 44px; }
  .search-input-wrap svg { left: 13px; width: 17px; height: 17px; }
  .search-results { max-height: 55vh; gap: 6px; margin-top: 14px; }
  .search-result-item { padding: 10px 13px; gap: 10px; }
  .sr-emoji { font-size: 18px; }
  .sr-name { font-size: 13px; }
  .sr-desc { font-size: 11px; }
  .sr-tag { font-size: 9px; padding: 2px 6px; }
  .search-hint { font-size: 10px; margin-top: 10px; }
}

/* Big search on narzedzia-ai page */
.page-search-wrap {
  margin-bottom: 44px;
  position: relative;
}
.page-search-wrap svg {
  position: absolute; left: 20px; top: 50%; transform: translateY(-50%);
  width: 22px !important; height: 22px !important; max-width: 22px !important;
  color: var(--accent2); pointer-events: none;
  z-index: 1;
}
#page-search {
  width: 100%;
  background: var(--surface);
  border: 2px solid rgba(124,92,255,.4);
  border-radius: 10px;
  padding: 18px 20px 18px 56px;
  font-family: 'DM Sans', sans-serif;
  font-size: 16px;
  color: var(--text);
  outline: none;
  transition: all .25s;
  box-shadow: 0 2px 20px rgba(124,92,255,.1);
}
#page-search:focus {
  border-color: var(--accent);
  box-shadow: 0 0 32px rgba(124,92,255,.25);
  background: var(--surface2);
}
#page-search::placeholder { color: var(--text3); font-size:15px; }
#search-count {
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  color: var(--accent2);
  margin-top: 10px;
  letter-spacing: .08em;
  padding-left: 4px;
}
.cat-tile.hidden { display: none !important; }

/* ===== FEEDBACK WIDGET ===== */
.fb-trigger {
  position: fixed;
  bottom: 24px; right: 24px;
  z-index: 9990;
  width: 56px; height: 56px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--fb-color, #00e5ff), var(--fb-color2, #2dd4bf));
  border: none;
  cursor: pointer;
  box-shadow: 0 8px 32px rgba(0,229,255,0.4), inset 0 1px 0 rgba(255,255,255,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
  animation: fbPulse 3s infinite;
}
.fb-trigger:hover {
  transform: scale(1.08) translateY(-2px);
  box-shadow: 0 12px 40px rgba(0,229,255,0.6);
}
.fb-trigger.hidden { display: none; }
.fb-tooltip {
  position: fixed;
  bottom: 88px; right: 24px;
  z-index: 9989;
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  letter-spacing: .06em;
  color: var(--fb-color, #00e5ff);
  background: var(--surface);
  border: 1px solid var(--fb-color, rgba(0,229,255,.3));
  border-radius: 8px;
  padding: 6px 12px;
  backdrop-filter: blur(20px);
  white-space: nowrap;
  animation: fbFadeUp 0.4s ease 1.5s both;
}
.fb-tooltip.hidden { display: none; }
/* v1781: na telefonie podpowiedź "Twoja opinia" nad przyciskiem zasłaniała treść
   i dublowała przycisk (oba otwierają ten sam panel). Zostaje sam przycisk -
   dotąd tylko index.html miał tę regułę, teraz cały serwis. */
@media (max-width: 760px) { .fb-tooltip { display: none !important; } }
.fb-panel {
  position: fixed;
  bottom: 24px; right: 24px;
  z-index: 9990;
  width: 380px;
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 48px);
  background: var(--surface);
  backdrop-filter: blur(32px);
  -webkit-backdrop-filter: blur(32px);
  border: 1px solid var(--glass-border, rgba(124,92,255,.2));
  border-radius: 20px;
  box-shadow: 0 24px 80px rgba(0,0,0,.6);
  overflow: hidden;
  display: none;
}
[data-theme="light"] .fb-panel {
  background: rgba(6,20,50,.96) !important;
  border-color: rgba(0,229,255,.25) !important;
  box-shadow: 0 24px 80px rgba(0,0,0,.5), 0 0 0 1px rgba(0,229,255,.1) !important;
}
[data-theme="light"] .fb-header { border-bottom-color: rgba(0,229,255,.12) !important; }
[data-theme="light"] .fb-title { color: #e8f8ff !important; }
[data-theme="light"] .fb-subtitle { color: #00e5ff !important; }
[data-theme="light"] .fb-close { color: rgba(0,229,255,.5) !important; }
[data-theme="light"] .fb-close:hover { color: #00e5ff !important; }
[data-theme="light"] .fb-body p,
[data-theme="light"] .fb-body { color: #7fd8f0 !important; }
[data-theme="light"] .fb-rate-btn { border-color: rgba(0,229,255,.2) !important; background: rgba(0,229,255,.03) !important; }
[data-theme="light"] .fb-rate-btn:hover { background: rgba(0,229,255,.1) !important; border-color: #00e5ff !important; }
[data-theme="light"] .fb-rate-btn.selected { background: rgba(0,229,255,.15) !important; border-color: #00e5ff !important; }
[data-theme="light"] .fb-rate-label { color: rgba(0,229,255,.6) !important; }
[data-theme="light"] .fb-q-btn { background: rgba(0,229,255,.04) !important; border-color: rgba(0,229,255,.2) !important; }
[data-theme="light"] .fb-q-btn:hover { border-color: #00e5ff !important; background: rgba(0,229,255,.1) !important; }
[data-theme="light"] .fb-q-label { color: #e8f8ff !important; }
[data-theme="light"] .fb-q-arrow { color: rgba(0,229,255,.5) !important; }
[data-theme="light"] .fb-rating-badge { background: rgba(0,229,255,.08) !important; border-color: rgba(0,229,255,.2) !important; }
[data-theme="light"] .fb-selected-bar { background: rgba(0,229,255,.06) !important; border-color: rgba(0,229,255,.2) !important; }
[data-theme="light"] .fb-selected-bar .q-label { color: #7fd8f0 !important; }
[data-theme="light"] .fb-textarea { background: rgba(0,229,255,.03) !important; border-color: rgba(0,229,255,.2) !important; color: #e8f8ff !important; }
[data-theme="light"] .fb-textarea::placeholder { color: rgba(0,229,255,.4) !important; }
[data-theme="light"] .fb-email-label { color: rgba(0,229,255,.6) !important; }
[data-theme="light"] .fb-email { background: rgba(0,229,255,.03) !important; border-color: rgba(0,229,255,.2) !important; color: #e8f8ff !important; }
[data-theme="light"] .fb-email::placeholder { color: rgba(0,229,255,.4) !important; }
[data-theme="light"] .fb-submit { background: linear-gradient(90deg,#00e5ff,#2dd4bf) !important; color: #082038 !important; box-shadow: 0 4px 20px rgba(0,229,255,.35) !important; }
[data-theme="light"] .fb-submit:hover { box-shadow: 0 8px 32px rgba(0,229,255,.5) !important; }
[data-theme="light"] .fb-submit:disabled { background: rgba(0,229,255,.2) !important; box-shadow: none !important; color: rgba(0,229,255,.5) !important; }
[data-theme="light"] .fb-back { color: rgba(0,229,255,.5) !important; }
[data-theme="light"] .fb-back:hover { color: #00e5ff !important; }
[data-theme="light"] .fb-footer { border-top-color: rgba(0,229,255,.1) !important; color: rgba(0,229,255,.4) !important; }
[data-theme="light"] .fb-footer .hl { color: #00e5ff !important; }
.fb-panel.open { display: block; animation: fbPanelIn 0.3s cubic-bezier(0.34,1.56,0.64,1); }
.fb-panel.closing { animation: fbPanelOut 0.25s ease forwards; }
.fb-header {
  padding: 18px 22px 14px;
  border-bottom: 1px solid rgba(124,92,255,.08);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.fb-title { font-family: 'Syne', sans-serif; font-weight: 700; font-size: 16px; color: var(--text); letter-spacing: -0.02em; }
.fb-subtitle { font-family: 'Space Mono', monospace; font-size: 9px; color: var(--accent2); letter-spacing: .1em; text-transform: uppercase; margin-top: 2px; }
.fb-close { background: none; border: none; color: var(--text3); font-size: 18px; cursor: pointer; padding: 4px; line-height: 1; transition: color 0.2s; }
.fb-close:hover { color: var(--text); }
.fb-body { padding: 20px 22px; overflow-y: auto; max-height: calc(100vh - 160px); }
.fb-step { display: none; }
.fb-step.active { display: block; animation: fbFadeIn 0.3s ease; }
.fb-ratings { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.fb-rate-btn {
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 8px;
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}
.fb-rate-btn:hover { background: rgba(124,92,255,.06); border-color: var(--accent); transform: translateY(-2px); }
.fb-rate-btn.selected { background: rgba(124,92,255,.12); border-color: var(--accent); }
.fb-rate-emoji { font-size: 28px; line-height: 1; }
.fb-rate-label { font-family: 'Space Mono', monospace; font-size: 9px; color: var(--text3); letter-spacing: .06em; text-transform: uppercase; }
.fb-questions { display: flex; flex-direction: column; gap: 8px; }
.fb-q-btn {
  background: rgba(255,255,255,.03);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 16px;
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  align-items: center;
  gap: 12px;
  text-align: left;
}
[data-theme="light"] .fb-q-btn { background: rgba(255,255,255,.5); }
.fb-q-btn:hover { border-color: var(--accent); background: rgba(124,92,255,.06); transform: translateX(4px); }
.fb-q-emoji { font-size: 18px; flex-shrink: 0; }
.fb-q-label { font-size: 13px; color: var(--text); font-weight: 500; }
.fb-q-arrow { margin-left: auto; font-size: 14px; color: var(--text3); font-family: 'Space Mono', monospace; }
.fb-rating-info { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; }
.fb-rating-badge {
  font-size: 20px;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(124,92,255,.08);
  border: 1px solid rgba(124,92,255,.18);
  display: flex;
  align-items: center;
  justify-content: center;
}
.fb-rating-text { font-family: 'Space Mono', monospace; font-size: 10px; color: var(--accent2); letter-spacing: .06em; }
.fb-selected-bar {
  background: rgba(124,92,255,.06);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.fb-selected-bar .q-label { font-size: 12px; color: var(--text2); font-weight: 500; }
.fb-selected-bar .r-emoji { margin-left: auto; font-size: 14px; }
.fb-back {
  background: none; border: none; color: var(--text3);
  cursor: pointer; font-size: 13px; font-family: 'Space Mono', monospace;
  padding: 0; margin-bottom: 16px;
  display: flex; align-items: center; gap: 4px; transition: color 0.2s;
}
.fb-back:hover { color: var(--text); }
.fb-textarea {
  width: 100%;
  background: rgba(255,255,255,.03);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px;
  font-size: 14px;
  color: var(--text);
  font-family: 'DM Sans', sans-serif;
  resize: vertical;
  outline: none;
  transition: border-color 0.2s;
  line-height: 1.6;
  box-sizing: border-box;
}
[data-theme="light"] .fb-textarea { background: rgba(124,92,255,.03); }
.fb-textarea:focus { border-color: var(--accent); }
.fb-textarea::placeholder { color: var(--text3); }
.fb-email-label {
  font-family: 'Space Mono', monospace;
  font-size: 9px;
  color: var(--text3);
  letter-spacing: .08em;
  text-transform: uppercase;
  display: block;
  margin: 12px 0 6px;
}
.fb-email {
  width: 100%;
  background: rgba(255,255,255,.03);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 13px;
  color: var(--text);
  font-family: 'DM Sans', sans-serif;
  outline: none;
  transition: border-color 0.2s;
  box-sizing: border-box;
}
[data-theme="light"] .fb-email { background: rgba(124,92,255,.03); }
.fb-email:focus { border-color: var(--accent); }
.fb-email::placeholder { color: var(--text3); }
.fb-submit {
  width: 100%; margin-top: 16px; padding: 13px;
  background: var(--accent); border: none; border-radius: 10px;
  cursor: pointer;
  font-family: 'Space Mono', monospace; font-size: 11px;
  letter-spacing: .08em; text-transform: uppercase;
  color: #fff; transition: all 0.2s;
  box-shadow: 0 4px 20px rgba(124,92,255,0.35);
}
.fb-submit:hover { transform: translateY(-1px); box-shadow: 0 8px 32px rgba(124,92,255,0.5); }
.fb-submit:disabled { background: rgba(124,92,255,0.3); cursor: not-allowed; box-shadow: none; transform: none; }
.fb-thanks { text-align: center; padding: 20px 0; }
.fb-thanks-icon {
  width: 64px; height: 64px; border-radius: 50%;
  background: linear-gradient(135deg, rgba(124,92,255,.12), rgba(0,229,255,.12));
  border: 1px solid rgba(124,92,255,.2);
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 16px; font-size: 28px; color: var(--accent);
}
.fb-thanks h3 { font-family: 'Syne', sans-serif; font-weight: 700; font-size: 18px; color: var(--text); margin-bottom: 8px; }
.fb-thanks p { font-size: 13px; color: var(--text2); line-height: 1.65; margin-bottom: 24px; }
.fb-thanks-close {
  background: none; border: 1px solid var(--border); border-radius: 8px;
  padding: 10px 20px;
  font-family: 'Space Mono', monospace; font-size: 10px;
  letter-spacing: .08em; text-transform: uppercase;
  color: var(--text2); cursor: pointer; transition: all 0.2s;
}
.fb-thanks-close:hover { border-color: var(--accent); color: var(--text); }
.fb-footer {
  padding: 10px 22px;
  border-top: 1px solid rgba(124,92,255,.06);
  text-align: center;
}
.fb-footer span { font-family: 'Space Mono', monospace; font-size: 8px; color: var(--text3); letter-spacing: .1em; text-transform: uppercase; opacity: 0.6; }
.fb-footer .hl { color: var(--accent); }

@keyframes fbPulse {
  0%, 100% { box-shadow: 0 8px 32px rgba(0,229,255,0.4); }
  50% { box-shadow: 0 8px 40px rgba(0,229,255,0.55), 0 0 0 6px rgba(0,229,255,0.08); }
}
@keyframes fbPanelIn {
  from { opacity: 0; transform: translateY(20px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes fbPanelOut {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(20px) scale(0.95); }
}
@keyframes fbFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes fbFadeUp {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   MOBILE FIX v35 - Naprawa overflow i kafelków
   ============================================================ */

/* 1. Globalne zabezpieczenie przed overflow */
html {
  overflow-x: hidden;
}

/* 2. Cookie banner - min-width powoduje overflow na małych ekranach */
@media (max-width: 480px) {
  #cookie-banner > div { flex-direction: column !important; }
  #cookie-banner [style*="min-width:260px"],
  #cookie-banner [style*="min-width: 260px"] {
    min-width: 0 !important;
    width: 100% !important;
  }
}

/* 3. Footer flex - zapobiega wypchnięciu poza ekran */
footer [style*="min-width:260px"],
footer [style*="min-width: 260px"] {
  min-width: 0 !important;
  flex-shrink: 1 !important;
}

/* 4. Sekcja Hero - stats grid na bardzo małych ekranach */
@media (max-width: 420px) {
  .stats-row { grid-template-columns: 1fr 1fr !important; }
  .stat-box { padding: 24px 16px; }
  .stat-num { font-size: clamp(24px, 9vw, 36px) !important; }
}

/* 5. offer-grid (VS section) - dodatkowy breakpoint */
@media (max-width: 420px) {
  .offer-grid { grid-template-columns: 1fr !important; }
}

/* 6. cats-grid (strona główna) - 2 kolumny na małym mobile */
@media (max-width: 380px) {
  .cats-grid { grid-template-columns: 1fr !important; }
}

/* 7. blog-preview-grid (inline style) */
@media (max-width: 420px) {
  .blog-preview-grid { grid-template-columns: 1fr !important; }
}

/* 8. Skill card (baza-skillsow) - dbGrid już ma breakpoint 420px OK
   ale skill modal - zabezpieczenie przed wychodzeniem poza ekran */
#skill-modal {
  box-sizing: border-box !important;
  left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: calc(100% - 32px) !important;
  max-width: 680px !important;
  margin: 0 !important;
}

/* 9. Sekcja padding na bardzo małych ekranach */
@media (max-width: 380px) {
  section { padding: 50px 4% !important; }
  .stat-box { padding: 20px 10px; }
}

/* 10. Zabezpieczenie generalnie dla wszystkich gridy w section */
@media (max-width: 600px) {
  .container, section > div, section > .fade-up {
    max-width: 100%;
    box-sizing: border-box;
  }
  /* Prompts grid */
  .prompts-grid { grid-template-columns: 1fr !important; }
  /* Skills grid (główna) */
  .skills-grid { grid-template-columns: 1fr !important; }
  .skills-grid-new { grid-template-columns: 1fr !important; }
}

/* 11. Nav na bardzo małych ekranach */
@media (max-width: 380px) {
  nav {
    padding: 6px 10px !important;
    width: calc(100% - 16px) !important;
  }
}

/* 12. Footer grid - już mamy 1fr ale dodajemy min-width:0 dla dzieci */
@media (max-width: 600px) {
  .footer-grid > * { min-width: 0; overflow: hidden; }
  .footer-bottom { gap: 12px; }
}

/* 13. Ticker na małym ekranie */
@media (max-width: 380px) {
  .ticker { padding: 5px 0; }
  .ticker-item { font-size: 10px; }
}
/* ============================================================
   NEWSLETTER - SmartNetStudio v35
   Wklej do css/style.css (przed sekcją Media Queries)
   Zwiększ ?v= na wszystkich stronach po wklejeniu
   ============================================================ */

/* --- Section --- */
.newsletter-section {
  padding: 80px 0;
  position: relative;
}
.newsletter-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 80% at 10% 50%, rgba(124,92,255,.12) 0%, transparent 60%),
    radial-gradient(ellipse 50% 60% at 90% 50%, rgba(0,229,255,.07) 0%, transparent 60%);
  pointer-events: none;
  z-index: 0;
}
.newsletter-section > div { position: relative; z-index: 1; }
.newsletter-section--compact {
  padding: 60px 0;
}

/* --- Card --- */
.newsletter-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: 40px;
  background: linear-gradient(135deg, rgba(124,92,255,.12) 0%, rgba(15,15,28,.85) 50%, rgba(0,229,255,.06) 100%);
  border: 1px solid rgba(124,92,255,.35);
  border-radius: 24px;
  padding: 56px 60px;
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  overflow: hidden;
  box-shadow: 0 0 0 1px rgba(124,92,255,.08) inset, 0 24px 60px rgba(0,0,0,.4);
}
.newsletter-card--compact {
  padding: 44px 52px;
  gap: 0;
}

/* Glow effect */
.newsletter-glow {
  position: absolute;
  top: -60px;
  left: -60px;
  width: 320px;
  height: 320px;
  background: radial-gradient(circle, rgba(124,92,255,.18) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

/* --- Inner content --- */
.newsletter-inner {
  position: relative;
  z-index: 1;
  flex: 1;
}

/* --- Badge --- */
.nl-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(124,92,255,.15);
  border: 1px solid rgba(124,92,255,.3);
  border-radius: 100px;
  padding: 6px 14px;
  font-family: 'Space Mono', monospace;
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 20px;
}
.nl-badge-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
  animation: pulse-dot 2s ease-in-out infinite;
}
@keyframes pulse-dot {
  0%,100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .5; transform: scale(1.3); }
}

/* --- Title & desc --- */
.newsletter-title {
  font-family: 'Syne', sans-serif;
  font-weight: 800;
  font-size: clamp(1.5rem, 3vw, 2.1rem);
  line-height: 1.2;
  margin: 0 0 12px;
}
.newsletter-desc {
  font-family: 'DM Sans', sans-serif;
  font-size: 1rem;
  line-height: 1.65;
  opacity: .75;
  margin: 0 0 20px;
  max-width: 520px;
}

/* --- Stats row --- */
.newsletter-stats {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: 'DM Sans', sans-serif;
  font-size: .9rem;
  opacity: .65;
  margin-bottom: 28px;
}
.newsletter-stats strong {
  color: var(--accent2);
  font-weight: 700;
}
.stat-sep {
  opacity: .4;
}

/* --- Form --- */
.newsletter-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.newsletter-input-wrap {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.newsletter-input {
  flex: 1;
  min-width: 200px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(124,92,255,.25);
  border-radius: 12px;
  padding: 14px 18px;
  font-family: 'DM Sans', sans-serif;
  font-size: .95rem;
  color: inherit;
  outline: none;
  transition: border-color .2s, box-shadow .2s;
}
.newsletter-input::placeholder {
  opacity: .45;
}
.newsletter-input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(124,92,255,.18);
}

/* --- Submit button --- */
.newsletter-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, var(--accent) 0%, #5a3fd4 100%);
  color: #fff;
  border: none;
  border-radius: 12px;
  padding: 14px 26px;
  font-family: 'DM Sans', sans-serif;
  font-weight: 600;
  font-size: .95rem;
  cursor: pointer;
  transition: opacity .2s, transform .15s, box-shadow .2s;
  white-space: nowrap;
  position: relative;
  overflow: hidden;
}
.newsletter-btn:hover {
  opacity: .9;
  transform: translateY(-1px);
  box-shadow: 0 8px 24px rgba(124,92,255,.35);
}
.newsletter-btn:active {
  transform: translateY(0);
}
.newsletter-btn:disabled {
  opacity: .6;
  cursor: not-allowed;
  transform: none;
}
.btn-icon { transition: transform .2s; }
.newsletter-btn:hover .btn-icon { transform: translateX(3px); }

/* Loader spinner (hidden by default) */
.btn-loader {
  display: none;
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255,255,255,.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spin .7s linear infinite;
}
.newsletter-btn.loading .btn-text,
.newsletter-btn.loading .btn-icon { display: none; }
.newsletter-btn.loading .btn-loader { display: block; }

@keyframes spin {
  to { transform: rotate(360deg); }
}

/* --- Inline message --- */
.newsletter-msg {
  font-family: 'DM Sans', sans-serif;
  font-size: .9rem;
  min-height: 22px;
  padding: 0 4px;
  display: none;
}
.newsletter-msg.success {
  display: block;
  color: #00e5c0;
}
.newsletter-msg.error {
  display: block;
  color: #ff4d8d;
}

/* --- Legal --- */
.newsletter-legal {
  font-family: 'DM Sans', sans-serif;
  font-size: .8rem;
  opacity: .45;
  margin: 0;
}
.newsletter-legal a {
  color: var(--accent2);
  text-decoration: none;
}
.newsletter-legal a:hover {
  text-decoration: underline;
}

/* --- Decorative elements (strona główna) --- */
.newsletter-deco {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  width: 140px;
  height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.deco-ring {
  position: absolute;
  border-radius: 50%;
  border: 1px solid rgba(124,92,255,.25);
  animation: ring-pulse 3s ease-in-out infinite;
}
.deco-ring--1 {
  width: 100%;
  height: 100%;
  animation-delay: 0s;
}
.deco-ring--2 {
  width: 70%;
  height: 70%;
  border-color: rgba(0,229,255,.2);
  animation-delay: 1s;
}
.deco-icon {
  font-size: 2.4rem;
  position: relative;
  z-index: 1;
  filter: drop-shadow(0 0 16px rgba(124,92,255,.5));
  animation: float-icon 4s ease-in-out infinite;
}
@keyframes ring-pulse {
  0%,100% { transform: scale(1); opacity: .6; }
  50%      { transform: scale(1.08); opacity: 1; }
}
@keyframes float-icon {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}

/* ---- FOOTER NEWSLETTER MINI ---- */
.footer-newsletter {
  padding: 20px 0 0;
  margin-top: 20px;
  border-top: 1px solid rgba(124,92,255,.12);
}
.footer-nl-label {
  font-family: 'Space Mono', monospace;
  font-size: .78rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  opacity: .55;
  margin: 0 0 12px;
}
.footer-nl-form { display: flex; flex-direction: column; gap: 8px; }
.footer-nl-wrap { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
/* Newsletter input - gradient border via ::before pseudo-element */
.footer-nl-input-wrap {
  flex: 1;
  min-width: 160px;
  position: relative;
  border-radius: 11px;
}
.footer-nl-input-wrap::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 11px;
  padding: 1.5px;
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size: 300% 300%;
  background-color: transparent;
  animation: lmGradBorder 5s ease-in-out infinite alternate;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite: exclude;
  pointer-events: none;
}
.footer-nl-input {
  width: 100%;
  background: transparent;
  border: none;
  border-radius: 9px;
  padding: 10px 14px;
  font-family: 'DM Sans', sans-serif;
  font-size: .88rem;
  color: inherit;
  outline: none;
  box-sizing: border-box;
  display: block;
  position: relative;
  z-index: 1;
}
.footer-nl-input:focus { outline: none; }
.footer-nl-input::placeholder { opacity: .4; }
.footer-nl-btn {
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size: 300% 300%;
  animation: lmGradBorder 5s ease-in-out infinite alternate;
  color: #0a1a00;
  border: none;
  border-radius: 10px;
  padding: 10px 18px;
  font-family: 'DM Sans', sans-serif;
  font-weight: 600;
  font-size: .88rem;
  cursor: pointer;
  transition: opacity .2s;
  white-space: nowrap;
}
.footer-nl-btn:hover { opacity: .85; }
.footer-nl-btn:disabled { opacity: .55; cursor: not-allowed; }
.footer-nl-msg {
  font-size: .82rem;
  min-height: 18px;
}

/* ---- LIGHT MODE newsletter - ciemne tło (reguły w bloku końcowym) ---- */

/* ---- RESPONSIVE ---- */
@media (max-width: 768px) {
  .newsletter-card {
    flex-direction: column;
    padding: 36px 28px;
    gap: 24px;
  }
  .newsletter-deco {
    display: none; /* chowamy dekorację na mobile */
  }
  .newsletter-input-wrap {
    flex-direction: column;
  }
  .newsletter-btn {
    width: 100%;
    justify-content: center;
  }
}
@media (max-width: 480px) {
  .newsletter-section { padding: 52px 0; }
  .newsletter-card { padding: 28px 20px; }
  .newsletter-title { font-size: 1.4rem; }
}


/* ============================================================
   SOCIAL BAR + SOCIAL SECTION - przeniesione z index.html
   ============================================================ */
/* ===== SOCIAL BAR (pod stats-row) ===== */
  .social-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 18px 5%;
    border-bottom: 1px solid var(--border);
    background: linear-gradient(180deg, rgba(124,92,255,.04) 0%, transparent 100%);
    position: relative;
    z-index: 2;
    flex-wrap: wrap;
  }
  .social-bar-label {
    font-family: 'Space Mono', monospace;
    font-size: 9px;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--text3);
    flex-shrink: 0;
    margin-right: 4px;
  }
  .social-bar-links {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
  }
  .sbl {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 18px;
    border-radius: 100px;
    border: 1px solid rgba(255,255,255,.08);
    background: rgba(255,255,255,.04);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    text-decoration: none;
    font-family: 'DM Sans', sans-serif;
    font-size: 13px;
    font-weight: 500;
    color: var(--text2);
    transition: all .22s cubic-bezier(.4,0,.2,1);
    white-space: nowrap;
  }
  .sbl svg { flex-shrink: 0; transition: transform .22s; }
  .sbl:hover { transform: translateY(-2px); color: #fff; box-shadow: 0 6px 20px rgba(0,0,0,.3); }
  .sbl:hover svg { transform: scale(1.15); }

  /* Kolory platform na hover */
  .sbl-fb:hover  { background: #1877f2; border-color: #1877f2; box-shadow: 0 6px 20px rgba(24,119,242,.4); }
  .sbl-ig:hover  { background: linear-gradient(135deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888); border-color: #e1306c; box-shadow: 0 6px 20px rgba(225,48,108,.4); }
  .sbl-yt:hover  { background: #ff0000; border-color: #ff0000; box-shadow: 0 6px 20px rgba(255,0,0,.35); }
  .sbl-li:hover  { background: #0a66c2; border-color: #0a66c2; box-shadow: 0 6px 20px rgba(10,102,194,.4); }

  /* Subtelne kolory ikon w stanie domyślnym */
  .sbl-fb svg { color: #5890ff; }
  .sbl-ig svg { color: #e1306c; }
  .sbl-yt svg { color: #ff4444; }
  .sbl-li svg { color: #5299d3; }
  .sbl:hover svg { color: #fff; }

  [data-theme="light"] .sbl {
    background: rgba(255,255,255,.8);
    border-color: rgba(0,0,0,.08);
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
    color: #1a1530;
  }
  [data-theme="light"] .sbl:hover { color: #fff; }
  [data-theme="light"] .sbl-fb { background: rgba(24,119,242,.1); border-color: rgba(24,119,242,.3); color: #1877f2; }
  [data-theme="light"] .sbl-fb svg { color: #1877f2; }
  [data-theme="light"] .sbl-fb:hover { background: #1877f2; border-color: #1877f2; color: #fff; }
  [data-theme="light"] .sbl-ig { background: rgba(225,48,108,.08); border-color: rgba(225,48,108,.3); color: #e1306c; }
  [data-theme="light"] .sbl-ig svg { color: #e1306c; }
  [data-theme="light"] .sbl-ig:hover { background: linear-gradient(135deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888); border-color: #e1306c; color: #fff; }
  [data-theme="light"] .sbl-yt { background: rgba(255,0,0,.08); border-color: rgba(255,0,0,.25); color: #ff0000; }
  [data-theme="light"] .sbl-yt svg { color: #ff0000; }
  [data-theme="light"] .sbl-yt:hover { background: #ff0000; border-color: #ff0000; color: #fff; }
  [data-theme="light"] .sbl-li { background: rgba(10,102,194,.08); border-color: rgba(10,102,194,.25); color: #0a66c2; }
  [data-theme="light"] .sbl-li svg { color: #0a66c2; }
  [data-theme="light"] .sbl-li:hover { background: #0a66c2; border-color: #0a66c2; color: #fff; }

  @media (max-width: 600px) {
    .social-bar { padding: 14px 5%; gap: 8px; }
    .social-bar-label { width: 100%; text-align: center; margin-right: 0; margin-bottom: 4px; }
    .sbl { padding: 8px 14px; font-size: 12px; }
  }
  @media (max-width: 400px) {
    .sbl span { display: none; }
    .sbl { padding: 9px 12px; }
  }

  /* ===== SOCIAL SECTION (sekcja społeczność) ===== */
  .social-section { padding: 80px 5%; }
  .social-section-inner { max-width: 1100px; }
  .social-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px;
    margin-top: 40px;
  }
  .social-card {
    display: flex;
    flex-direction: column;
    gap: 0;
    background: #0d0b1a;
    border: 1px solid rgba(124,92,255,.2);
    border-radius: 16px;
    padding: 28px 24px;
    text-decoration: none;
    transition: all .25s;
    position: relative;
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(0,0,0,.2);
  }
  .social-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    opacity: 1;
    border-radius: 14px 14px 0 0;
  }
  .social-card:hover { transform: translateY(-4px); }

  /* Kolory per platforma */
  .sc-fb { border-color: rgba(24,119,242,.35); background: linear-gradient(135deg, #0d0b1a 60%, rgba(24,119,242,.2)); }
  .sc-fb:hover { border-color: rgba(24,119,242,.6); box-shadow: 0 8px 32px rgba(24,119,242,.2); }
  .sc-fb::before { background: #1877f2; }
  .sc-fb .sc-icon { background: rgba(24,119,242,.15); border-color: rgba(24,119,242,.3); color: #5890ff; }
  .sc-fb .sc-handle { color: #5890ff; }

  .sc-ig { border-color: rgba(225,48,108,.35); background: linear-gradient(135deg, #0d0b1a 60%, rgba(225,48,108,.18)); }
  .sc-ig:hover { border-color: rgba(225,48,108,.6); box-shadow: 0 8px 32px rgba(225,48,108,.2); }
  .sc-ig::before { background: linear-gradient(90deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); }
  .sc-ig .sc-icon { background: rgba(225,48,108,.15); border-color: rgba(225,48,108,.3); color: #e1306c; }
  .sc-ig .sc-handle { color: #e1306c; }

  .sc-yt { border-color: rgba(255,0,0,.3); background: linear-gradient(135deg, #0d0b1a 60%, rgba(255,0,0,.16)); }
  .sc-yt:hover { border-color: rgba(255,0,0,.55); box-shadow: 0 8px 32px rgba(255,0,0,.15); }
  .sc-yt::before { background: #ff0000; }
  .sc-yt .sc-icon { background: rgba(255,0,0,.12); border-color: rgba(255,0,0,.25); color: #ff4444; }
  .sc-yt .sc-handle { color: #ff4444; }

  .sc-li { border-color: rgba(10,102,194,.35); background: linear-gradient(135deg, #0d0b1a 60%, rgba(10,102,194,.2)); }
  .sc-li:hover { border-color: rgba(10,102,194,.6); box-shadow: 0 8px 32px rgba(10,102,194,.2); }
  .sc-li::before { background: #0a66c2; }
  .sc-li .sc-icon { background: rgba(10,102,194,.15); border-color: rgba(10,102,194,.3); color: #5299d3; }

  .sc-icon {
    width: 52px; height: 52px;
    border-radius: 14px;
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.1);
    display: flex; align-items: center; justify-content: center;
    margin-bottom: 18px;
    flex-shrink: 0;
  }
  .sc-body { flex: 1; }
  .sc-platform {
    font-family: 'Syne', sans-serif;
    font-size: 15px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 3px;
  }
  .sc-handle {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: var(--accent2);
    letter-spacing: .06em;
    margin-bottom: 10px;
  }
  .sc-desc {
    font-size: 12.5px;
    color: var(--text3);
    line-height: 1.6;
  }
  .sc-cta {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--accent);
    margin-top: 18px;
    transition: letter-spacing .2s;
  }
  .social-card:hover .sc-cta { letter-spacing: .12em; }

  /* social-card light - ciemne (reguły w bloku końcowym) */

  @media (max-width: 900px) {
    .social-cards { grid-template-columns: repeat(2, 1fr); }
  }
  @media (max-width: 480px) {
    .social-cards { grid-template-columns: 1fr; gap: 10px; }
    .social-card { flex-direction: row; align-items: center; padding: 18px 20px; gap: 16px; }
    .sc-icon { margin-bottom: 0; width: 40px; height: 40px; flex-shrink: 0; }
    .sc-desc { display: none; }
    .sc-cta { margin-top: 4px; }
  }

  .social-section { padding: 80px 5%; }

/* ===== AUTO-COUNTERS ===== */
/* Kafelki liczników (.sns-tile) - wzorzec 1:1 z kontakt.html (.glass-card + .counter-card):
   osobne kafelki, kolorowa linia akcentu u góry, duża liczba, podpis wielkimi literami.
   Używane przez licznik kategorii (#sns-stats-bar, wstrzykiwany z main.js) i dodaj-narzedzie.html. */
.sns-tiles { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
#sns-stats-bar { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; margin:0 0 24px; }
.sns-tile { display:block; padding:24px 22px; position:relative; overflow:hidden; border-radius:14px; text-align:left; min-width:0; border:1px solid rgba(124,92,255,.35); box-shadow:0 4px 24px rgba(0,0,0,.35); transition:transform .25s, box-shadow .25s; --tile-color:#7c5cff; --tile-rgb:124,92,255; background:linear-gradient(135deg,rgba(var(--tile-rgb),.22) 0%,rgba(var(--tile-rgb),.08) 45%,rgba(6,10,20,.75) 100%); }
.sns-tile::before { content:''; position:absolute; top:0; left:0; right:0; height:2px; background:var(--tile-color); }
.sns-tile:hover { transform:translateY(-4px); box-shadow:0 12px 48px rgba(var(--tile-rgb),.3); }
.sns-tile--cyan   { --tile-color:#00e5ff; --tile-rgb:0,229,255; }
.sns-tile--violet { --tile-color:#7c5cff; --tile-rgb:124,92,255; }
.sns-tile--teal   { --tile-color:#2dd4bf; --tile-rgb:45,212,191; }
.sns-tile--pink   { --tile-color:#ff6b9d; --tile-rgb:255,107,157; }
.sns-tile-n { font-family:'Syne',sans-serif; font-weight:800; font-size:40px; color:var(--tile-color); line-height:1; }
.sns-tile-l { font-family:'DM Sans',sans-serif; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:#a9d8ee; margin-top:10px; line-height:1.4; }
.sns-tile .sns-stat-br { white-space:nowrap; }
.sns-tiles--hero { max-width:760px; margin:0 auto; }
.sns-tiles .sns-tile-n { font-size:clamp(14px,4.4vw,40px); white-space:nowrap; }
@media (max-width: 900px) {
  .sns-tiles, #sns-stats-bar { gap:12px; }
}
@media (max-width: 600px) {
  #sns-stats-bar { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #sns-stats-bar .sns-tile { padding:16px 12px; }
  #sns-stats-bar .sns-tile-n { font-size:32px; }
  #sns-stats-bar .sns-tile-l { font-size:10px; letter-spacing:.06em; }
  #sns-stats-bar .sns-stat-br { display:block; }
  .sns-tiles .sns-tile { padding:16px 10px; }
  .sns-tiles .sns-tile-n { font-size:clamp(14px,4.6vw,20px); }
  .sns-tiles .sns-tile-l { font-size:9px; letter-spacing:.05em; margin-top:8px; }
}
#sns-filter-bar { display:flex; gap:8px; margin-bottom:20px; flex-wrap:wrap; align-items:center; }
#sns-filter-bar .filter-btn { transition: all .2s; }
#sns-filter-bar .filter-btn:hover { border-color:rgba(124,92,255,.4); color:rgba(255,255,255,.8); }

/* ── Nav Dropdown - Narzędzia ── */



/* =============================================
   LIGHT MODE - tylko tło strony
   Karty zostawiamy bez zmian (wyglądają jak w dark)
   ============================================= */
[data-theme="light"] body::before {
  background:
    radial-gradient(ellipse 80% 50% at 20% 20%, rgba(100,120,255,.06) 0%, transparent 70%),
    radial-gradient(ellipse 60% 40% at 80% 80%, rgba(0,153,204,.04) 0%, transparent 70%) !important;
}
[data-theme="light"] nav {
  background: rgba(238,240,255,.92) !important;
  border-color: rgba(124,92,255,.15) !important;
  box-shadow: 0 4px 24px rgba(124,92,255,.08) !important;
}
[data-theme="light"] .stats-row {
  background: rgba(124,92,255,.08) !important;
  border-color: rgba(124,92,255,.1) !important;
}
[data-theme="light"] .stat-box {
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
  border-color: rgba(124,92,255,.12) !important;
  box-shadow: 0 4px 20px rgba(124,92,255,.06) !important;
}
[data-theme="light"] .stat-box:hover {
  background: rgba(255,255,255,.7) !important;
  box-shadow: 0 8px 32px rgba(124,92,255,.1) !important;
}
/* Narzędzia - fiolet-cyjan */
[data-theme="light"] .stat-box:nth-child(1) {
  background: linear-gradient(135deg, rgba(124,92,255,.06), rgba(0,229,255,.04), rgba(255,255,255,.55)) !important;
}
/* Prompty - cyjan-teal */
[data-theme="light"] .stat-box:nth-child(2) {
  background: linear-gradient(135deg, rgba(0,229,255,.06), rgba(45,212,191,.04), rgba(255,255,255,.55)) !important;
}
/* Skills - teal-fiolet */
[data-theme="light"] .stat-box:nth-child(3) {
  background: linear-gradient(135deg, rgba(45,212,191,.06), rgba(124,92,255,.04), rgba(255,255,255,.55)) !important;
}
/* Data - fiolet-złoto */
[data-theme="light"] .stat-box:nth-child(4) {
  background: linear-gradient(135deg, rgba(124,92,255,.06), rgba(201,168,76,.04), rgba(255,255,255,.55)) !important;
}
/* Gradient liczby - fiolet-cyjan */

/* Prompty - cyjan-teal */
[data-theme="light"] .stat-num.c {
  background: linear-gradient(135deg, #00e5ff, #2dd4bf) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
/* Skills - złoty */
[data-theme="light"] .stat-num.p {
  background: linear-gradient(135deg, #c9a84c, #e8c96b) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
/* Data - fiolet-złoty */
[data-theme="light"] .stat-num[style*="color:#7c5cff"] {
  background: linear-gradient(135deg, #7c5cff, #c9a84c) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
[data-theme="light"] .stat-num[style*="color:#c9a84c"] {
  background: linear-gradient(135deg, #c9a84c, #b8922a) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
[data-theme="light"] .stat-label {
  color: #4a4560 !important;
}
[data-theme="light"] footer {
  background: var(--bg2) !important;
  border-top: 1px solid var(--glass-border) !important;
}
[data-theme="light"] .footer-grid a { color: #3d3660 !important; }
[data-theme="light"] .footer-grid a:hover { color: #6b46e5 !important; }
[data-theme="light"] .footer-col h4 { color: #6b6490 !important; }
[data-theme="light"] .footer-brand p { color: #4a4560 !important; }
[data-theme="light"] .footer-blog-title { color: #1a1530 !important; }
[data-theme="light"] .footer-blog-link { border-bottom-color: rgba(124,92,255,.1) !important; }
[data-theme="light"] .footer-blog-link:hover .footer-blog-title { color: #6b46e5 !important; }
[data-theme="light"] .footer-bottom { border-top-color: rgba(124,92,255,.12) !important; color: #6b6490 !important; }
[data-theme="light"] .footer-bottom a { color: #4a4560 !important; }
[data-theme="light"] .footer-bottom span { color: #6b6490 !important; }
[data-theme="light"] .social-icon {
  border-color: rgba(124,92,255,.15) !important;
  background: rgba(255,255,255,.5) !important;
}
[data-theme="light"] .social-icon[data-brand] {
  background: rgba(0,0,0,.2) !important;
  border-color: rgba(255,255,255,.1) !important;
}
[data-theme="light"] #skill-modal { background: #0f0f18 !important; }
[data-theme="light"] #skill-modal-overlay { background: rgba(240,238,255,.85) !important; }
[data-theme="light"] #cookie-banner {
  background: rgba(255,255,255,.97) !important;
  border-top-color: var(--glass-border) !important;
}
/* newsletter-card light - ciemne (reguła niżej) */
[data-theme="light"] .bs-search {
  background: rgba(255,255,255,.85) !important;
  color: #1a1530 !important;
}
[data-theme="light"] .cat-filter {
  background: rgba(255,255,255,.6) !important;
  color: #3d3660 !important;
}
[data-theme="light"] .cat-filter.active { background: #c9a84c !important; color: #fff !important; }
[data-theme="light"] .chk { color: #16a34a; }
[data-theme="light"] .crs { color: #dc2626; opacity: .7; }
[data-theme="light"] table { border-color: var(--border); }
[data-theme="light"] th { background: var(--surface2); border-color: var(--border); }
[data-theme="light"] td { border-color: rgba(124,92,255,.08); }
[data-theme="light"] .sm-instruction {
  background: var(--bg) !important;
  border-color: var(--border) !important;
  color: var(--text2) !important;
}

/* Newsletter - ciemne tło w light mode jak inne karty */
[data-theme="light"] .newsletter-card {
  background: linear-gradient(135deg, #7c5cff 0%, #00e5ff 100%) !important;
  border-color: rgba(255,255,255,.25) !important;
}
[data-theme="light"] .newsletter-title { color: #fff !important; }
[data-theme="light"] .newsletter-desc { color: rgba(255,255,255,.9) !important; }
[data-theme="light"] .newsletter-stats { color: rgba(255,255,255,.85) !important; }
[data-theme="light"] .newsletter-stats strong { color: #fff !important; }
[data-theme="light"] .newsletter-legal { color: rgba(255,255,255,.6) !important; }
[data-theme="light"] .newsletter-legal a { color: #fff !important; }
[data-theme="light"] .nl-badge { color: #fff !important; border-color: rgba(255,255,255,.35) !important; background: rgba(255,255,255,.15) !important; }
[data-theme="light"] .nl-badge-dot { background: #fff !important; }
[data-theme="light"] .newsletter-glow { opacity: .4 !important; }

/* Sekcja viral "Czy AI zastąpi" - zostaje ciemna w light mode (inline style) */

/* Terminal hero - usunięto wymuszony ciemny override (v1743): karty pod
   wyszukiwarką mają teraz te same kolory co .search-box (szklane
   rgba(255,255,255,.07)/.16), zamiast osobnego, twardo-ciemnego tła.
   Bazowe kolory .terminal/.t-bar/.tc/.tk/.tv/.t-title z index.html
   (identyczne w obu motywach) wystarczają - nic tu już nie nadpisujemy. */

/* Social cards - ciemne w light mode */
[data-theme="light"] .social-card {
  box-shadow: 0 4px 24px rgba(0,0,0,.15) !important;
}
[data-theme="light"] .social-card:hover {
  transform: translateY(-4px);
}
/* FB - light */
[data-theme="light"] .sc-fb {
  background: linear-gradient(135deg, #e8f0fe 60%, rgba(24,119,242,.15)) !important;
  border-color: rgba(24,119,242,.3) !important;
}
[data-theme="light"] .sc-fb:hover {
  border-color: rgba(24,119,242,.6) !important;
  box-shadow: 0 8px 40px rgba(24,119,242,.15) !important;
}
/* IG - light */
[data-theme="light"] .sc-ig {
  background: linear-gradient(135deg, #fce8f3 60%, rgba(225,48,108,.12)) !important;
  border-color: rgba(225,48,108,.3) !important;
}
[data-theme="light"] .sc-ig:hover {
  border-color: rgba(225,48,108,.6) !important;
  box-shadow: 0 8px 40px rgba(225,48,108,.2) !important;
}
/* YT - light */
[data-theme="light"] .sc-yt {
  background: linear-gradient(135deg, #fde8e8 60%, rgba(255,0,0,.1)) !important;
  border-color: rgba(255,0,0,.25) !important;
}
[data-theme="light"] .sc-yt:hover {
  border-color: rgba(255,0,0,.5) !important;
  box-shadow: 0 8px 40px rgba(255,0,0,.15) !important;
}
/* LI - light */
[data-theme="light"] .sc-li {
  background: linear-gradient(135deg, #e8f2fc 60%, rgba(10,102,194,.15)) !important;
  border-color: rgba(10,102,194,.3) !important;
}
[data-theme="light"] .sc-li:hover {
  border-color: rgba(10,102,194,.6) !important;
  box-shadow: 0 8px 40px rgba(10,102,194,.2) !important;
}
[data-theme="light"] .sc-platform { color: #1a1530 !important; }
[data-theme="light"] .sc-desc { color: #4a4560 !important; }
[data-theme="light"] .sc-icon { background: rgba(255,255,255,.7) !important; border-color: rgba(0,0,0,.08) !important; }

/* Blog preview karty - ciemne w light mode */
[data-theme="light"] .blog-preview-grid a {
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
  border-color: rgba(103,232,249,.3) !important;
  box-shadow: 0 4px 24px rgba(103,232,249,.08) !important;
}
[data-theme="light"] .blog-preview-grid a:hover {
  border-color: rgba(103,232,249,.55) !important;
  box-shadow: 0 12px 40px rgba(103,232,249,.18) !important;
}
[data-theme="light"] .blog-preview-grid [style*="color:var(--text)"] { color: #1a1530 !important; }
[data-theme="light"] .blog-preview-grid [style*="color:var(--text2)"] { color: #4a4560 !important; }
[data-theme="light"] .blog-preview-grid [style*="color:var(--text3)"] { color: #6b6580 !important; }
/* Obrazek blogowy - lodowe szkło */
[data-theme="light"] .blog-preview-grid [style*="background:linear-gradient(135deg,rgba(103,232,249,.1)"] {
  background: linear-gradient(135deg, rgba(103,232,249,.15), rgba(103,232,249,.06), rgba(240,238,255,.4)) !important;
  border-bottom-color: rgba(103,232,249,.2) !important;
}
/* Badge kategorii - lodowy na szkle */
[data-theme="light"] .blog-preview-grid span[style*="background:rgba(103,232,249,.1)"] {
  background: rgba(103,232,249,.12) !important;
  border-color: rgba(103,232,249,.35) !important;
  color: #0e7490 !important;
}
/* Przycisk "Czytaj więcej" */
[data-theme="light"] .blog-preview-grid span[style*="background:linear-gradient(90deg,#3dd6e8"] {
  background: linear-gradient(90deg, #0e9cb8, #67e8f9) !important;
  color: #fff !important;
}
/* Pasek górny - lodowy gradient */
[data-theme="light"] .blog-preview-grid [style*="background:linear-gradient(90deg,#67e8f9"] {
  background: linear-gradient(90deg, #67e8f9, #0ea5c7) !important;
}

/* hg-wrap karuzela - przezroczyste tło (banery same są ciemne) */
[data-theme="light"] .hg-wrap { background: transparent !important; }

/* Newsletter input (główna sekcja) - biały przezroczysty na jasnym gradiencie */
[data-theme="light"] .newsletter-input {
  background: rgba(255,255,255,.2) !important;
  border-color: rgba(255,255,255,.35) !important;
  color: #fff !important;
}
[data-theme="light"] .newsletter-input::placeholder { color: rgba(255,255,255,.6) !important; }
/* Footer newsletter input - jasny (footer jest jasny) */
[data-theme="light"] .footer-nl-input {
  background: transparent !important;
  border-color: transparent !important;
  color: #1a1530 !important;
}
[data-theme="light"] .footer-nl-btn {
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e) !important;
  background-size: 300% 300% !important;
  background-color: transparent !important;
  animation: lmGradBorder 4s ease-in-out infinite !important;
  color: #0a1a00 !important;
}
[data-theme="light"] .deco-ring--1 { border-color: rgba(255,255,255,.2) !important; }

/* Viral sekcja - przezroczysta, gradient na karcie wewnątrz */
[data-theme="light"] .viral-section { background: transparent !important; }
[data-theme="light"] .viral-section > div {
  background: linear-gradient(135deg, #0d3d4f 0%, #0a2d3d 50%, #071f2d 100%) !important;
  border-color: rgba(255,255,255,.25) !important;
}
/* Tytuł - biały */
[data-theme="light"] .viral-section h2 { color: #fff !important; }
/* "AI zastąpi" - fioletowy */
[data-theme="light"] .viral-section h2 span {
  background: none !important;
  -webkit-background-clip: unset !important;
  -webkit-text-fill-color: #a78bff !important;
}
/* Opis */
[data-theme="light"] .viral-section p { color: rgba(255,255,255,.9) !important; }
[data-theme="light"] .viral-section [style*="color:var(--text2)"] { color: rgba(255,255,255,.9) !important; }
/* Liczniki - fioletowe */
[data-theme="light"] .viral-section [style*="color:var(--text,#fff)"] { color: #a78bff !important; }
[data-theme="light"] .viral-section [style*="color:var(--text3)"] { color: rgba(167,139,255,.7) !important; }
/* Input */
[data-theme="light"] .viral-section input {
  background: rgba(255,255,255,.2) !important;
  border-color: rgba(167,139,255,.5) !important;
  color: #fff !important;
}
[data-theme="light"] .viral-section input::placeholder { color: rgba(255,255,255,.6) !important; }
/* Badge "Viral sprawdzacz" - fioletowy */
[data-theme="light"] .viral-section span[style*="background:rgba(239,68,68"] {
  background: rgba(124,92,255,.2) !important;
  border-color: rgba(124,92,255,.5) !important;
  color: #a78bff !important;
}
/* Przycisk - fioletowy gradient */
[data-theme="light"] .viral-section button {
  background: linear-gradient(90deg, #7c5cff, #00e5ff) !important;
  color: #fff !important;
}
/* Orby dekoracyjne - jaśniejsze */
[data-theme="light"] .viral-section [style*="radial-gradient"] { opacity: 0.3 !important; }

/* === PRZENIESIONE Z INDEX.HTML - ciemne karty w light mode === */

/* Hero orbs */
[data-theme="light"] .hero .orb1 { background: rgba(124,92,255,0.12) !important; }
[data-theme="light"] .hero .orb2 { background: rgba(0,180,220,0.08) !important; }
[data-theme="light"] .hero .orb3 { background: rgba(45,212,191,0.07) !important; }

/* Terminal - usunięto duplikat wymuszonego ciemnego tła (v1743, patrz
   pierwszy blok ~linia 2436): karty terminala mają teraz kolory
   .search-box, bazowe wartości z index.html wystarczają bez nadpisań. */

/* Offer-card (Cztery filary) - ciemne */
[data-theme="light"] .offer-card {
  border-color: rgba(124,92,255,.35) !important;
  box-shadow: 0 4px 24px rgba(0,0,0,.15) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
[data-theme="light"] .offer-card--cyan   { background: linear-gradient(135deg,rgba(0,229,255,.2) 0%,rgba(0,229,255,.07) 50%,#e0fbff 100%) !important; border-color: rgba(0,180,210,.25) !important; }
[data-theme="light"] .offer-card--violet { background: linear-gradient(135deg,rgba(124,92,255,.2) 0%,rgba(124,92,255,.07) 50%,#ede9ff 100%) !important; border-color: rgba(107,70,229,.2) !important; }
[data-theme="light"] .offer-card--teal   { background: linear-gradient(135deg,rgba(45,212,191,.2) 0%,rgba(45,212,191,.07) 50%,#d9faf4 100%) !important; border-color: rgba(13,148,136,.2) !important; }
[data-theme="light"] .offer-card--gold   { background: linear-gradient(135deg,rgba(201,168,76,.22) 0%,rgba(201,168,76,.08) 50%,#fdf6dd 100%) !important; border-color: rgba(180,140,40,.2) !important; }
[data-theme="light"] .offer-card:hover   {
  transform: translateY(-4px) !important;
  box-shadow: 0 12px 40px rgba(124,92,255,.12) !important;
}
[data-theme="light"] .offer-card .card-title { color: #1a1530 !important; }
[data-theme="light"] .offer-card .card-desc  { color: #4a4560 !important; }
[data-theme="light"] .offer-card .card-num   { color: var(--card-color) !important; }
[data-theme="light"] .offer-card .card-usecase { color: #5a5278 !important; }
[data-theme="light"] .offer-card .card-usecase strong { color: var(--card-color) !important; }
[data-theme="light"] .offer-card .card-link { color: #1a1530 !important; }

/* Eco-trio + Eco-flow - gradient fioletowo-niebieski */
[data-theme="light"] .eco-trio {
  background: linear-gradient(135deg, #7c5cff 0%, #00b4dc 100%) !important;
  border-color: rgba(255,255,255,.2) !important;
}
[data-theme="light"] .eco-item strong { color: #fff !important; }
[data-theme="light"] .eco-item span   { color: rgba(255,255,255,.85) !important; }
[data-theme="light"] .eco-item:not(:last-child) { border-right-color: rgba(255,255,255,.2) !important; }
[data-theme="light"] .eco-flow {
  background: linear-gradient(135deg, #00e5ff 0%, #2dd4bf 100%) !important;
  border-color: rgba(255,255,255,.25) !important;
}
[data-theme="light"] .eco-step-name { color: #fff !important; }
[data-theme="light"] .eco-step-sub  { color: rgba(255,255,255,.8) !important; }
[data-theme="light"] .eco-flow-label { color: rgba(255,255,255,.7) !important; }
[data-theme="light"] .eco-step-icon {
  background: rgba(201,168,76,.15) !important;
  border-color: rgba(201,168,76,.5) !important;
}
[data-theme="light"] .eco-step--result .eco-step-icon {
  background: rgba(201,168,76,.2) !important;
  border-color: rgba(201,168,76,.6) !important;
  box-shadow: 0 0 18px rgba(201,168,76,.2) !important;
}
[data-theme="light"] .eco-flow-arrow { color: #c9a84c !important; }
[data-theme="light"] .eco-flow-arrow--result { color: #c9a84c !important; }
[data-theme="light"] .eco-sep { background: rgba(201,168,76,.3) !important; }

/* Cat-item - ciemne */
[data-theme="light"] .cat-item-blob { opacity:.08 !important; }
[data-theme="light"] .cats-bg .cat-name { color:#f0eeff !important; }
[data-theme="light"] .cats-bg .cat-sub  { color:rgba(0,229,255,.6) !important; }
[data-theme="light"] .cat-name { color:#1a1530 !important; }
[data-theme="light"] .cat-sub  { color:#4a4560 !important; }

/* Skill-card - ciemne */
[data-theme="light"] .skill-card-new {
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-color: rgba(124,92,255,.2) !important;
  box-shadow: 0 4px 20px rgba(124,92,255,.06);
}
[data-theme="light"] .skill-card-new:hover {
  background: rgba(255,255,255,.65) !important;
  border-color: rgba(124,92,255,.4) !important;
  box-shadow: 0 12px 40px rgba(124,92,255,.12) !important;
}
[data-theme="light"] .skill-name-new { color: #1a1530 !important; }
[data-theme="light"] .skill-desc-new { color: #4a4560 !important; }
[data-theme="light"] .skill-badge-new { color: #7c5cff !important; }
[data-theme="light"] .skill-feats li { color: #4a4560 !important; }

/* CTA band - gradient na karcie */
[data-theme="light"] .cta-band-inner {
  background: linear-gradient(135deg, #00e5ff 0%, #2dd4bf 100%) !important;
  border-color: rgba(255,255,255,.25) !important;
  box-shadow: 0 8px 64px rgba(0,229,255,.15) !important;
}
[data-theme="light"] .cta-band h2 { color: #fff !important; }
[data-theme="light"] .cta-band p { color: rgba(255,255,255,.9) !important; }
[data-theme="light"] .cta-band .btn-white {
  background: #fff !important;
  color: #0e7490 !important;
}
[data-theme="light"] .cta-band-inner::before {
  background: radial-gradient(circle, rgba(255,255,255,.12) 0%, transparent 70%) !important;
}
[data-theme="light"] .cta-band-inner::after {
  background: radial-gradient(circle, rgba(255,255,255,.1) 0%, transparent 70%) !important;
}

/* Hero badge + btn-ghost */
[data-theme="light"] .hero-badge {
  background: rgba(124,92,255,.08) !important;
  border-color: rgba(124,92,255,.2) !important;
}
[data-theme="light"] .btn-ghost {
  border-color: rgba(124,92,255,.3) !important;
  color: var(--accent) !important;
}

/* Top Picks slider - ciemny gradient w light mode */
[data-theme="light"] .tps-wrap { background: linear-gradient(180deg, #ede9ff 0%, #e0fbff 100%) !important; }
[data-theme="light"] .tps-wrap [style*="color:var(--text)"] { color: #1a1530 !important; }
[data-theme="light"] .tps-wrap [style*="color:var(--accent)"] { color: #6b46e5 !important; }
[data-theme="light"] .tps-desc { color: #4a4560 !important; }
[data-theme="light"] .tps-features li { color: #5a5278 !important; }
[data-theme="light"] .tps-name { color: #1a1530 !important; }

/* Tabela VS - gradient fioletowo-cyan w light mode */
[data-theme="light"] .vs-bg {
  background: transparent !important;
}
[data-theme="light"] .vs-bg table {
  background: linear-gradient(135deg, #7c5cff 0%, #00b4dc 100%) !important;
  border-color: rgba(255,255,255,.2) !important;
  border-radius: 12px;
  overflow: hidden;
}
[data-theme="light"] .vs-bg th { background: rgba(0,0,0,.15) !important; color: rgba(255,255,255,.85) !important; border-color: rgba(255,255,255,.15) !important; }
[data-theme="light"] .vs-bg th.hl { color: #ffe066 !important; }
[data-theme="light"] .vs-bg td { color: rgba(255,255,255,.9) !important; border-color: rgba(255,255,255,.1) !important; }
[data-theme="light"] .vs-bg td.hl { color: #fff !important; background: rgba(0,0,0,.08) !important; }
[data-theme="light"] .vs-bg .chk { color: #ffe066 !important; }
[data-theme="light"] .vs-bg .crs { color: #ff8a8a !important; opacity: 1 !important; }

/* koniec light mode */


/* ===== GLASS NOISE TEXTURE ===== */
.glass-noise::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.035;
  pointer-events: none;
  border-radius: inherit;
  z-index: 0;
}
.glass-noise { overflow: hidden; }
.glass-noise > * { position: relative; z-index: 1; }

/* ===== ORB FLOAT ANIMATIONS ===== */
@keyframes orbFloat1 {
  0%, 100% { transform: translate(0, 0); }
  50%       { transform: translate(-28px, 18px); }
}
@keyframes orbFloat2 {
  0%, 100% { transform: translate(0, 0); }
  50%       { transform: translate(20px, -24px); }
}
@keyframes orbFloat3 {
  0%, 100% { transform: translate(0, 0); }
  50%       { transform: translate(14px, 16px); }
}
.orb1 { animation: orbFloat1 18s ease-in-out infinite; }
.orb2 { animation: orbFloat2 22s ease-in-out infinite; }
.orb3 { animation: orbFloat3 26s ease-in-out infinite; }

/* === KONTAKT.HTML - light mode === */
[data-theme="light"] .contact-item {
  background: linear-gradient(135deg, rgba(124,92,255,.1) 0%, rgba(240,238,255,.9) 50%, rgba(0,229,255,.06) 100%) !important;
  border-color: rgba(124,92,255,.2) !important;
  box-shadow: 0 4px 20px rgba(124,92,255,.06) !important;
}
[data-theme="light"] .contact-item:hover {
  border-color: rgba(124,92,255,.4) !important;
  box-shadow: 0 8px 32px rgba(124,92,255,.12) !important;
}
[data-theme="light"] .contact-form {
  background: linear-gradient(135deg, rgba(124,92,255,.08) 0%, rgba(238,240,255,.95) 50%, rgba(0,229,255,.04) 100%) !important;
  border-color: rgba(124,92,255,.2) !important;
  box-shadow: 0 8px 32px rgba(124,92,255,.08) !important;
}

/* === PROMPTY-AI.HTML - kolorowe stat boxy === */
[data-theme="light"] .stat-box.prompty-stat-1 { background: linear-gradient(135deg,#d9faf4,#b3f0e4) !important; border-color: rgba(45,212,191,.3) !important; }
[data-theme="light"] .stat-box.prompty-stat-2 { background: linear-gradient(135deg,#fdf6dd,#faeebb) !important; border-color: rgba(201,168,76,.3) !important; }
[data-theme="light"] .stat-box.prompty-stat-3 { background: linear-gradient(135deg,#e0fbff,#ccf5ff) !important; border-color: rgba(0,229,255,.3) !important; }
[data-theme="light"] .stat-box.prompty-stat-4 { background: linear-gradient(135deg,#ede9ff,#ddd5ff) !important; border-color: rgba(124,92,255,.2) !important; }
[data-theme="light"] .stat-box.prompty-stat-1 .stat-num { color: #0d9488 !important; -webkit-text-fill-color: #0d9488 !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.prompty-stat-2 .stat-num { color: #8a6d1e !important; -webkit-text-fill-color: #8a6d1e !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.prompty-stat-3 .stat-num { color: #0099b0 !important; -webkit-text-fill-color: #0099b0 !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.prompty-stat-4 .stat-num { color: #6b46e5 !important; -webkit-text-fill-color: #6b46e5 !important; background: none !important; -webkit-background-clip: unset !important; }
/* skill-hero-card - zielone tło + złote akcenty (light mode) */
[data-theme="light"] .skill-hero-card {
  background: linear-gradient(135deg,#0d7a6a,#0a6659) !important;
  border: none !important;
  box-shadow: 0 8px 40px rgba(13,122,106,.28) !important;
}
[data-theme="light"] .skill-hero-card h2 { color: #fff !important; }
[data-theme="light"] .skill-hero-card h2 span {
  background: none !important;
  -webkit-background-clip: unset !important;
  -webkit-text-fill-color: #ffe040 !important;
}
[data-theme="light"] .skill-hero-card p { color: rgba(255,255,255,.85) !important; }
[data-theme="light"] .skill-hero-badge {
  background: rgba(255,220,80,.2) !important;
  border-color: rgba(255,220,80,.4) !important;
  color: #ffe040 !important;
}
[data-theme="light"] .skill-hero-card a[href="skill-finder.html"] {
  background: #c9a84c !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(201,168,76,.4) !important;
}
/* skill-stat - 4 kolory sekcji SNS */
[data-theme="light"] .stat-box.skill-stat-1 { background: linear-gradient(135deg,#fdf6dd,#faeebb) !important; border-color: rgba(201,168,76,.35) !important; }
[data-theme="light"] .stat-box.skill-stat-2 { background: linear-gradient(135deg,#d9faf4,#b3f0e4) !important; border-color: rgba(45,212,191,.35) !important; }
[data-theme="light"] .stat-box.skill-stat-3 { background: linear-gradient(135deg,#eae6ff,#d4ccff) !important; border-color: rgba(124,92,255,.3) !important; }
[data-theme="light"] .stat-box.skill-stat-4 { background: linear-gradient(135deg,#e0fbff,#ccf5ff) !important; border-color: rgba(0,229,255,.3) !important; }
[data-theme="light"] .stat-box.skill-stat-1 .stat-num { color: #7a5c0a !important; -webkit-text-fill-color: #7a5c0a !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.skill-stat-2 .stat-num { color: #0d6b5e !important; -webkit-text-fill-color: #0d6b5e !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.skill-stat-3 .stat-num { color: #4a28b8 !important; -webkit-text-fill-color: #4a28b8 !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.skill-stat-4 .stat-num { color: #006a8a !important; -webkit-text-fill-color: #006a8a !important; background: none !important; -webkit-background-clip: unset !important; }

/* tool-hero-card - zielone tło + cyan akcenty (light mode) */
[data-theme="light"] .tool-hero-card {
  background: linear-gradient(135deg,#0a5c7a,#084f69) !important;
  border: none !important;
  box-shadow: 0 8px 40px rgba(0,229,255,.18) !important;
}
[data-theme="light"] .tool-hero-card h2 { color: #fff !important; }
[data-theme="light"] .tool-hero-card h2 span {
  background: none !important;
  -webkit-background-clip: unset !important;
  -webkit-text-fill-color: #40e8ff !important;
}
[data-theme="light"] .tool-hero-card p { color: rgba(255,255,255,.85) !important; }
[data-theme="light"] .tool-hero-badge {
  background: rgba(0,229,255,.2) !important;
  border-color: rgba(0,229,255,.45) !important;
  color: #40e8ff !important;
}
[data-theme="light"] .tool-hero-btn {
  background: linear-gradient(90deg,#00c4e0,#5a3fcf) !important;
  box-shadow: 0 4px 16px rgba(0,229,255,.35) !important;
}
/* tool-stat - 4 kolorowe boxy (light mode, identyczne jak skill-stat) */
[data-theme="light"] .stat-box.tool-stat-1 { background: linear-gradient(135deg,#e0fbff,#ccf5ff) !important; border-color: rgba(0,229,255,.35) !important; }
[data-theme="light"] .stat-box.tool-stat-2 { background: linear-gradient(135deg,#d9faf4,#b3f0e4) !important; border-color: rgba(45,212,191,.35) !important; }
[data-theme="light"] .stat-box.tool-stat-3 { background: linear-gradient(135deg,#eae6ff,#d4ccff) !important; border-color: rgba(124,92,255,.3) !important; }
[data-theme="light"] .stat-box.tool-stat-4 { background: linear-gradient(135deg,#fdf6dd,#faeebb) !important; border-color: rgba(201,168,76,.35) !important; }
[data-theme="light"] .stat-box.tool-stat-1 .stat-num { color: #006a8a !important; -webkit-text-fill-color: #006a8a !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.tool-stat-2 .stat-num { color: #0d6b5e !important; -webkit-text-fill-color: #0d6b5e !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.tool-stat-3 .stat-num { color: #4a28b8 !important; -webkit-text-fill-color: #4a28b8 !important; background: none !important; -webkit-background-clip: unset !important; }
[data-theme="light"] .stat-box.tool-stat-4 .stat-num { color: #7a5c0a !important; -webkit-text-fill-color: #7a5c0a !important; background: none !important; -webkit-background-clip: unset !important; }


/* Gradient border & text animation - globalna */
@keyframes lmGradBorder {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}




/* ============================================================
   NOWA STOPKA UNIWERSALNA - v1097
   Dodano: liczniki (4 statystyki) + panel sitemap z kapsułkami
   Zakres: wszystkie strony OPRÓCZ ai-dla-firm/narzedzia-ai/
   prompty-ai/baza-skillsow/blog/kontakt (te mają starą stopkę)
   ============================================================ */

.fsn-footer {
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(ellipse 650px 450px at 6% 8%, rgba(124,92,255,0.16), transparent 55%),
    radial-gradient(ellipse 550px 450px at 92% 96%, rgba(168,255,62,0.08), transparent 55%),
    linear-gradient(135deg, #0a1c2c 0%, #0c2a38 25%, #0d3c44 50%, #0d5258 72%, #0e6f72 100%);
  border-top:1px solid rgba(0,229,255,0.20);
  padding:64px 5% 32px;
  margin:0;
}

.fsn-grid {
  position:relative; z-index:2;
  display:grid;
  grid-template-columns: 360px 1px 1fr;
  gap:48px;
  align-items:start;
}

.fsn-col-divider {
  width:100%; min-width:0;
  background:linear-gradient(180deg, transparent, rgba(124,92,255,0.18) 15%, rgba(0,229,255,0.18) 50%, rgba(168,255,62,0.18) 85%, transparent);
}
.fsn-left-col { width:100%; min-width:0; }

/* LOGO - animowany gradient identyczny z nav */
.fsn-logo {
  font-family:'Syne',sans-serif; font-weight:800; font-size:26px;
  letter-spacing:-0.5px; margin-bottom:14px;
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size:100% 100%;
  -webkit-background-clip:text; -webkit-text-fill-color:transparent;
  background-clip:text;
  display:inline-block;
  text-decoration:none;
}
@keyframes fsnLogoGrad {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
.fsn-desc {
  font-size:14.5px; line-height:1.6; color:#a8c4cc; max-width:300px; margin-bottom:20px;
}
.fsn-socials { display:flex; gap:10px; margin-bottom:30px; }

.fsn-stats { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:28px; }
.fsn-stat {
  border-radius:14px; padding:14px 16px; position:relative; overflow:hidden;
  background:rgba(255,255,255,0.05);
  border-top:3px solid transparent;
}
.fsn-stat.fsn-c-firm  { border-top-color:#a8ff3e; background:linear-gradient(135deg, rgba(124,92,255,0.18), rgba(255,255,255,0.03)); }
.fsn-stat.fsn-c-tools { border-top-color:#00e5ff; background:linear-gradient(135deg, rgba(0,229,255,0.16), rgba(255,255,255,0.03)); }
.fsn-stat.fsn-c-prompt{ border-top-color:#2dd4bf; background:linear-gradient(135deg, rgba(45,212,191,0.18), rgba(255,255,255,0.03)); }
.fsn-stat.fsn-c-skill { border-top-color:#c9a84c; background:linear-gradient(135deg, rgba(201,168,76,0.20), rgba(255,255,255,0.03)); }
.fsn-stat-num {
  font-family:'Syne',sans-serif; font-weight:800; font-size:28px; letter-spacing:-1px;
  display:flex; align-items:baseline; gap:3px;
  color:#f4f9fb;
}
.fsn-stat-num .fsn-dot { font-size:20px; }
.fsn-stat.fsn-c-firm .fsn-dot   { color:#a8ff3e; }
.fsn-stat.fsn-c-tools .fsn-dot  { color:#00e5ff; }
.fsn-stat.fsn-c-prompt .fsn-dot { color:#2dd4bf; }
.fsn-stat.fsn-c-skill .fsn-dot  { color:#c9a84c; }
.fsn-stat-label {
  font-family:'Space Mono',monospace; font-size:9.5px; letter-spacing:0.5px;
  color:#9ab8c0; text-transform:uppercase; margin-top:4px;
}

/* PANEL "sitemap" */
.fsn-canvas {
  width:100%;
  min-width:0;
  background:rgba(6,22,30,0.62);
  border-radius:18px;
  border:1px solid rgba(0,229,255,0.22);
  overflow:hidden;
  backdrop-filter:blur(6px);
  box-shadow:0 12px 40px rgba(0,10,20,0.35);
}
.fsn-canvas-top {
  display:flex; align-items:center; gap:8px;
  padding:14px 20px;
  border-bottom:1px solid rgba(255,255,255,0.08);
  background:rgba(255,255,255,0.03);
}
.fsn-dot3 { width:10px; height:10px; border-radius:50%; }
.fsn-dot3.r{background:#ff5f57;} .fsn-dot3.y{background:#ffbd2e;} .fsn-dot3.g{background:#28c840;}
.fsn-canvas-title {
  margin-left:8px; font-family:'Space Mono',monospace; font-size:11px; color:#7aa8b0; letter-spacing:0.5px;
}
.fsn-canvas-body { padding:26px 28px 28px; }
.fsn-pgroup { margin-bottom:24px; }
.fsn-pgroup-label {
  font-family:'Space Mono',monospace; font-size:10px; letter-spacing:1.2px;
  color:#6fa8b0; text-transform:uppercase; margin-bottom:12px;
}
.fsn-pills { display:flex; flex-wrap:wrap; gap:10px; }

/* === Pigułki Zasoby / Narzędzia SNS - rotujący gradientowy border, kolor per-link === */
@property --fsn-pa { syntax:'<angle>'; initial-value:0deg; inherits:false; }
.fsn-pwrap {
  display:inline-block; padding:1.5px; border-radius:999px;
  animation: fsnPillRot 4s linear infinite;
  transition: filter .2s;
  text-decoration:none;
}
@keyframes fsnPillRot { to { --fsn-pa: 360deg; } }
.fsn-pwrap:hover { filter: brightness(1.35); }

.fsn-pwrap.fsn-c-firm   { background:conic-gradient(from var(--fsn-pa), #a8ff3e, #00e5ff, #a8ff3e); }
.fsn-pwrap.fsn-c-tools  { background:conic-gradient(from var(--fsn-pa), #00e5ff, #2dd4bf, #00e5ff); }
.fsn-pwrap.fsn-c-prompt { background:conic-gradient(from var(--fsn-pa), #2dd4bf, #00e5ff, #2dd4bf); }
.fsn-pwrap.fsn-c-skill  { background:conic-gradient(from var(--fsn-pa), #c9a84c, #ffbd2e, #c9a84c); }
.fsn-pwrap.fsn-c-blog   { background:conic-gradient(from var(--fsn-pa), #0e9cb8, #2dd4bf, #0e9cb8); }
.fsn-pwrap.fsn-c-contact{ background:conic-gradient(from var(--fsn-pa), #00d4f0, #67e8f9, #00d4f0); }

.fsn-pill {
  display:inline-flex; align-items:center; gap:7px;
  font-size:13px; font-weight:500; color:#f0f4ff;
  background:#0c2230; padding:8px 16px; border-radius:999px;
  transition: background .2s;
}
.fsn-pwrap:hover .fsn-pill { background:#13314a; }
.fsn-pill .fsn-ic { font-size:11px; }
.fsn-pwrap.fsn-c-firm .fsn-ic    { color:#a8ff3e; }
.fsn-pwrap.fsn-c-tools .fsn-ic   { color:#00e5ff; }
.fsn-pwrap.fsn-c-prompt .fsn-ic  { color:#2dd4bf; }
.fsn-pwrap.fsn-c-skill .fsn-ic   { color:#ffbd2e; }
.fsn-pwrap.fsn-c-blog .fsn-ic    { color:#5eead4; }
.fsn-pwrap.fsn-c-contact .fsn-ic { color:#67e8f9; }

.fsn-divider-h { height:1px; background:rgba(255,255,255,0.08); margin:20px 0; }

/* === Pigułki Ostatnie artykuły - styl jasny błękit-turkus (nav bloga) === */
.fsn-pill-blog {
  display:inline-flex; align-items:center; gap:8px;
  font-size:13px; font-weight:500; color:rgba(28,35,64,.75);
  background:linear-gradient(180deg, #a8dff5 0%, #8fd4ee 50%, #6fc9d8 100%);
  padding:9px 16px; border-radius:999px;
  border:1px solid rgba(14,156,184,.25);
  transition: all .25s ease;
  text-decoration:none;
}
.fsn-pill-blog:hover {
  color:#0e9cb8;
  box-shadow:0 6px 18px rgba(14,156,184,0.25);
  transform: translateY(-1px);
}
.fsn-pill-blog .fsn-dot-new { width:6px; height:6px; border-radius:50%; background:#0e9cb8; box-shadow:0 0 6px rgba(14,156,184,0.7); flex-shrink:0; }

/* === Newsletter strip === */
.fsn-newsletter {
  position:relative; z-index:2;
  margin-top:40px;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  background:rgba(255,255,255,0.05);
  border:1px solid rgba(0,229,255,0.20);
  border-radius:16px;
  padding:18px 26px;
}
.fsn-nl-text { font-size:13.5px; color:#cfe8ee; }
.fsn-nl-text b { font-family:'Space Mono',monospace; font-size:11px; letter-spacing:1px; color:#a8ff3e; display:block; margin-bottom:3px; }
.fsn-nl-wrap { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.fsn-nl-input-wrap { flex:0 0 230px; position:relative; border-radius:11px; }
.fsn-nl-input-wrap::before {
  content:''; position:absolute; inset:0; border-radius:11px; padding:1.5px;
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size:300% 300%; background-color:transparent;
  animation: fsnNlGrad 5s ease-in-out infinite alternate;
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite: exclude;
  pointer-events:none;
}
.fsn-nl-input {
  width:100%; background:rgba(0,0,0,.25); border:none; border-radius:9px;
  padding:10px 14px; font-size:13px; color:#e4f4f6;
  position:relative; z-index:1; box-sizing:border-box;
  font-family:'DM Sans',sans-serif;
}
.fsn-nl-input::placeholder { color:#6f98a0; }
.fsn-nl-input:focus { outline:none; }
.fsn-nl-btn {
  background-image: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size:300% 300%;
  animation: fsnNlGrad 5s ease-in-out infinite alternate;
  color:#0a1a00; border:none; border-radius:10px;
  padding:10px 20px; font-weight:600; font-size:13px;
  cursor:pointer; transition:opacity .2s; white-space:nowrap;
  font-family:'DM Sans',sans-serif;
}
.fsn-nl-btn:hover { opacity:.85; }
.fsn-nl-btn:disabled { opacity:.55; cursor:not-allowed; }
.fsn-nl-msg { font-size:.82rem; min-height:18px; width:100%; }
@keyframes fsnNlGrad {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

.fsn-bottom {
  position:relative; z-index:2;
  display:flex; justify-content:space-between; align-items:center;
  margin-top:36px; padding-top:22px;
  border-top:1px solid rgba(255,255,255,0.10);
  font-size:12.5px; color:#8fb4bc;
  font-family:'Space Mono',monospace;
}
.fsn-bottom .fsn-heart { color:#ff6f9c; }
.fsn-bottom-center {
  position:absolute; left:50%; top:22px; transform:translateX(-50%);
  font-size:12.5px; color:#8fb4bc; font-family:'Space Mono',monospace;
  text-decoration:none;
}
.fsn-bottom-center:hover { color:#00e5ff; }

@media (max-width: 860px) {
  .fsn-footer { padding:36px 5% 24px; margin:0; }
  .fsn-grid { grid-template-columns:1fr; gap:28px; }
  .fsn-col-divider { display:none; }
  .fsn-stats { grid-template-columns:1fr 1fr; }
  .fsn-canvas-body { padding:20px 18px 22px; }
  .fsn-pill, .fsn-pill-blog { font-size:12px; padding:7px 12px; }
  .fsn-newsletter { flex-direction:column; align-items:stretch; text-align:left; }
  .fsn-nl-wrap { flex-direction:column; }
  .fsn-nl-input-wrap { flex:1 1 auto; width:100%; }
  .fsn-bottom { flex-direction:column; gap:8px; align-items:flex-start; }
  .fsn-bottom-center { position:static; transform:none; }
  .fsn-logo { font-size:22px; }
}

@media (max-width: 480px) {
  .fsn-stats { grid-template-columns:1fr; }
  .fsn-stat-num { font-size:24px; }
  .fsn-canvas-title { display:none; }
}

/* ============================================================
   LIGHT MODE OVERRIDE - fsn-footer (motyw uniwersalny)
   Musi siedzieć PO globalnej regule [data-theme="light"] footer
   ze stylu głównego, żeby wygrać kolizję na samej kolejności,
   bez podnoszenia specyficzności selektora.
   ============================================================ */
[data-theme="light"] .fsn-footer {
  background:
    radial-gradient(ellipse 650px 450px at 6% 8%, rgba(124,92,255,0.16), transparent 55%),
    radial-gradient(ellipse 550px 450px at 92% 96%, rgba(168,255,62,0.08), transparent 55%),
    linear-gradient(135deg, #0a1c2c 0%, #0c2a38 25%, #0d3c44 50%, #0d5258 72%, #0e6f72 100%) !important;
  border-top: 1px solid rgba(0,229,255,0.20) !important;
}


/* ============================================================
   MOBILE MENU v1268 - hybryda B+C
   Ciemny panel w OBU motywach + kolorowy header strony (--mma)
   + kropki kolorów sekcji. Zmienne per strona ustawiane inline
   na <div class="mobile-menu">. Nadpisuje starsze reguły wyżej.
   ============================================================ */
.mobile-menu,
[data-theme="light"] .mobile-menu {
  background: rgba(8,20,36,.97) !important;
  border-left: 1px solid rgba(103,232,249,.15) !important;
  box-shadow: -8px 0 40px rgba(0,0,0,.5) !important;
}
.mm-head {
  background: var(--mma, #7c5cff);
  margin: -90px -28px 18px;
  padding: 96px 28px 14px;
}
.mm-head-t {
  font-family: 'Space Mono', monospace;
  font-size: 12px;
  letter-spacing: .1em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--mmad, #fff);
}
.mm-head-s {
  font-family: 'Space Mono', monospace;
  font-size: 10px;
  margin-top: 2px;
  color: var(--mmad, #fff);
  opacity: .75;
}
.mobile-menu a,
[data-theme="light"] .mobile-menu a {
  display: flex !important;
  align-items: center;
  gap: 10px;
  color: #dceaf5 !important;
  background: rgba(255,255,255,.05) !important;
  border: 1px solid rgba(255,255,255,.08) !important;
}
.mm-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.mobile-menu a:hover,
[data-theme="light"] .mobile-menu a:hover {
  color: var(--mma, #7c5cff) !important;
  background: rgba(255,255,255,.09) !important;
  border-color: rgba(255,255,255,.18) !important;
}
.mobile-menu a.active,
[data-theme="light"] .mobile-menu a.active {
  color: var(--mma, #7c5cff) !important;
  background: var(--mma-soft, rgba(124,92,255,.14)) !important;
  border-color: var(--mma-line, rgba(124,92,255,.5)) !important;
  font-weight: 700;
}
.mobile-menu .mobile-theme-row,
[data-theme="light"] .mobile-menu .mobile-theme-row {
  border-bottom-color: rgba(255,255,255,.1) !important;
}
.mobile-menu .mobile-theme-row span,
[data-theme="light"] .mobile-menu .mobile-theme-row span {
  color: #7fa8c0 !important;
}
.mobile-menu .mobile-lang-row,
[data-theme="light"] .mobile-menu .mobile-lang-row {
  border-top-color: rgba(255,255,255,.1) !important;
}

/* Menu: przełącznik PL/EN na górze panelu (pod nagłówkiem), większe flagi.
   Wiersz "Tryb ciemny" usunięty - przełącznik motywu jest w pasku nawigacji. */
.mobile-menu .mobile-lang-row,
[data-theme="light"] .mobile-menu .mobile-lang-row {
  border-top: none !important;
  border-bottom: 1px solid rgba(255,255,255,.1) !important;
  margin: 0 0 16px;
  padding: 0 0 16px;
  gap: 14px;
  flex-shrink: 0;
}
.mobile-menu .mobile-lang-row a,
[data-theme="light"] .mobile-menu .mobile-lang-row a {
  display: flex !important;
  margin: 0;
  padding: 8px 12px;
  line-height: 0;
}
.mobile-menu .mobile-lang-row svg {
  width: 36px;
  height: 25px;
}
/* Zapas na dole listy: pływający przycisk czatu (prawy dolny róg) nie zasłania ostatniej pozycji. */
.mobile-menu,
[data-theme="light"] .mobile-menu {
  padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px));
}

/* === NA-FIGURE - obrazki treściowe w artykułach blogowych (v1334) === */
.na-figure{margin:32px 0;border-radius:14px;overflow:hidden;border:1px solid var(--border);background:var(--surface)}
.na-figure img{width:100%;height:auto;display:block}
.na-figure figcaption{padding:10px 16px;font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.03em;color:var(--text3);text-align:center}
.na-figure-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:32px 0}
.na-figure-row .na-figure{margin:0}
.na-figure--badge{max-width:180px;margin:14px auto 0}
@media(max-width:680px){.na-figure-row{grid-template-columns:1fr}}

/* === NA-FAQ - widoczna sekcja pytań i odpowiedzi w artykułach (v1341, poprawka v1342: ramka+glow ice-cyan) === */
.na-faq-list{display:flex;flex-direction:column;gap:14px}
.na-faq-item{
  background:linear-gradient(155deg,rgba(103,232,249,.09),rgba(103,232,249,.02) 55%,#13131e) !important;
  border:1px solid rgba(103,232,249,.3) !important;
  box-shadow:0 0 20px rgba(103,232,249,.08) !important;
  border-radius:14px;padding:22px 26px;
  transition:border-color .2s,box-shadow .2s
}
.na-faq-item:hover{
  border-color:#67e8f9 !important;
  box-shadow:0 0 28px rgba(103,232,249,.22) !important
}
.na-faq-item h3{font-family:'Syne',sans-serif;font-size:17px;font-weight:700;margin-bottom:8px;color:var(--text)}
.na-faq-item p{color:var(--text2);font-size:14.5px;line-height:1.65;margin:0}
/* 2026-08-07: było białe szkło + koralowa ramka (stary sitewide jasny motyw
   "na-"). Teraz light mode = dark mode kolorystycznie, więc kopiujemy 1:1
   wartości z reguły bazowej (bez prefiksu) wyżej. */
[data-theme="light"] .na-faq-item{
  background:linear-gradient(155deg,rgba(103,232,249,.09),rgba(103,232,249,.02) 55%,#13131e) !important;
  border-color:rgba(103,232,249,.3) !important;
  box-shadow:0 0 20px rgba(103,232,249,.08) !important;
  backdrop-filter:none
}
[data-theme="light"] .na-faq-item:hover{
  border-color:#67e8f9 !important;
  box-shadow:0 0 28px rgba(103,232,249,.22) !important
}

/* === NA-HIGHLIGHT-BOX - sticky przy długim tekście w .na-problem-card (v1344) ===
   Problem: po rozbudowie treści (3 akapity) lewa kolumna jest dużo wyższa niż
   prawy boks-podpowiedź → duża pusta przestrzeń pod boksem wewnątrz karty.
   Fix: boks "jedzie" z czytelnikiem podczas scrolla zamiast wisieć samotnie u góry. */
.na-problem-card .na-highlight-box{
  position: sticky !important;
  top: 96px;
}
@media (max-width: 900px){
  .na-problem-card .na-highlight-box{
    position: static !important;
  }
}

/* ============================================================
   SNS-FAVORITES - gwiazdki (narzędzia) i serduszka (artykuły)
   Dodane 2026-09-01. Globalny komponent, ładowany przez
   js/sns-favorites.js na każdej stronie z .sns-fav-btn.
   ============================================================ */
.sns-fav-btn {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 6;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.15);
  background: rgba(6,10,18,.55);
  backdrop-filter: blur(6px);
  color: #9ab8c0;
  font-size: 16px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform .15s, border-color .15s, color .15s, background .15s;
}
.sns-fav-btn:hover { transform: scale(1.1); border-color: #00e5ff; color: #00e5ff; }
.sns-fav-btn.is-filled { color: #f7c948; border-color: rgba(247,201,72,.5); background: rgba(247,201,72,.12); }
.sns-fav-btn.is-filled:hover { color: #ffdf8a; }
.sns-fav-btn[data-type="article"].is-filled { color: #67e8f9; border-color: rgba(103,232,249,.5); background: rgba(103,232,249,.14); }
.sns-fav-btn[data-type="article"]:hover { color: #67e8f9; border-color: #67e8f9; }
.sns-fav-btn svg { width: 16px; height: 16px; flex-shrink: 0; }
.sns-fav-btn.sns-fav-pop { animation: snsFavPop .35s ease; }
@keyframes snsFavPop { 0% { transform: scale(1); } 45% { transform: scale(1.3); } 100% { transform: scale(1); } }

/* ============================================================
   SYSTEM "TOP WYBÓR" - wstążka + kod rabatowy na złotej karcie
   Dodane 2026-09-26 (VH.pl, wzorzec do skopiowania na Pictory/Crush).
   Kryterium: karta z AKTYWNYM kodem rabatowym dla klienta.
   Zastępuje starą, ukośną wstążkę top:38px/rotate(45deg) z sesji 2026-09-03
   (krzywa, nigdy niezatwierdzona wizualnie).
   ============================================================ */
@keyframes shimmerGold{0%{background-position:200% center}100%{background-position:-200% center}}
@keyframes sweepLight{0%{transform:translateX(-200%)}65%,100%{transform:translateX(350%)}}
@keyframes borderGlow{0%,100%{box-shadow:0 0 4px rgba(201,168,76,.3),0 0 10px rgba(201,168,76,.15)}50%{box-shadow:0 0 10px rgba(201,168,76,.7),0 0 22px rgba(201,168,76,.35)}}
.ribbon-corner-wrap{position:absolute;bottom:0;right:0;width:110px;height:110px;overflow:hidden;z-index:20;pointer-events:none}
.ribbon-corner{position:absolute;bottom:20px;right:-34px;width:150px;padding:7px 0;text-align:center;background:linear-gradient(90deg,#b8832a 0%,#e8bf60 25%,#fde99a 50%,#e8bf60 75%,#b8832a 100%);background-size:250% auto;animation:shimmerGold 2s linear infinite;color:#1a0e00;font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;box-shadow:0 -2px 8px rgba(201,168,76,.5),0 2px 10px rgba(0,0,0,.5);transform:rotate(-45deg);transform-origin:center}
.code-badge{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;border:1px solid rgba(201,168,76,.58);background:rgba(201,168,76,.11);margin:2px 0 4px;animation:borderGlow 2.4s ease-in-out infinite}
.code-badge .lbl{font-family:'Space Mono',monospace;font-size:9px;font-weight:700;color:rgba(201,168,76,.75);letter-spacing:.1em;text-transform:uppercase;line-height:1;white-space:nowrap}
.code-badge .code{font-family:'Space Mono',monospace;font-size:9px;font-weight:700;color:#f0c84a;letter-spacing:.1em;text-transform:uppercase;line-height:1;white-space:nowrap}
.code-copy-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;margin-left:1px;border:none;background:rgba(240,200,74,.16);border-radius:4px;color:#f0c84a;cursor:pointer;flex-shrink:0;position:relative;z-index:2;transition:background .15s ease}
.code-copy-btn:hover{background:rgba(240,200,74,.3)}
.code-copy-btn .icon-check{display:none}
.code-copy-btn.copied{background:rgba(74,222,128,.22);color:#4ade80}
.code-copy-btn.copied .icon-copy{display:none}
.code-copy-btn.copied .icon-check{display:block}
.code-badge .sweep{position:absolute;top:0;left:0;width:45%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,238,130,.5),transparent);transform:translateX(-200%);animation:sweepLight 2.6s ease-in-out infinite;pointer-events:none}
.cta-code{display:inline-flex;align-items:center;position:relative;overflow:hidden;padding:4px 9px;border-radius:5px;background:linear-gradient(90deg,#9a6a18 0%,#e0b448 20%,#fde27a 45%,#e0b448 70%,#9a6a18 100%);background-size:250% auto;font-family:'Space Mono',monospace;font-size:8px;font-weight:700;color:#1a0e00;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;flex-shrink:0;animation:shimmerGold 1.8s linear infinite;box-shadow:0 0 8px rgba(201,168,76,.5)}

/* Każda .tool-card w categories/*.html ma u góry pasek kategorii/promo
   (.tool-card-bar, ok. 28-34px wysokości) - gwiazdka o top:10px kolidowałaby
   z paskiem, więc na kartach narzędzi schodzi niżej, pod pasek. Karty bez
   paska (np. artykuły blogowe) zostają przy top:10px z bazowej reguły. */
/* Wariant "chip" - gwiazdka NIE floatuje absolutnie nad kartą (to właśnie
   powodowało kolizję z paskiem promo i z badge'ami PL/Freemium, bo wysokość
   paska różni się między kategoriami). Zamiast tego siedzi W RZĘDZIE razem
   z badge'ami PL/Freemium (ten sam kontener flex, gap:5px), więc nie może
   nigdy nachodzić na inny element - przesuwa się razem z layoutem. */
.sns-fav-btn-chip {
  position: static;
  width: 26px;
  height: 26px;
  margin-left: 2px;
}
.sns-fav-btn-chip svg { width: 14px; height: 14px; }
.blog-card-meta .sns-fav-btn-chip { margin-left: auto; }


/* Wariant "inline" - do artykułów (obok tytułu, nie na karcie z overflow:hidden) */
.sns-fav-btn.sns-fav-btn-inline { position: static; display: inline-flex; margin-left: 10px; vertical-align: middle; }

/* Toast - komunikat "zaloguj się" */
.sns-fav-toast {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px);
  background: #0f0f18; border: 1px solid rgba(124,92,255,.35); border-radius: 10px;
  padding: 13px 20px; max-width: 90vw; font-size: 13.5px; color: #f0eeff;
  box-shadow: 0 12px 40px rgba(0,0,0,.5); z-index: 10000;
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
}
.sns-fav-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
.sns-fav-toast a { color: #00e5ff; text-decoration: underline; }

/* Modal zamiany (limit osiągnięty) */
.sns-fav-modal-overlay {
  display: none; position: fixed; inset: 0; z-index: 10001;
  background: rgba(5,5,8,.85); backdrop-filter: blur(12px);
  align-items: center; justify-content: center; padding: 20px;
}
.sns-fav-modal-overlay.show { display: flex; }
.sns-fav-modal {
  width: 100%; max-width: 420px; background: rgba(6,22,30,0.97);
  border: 1px solid rgba(0,229,255,0.25); border-radius: 16px;
  padding: 26px 24px; box-shadow: 0 24px 80px rgba(0,0,0,.7);
}
.sns-fav-modal-title { font-family: 'Syne', sans-serif; font-size: 16.5px; font-weight: 800; color: #f4f9fb; margin-bottom: 8px; line-height: 1.35; }
.sns-fav-modal-sub { font-size: 13px; color: #9ab8c0; margin-bottom: 18px; line-height: 1.5; }
.sns-fav-modal-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.sns-fav-btn-swap {
  flex: 1; min-width: 140px; background: linear-gradient(90deg,#7c5cff,#00e5ff); color: #fff;
  border: none; border-radius: 8px; padding: 11px 14px; font-family: 'Space Mono', monospace;
  font-size: 11.5px; font-weight: 700; letter-spacing: .03em; cursor: pointer; transition: transform .15s;
}
.sns-fav-btn-swap:hover { transform: translateY(-1px); }
.sns-fav-btn-cancel {
  background: transparent; border: 1px solid rgba(255,255,255,.15); color: #9ab8c0;
  border-radius: 8px; padding: 11px 16px; font-family: 'Space Mono', monospace; font-size: 11.5px;
  cursor: pointer; transition: border-color .15s, color .15s;
}
.sns-fav-btn-cancel:hover { border-color: #00e5ff; color: #00e5ff; }
.sns-fav-modal-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px,1fr)); gap: 8px; margin-bottom: 18px; }
.sns-fav-modal-slot {
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.1); border-radius: 10px;
  padding: 10px 8px; display: flex; flex-direction: column; align-items: center; gap: 4px;
  cursor: pointer; transition: border-color .15s, background .15s; text-align: center;
}
.sns-fav-modal-slot:hover { border-color: #f7c948; background: rgba(247,201,72,.08); }
.sns-fav-modal-slot-emoji { font-size: 20px; }
.sns-fav-modal-slot-name { font-size: 10.5px; color: #f4f9fb; line-height: 1.2; }
.sns-fav-modal-upgrade {
  margin-top: 16px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.08);
  font-size: 12.5px; color: #9ab8c0; line-height: 1.5;
}
.sns-fav-modal-upgrade a { color: #f7c948; text-decoration: none; font-weight: 700; }
.sns-fav-modal-upgrade a:hover { text-decoration: underline; }

/* ===== BANER QUIZU (qb) - wspólny szkielet na index / narzedzia-ai / ai-dla-firm; kolory per strona: qb-index, qb-narz, qb-firm ===== */
.qb-sec{position:relative;z-index:2;padding:30px 5%}
.qb-sec .qb{max-width:1100px;margin:0 auto}
.qb{--qb-bd:rgba(124,92,255,.45);--qb-tint:rgba(124,92,255,.24);--qb-base:rgba(6,10,20,.8);--qb-glow:rgba(0,229,255,.28);--qb-btn1:#7c5cff;--qb-btn2:#00e5ff;--qb-btnt:#fff;--qb-tag:#00e5ff;--qb-tagbd:rgba(0,229,255,.45);--qb-tagbg:rgba(0,229,255,.1);--qb-shadow:rgba(124,92,255,.35);
 position:relative;display:flex;align-items:center;gap:22px;padding:26px 30px;border-radius:18px;text-decoration:none;color:#f3f4ff;overflow:hidden;
 background:linear-gradient(135deg,var(--qb-tint) 0%,rgba(255,255,255,.04) 45%,var(--qb-base) 100%);border:1px solid var(--qb-bd);box-shadow:0 18px 50px rgba(0,0,0,.4);transition:transform .25s,box-shadow .25s}
.qb::before{content:'';position:absolute;top:-60px;right:-40px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,var(--qb-glow) 0%,transparent 70%);pointer-events:none}
.qb:hover{transform:translateY(-3px);box-shadow:0 24px 60px rgba(0,0,0,.5)}
.qb-ico{width:58px;height:58px;border-radius:15px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:28px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);position:relative}
.qb-body{flex:1;min-width:0;position:relative}
.qb-tag{display:inline-block;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--qb-tag);border:1px solid var(--qb-tagbd);background:var(--qb-tagbg);padding:3px 9px;border-radius:4px;margin-bottom:9px}
.qb-t{font-family:'Syne',sans-serif;font-weight:700;font-size:clamp(18px,2.6vw,24px);line-height:1.25;margin:0 0 6px;color:#f3f4ff}
.qb-s{font-size:14px;line-height:1.5;color:rgba(255,255,255,.78);margin:0 0 10px;max-width:560px}
.qb-m{font-family:'Space Mono',monospace;font-size:11px;color:rgba(255,255,255,.55)}
.qb-btn{flex-shrink:0;position:relative;font-family:'Space Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--qb-btnt);background:linear-gradient(90deg,var(--qb-btn1),var(--qb-btn2));border-radius:10px;padding:15px 24px;white-space:nowrap;box-shadow:0 8px 24px var(--qb-shadow)}
.qb-index{}
.qb-narz{--qb-bd:rgba(0,229,255,.42);--qb-tint:rgba(0,229,255,.2);--qb-base:rgba(8,32,56,.88);--qb-glow:rgba(45,212,191,.3);--qb-btn1:#00e5ff;--qb-btn2:#2dd4bf;--qb-btnt:#03202a;--qb-tag:#67e8f9;--qb-tagbd:rgba(103,232,249,.45);--qb-tagbg:rgba(103,232,249,.1);--qb-shadow:rgba(0,229,255,.32)}
.qb-firm{--qb-bd:rgba(168,255,62,.42);--qb-tint:rgba(124,92,255,.26);--qb-base:rgba(13,10,30,.9);--qb-glow:rgba(168,255,62,.26);--qb-btn1:#a8ff3e;--qb-btn2:#7fff00;--qb-btnt:#0a1a00;--qb-tag:#a8ff3e;--qb-tagbd:rgba(168,255,62,.45);--qb-tagbg:rgba(168,255,62,.1);--qb-shadow:rgba(168,255,62,.3)}
@media(max-width:760px){.qb{flex-direction:column;align-items:flex-start;gap:14px;padding:22px 20px}.qb-btn{width:100%;text-align:center}.qb-sec{padding:22px 4%}}

/* ===== CENNIK (sns-cn) - blok cen w porównywarkach i artykułach: tabela planów + "Ceny sprawdzone" + link do oficjalnego cennika.
   Dane: .htceny.json -> skrypt deploy KROK 12e wstawia HTML między <!--CENY:id--> a <!--/CENY:id-->. Datę odświeża js/sns-ceny.js z /ceny-status.json (bot cenowy). ===== */
.sns-cn{--cn-acc:var(--arena-yellow,#67e8f9);--cn-tx:var(--text-primary,var(--text,#f3f4ff));--cn-mu:var(--text-muted,var(--text2,#b9b8d6));--cn-dim:var(--text-dim,#8f8fb0);position:relative;margin:26px 0;padding:22px 24px 18px;border-radius:18px;border:1px solid rgba(255,255,255,.14);background:linear-gradient(150deg,rgba(255,255,255,.065),rgba(255,255,255,.02));box-shadow:0 14px 40px rgba(0,0,0,.28);color:var(--cn-tx);overflow:hidden;text-align:left}
.sns-cn::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--cn-acc),transparent)}
.sns-cn-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;margin-bottom:14px}
.sns-cn-kicker{display:block;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--cn-acc);margin-bottom:4px}
.sns-cn-title{margin:0;font-size:18px;line-height:1.3;font-weight:700;color:var(--cn-tx)}
.sns-cn-date{font-family:'Space Mono',monospace;font-size:11px;color:var(--cn-mu);border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.05);border-radius:999px;padding:5px 12px;white-space:nowrap;display:inline-flex;align-items:center;gap:8px}
.sns-cn-date::before{content:'';width:7px;height:7px;border-radius:50%;background:#4ade80;box-shadow:0 0 0 3px rgba(74,222,128,.2);flex-shrink:0}
.sns-cn-group + .sns-cn-group{margin-top:18px}
.sns-cn-gt{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.04em;color:var(--cn-mu);margin:0 0 6px}
.sns-cn-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sns-cn-t{width:100%;max-width:680px;border-collapse:collapse;font-size:14px;margin:0;background:transparent}
.sns-cn-t th{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;white-space:nowrap;color:var(--cn-dim);text-align:right;padding:8px 10px;border:0;border-bottom:1px solid rgba(255,255,255,.14);background:transparent}
.sns-cn-t td{padding:11px 10px;border:0;border-bottom:1px solid rgba(255,255,255,.08);text-align:right;color:var(--cn-tx);font-variant-numeric:tabular-nums;white-space:nowrap}
.sns-cn-t th:first-child,.sns-cn-t td:first-child{text-align:left;min-width:84px}
.sns-cn-t tr:last-child td{border-bottom:0}
.sns-cn-plan{display:block;font-weight:700;white-space:normal}
.sns-cn-sub{display:block;font-size:12px;font-weight:400;line-height:1.35;color:var(--cn-mu);margin-top:2px;white-space:normal}
.sns-cn-foot{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1)}
.sns-cn-note{flex:1;min-width:200px;font-size:12.5px;line-height:1.5;color:var(--cn-mu)}
.sns-cn-link{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;white-space:nowrap;color:var(--cn-acc);border:1px solid var(--cn-acc);border-radius:999px;padding:7px 14px;transition:background .5s ease,color .5s ease}
.sns-cn-link:hover,.sns-cn-link:focus-visible{background:var(--cn-acc);color:#0a0a12;outline:none}
.sns-cn-duo{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;margin:22px 0}
.sns-cn-duo .sns-cn{margin:0}
html[data-theme="light"] .sns-cn th,html[data-theme="light"] .sns-cn-t th{background:transparent;border-color:rgba(255,255,255,.14)}
html[data-theme="light"] .sns-cn-t td{border-color:rgba(255,255,255,.08);color:var(--cn-tx)}
@media(max-width:760px){.sns-cn-duo{grid-template-columns:1fr}}
@media(max-width:560px){.sns-cn{padding:18px 16px 14px}.sns-cn-title{font-size:16px}.sns-cn-t th,.sns-cn-t td{padding-left:6px;padding-right:6px}}

/* ===== Okruszek artykułów (blog/, ai-dla-firm/) - zawsze <div>, NIGDY <nav> (v1857) =====
   Jedno miejsce stylu. Akcent: blog = lodowy cyan #67e8f9, AI dla Firm = limonka #a8ff3e.
   W obu działach tryb jasny jest ciemny (patrz CODE_REF_kolory), więc ten sam kolor w obu motywach.
   Długi tytuł zawija się w wierszu (tekst w HTML bez zmian). */

/* v1858: H1 w .jwf-hero (AI dla Firm) na wąskim telefonie - zawijanie słów zamiast łamania w środku ("przepisywanie" + "m") */
@media (max-width: 420px) {
  .jwf-hero h1 { overflow-wrap: break-word; hyphens: auto; word-break: normal; }
}

/* ===== WSPÓLNE NAGŁÓWKI SEKCJI (2026-10-21) =====
   Biały początek (kolor nagłówka strony) + animowany gradient limonka-cyan-fiolet na końcówce.
   Wzór: "Najlepsze aplikacje <span>AI na Androida</span>" w narzedzia-ai.html (kolory skopiowane stamtąd).
   Użycie: <h2>Początek <span class="hd-grad">końcówka</span></h2>; wyśrodkowanie: opakuj w .section-center. */
.hd-grad {
  background: linear-gradient(135deg, #a8ff3e, #00e5ff, #c084fc, #a8ff3e);
  background-size: 300% 300%;
  animation: lmGradBorder 5s ease-in-out infinite alternate;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.section-center { text-align: center; }
.section-center .section-tag { justify-content: center; }
.section-center .section-intro { margin-left: auto; margin-right: auto; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ===== WSPÓLNA WYSZUKIWARKA (index.html, en/index.html, narzedzia-ai.html) =====
   Markup: <div class="sns-hsearch" data-sns-hsearch ...>, logika: js/main.js (snsHeroSearch).
   Selektory zawężone do .sns-hsearch, bo globalne .search-box (nakładka szukajki) ma inne znaczenie. */
.sns-hsearch { text-align: center; }
.sns-hsearch .search-box { max-width: 720px; margin: 0 auto; position: relative; display: flex; align-items: center; gap: 10px; background: rgba(255,255,255,.04); border: 1px solid rgba(103,232,249,.25); border-radius: 18px; padding: 8px 8px 8px 22px; backdrop-filter: blur(20px); box-shadow: 0 20px 60px -20px rgba(0,0,0,0.7); }
.sns-hsearch .search-box svg { flex-shrink: 0; }
.sns-hsearch .search-box input { flex: 1 1 auto; min-width: 0; width: auto; text-overflow: ellipsis; border: none; background: transparent; color: #fff; font-family: 'Inter', sans-serif; font-size: 16px; padding: 12px 0; }
.sns-hsearch .search-box input::placeholder { color: rgba(255,255,255,0.45); }
.sns-hsearch .search-box input:focus { outline: none; }
.sns-hsearch .search-btn { flex-shrink: 0; border: none; cursor: pointer; font-family: 'Inter', sans-serif; font-weight: 700; font-size: 15px; color: #030a18; background: linear-gradient(90deg,#2f8fff,#00e5ff); padding: 14px 26px; border-radius: 13px; transition: filter .15s; }
.sns-hsearch .search-btn:hover { filter: brightness(1.08); }
.sns-hsearch .chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 22px; }
.sns-hsearch .chip { border: 1px solid rgba(103,232,249,.25); background: rgba(255,255,255,.04); color: rgba(255,255,255,0.8); font-family: 'Inter', sans-serif; font-size: 13px; font-weight: 500; padding: 9px 16px; border-radius: 999px; cursor: pointer; transition: .15s; }
.sns-hsearch .chip:hover, .sns-hsearch .chip.active { background: rgba(255,255,255,0.12); border-color: rgba(103,232,249,.45); }
.sns-hsearch .hero-console { display: flex; justify-content: center; max-width: 720px; margin: 28px auto 0; }
.sns-hsearch .results-panel { flex: 1 1 100%; max-width: 100%; text-align: left; display: flex; }
.sns-hsearch .terminal { display: flex; flex-direction: column; width: 100%; background: rgba(255,255,255,.04); border: 1px solid rgba(103,232,249,.25); border-radius: 14px; overflow: hidden; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); box-shadow: 0 20px 60px -20px rgba(0,0,0,0.7); }
.sns-hsearch .t-bar { display: flex; align-items: center; gap: 8px; padding: 9px 14px; background: rgba(255,255,255,.03); border-bottom: 1px solid rgba(255,255,255,.08); }
.sns-hsearch .t-bar .dot { width: 9px; height: 9px; border-radius: 50%; }
.sns-hsearch .dot.dr { background: #ff5f57; } .sns-hsearch .dot.dy { background: #ffbd2e; } .sns-hsearch .dot.dg { background: #28c840; }
.sns-hsearch .t-title { font-family: 'Space Mono', monospace; font-size: 10.5px; color: rgba(255,255,255,.4); margin-left: 6px; }
.sns-hsearch .t-body { padding: 16px 18px; font-family: 'Space Mono', monospace; font-size: 12px; line-height: 1.9; min-height: 150px; }
.sns-hsearch .t-body-scroll { display: grid; grid-template-columns: 1fr 1fr; column-gap: 26px; align-content: start; height: 236px; overflow-y: auto; }
.sns-hsearch .t-body-scroll::-webkit-scrollbar { width: 6px; }
.sns-hsearch .t-body-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); border-radius: 3px; }
.sns-hsearch .res-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.06); text-decoration: none; }
.sns-hsearch .res-row:last-child { border-bottom: none; }
.sns-hsearch .res-row .res-emoji { font-size: 15px; flex-shrink: 0; width: 20px; text-align: center; }
.sns-hsearch .res-row .res-text { min-width: 0; flex: 1; }
.sns-hsearch .res-row .res-name { font-size: 12.5px; font-weight: 600; color: #eef7ff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sns-hsearch .res-row .res-cat { font-size: 10px; color: #67e8f9; font-family: 'Space Mono', monospace; }
.sns-hsearch .res-row .res-arrow { font-size: 12px; color: rgba(255,255,255,.3); flex-shrink: 0; }
.sns-hsearch .res-empty { grid-column: 1 / -1; justify-content: center; text-align: center; height: 204px; font-size: 12px; color: rgba(255,255,255,.45); padding: 12px 0; font-family: 'Space Mono', monospace; line-height: 1.6; display: flex; align-items: center; }
@media (max-width: 640px) {
  .sns-hsearch .search-box { padding: 6px 6px 6px 16px; gap: 8px; }
  .sns-hsearch .search-btn { padding: 12px 16px; font-size: 14px; }
  .sns-hsearch .t-body-scroll { grid-template-columns: 1fr; height: 260px; }
  .sns-hsearch .res-empty { height: 228px; }
}

/* ===== BLOK "KATALOG / APLIKACJE NA TELEFON" (index.html, narzedzia-ai.html) =====
   Prawa kolumna (lista aplikacji z pętlą przewijania) jest wspólna; dane w js/main.js (SNS_PHONE_APPS). */
.kb-block{display:grid;grid-template-columns:1.15fr 1fr;gap:30px;padding:30px;border-radius:20px;background:rgba(255,255,255,.05);border:1px solid rgba(103,232,249,.25);box-shadow:0 12px 40px rgba(0,0,0,.35);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);text-align:left}
.kb-right{display:flex;flex-direction:column;min-width:0}
.kb-title{font-family:'Syne',sans-serif;font-weight:800;font-size:clamp(15px,4.4vw,20px);line-height:1.15;color:#eef7ff;margin-bottom:8px}
.kb-sub{font-size:12.5px;color:#a9d8ee;margin:0 0 12px;line-height:1.5}
.kb-list{position:relative;height:300px;overflow:hidden;border-radius:14px}
.kb-list::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,rgba(8,14,26,.85) 0,transparent 12%,transparent 80%,rgba(8,14,26,.95) 100%);z-index:2}
.kb-track{display:flex;flex-direction:column;gap:10px}
.kb-track.kb-run{animation:kbScroll 34s linear infinite}
.kb-list:hover .kb-track{animation-play-state:paused}
@keyframes kbScroll{to{transform:translateY(-50%)}}
.kb-app{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;color:#eef7ff;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);transition:border-color .2s,background .2s;text-decoration:none}
.kb-app:hover{border-color:rgba(103,232,249,.5);background:rgba(255,255,255,.1)}
.kb-ai{width:84px;height:46px;min-width:84px;border-radius:9px;background:rgba(255,255,255,.07);display:flex;align-items:center;justify-content:center;overflow:hidden}
.kb-ai img{width:74px;height:38px;object-fit:contain}
.kb-info{flex:1;min-width:0;display:flex;flex-direction:column}
.kb-an{font-size:14px;font-weight:700}.kb-ac{font-size:11px;color:#a9d8ee;opacity:.75;margin-top:2px}
.kb-badge{font-family:'Space Mono',monospace;font-size:9px;letter-spacing:.06em;padding:5px 10px;border-radius:999px;white-space:nowrap}
.kb-end{display:flex;align-items:center;gap:6px;flex-shrink:0}
.kb-pwa{display:inline-flex;align-items:center;gap:3px;padding:4px 7px 4px 5px;border-radius:999px;font-family:'Space Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.06em;line-height:1;color:#2dd4bf;background:rgba(45,212,191,.12);border:1px solid rgba(45,212,191,.45);white-space:nowrap}
.kb-pwa svg{width:9px;height:11px;flex-shrink:0}
@media(max-width:600px){.kb-app{gap:10px;padding:10px}.kb-ai{width:56px;min-width:56px}.kb-ai img{width:48px}.kb-end{flex-direction:column;align-items:flex-end;gap:4px}.kb-an{overflow-wrap:anywhere}.kb-title{white-space:normal}}
@media(max-width:900px){.kb-block{grid-template-columns:1fr;padding:18px}.kb-list{height:260px}}
@media(prefers-reduced-motion:reduce){.kb-track.kb-run{animation:none}}
/* Wariant narzedzia-ai.html: prawa kolumna bez tytułu i opisu, lista wyrównana do góry panelu (wysokość = dawny tytuł + opis + lista). index.html bez zmian. */
.kb-block--apps .kb-list{height:422px}
@media(max-width:900px){.kb-block--apps .kb-list{height:300px}}

/* Karta marki z pieczątką (zlecenie 22.10.2026, pilot: Fattly, Voicely, POZR).
   Tło = ciemny kolor marki, przycisk = akcent marki, --brand-alt = zapas (biel lub jasny kolor marki).
   Ramka, górny pasek i pieczątka zostają standardowe. Karta zostaje ciemna także w jasnym trybie strony.
   Specyficzność (0,3,1) wygrywa z [data-theme="light"] .tool-card(:hover) z lokalnych styli kategorii. */
.tools-grid a.tool-card.brand-card{background:var(--brand-bg)!important;border:none!important;position:relative}
.tools-grid a.tool-card.brand-card .brand-card-bg{position:absolute;inset:0;border-radius:inherit;z-index:0;background:var(--brand-bg)}
.tools-grid a.tool-card.brand-card .brand-btn{background:var(--brand-btn);color:var(--brand-btn-text)}
.brand-fattly{--brand-bg:#1A2436;--brand-btn:#FF6A4A;--brand-btn-text:#0A0A0A;--brand-alt:#F8FBFE}
.brand-voicely{--brand-bg:#111111;--brand-btn:#00C159;--brand-btn-text:#0A0A0A;--brand-alt:#F4F2EE}
.brand-pozr{--brand-bg:#111111;--brand-btn:#C88C73;--brand-btn-text:#0A0A0A;--brand-alt:#C5FF3A}
/* Karty marek z pieczątką, część 2A (zlecenie 22.10.2026). Zasady jak wyżej; tekst na przycisku #0A0A0A, biały tylko gdy kontrast ciemnego < 4,5:1. */
.brand-clipwise{--brand-bg:#2f296a;--brand-btn:#d97742;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-jobsaicopilot{--brand-bg:#1b0e3a;--brand-btn:#E6FAE3;--brand-btn-text:#0A0A0A;--brand-alt:#E9DAFF}
.brand-promptingeasy{--brand-bg:#111318;--brand-btn:#1D9E75;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-holguard{--brand-bg:#1A1B2A;--brand-btn:#FBFBFD;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-orkas{--brand-bg:#0A172A;--brand-btn:#00d4f0;--brand-btn-text:#0A0A0A;--brand-alt:#F7F9FC}
.brand-chatgptimage{--brand-bg:#1D3A87;--brand-btn:#D1FFFF;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-qameraai{--brand-bg:#0F0F0F;--brand-btn:#E7B169;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-robottrainingjobs{--brand-bg:#000000;--brand-btn:#1668F0;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-magnus{--brand-bg:#020203;--brand-btn:#00d4f0;--brand-btn-text:#0A0A0A;--brand-alt:#FDFCF9}
.brand-getaskai{--brand-bg:#12110F;--brand-btn:#00d4f0;--brand-btn-text:#0A0A0A;--brand-alt:#F3F3F1}
.brand-yap{--brand-bg:#131B29;--brand-btn:#4C82E8;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-magisterai{--brand-bg:#14112B;--brand-btn:#4F39F6;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-allgrafika{--brand-bg:#0E162A;--brand-btn:#2563eb;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-taurofaktura{--brand-bg:#1f2937;--brand-btn:#EC008C;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
/* LiteScribe: własny szablon firmy (gradient tła ze środkiem #1B120B, gradient przycisku #F97316 -> #FACC15) przeniesiony z inline na klasę, kolory bez zmian; poświaty, ramka i górny pasek standardowe fiolet/cyan (decyzja Artura 22.10). */
.brand-litescribe{--brand-bg:#0D0C0A;--brand-bg-mid:#1B120B;--brand-btn:#F97316;--brand-btn-text:#1a1209;--brand-alt:#FACC15}
.tools-grid a.tool-card.brand-litescribe,.tools-grid a.tool-card.brand-litescribe .brand-card-bg{background:linear-gradient(135deg,var(--brand-bg) 0%,var(--brand-bg-mid) 50%,var(--brand-bg) 100%)!important}
.tools-grid a.tool-card.brand-litescribe .brand-btn{background:linear-gradient(90deg,var(--brand-btn),var(--brand-alt))}
/* Karty marek z pieczątką, część 2B (zlecenie 22.10.2026). Kolory TYMCZASOWE odczytane ze stron narzędzi, do podmiany po odpowiedzi firm. Tekst przycisku #0A0A0A, biały gdy kontrast ciemnego < 4,5:1. */
.brand-curlshot{--brand-bg:#0F172A;--brand-btn:#1d4ed8;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-sigamegen{--brand-bg:#101218;--brand-btn:#c3b4fa;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-argorant{--brand-bg:#0E162A;--brand-btn:#2563eb;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-tunenoodle{--brand-bg:#101012;--brand-btn:#f5d907;--brand-btn-text:#0A0A0A;--brand-alt:#7f4af2}
.brand-ai3dstudio{--brand-bg:#131416;--brand-btn:#d1fe17;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-colorwillow{--brand-bg:#141A16;--brand-btn:#8fbf9f;--brand-btn-text:#0A0A0A;--brand-alt:#FAF8F1}
.brand-figran{--brand-bg:#142033;--brand-btn:#315efb;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-humai{--brand-bg:#16170f;--brand-btn:#16804c;--brand-btn-text:#FFFFFF;--brand-alt:#f4f2ec}
.brand-cocuyo{--brand-bg:#050505;--brand-btn:#a8ff3e;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-vaivox{--brand-bg:#253029;--brand-btn:#d8b45f;--brand-btn-text:#0A0A0A;--brand-alt:#f3ecdd}
.brand-siphotoeditor{--brand-bg:#0F172A;--brand-btn:#fbbf24;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-scryp{--brand-bg:#09090b;--brand-btn:#00d4f0;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-imagesupscale{--brand-bg:#0a0a0a;--brand-btn:#00d4f0;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-slyszec{--brand-bg:#000000;--brand-btn:#a8ff3e;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
/* Karty marek z pieczątką, zlecenie 30.10.2026 (v37). Kolory TYMCZASOWE odczytane ze stron firm (reguła n), Lineora od firmy (27.10): przycisk terakota #A84629, bo fiolet marki #5148A6 zlewa się z pieczątką. */
.brand-aiandshine{--brand-bg:#0F172A;--brand-btn:#7C3AED;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-flashcrafter{--brand-bg:#030711;--brand-btn:#2E5CFF;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-lineora{--brand-bg:#141320;--brand-btn:#A84629;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-hostnest{--brand-bg:#1A1614;--brand-btn:#E87357;--brand-btn-text:#0A0A0A;--brand-alt:#FAFAF6}
.brand-diriai{--brand-bg:#0F151D;--brand-btn:#8EA4FF;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-termigram{--brand-bg:#050807;--brand-btn:#4ADE80;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-werdyktbiznesu{--brand-bg:#151328;--brand-btn:#5a48e0;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
/* agent-qa (vostride, zlecenie 03.11.2026): kolor przycisku TYMCZASOWY (brak koloru od firmy), pomarańcz dobrany pod kontrast i odległy od cyanu pieczątki; ocenia Artur. */
.brand-agentqa{--brand-bg:#0F1218;--brand-btn:#FB923C;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
/* Zlecenie 03.11.2026 (v43): Gadoo, Phrase, Hej Firmo!, LyricsGift. Kolory TYMCZASOWE odczytane ze stron firm (computed style), do podmiany po odpowiedzi firm. Przyciski dobrane tak, by nie zlewały się z kolorem pieczątki (Phrase: błękit zamiast zieleni przy limonce; Hej Firmo!: jasny szary zamiast pomarańczu przy bursztynie). */
.brand-gadoo{--brand-bg:#07110D;--brand-btn:#C8F230;--brand-btn-text:#07110D;--brand-alt:#FFFFFF}
.brand-phrase{--brand-bg:#141712;--brand-btn:#96C8F4;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-hejfirmo{--brand-bg:#1B1F33;--brand-btn:#ECEEF4;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-lyricsgift{--brand-bg:#2A1710;--brand-btn:#B54B2B;--brand-btn-text:#FFFFFF;--brand-alt:#E0A458}
/* Zlecenie 05.11.2026 (v44): Jev Agent, Code Guardian, LearnCast AI, Website AI Agent, Web2Post AI, Webbyn. Kolory TYMCZASOWE odczytane ze stron firm (brak od firm), przyciski dobrane tak, by nie zlewały się z kolorem pieczątki; ocenia Artur na zrzucie. */
.brand-jevagent{--brand-bg:#0C0C0A;--brand-btn:#E8A13C;--brand-btn-text:#0A0A0A;--brand-alt:#F5B862}
.brand-codeguardian{--brand-bg:#15161A;--brand-btn:#6C63FF;--brand-btn-text:#FFFFFF;--brand-alt:#4FB79C}
.brand-learncast{--brand-bg:#121813;--brand-btn:#2D6E52;--brand-btn-text:#FFFFFF;--brand-alt:#E2E3D7}
.brand-websiteaiagent{--brand-bg:#1A1815;--brand-btn:#B5823F;--brand-btn-text:#0A0A0A;--brand-alt:#B6AB99}
.brand-web2post{--brand-bg:#0F172A;--brand-btn:#A855F7;--brand-btn-text:#0A0A0A;--brand-alt:#EC4899}
.brand-webbyn{--brand-bg:#0D1517;--brand-btn:#F0EFEB;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
/* Zlecenie 09.11.2026 (v48): SlangSwitch, Go Top SEO, Trify3D, ImageTo3D. Kolory TYMCZASOWE odczytane ze stron firm (computed style; Go Top SEO: niebieski przycisk, pieczątka fiolet), brak od firm; ocenia Artur na zrzucie. */
.brand-slangswitch{--brand-bg:#141418;--brand-btn:#8C5CFF;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-gotopseo{--brand-bg:#0F1826;--brand-btn:#0070D6;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-trify3d{--brand-bg:#0B0B10;--brand-btn:#C8FF4D;--brand-btn-text:#111111;--brand-alt:#FFFFFF}
.brand-imageto3d{--brand-bg:#0B0B12;--brand-btn:#7C5CFF;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
/* Zlecenie 11.11.2026 (v49): Trellis 2, PSL Scale, FlexFiles, HyperBody, SyncBooster. Kolory TYMCZASOWE odczytane ze stron firm (computed style 11.11.2026; HyperBody #F07A2A z formularza), brak potwierdzenia od firm; ocenia Artur na zrzucie. Tiquo: zwykla karta bez pieczatki i bez koloru marki. */
.brand-trellis2{--brand-bg:#04070A;--brand-btn:#00D3F2;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-pslscale{--brand-bg:#0F131A;--brand-btn:#899AFF;--brand-btn-text:#090D14;--brand-alt:#FFFFFF}
.brand-flexfiles{--brand-bg:#0E1729;--brand-btn:#5E5ED2;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
.brand-hyperbody{--brand-bg:#16110E;--brand-btn:#F07A2A;--brand-btn-text:#0A0A0A;--brand-alt:#FFFFFF}
.brand-syncbooster{--brand-bg:#0A0E18;--brand-btn:#2563EB;--brand-btn-text:#FFFFFF;--brand-alt:#FFFFFF}
/* Zlecenie 11.11.2026 (v50): Tiquo z pieczatka. Tlo = tlo karty w kategorii (#0a1628), przycisk karuzeli TYMCZASOWY (akcent ze strony firmy #F4B645, 11.11.2026), ocenia Artur. */
.brand-tiquo{--brand-bg:#0A1628;--brand-btn:#F4B645;--brand-btn-text:#20211D;--brand-alt:#FFFFFF}
/* Dekoracja złotej karty w wariancie Fireflies (różowy/niebieski/fioletowy + złoto): ramka, poświaty i górny pasek. Przeniesiona 1:1 z Fireflies.ai na Crush (22.10.2026). Złote karty bez tej klasy zostają w standardzie fiolet/cyan. Kolory wariantu zapisane też w SesjaCode [DLA-POMYSLOW]. */
.tools-grid a.tool-card.tool-card-premium.deco-fireflies{background:linear-gradient(135deg,rgba(232,42,115,.12),rgba(59,115,255,.07),rgba(201,168,76,.08),#06060f)!important;border:1px solid rgba(201,168,76,.35)!important;position:relative}
.tools-grid a.tool-card.deco-fireflies .deco-orb-a{background:radial-gradient(circle,rgba(232,42,115,.32) 0%,transparent 70%)}
.tools-grid a.tool-card.deco-fireflies .deco-orb-b{background:radial-gradient(circle,rgba(59,115,255,.22) 0%,transparent 70%)}
.tools-grid a.tool-card.deco-fireflies .tool-card-bar{background:linear-gradient(90deg,rgba(232,42,115,.22),rgba(59,115,255,.12),rgba(155,74,176,.1),rgba(201,168,76,.15))}
.tools-grid a.tool-card.deco-fireflies .deco-bar-text{background-image:linear-gradient(90deg,#e82a73,#3b73ff,#9b4ab0,#c9a84c)}
/* Telefon: lista "Funkcje" kart marek nie wchodzi pod pieczątkę (112 px, prawy górny róg listy). Tylko układ, teksty bez zmian. */
@media(max-width:600px){.tools-grid a.tool-card.brand-card ul[style*="list-style:none"],.tools-grid a.tool-card.deco-fireflies ul[style*="list-style:none"]{padding-right:108px}}
/* Złota karta z pieczątką (Magnus): lista Funkcje nie wchodzi pod pieczątkę na telefonie. */
@media(max-width:600px){.tools-grid a.tool-card.tool-card-premium.has-stamp ul[style*="list-style:none"]{padding-right:108px}}
/* Typografia głównego przycisku CTA na kartach narzędzi (wzór: .ds-cta w index.html). Tylko tekst, kolory i układ bez zmian. !important przebija inline span. */
.tool-card div[style*="margin-top:auto"]>span[style*="Space Mono"]:not(.cta-code),.tool-card .brand-btn>span:not(.cta-code){font-family:'Inter',sans-serif!important;font-size:14px!important;font-weight:700!important;letter-spacing:.02em!important;text-transform:none!important;line-height:16px!important}
/* Kontrast CTA: ciemny tekst na gradiencie #7c5cff-#00e5ff (decyzja Artura 24.10). Tylko przyciski z tym inline gradientem; .brand-btn i .cta-code bez zmian. */
.tool-card div[style*="linear-gradient(90deg,#7c5cff,#00e5ff)"]>span:not(.cta-code){color:#0A0A0A!important}
/* Okna 930-1100 px (karty w 3 kolumnach, od 901 px najwęższe): CTA schodzi stopniami 13/12/11px, żeby najdłuższy napis ("Wypróbuj NeuronWriter za darmo →") został w jednym wierszu. */
@media(min-width:1060px) and (max-width:1100px){.tool-card div[style*="margin-top:auto"]>span[style*="Space Mono"]:not(.cta-code),.tool-card .brand-btn>span:not(.cta-code){font-size:13px!important}}
@media(min-width:990px) and (max-width:1059px){.tool-card div[style*="margin-top:auto"]>span[style*="Space Mono"]:not(.cta-code),.tool-card .brand-btn>span:not(.cta-code){font-size:12px!important}}
@media(min-width:930px) and (max-width:989px){.tool-card div[style*="margin-top:auto"]>span[style*="Space Mono"]:not(.cta-code),.tool-card .brand-btn>span:not(.cta-code){font-size:11px!important}}

/* ===== SNS-CB: przyciski konsolowe (WZORZEC_przyciski_konsolowe v3, 2026-11-08) =====
   Kolor: --cbc (dowolny kolor CSS). Domyslnie kolor strony --pg-cb. Gestosc: --o/--o2 (klasy mid, dense). Tylko ciemny motyw. */
.sns-cb.sns-cb.sns-cb{--o:34%;--o2:10%;--cbc:var(--pg-cb,#00e5ff);display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:13px 22px;border:0;border-radius:0;box-shadow:none;clip-path:polygon(14px 0,100% 0,calc(100% - 14px) 100%,0 100%);background:linear-gradient(180deg,color-mix(in srgb,var(--cbc) var(--o),transparent),color-mix(in srgb,var(--cbc) var(--o2),transparent));border-bottom:2px solid var(--cbc);font:700 12px/1.2 'Space Mono',monospace;letter-spacing:.12em;text-decoration:none;color:#fff;text-shadow:none;white-space:nowrap;cursor:pointer;filter:none;transition:background .2s,transform .2s,filter .2s}
.sns-cb.sns-cb.sns-cb::before,.sns-cb.sns-cb.sns-cb::after{content:none!important}
.sns-cb.sns-cb.sns-cb:hover{background:color-mix(in srgb,var(--cbc) 52%,transparent);transform:translateY(-3px);filter:none;box-shadow:none;color:#fff}
.sns-cb.sns-cb.sns-cb.mid{--o:56%;--o2:30%}
.sns-cb.sns-cb.sns-cb.dense{--o:82%;--o2:58%;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.sns-cb.sns-cb.sns-cb.sm{min-height:40px;padding:10px 18px;font-size:11px}
.sns-cb.sns-cb.sns-cb.fill{background:linear-gradient(90deg,var(--cbc),var(--cbc2,var(--cbc)));border-bottom-color:#fff;color:var(--cbink,#0d0a2e);text-shadow:none}
.sns-cb.sns-cb.sns-cb.fill:hover{background:linear-gradient(90deg,var(--cbc),var(--cbc2,var(--cbc)));filter:brightness(1.1);color:var(--cbink,#0d0a2e)}
.sns-cb.sns-cb.sns-cb.blk{display:flex;width:100%}
.sns-cb.sns-cb.sns-cb .ar{color:var(--cbc);filter:brightness(1.5)}
@media(max-width:700px){.sns-cb.sns-cb.sns-cb{white-space:normal;text-align:center}}
@media(prefers-reduced-motion:reduce){.sns-cb.sns-cb.sns-cb,.sns-cb.sns-cb.sns-cb:hover{transition:none;transform:none}}
.sns-cb.sns-cb.sns-cb.blog-card-read{align-self:flex-start}
.deal-cta.deal-cta--sns{background:none;padding:0;border-radius:0;display:flex;margin-right:52px}
.deal-cta--sns .sns-cb.sns-cb.sns-cb{font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.deal-cta--sns:hover .sns-cb.sns-cb.sns-cb{transform:translateY(-3px);filter:brightness(1.1)}

.deal-card .code-badge{align-self:flex-start}
/* ===== WSTAZKA "TOP WYBOR": ten sam kat co skos przycisku .sns-cb (ok. 70 stopni) ===== */
/* przyciski kart na jednej wysokosci (dol karty) */
.picks-grid>.glass-card,.filary-grid>.glass-card{display:flex;flex-direction:column}
.picks-grid .glass-card .g-desc,.filary-grid .glass-card .g-desc,.filary-grid .glass-card .filar-desc{margin-bottom:16px}
.picks-grid .pick-btn.sns-cb,.filary-grid .filar-link.sns-cb{margin-top:auto;align-self:flex-start}
/* wstazka: kat taki jak koniec przycisku (atan(45.6/14)=72.9deg), wychodzi przez prawa i dolna krawedz karty (owija rog) */
.deal-card .ribbon-corner-wrap,.ds-card>.ribbon-corner-wrap{width:80px;height:250px}
.deal-card .ribbon-corner,.ds-card>.ribbon-corner-wrap .ribbon-corner{box-sizing:border-box;width:500px;height:28px;line-height:14px;padding:7px 90px 7px 0;right:auto;bottom:auto;left:-182px;top:138px;transform:rotate(-72.9deg);transform-origin:center;font-size:11px}
.ds-card:has(>.ribbon-corner-wrap) .ds-cta.sns-cb.sns-cb.sns-cb{width:calc(100% - 62px)}
/* kod na zlotym przycisku: ciemna pastylka + zlote litery (kontrast) */
.deal-cta .cta-code{background:#1c1408;color:#ffd66b;border:1px solid rgba(255,214,107,.6);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25);animation:none;font-size:9px;padding:4px 10px;text-shadow:none}
.deal-cta--sns .sns-cb.sns-cb.sns-cb{padding:11px 14px;gap:6px 8px;flex-wrap:wrap;text-align:center}
.deal-cta .cta-code{padding:3px 8px}
.deal-cta.deal-cta--sns{margin-right:32px}
.deal-cta--sns .sns-cb.sns-cb.sns-cb{letter-spacing:.03em}
.deal-cta .cta-code{letter-spacing:.04em}
.deal-cta .cta-code{font-size:10.5px;padding:3px 7px;letter-spacing:.03em;color:#ffe08a}
.deal-cta--sns .sns-cb.sns-cb.sns-cb{padding:11px 12px;letter-spacing:.02em}
/* Porownywarka: przyciski w stylu SNS-CB */
.duel-tool .dt-cta.sns-cb.sns-cb.sns-cb{--cbc:var(--b);min-height:36px;padding:8px 14px;font-size:10px;letter-spacing:.06em;flex-shrink:0;white-space:nowrap}
.duel-cta.sns-cb.sns-cb.sns-cb,.hub-few-btn.sns-cb.sns-cb.sns-cb,.cmp-req-btn.sns-cb.sns-cb.sns-cb{--cbc:var(--arena-red,#ff3b3b);--cbc2:var(--arena-yellow,#facc15);--cbink:#1a0a05}
.cmp-req-btn.sns-cb.sns-cb.sns-cb:disabled{opacity:.55;cursor:wait;transform:none}

/* === Stopka w kolorze strony (v1946) ===
   Kolor panelow .fsn-canvas i .fsn-newsletter = --pg-cb z <style id="sns-cb-page"> (strony bez tej zmiennej zostaja po staremu). */
html:has(#sns-cb-page) .fsn-canvas,
html:has(#sns-cb-page) .fsn-newsletter {
  background: linear-gradient(145deg, color-mix(in srgb, var(--pg-cb) 24%, #050810) 0%, color-mix(in srgb, var(--pg-cb) 12%, #050810) 45%, #03060f 100%) !important;
  border: 1px solid color-mix(in srgb, var(--pg-cb) 55%, transparent) !important;
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--pg-cb) 25%, transparent), 0 8px 48px rgba(0,0,0,.6) !important;
}

/* === "Ustawienia cookies" w dolnym pasku stopki (v1947) === */
.fsn-cookie-set {
  background:none; border:0; padding:0; margin-left:14px;
  font:inherit; color:inherit; cursor:pointer;
  text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(143,180,188,.4);
}
.fsn-cookie-set:hover { color:var(--pg-cb, #00e5ff); text-decoration-color:currentColor; }
.fsn-cookie-set:focus-visible { outline:2px solid var(--pg-cb, #00e5ff); outline-offset:3px; border-radius:3px; }
.fsn-bottom:has(.fsn-cookie-set) { flex-wrap:wrap; gap:8px 24px; }
.fsn-bottom:has(.fsn-cookie-set) .fsn-bottom-center { position:static; transform:none; }
@media (max-width: 1100px) {
  .fsn-bottom { flex-wrap:wrap; gap:8px 18px; }
  .fsn-bottom-center { position:static; transform:none; }
}
@media (max-width: 860px) {
  .fsn-cookie-set { margin-left:0; display:block; margin-top:6px; }
}
