/*==============================================================
  Alphacon — warstwa marki na szablonie „Secur"
  --------------------------------------------------------------
  Ładowana JAKO OSTATNIA, po bootstrap.min.css i style.css.

  Szablon jest sterowany zmiennymi CSS, więc większość retheme'u
  robi się przez podmianę tokenów — a nie przez walkę z selektorami.

  Paleta pochodzi ze zdjęcia badge'a w IMSAI 8080: czerwień i błękit
  przełączników, bursztyn lampek, ciepła szarość obudowy. Czerń jest
  ciepła, nie niebieskawa — to sama w sobie największa różnica wobec
  poprzedniej wersji, w której wszystko było przygaszonym błękitem.

  Kolor niesie znaczenie, nie dekorację:
      czerwony = ofensywa,  niebieski = defensywa,  bursztyn = retro
  Ten sam klucz obowiązuje w kartach, kropkach agendy i chipach.

  Motyw: data-theme="dark" (domyślny) albo "light" na <html>.
  Ustawia go skrypt inline w <head>, żeby nie mrugało przy wejściu.
==============================================================*/

/*--------------------------------------------------------------
  1. Tokeny
--------------------------------------------------------------*/

/* --- ciemny (domyślny) ---
   Ten sam blok obsługuje dwie rzeczy: motyw ciemny ORAZ pas odwrócony
   wewnątrz motywu jasnego. Dzięki temu każda paleta jest zapisana raz. */
:root,
[data-theme="dark"],
[data-theme="light"] .ac-invert {
  --ac-bg:          #14100d;
  --ac-surface:     #1c1712;
  --ac-card:        #231c17;
  --ac-line:        #3a2f26;
  --ac-line2:       #2b231c;
  --ac-inputborder: #46392b;

  --ac-ink:    #f7f2ea;
  --ac-strong: #ddd3c5;
  --ac-muted:  #a89c8c;
  --ac-faint:  #9a8b79;

  /* akcent tekstowy — bursztyn lampki, ~10:1 na ciepłej czerni */
  --ac-acc:       #ffab1f;
  --ac-acc-soft:  rgba(255, 171, 31, 0.35);
  --ac-acc-wash:  rgba(255, 171, 31, 0.09);

  /* przycisk: rozjaśniona czerwień z ciemnym tekstem — jak etykieta
     ostrzegawcza na sprzęcie. Biały tekst na #e0402f dałby 4,2:1. */
  --ac-btn-bg:       #ff5c45;
  --ac-btn-bg-hover: #ff7f6c;
  --ac-btn-ink:      #1a0d09;

  /* kategorie */
  --ac-red:   #e0402f;
  --ac-blue:  #3a7bd5;
  --ac-amber: #ffab1f;
  --ac-red-text:   #ff7a66;
  --ac-blue-text:  #7db0ee;
  --ac-amber-text: #ffab1f;

  /* panel IMSAI */
  --ac-panel-bg:   #0d0a07;
  --ac-panel-face: #1a140f;
  --ac-panel-slot: #241c15;
  --ac-panel-dim:  #948674;
  /* Dioda świeci tym samym kolorem w obu motywach — panel jest sprzętem,
     a nie elementem interfejsu, więc nie może iść za --ac-amber, które
     w motywie jasnym robi się ciemnobrązowe. */
  --ac-led-on:     #ffab1f;
  --ac-led-off:    #33281b;
  --ac-screw:      #3f3427;

  /* terminal — bursztynowy CRT, ciemny w obu motywach */
  --ac-term:     #ffb31f;
  --ac-term-rgb: 255 179 31;
  --ac-term-dim: #ab7a2b;
  --ac-term-bg:  #120d07;

  --ac-navbg: rgba(20, 16, 13, 0.86);
  --ac-shadow: rgba(0, 0, 0, 0.45);

  --ac-font-display: 'Space Grotesk', system-ui, sans-serif;
  --ac-font-body: 'IBM Plex Sans', system-ui, sans-serif;
  --ac-font-mono: 'JetBrains Mono', ui-monospace, monospace;
}

/* --- jasny — i pas odwrócony wewnątrz motywu ciemnego --- */
[data-theme="light"],
[data-theme="dark"] .ac-invert {
  --ac-bg:          #f4eee3;
  --ac-surface:     #eae2d3;
  --ac-card:        #fdfaf4;
  --ac-line:        #d3c7b4;
  --ac-line2:       #ded4c3;
  --ac-inputborder: #c2b49d;

  --ac-ink:    #17130f;
  --ac-strong: #332c24;
  --ac-muted:  #5c5449;
  --ac-faint:  #6b6255;

  --ac-acc:      #8f5300;
  --ac-acc-soft: rgba(143, 83, 0, 0.35);
  --ac-acc-wash: rgba(143, 83, 0, 0.07);

  --ac-btn-bg:       #c9301f;
  --ac-btn-bg-hover: #a52618;
  --ac-btn-ink:      #ffffff;

  --ac-red:   #c9301f;
  --ac-blue:  #2f66b5;
  --ac-amber: #b06a00;
  --ac-red-text:   #b32a1a;
  --ac-blue-text:  #2a5da6;
  --ac-amber-text: #8f5300;

  --ac-panel-bg:   #17130f;
  --ac-panel-face: #241c15;
  --ac-panel-slot: #2e2419;
  --ac-panel-dim:  #9a8b76;
  --ac-led-on:     #ffab1f;
  --ac-led-off:    #3b2f20;
  --ac-screw:      #564835;

  --ac-navbg: rgba(244, 238, 227, 0.88);
  --ac-shadow: rgba(60, 45, 25, 0.14);
}

/* --- mapowanie tokenów szablonu (podąża za motywem samo) --- */
:root {
  --theme-color: var(--ac-acc);
  /* theme-color2 był różowy (#E0009B) i napędzał wszystkie gradienty */
  --theme-color2: var(--ac-red);
  --title-color: var(--ac-ink);
  --body-color: var(--ac-muted);
  --smoke-color: var(--ac-surface);
  --black-color2: var(--ac-card);
  --light-color: var(--ac-faint);
  --ot-border-color: var(--ac-line);
  --ot-body-background: var(--ac-bg);
  --success-color: var(--ac-amber);

  --title-font: var(--ac-font-display);
  --body-font: var(--ac-font-body);

  --main-container: 1180px;
  --section-space: 84px;
  --section-space-mobile: 56px;
  --section-title-space: 34px;
}

/*--------------------------------------------------------------
  1b. Pas odwrócony

  Jedno mocne przełamanie w połowie strony robi więcej niż dziesięć
  niuansów tła. Kolory tej sekcji siedzą w blokach tokenów wyżej —
  każda paleta jest wpisana raz i obsługuje zarówno swój motyw, jak
  i pas odwrócony w motywie przeciwnym. Tutaj zostaje sama mechanika.
--------------------------------------------------------------*/
.ac-invert {
  background-color: var(--ac-bg) !important;
  border-top: 1px solid var(--ac-line2);
  border-bottom: 1px solid var(--ac-line2);
}

/*--------------------------------------------------------------
  2. Podstawy
--------------------------------------------------------------*/
html { scroll-behavior: smooth; }

body {
  font-family: var(--ac-font-body);
  font-size: 15.5px;
  line-height: 1.62;
  color: var(--ac-muted);
  background: var(--ac-bg);
}

::selection { background: var(--ac-acc); color: #14100d; }

a { text-decoration: none; }

/* Widoczny focus w obu motywach — szablon nie dawał żadnego */
:focus-visible {
  outline: 2px solid var(--ac-acc);
  outline-offset: 2px;
  border-radius: 2px;
}

h1, h2, h3, h4, h5, h6,
.sec-title, .box-title, .hero-title {
  font-family: var(--ac-font-display);
  color: var(--ac-ink);
  letter-spacing: -0.02em;
}

.sec-title {
  font-size: clamp(26px, 3vw, 34px);
  font-weight: 700;
  line-height: 1.18;
  max-width: 640px;
}
.text-center .sec-title,
.ac-center-text { margin-left: auto; margin-right: auto; }

.sec-text {
  font-family: var(--ac-font-body);
  color: var(--ac-muted);
  font-size: 15.5px;
  line-height: 1.62;
}
/* Globalne `a { text-decoration: none }` (niżej) zrobiłoby z linku w akapicie
   tekst nie do odróżnienia od reszty. To samo traktowanie co w .ac-mono-note a. */
.sec-text a { color: var(--ac-acc); border-bottom: 1px solid var(--ac-acc-soft); }
.ac-center-text { max-width: 560px; }

.box-title { font-size: 20px; font-weight: 600; letter-spacing: -0.01em; }
.box-text  { font-family: var(--ac-font-body); color: var(--ac-muted); font-size: 14.5px; line-height: 1.6; }

.bg-smoke { background-color: var(--ac-surface) !important; border-top: 1px solid var(--ac-line2); border-bottom: 1px solid var(--ac-line2); }

.shape-mockup.bg-gradient-shape1 { opacity: 0.05; }

/*--------------------------------------------------------------
  3. Kicker „// sekcja", numer sekcji, noty mono
--------------------------------------------------------------*/
.ac-kicker {
  font-family: var(--ac-font-mono);
  font-size: 11.5px;
  font-weight: 500;
  color: var(--ac-acc);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 12px;
}
.ac-kicker-center { text-align: center; }

/* Nagłówek sekcji z numerem w gutterze — zamiast siódmego z rzędu
   wyśrodkowanego kickera. Numer jest dekoracją, więc siedzi w ::before
   i nie trafia do drzewa dostępności ani do zaznaczenia. */
.ac-sechead {
  position: relative;
  padding-left: 62px;
  margin-bottom: 34px;
  max-width: 760px;
}
.ac-sechead::before {
  content: attr(data-no);
  position: absolute;
  left: 0;
  top: 1px;
  font-family: var(--ac-font-mono);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--ac-faint);
  border-top: 2px solid var(--ac-acc);
  padding-top: 9px;
  width: 42px;
}
.ac-sechead .sec-title { max-width: 620px; }
.ac-sechead .sec-text { margin-top: 12px; max-width: 620px; }

@media (max-width: 575px) {
  .ac-sechead { padding-left: 0; padding-top: 34px; }
  .ac-sechead::before { top: 0; }
}

.ac-mono-note {
  font-family: var(--ac-font-mono);
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--ac-faint);
  margin: 26px 0 0;
}
.ac-mono-note-left { text-align: left; margin-top: 16px; }
.ac-mono-note a { color: var(--ac-acc); border-bottom: 1px solid var(--ac-acc-soft); }

/* Mono-nota z kilku linii. <figure> dopuszcza tylko jeden <figcaption>,
   więc kolejne wiersze podpisu są blokami w środku, nie osobnymi elementami. */
.ac-mono-line { display: block; }
.ac-mono-line + .ac-mono-line { margin-top: 6px; }

.ac-note {
  font-family: var(--ac-font-display);
  font-size: 17px;
  font-weight: 600;
  color: var(--ac-strong);
}

/*--------------------------------------------------------------
  4. Przyciski i linki
--------------------------------------------------------------*/
.ot-btn {
  font-family: var(--ac-font-display) !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  border-radius: 3px !important;
  background: var(--ac-btn-bg) !important;
  color: var(--ac-btn-ink) !important;
  padding: 14px 24px !important;
  min-height: 48px !important;
  min-width: 0 !important;
  text-transform: none !important;
  transition: background-color .15s ease;
}
.ot-btn:hover { background: var(--ac-btn-bg-hover) !important; color: var(--ac-btn-ink) !important; }
.ot-btn:before, .ot-btn:after { display: none !important; }

.ac-ghost-link {
  font-family: var(--ac-font-mono);
  font-size: 13.5px;
  color: var(--ac-strong);
  border-bottom: 1px solid var(--ac-inputborder);
  padding-bottom: 3px;
  transition: border-color .15s, color .15s;
}
.ac-ghost-link:hover { color: var(--ac-ink); border-color: var(--ac-acc); }

.ac-forward-link {
  display: inline-block;
  font-family: var(--ac-font-mono);
  font-size: 13px;
  color: var(--ac-acc);
  transition: color .15s;
}
.ac-forward-link:hover { color: var(--ac-ink); }

/*--------------------------------------------------------------
  5. Nagłówek — sticky glass + przełącznik motywu
--------------------------------------------------------------*/
.ot-header, .ot-header .menu-area {
  background: var(--ac-navbg);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--ac-line);
}
.ot-header .menu-area { padding: 12px 0; }
.header-logo img { height: 34px; width: auto; display: block; filter: var(--ac-logofilter, none); }

.ac-nav {
  display: flex;
  gap: 24px;
  align-items: center;
  flex-wrap: wrap;
}
.ac-nav a {
  font-family: var(--ac-font-mono);
  font-size: 13px;
  color: var(--ac-muted);
  transition: color .15s;
}
.ac-nav a:hover { color: var(--ac-acc); }

/* Przełącznik motywu. Przytrzymany 1,5 s przełącza skórkę zamiast motywu —
   pasek postępu rysuje ::after, szerokość animuje --hold-ms z JS. */
.ac-theme {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  overflow: hidden;
  background: transparent;
  border: 1px solid var(--ac-line);
  border-radius: 4px;
  color: var(--ac-muted);
  cursor: pointer;
  flex: 0 0 auto;
  transition: color .15s, border-color .15s;
}
.ac-theme:hover { color: var(--ac-acc); border-color: var(--ac-acc); }
.ac-theme svg { width: 16px; height: 16px; display: block; }
[data-theme="dark"] .ac-theme .ac-ico-moon,
[data-theme="light"] .ac-theme .ac-ico-sun { display: none; }
.ac-theme::after {
  content: '';
  position: absolute;
  left: 0; bottom: 0;
  height: 2px;
  width: 0;
  background: var(--ac-acc);
}
.ac-theme.holding::after {
  width: 100%;
  transition: width var(--hold-ms, 1500ms) linear;
}

/* strona treściowa nie ma nawigacji kotwicowej — przełącznik dosiada się
   do przycisku powrotu */
.ac-doc-actions { display: flex; align-items: center; gap: 12px; }

.ot-header .header-button .ot-btn {
  display: inline-flex !important;
  padding: 10px 18px !important;
  min-height: 40px !important;
  font-size: 14px !important;
  white-space: nowrap;
}

/* Poniżej 992px nawigacja kotwicowa schodzi do drugiego rzędu i scrolluje
   poziomo — CTA „Dołącz" zostaje widoczne zawsze (w szablonie znikało).

   Uwaga: order/width trzeba ustawiać na KOLUMNIE (.ac-nav-col), bo to ona
   jest dzieckiem flexowego .row — nie na samym <nav> w środku. */
@media (max-width: 991px) {
  .ot-header .menu-area .row { row-gap: 10px; }
  .ot-header .menu-area .ac-nav-col {
    order: 3;
    flex: 0 0 100%;
    max-width: 100%;
  }
  .ac-nav {
    gap: 18px;
    overflow-x: auto;
    padding-bottom: 2px;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .ac-nav::-webkit-scrollbar { display: none; }
  .ac-nav a { white-space: nowrap; }
}
@media (max-width: 420px) {
  .header-logo img { height: 26px; }
  .ot-header .header-button .ot-btn { padding: 9px 13px !important; font-size: 13px !important; }
  .ac-nav { gap: 15px; }
  .ac-nav a { font-size: 12.5px; }
}

/*--------------------------------------------------------------
  6. Hero — tekst do lewej, panel IMSAI po prawej
--------------------------------------------------------------*/
.ot-hero-wrapper.hero-2 { background: var(--ac-bg); }
.hero-2 { background: var(--ac-bg); }

.ac-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr);
  gap: clamp(28px, 5vw, 64px);
  align-items: center;
}

/* Logo jest białym SVG — na jasnym papierze musi przejść ten sam filtr
   co logotypy w nagłówku i stopce, inaczej po prostu znika. */
img.ac-hero-logo {
  height: clamp(42px, 4.6vw, 58px);
  width: auto;
  max-width: 88%;
  margin: 0 0 20px;
  display: block;
  filter: var(--ac-logofilter, none);
}

.hero-title { margin-bottom: 0; }
.hero-title .title2 {
  display: block;
  font-family: var(--ac-font-display);
  font-weight: 700;
  font-size: clamp(30px, 3.9vw, 50px);
  line-height: 1.06;
  letter-spacing: -0.03em;
  color: var(--ac-ink);
  max-width: 640px;
  margin: 0;
}
/* jedno słowo na akcencie — punkt zaczepienia dla oka */
/* Selektor musi być `.hero-title .title2 .ac-mark`, bo szablon ma
   `.hero-title .title2 span { color: var(--theme-color) }` o specyficzności
   (0,1,2) — sama klasa (0,1,0) by przegrała i słowo dostałoby kolor akcentu
   zamiast koloru tekstu przycisku. */
.hero-title .title2 .ac-mark,
.ac-mark {
  background: var(--ac-btn-bg);
  color: var(--ac-btn-ink);
  padding: 0 8px 2px;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

.hero-text {
  font-family: var(--ac-font-body);
  font-size: 16.5px;
  line-height: 1.6;
  color: var(--ac-muted);
  max-width: 520px;
  margin: 20px 0 0;
}

.ac-hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 24px;
}

.ac-chip {
  font-family: var(--ac-font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ac-strong);
  border: 1px solid var(--ac-line);
  background: var(--ac-card);
  padding: 7px 12px;
  border-radius: 3px;
}
.ac-chip-soon { color: var(--ac-acc); border-color: var(--ac-acc-soft); background: var(--ac-acc-wash); }

.ac-hero-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 22px;
  margin-top: 30px;
}

/* --- panel przednich przełączników IMSAI ---------------------
   Zastępuje szablonową animację fal (WebGL, 253 linie JS), która
   pasowałaby do dowolnej firmy. Tu jest czysty CSS, zero obrazków.
   Cały panel jest dekoracją — w HTML ma aria-hidden.               */
.ac-panel {
  background:
    radial-gradient(circle at 10px 10px, var(--ac-screw) 1.6px, transparent 2px),
    radial-gradient(circle at calc(100% - 10px) 10px, var(--ac-screw) 1.6px, transparent 2px),
    radial-gradient(circle at 10px calc(100% - 10px), var(--ac-screw) 1.6px, transparent 2px),
    radial-gradient(circle at calc(100% - 10px) calc(100% - 10px), var(--ac-screw) 1.6px, transparent 2px),
    linear-gradient(180deg, var(--ac-panel-face), var(--ac-panel-bg));
  background-repeat: no-repeat;
  border: 1px solid var(--ac-line);
  border-radius: 4px;
  padding: 20px 22px 18px;
  box-shadow: 0 18px 44px var(--ac-shadow);
}
.ac-panel-cap {
  display: flex;
  justify-content: space-between;
  font-family: var(--ac-font-mono);
  font-size: 9.5px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ac-panel-dim);
  margin-bottom: 14px;
}

.ac-leds {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 7px;
  margin-bottom: 9px;
}
.ac-leds i {
  /* grid rozciągnąłby diody w elipsy — stała szerokość i wyśrodkowanie */
  width: 9px;
  height: 9px;
  justify-self: center;
  border-radius: 50%;
  background: var(--ac-led-off);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.6);
}
.ac-leds i.on {
  background: var(--ac-led-on);
  box-shadow: 0 0 7px var(--ac-led-on);
}
/* Cztery niewspółmierne okresy — diody nie układają się w widoczny wzór */
.ac-leds i.b1 { animation: ac-lamp 1.1s steps(1, end) infinite; }
.ac-leds i.b2 { animation: ac-lamp 0.7s steps(1, end) infinite; }
.ac-leds i.b3 { animation: ac-lamp 1.7s steps(1, end) infinite; }
.ac-leds i.b4 { animation: ac-lamp 2.3s steps(1, end) infinite; }
@keyframes ac-lamp {
  0%, 55% { background: var(--ac-led-on); box-shadow: 0 0 7px var(--ac-led-on); }
  56%, 100% { background: var(--ac-led-off); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.6); }
}

.ac-leds-label {
  display: flex;
  justify-content: space-between;
  font-family: var(--ac-font-mono);
  font-size: 8px;
  letter-spacing: 0.16em;
  color: var(--ac-panel-dim);
  margin: 0 0 16px;
}

.ac-sws {
  display: grid;
  grid-template-columns: repeat(16, 1fr);
  gap: 3px;
}
.ac-sw {
  position: relative;
  height: 42px;
  border-radius: 2px;
  /* wgłębienie w panelu: jaśniej u góry, ciemniej u dołu */
  background: linear-gradient(180deg, rgba(0,0,0,0.55), var(--ac-panel-slot) 45%, rgba(0,0,0,0.4));
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.5);
}
/* Sam kontakt jest wąski i pionowy — kwadrat na całą szerokość gniazda
   czytał się jak przypadkowa kolorowa plamka, a nie jak przełącznik. */
.ac-sw::after {
  content: '';
  position: absolute;
  left: 26%; right: 26%;
  height: 19px;
  border-radius: 1.5px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.22);
  transition: top .12s ease, bottom .12s ease;
}
.ac-sw.r::after { background: var(--ac-red); }
.ac-sw.b::after { background: var(--ac-blue); }
.ac-sw.up::after   { top: 1px; }
.ac-sw.down::after { bottom: 1px; }
/* Przełączniki dają się przerzucać myszą. Nic nie robią — o to chodzi. */
.ac-sw.up:hover::after   { top: auto; bottom: 1px; }
.ac-sw.down:hover::after { bottom: auto; top: 1px; }

.ac-panel-foot {
  display: flex;
  justify-content: space-between;
  font-family: var(--ac-font-mono);
  font-size: 8px;
  letter-spacing: 0.16em;
  color: var(--ac-panel-dim);
  margin-top: 10px;
}

@media (max-width: 1199px) {
  .ac-hero-grid { grid-template-columns: 1fr; }
  .ac-panel { max-width: 560px; }
}
@media (max-width: 575px) {
  .ac-panel { padding: 16px 14px 14px; }
  .ac-sws { grid-template-columns: repeat(8, 1fr); }
  .ac-sw { height: 36px; }
  .ac-sw::after { height: 16px; }
  .ac-leds { gap: 5px; }
}

/*--------------------------------------------------------------
  6b. Panel po włączeniu zasilania

  Wszystko pod .ac-panel[data-live], więc stan przed aktywacją
  zostaje bajt w bajt dzisiejszy. JS nie ustawia tu ani jednego
  koloru — podaje wyłącznie liczbę --l (0..1), czyli jasność
  diody. Kolory zostają w tokenach i skórki działają dalej.
--------------------------------------------------------------*/

/* Przycisk zasilania. Jedyny nowy przystanek tabulacji w hero
   przed włączeniem maszyny. */
.ac-pwr {
  font: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: var(--ac-panel-dim);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 2px;
  padding: 1px 5px;
  margin: -1px -5px;
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.ac-pwr:hover { color: var(--ac-led-on); border-color: var(--ac-led-on); }
.ac-panel[data-live] .ac-pwr { color: var(--ac-led-on); border-color: var(--ac-led-on); }
.ac-panel[data-error] .ac-pwr { color: var(--ac-red-text); border-color: var(--ac-red-text); }

/* --- diody sterowane wypełnieniem magistrali --- */
.ac-panel[data-live] .ac-leds i {
  position: relative;
  background: var(--ac-led-off);
  animation: none !important;
}
.ac-panel[data-live] .ac-leds i::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: var(--ac-led-on);
  box-shadow: 0 0 7px var(--ac-led-on);
  opacity: var(--l, 0);
}

/* --- przełączniki ---
   W trybie live bank schodzi do ośmiu kolumn na KAŻDEJ szerokości.
   Bez tego szesnaście przełączników stoi pod ośmioma diodami
   w proporcji 2:1 i gracz nie wie, który przełącznik jest „pod"
   świecącą diodą — a to najważniejsza afordancja tej gry.
   Przy okazji cel dotykowy rośnie z ~28 px do ~42 px. */
.ac-panel[data-live] .ac-sws { grid-template-columns: repeat(8, 1fr); gap: 4px; }
.ac-panel[data-live] .ac-sw {
  height: 46px;
  padding: 0;
  border: 0;
  cursor: pointer;
  /* Szablon ma `button { transition: all ease 0.4s }` (style.css:207) —
     przełącznik przerzucałby się jak w smole. */
  transition: none !important;
}
/* Po przejściu na osiem kolumn gniazdo jest dwa razy szersze, więc
   kontakt trzeba zwęzić — inaczej z przełącznika robi się klocek. */
.ac-panel[data-live] .ac-sw::after {
  left: 35%;
  right: 35%;
  height: 21px;
  transition: top .1s ease, bottom .1s ease;
}

/* Przerzucanie na hover było żartem („nic nie robią — o to chodzi").
   Po ożywieniu stałoby się błędem: mysz przejeżdżająca nad panelem
   przestawiałaby stan gry. */
.ac-panel[data-live] .ac-sw.up:hover::after   { top: 1px; bottom: auto; }
.ac-panel[data-live] .ac-sw.down:hover::after { bottom: 1px; top: auto; }
.ac-panel[data-live] .ac-sw[aria-checked="true"]::after  { top: 1px; bottom: auto; }
.ac-panel[data-live] .ac-sw[aria-checked="false"]::after { bottom: 1px; top: auto; }

/* Szablon gasi obrys focusa (style.css:136) — bez tego bank
   przełączników jest nieobsługiwalny z klawiatury. */
.ac-panel[data-live] .ac-sw:focus-visible,
.ac-panel[data-live] .ac-pbtn:focus-visible,
.ac-pwr:focus-visible {
  outline: 2px solid var(--ac-led-on) !important;
  outline-offset: 2px;
}

/* --- pulpit sterowniczy --- */
.ac-panel[data-live] .ac-panel-foot { gap: 6px; }
.ac-pbtn {
  font-family: var(--ac-font-mono);
  font-size: 8px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ac-panel-dim);
  background: transparent;
  border: 1px solid var(--ac-line);
  border-radius: 2px;
  padding: 5px 7px;
  cursor: pointer;
  transition: color .15s, border-color .15s;
}
.ac-pbtn:hover { color: var(--ac-led-on); border-color: var(--ac-led-on); }
.ac-pbtn[aria-pressed="true"] { color: var(--ac-led-on); border-color: var(--ac-led-on); }

/* --- wiersz stanu --- */
.ac-panel-status {
  font-family: var(--ac-font-mono);
  font-size: 10.5px;
  line-height: 1.5;
  color: var(--ac-panel-dim);
  margin: 12px 0 0;
  min-height: 2.2em;
}
.ac-panel[data-won] .ac-panel-status { color: var(--ac-led-on); }

@media (max-width: 575px) {
  .ac-panel[data-live] .ac-sw { height: 40px; }
  .ac-pbtn { font-size: 7.5px; padding: 5px 5px; letter-spacing: 0.1em; }
}

/*--------------------------------------------------------------
  7. Pasek biegnący — separator sekcji
--------------------------------------------------------------*/
.ac-ticker {
  overflow: hidden;
  border-top: 1px solid var(--ac-line2);
  border-bottom: 1px solid var(--ac-line2);
  background: var(--ac-surface);
  padding: 11px 0;
}
.ac-ticker-track {
  display: flex;
  width: max-content;
  animation: ac-slide 46s linear infinite;
}
.ac-ticker-track span {
  font-family: var(--ac-font-mono);
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ac-faint);
  white-space: nowrap;
  padding-right: 26px;
}
/* treść jest zduplikowana w HTML, więc przesunięcie o połowę jest bezszwowe */
@keyframes ac-slide {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/*--------------------------------------------------------------
  8. Karty (feature) — numer, kategoria i kolor kategorii
--------------------------------------------------------------*/

/* Szablon wciągał kafle 154px w górę, w rezerwę 280px na dole hero.
   Hero jest teraz zwykłą sekcją, więc ujemny margines nachodziłby na CTA. */
.feature-area-1 { margin-top: 0; padding-bottom: 8px; }

.feature-card {
  background: var(--ac-card) !important;
  border: 1px solid var(--ac-line);
  border-top: 3px solid var(--ac-cat, var(--ac-acc));
  border-radius: 4px;
  padding: 24px 26px 28px;
  height: 100%;
  transition: border-color .15s ease, transform .15s ease;
}
.feature-card:hover { transform: translateY(-3px); }
.feature-card:before, .feature-card:after { display: none !important; }
.feature-card .box-title { margin: 14px 0 8px; }

.ac-cat-red   { --ac-cat: var(--ac-red);   --ac-cat-text: var(--ac-red-text); }
.ac-cat-blue  { --ac-cat: var(--ac-blue);  --ac-cat-text: var(--ac-blue-text); }
.ac-cat-amber { --ac-cat: var(--ac-amber); --ac-cat-text: var(--ac-amber-text); }

.ac-card-no {
  display: block;
  font-family: var(--ac-font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ac-cat-text, var(--ac-acc));
}

/*--------------------------------------------------------------
  9. Terminal CRT — bursztyn zamiast zieleni, żeby został w palecie
--------------------------------------------------------------*/
.ac-term {
  position: relative;
  background: var(--ac-term-bg);
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid rgb(var(--ac-term-rgb) / 0.3);
  box-shadow: 0 0 0 1px rgb(var(--ac-term-rgb) / 0.07),
              0 14px 32px var(--ac-shadow),
              inset 0 0 60px rgb(var(--ac-term-rgb) / 0.05);
}
.ac-term::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  background: repeating-linear-gradient(rgba(0,0,0,0) 0 2px, rgba(0,0,0,0.16) 2px 3px);
}
.ac-term-head {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 6px 12px;
  border-bottom: 1px solid rgb(var(--ac-term-rgb) / 0.16);
  font-family: 'VT323', var(--ac-font-mono);
  font-size: 15px;
  letter-spacing: 0.04em;
  color: var(--ac-term-dim);
}
.ac-led {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--ac-term);
  box-shadow: 0 0 6px rgb(var(--ac-term-rgb) / 0.8);
  display: inline-block;
  flex: 0 0 auto;
}
.ac-term-wrap { padding: 14px 14px 18px; }
.ac-term-body {
  font-family: 'VT323', var(--ac-font-mono);
  font-size: 19px;
  color: var(--ac-term);
  letter-spacing: 0.02em;
  text-shadow: 0 0 2px rgb(var(--ac-term-rgb) / 0.45), 0 0 7px rgb(var(--ac-term-rgb) / 0.2);
  line-height: 1.45;
}
.ac-prompt { color: var(--ac-term-dim); margin-right: 6px; }
.ac-cursor {
  display: inline-block;
  width: 0.55em; height: 0.95em;
  vertical-align: -0.1em;
  background: var(--ac-term);
  box-shadow: 0 0 6px rgb(var(--ac-term-rgb) / 0.7);
  margin-left: 4px;
  animation: ac-blink 1s steps(1) infinite;
}
@keyframes ac-blink { 0%,50% { opacity: 1; } 51%,100% { opacity: 0; } }

/* --- terminal po ożywieniu ---
   Do tej pory .ac-term pokazywał wymyśloną sesję. Gdy zaczyna
   pokazywać prawdziwe wyjście procesora, potrzebuje przewijania,
   ogniskowania i widocznej zachęty — inaczej użytkownik patrzy na
   prompt, który nie reaguje na klawiaturę, i słusznie uznaje, że
   to dalej obrazek. */
.ac-term.is-live .ac-term-wrap {
  position: relative;
  max-height: 340px;
  overflow-y: auto;
  cursor: text;
  outline-offset: -2px;
}
/* Obrys pokazujemy na karcie, bo fokus siedzi na ukrytym polu w środku */
.ac-term.is-live:focus-within .ac-term-wrap { outline: 2px solid var(--ac-term); }

/* Ukryte pole przyjmujące wejście. Nie może być display:none ani
   visibility:hidden — musi dać się ustawić na nim fokus, bo tylko
   prawdziwe pole tekstowe podnosi klawiaturę ekranową na telefonie.
   font-size 16px jest obowiązkowe: przy mniejszym iOS przybliża
   całą stronę w momencie ogniskowania. */
.ac-term-kbd {
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 1px;
  padding: 0;
  border: 0;
  outline: none;
  opacity: 0;
  resize: none;
  overflow: hidden;
  font-size: 16px;
  caret-color: transparent;
  background: transparent;
  color: transparent;
}
.ac-term.is-live .ac-term-head::after {
  content: 'kliknij albo dotknij, żeby pisać';
  margin-left: auto;
  font-size: 12px;
  opacity: 0.75;
}
.ac-term.is-live .ac-term-body { min-height: 120px; }

/*--------------------------------------------------------------
  10. Checklista
--------------------------------------------------------------*/
.ac-checklist ul {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 10px 24px;
  margin: 0; padding: 0;
  list-style: none;
}
.ac-checklist li {
  position: relative;
  padding-left: 24px;
  font-size: 14.5px;
  color: var(--ac-strong);
}
.ac-checklist li:before {
  content: "\2713";
  position: absolute;
  left: 0;
  color: var(--ac-acc);
  font-weight: 700;
}

/*--------------------------------------------------------------
  11. Agenda — lista panelowa

  Poprzednio: wyśrodkowany timeline z kółkami na przemian L/P. Ładny,
  ale zostawiał po obu stronach pustkę na pół ekranu i to on odpowiadał
  za sporą część wrażenia „nudno". Teraz: lewy słupek godzin w mono,
  dioda w kolorze bloku, treść do lewej — czyta się jak wydruk z panelu.
--------------------------------------------------------------*/
.ac-agenda {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--ac-line);
}
.ac-agenda li {
  display: grid;
  grid-template-columns: 76px 10px minmax(0, 1fr);
  align-items: baseline;
  column-gap: 20px;
  padding: 18px 4px 18px 0;
  border-bottom: 1px solid var(--ac-line);
  transition: background-color .15s ease;
}
.ac-agenda li:hover { background: var(--ac-acc-wash); }

.ac-agenda-node {
  font-family: var(--ac-font-mono);
  font-size: 13px;
  font-weight: 600;
  color: var(--ac-strong);
  letter-spacing: 0.02em;
}
.ac-agenda-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--ac-cat, var(--ac-acc));
  align-self: center;
}
.ac-agenda-title {
  font-family: var(--ac-font-display);
  font-size: 19px;
  font-weight: 600;
  color: var(--ac-ink);
  margin: 0 0 5px;
  letter-spacing: -0.01em;
}
.ac-agenda-body p { margin: 0; font-size: 14.5px; color: var(--ac-muted); line-height: 1.6; max-width: 620px; }

.ac-agenda-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 20px;
  font-family: var(--ac-font-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ac-faint);
}
.ac-agenda-legend span { display: inline-flex; align-items: center; gap: 8px; }
.ac-agenda-legend i { width: 8px; height: 8px; border-radius: 50%; background: var(--ac-cat); }

@media (max-width: 575px) {
  .ac-agenda li { grid-template-columns: 58px 8px minmax(0, 1fr); column-gap: 12px; }
  .ac-agenda-node { font-size: 12px; }
  .ac-agenda-title { font-size: 17px; }
}

/*--------------------------------------------------------------
  12. Badge — zdjęcie na całą szerokość okna

  Sekcja siedzi w .container, ale samo zdjęcie ma iść od krawędzi do
  krawędzi. Marginesy ujemne liczone przez 50vw/50% wychodzą poza
  kontener niezależnie od jego szerokości.
--------------------------------------------------------------*/
.ac-badge-shot {
  margin: 40px 0 0;
  width: 100vw;
  position: relative;
  left: 50%;
  transform: translateX(-50vw);
}
.ac-badge-shot img {
  display: block;
  width: 100%;
  height: auto;
  border-top: 1px solid var(--ac-line);
  border-bottom: 1px solid var(--ac-line);
}
.ac-badge-shot figcaption { margin-top: 14px; padding: 0 16px; }

@media (max-width: 767px) {
  /* atrybuty width/height na <img> opisują kadr poziomy — na telefonie
     serwujemy kwadrat, więc proporcję trzeba nadpisać, inaczej przed
     załadowaniem rezerwuje się pasek 2,5:1 i strona podskakuje */
  .ac-badge-shot img { aspect-ratio: 1 / 1; object-fit: cover; }
}

/*--------------------------------------------------------------
  13. Obsada
--------------------------------------------------------------*/
.ac-people {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.ac-people li {
  font-family: var(--ac-font-display);
  font-size: 15.5px;
  font-weight: 600;
  color: var(--ac-ink);
  background: var(--ac-card);
  border: 1px solid var(--ac-line);
  border-left: 2px solid var(--ac-acc-soft);
  border-radius: 3px;
  padding: 11px 18px;
  transition: border-left-color .15s, transform .15s;
}
.ac-people li:hover { border-left-color: var(--ac-acc); transform: translateY(-2px); }
/* domknięcie listy — sygnał, że skład nie jest zamknięty */
.ac-people-more {
  font-family: var(--ac-font-mono) !important;
  font-size: 13px !important;
  font-weight: 400 !important;
  color: var(--ac-faint) !important;
  background: transparent !important;
  border-style: dashed !important;
  border-left-color: var(--ac-line) !important;
}
.ac-people-more:hover { border-left-color: var(--ac-line) !important; transform: none !important; }

/*--------------------------------------------------------------
  14. Miejsce
--------------------------------------------------------------*/
.ac-venue {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
}
.ac-venue-main, .ac-venue-side {
  background: var(--ac-card);
  border: 1px solid var(--ac-line);
  border-radius: 4px;
  padding: 26px;
}
.ac-venue-label {
  font-family: var(--ac-font-mono);
  font-size: 11px;
  color: var(--ac-faint);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 12px;
}
.ac-venue-addr {
  font-family: var(--ac-font-display);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--ac-ink);
  margin: 0 0 16px;
}
/* Dwa odnośniki obok siebie — na wąskim ekranie zawijają się z zachowaniem odstępu */
.ac-venue-links { display: flex; flex-wrap: wrap; gap: 10px 22px; }
.ac-venue-side ul { margin: 0; padding-left: 18px; }
.ac-venue-side li { font-size: 14.5px; color: var(--ac-muted); line-height: 1.7; }

/* Mapa na kliknięcie. Kafelek i wstawiony później iframe zajmują ten sam
   prostokąt, żeby strona nie skakała w momencie załadowania mapy. */
.ac-map {
  margin-top: 18px;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--ac-line);
  border-radius: 4px;
  overflow: hidden;
  background: var(--ac-card);
}
.ac-map[hidden] { display: none; }
.ac-map-load {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 10px;
  width: 100%;
  height: 100%;
  padding: 26px;
  border: 0;
  background: transparent;
  text-align: center;
  cursor: pointer;
}
.ac-map-load-title {
  font-family: var(--ac-font-mono);
  font-size: 14px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ac-acc);
}
.ac-map-load-note {
  max-width: 46ch;
  font-size: 13.5px;
  line-height: 1.65;
  color: var(--ac-muted);
}
.ac-map-load:hover .ac-map-load-title,
.ac-map-load:focus-visible .ac-map-load-title { color: var(--ac-ink); }
.ac-map-frame { display: block; width: 100%; height: 100%; border: 0; }
/* Mapa Google jest zawsze jasna — w ciemnym motywie przygaszamy ją tak,
   żeby nie świeciła w sekcji mocniej niż cała reszta strony. */
:root[data-theme="dark"] .ac-map-frame { filter: brightness(.88) saturate(.9); }

@media (max-width: 575px) {
  .ac-map { aspect-ratio: 4 / 3; }
  .ac-map-load { padding: 20px; }
}

/*--------------------------------------------------------------
  15. Partnerzy
--------------------------------------------------------------*/
.ac-partners-label {
  font-family: var(--ac-font-mono);
  font-size: 11px;
  color: var(--ac-faint);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 30px 0 16px;
}
.ac-partners {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
}
/* Logotypy partnerów niosą kolory swoich marek i mają białe elementy —
   odwrócenie ich w jasnym motywie zamieniłoby czerwień z3s w cyjan.
   Dlatego kafel jest ciemny w KAŻDYM motywie i skórce: to płytka pod logo,
   nie element interfejsu. Alphacon i Alphasec to czyste białe znaki,
   więc tam filtr działa poprawnie i zostaje. */
.ac-partner {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 200px;
  padding: 22px 28px;
  background: #1a1410;
  border: 1px solid var(--ac-line);
  border-radius: 4px;
  transition: border-color .15s;
}
.ac-partner:hover { border-color: var(--ac-acc); }
.ac-partner img { max-width: 160px; height: auto; }

.ac-partner-slot {
  max-width: 420px;
  padding: 26px;
  border: 1px dashed var(--ac-inputborder);
  border-radius: 4px;
  background: var(--ac-surface);
}
.ac-partner-slot-mark {
  font-family: var(--ac-font-display);
  font-size: 26px;
  font-weight: 700;
  color: var(--ac-strong);
  margin-bottom: 10px;
}
.ac-partner-slot p { font-size: 14px; color: var(--ac-muted); margin: 0 0 14px; }

/*--------------------------------------------------------------
  16. Duża edycja — kreskowana ramka = „jeszcze nie istnieje"
--------------------------------------------------------------*/
.ac-future-card {
  position: relative;
  border: 1px dashed var(--ac-inputborder);
  border-radius: 4px;
  background: var(--ac-surface);
  padding: 28px;
  margin-top: 30px;
}
.ac-badge {
  position: absolute;
  top: 18px; right: 18px;
  font-family: var(--ac-font-mono);
  font-size: 10px;
  color: var(--ac-faint);
  border: 1px solid var(--ac-inputborder);
  padding: 3px 8px;
  border-radius: 2px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.ac-future-title {
  font-family: var(--ac-font-display);
  font-size: 22px;
  font-weight: 700;
  color: var(--ac-ink);
  margin: 0 0 10px;
}
.ac-future-card p { font-size: 14.5px; color: var(--ac-muted); margin: 0 0 10px; }

/*--------------------------------------------------------------
  17. Formularz
--------------------------------------------------------------*/
.footer-wrapper { background: var(--ac-bg) !important; border-top: 1px solid var(--ac-line); }

.contact-form2 {
  background: var(--ac-card);
  border: 1px solid var(--ac-line);
  border-radius: 4px;
  padding: clamp(24px, 4vw, 34px);
}

.ac-label {
  display: block;
  font-family: var(--ac-font-mono);
  font-size: 11px;
  color: var(--ac-faint);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-bottom: 7px;
}
.ac-optional { text-transform: none; letter-spacing: 0; }

.ac-form .form-control,
.ac-form .form-select {
  background: var(--ac-surface) !important;
  border: 1px solid var(--ac-inputborder) !important;
  border-radius: 3px !important;
  color: var(--ac-ink) !important;
  font-family: var(--ac-font-body) !important;
  font-size: 15px !important;
  padding: 13px 15px !important;
  height: auto !important;
  transition: border-color .15s;
}
.ac-form textarea.form-control { min-height: 110px !important; }
.ac-form .form-control:focus,
.ac-form .form-select:focus {
  border-color: var(--ac-acc) !important;
  outline: none;
  box-shadow: none !important;
}
.ac-form .form-control::-webkit-input-placeholder { color: var(--ac-faint); }
.ac-form .form-control::placeholder { color: var(--ac-faint); }
.ac-form .form-select { appearance: auto; }
.ac-form .form-group { margin-bottom: 18px; }

/* Charakter uczestnictwa — wielokrotny wybór.
   Bootstrap ustawia legend na float:left/width:100% i skaluje font, więc
   resetujemy ją do zachowania zwykłej etykiety (.ac-label). */
.ac-roles { border: 0; padding: 0; margin: 0; min-width: 0; }
.ac-roles legend {
  float: none;
  width: auto;
  padding: 0;
  font-size: 11px;
  line-height: inherit;
}
.ac-roles-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(215px, 1fr));
  gap: 8px;
}
.ac-role {
  display: flex;
  gap: 10px;
  align-items: center;
  background: var(--ac-surface);
  border: 1px solid var(--ac-inputborder);
  border-radius: 3px;
  padding: 11px 13px;
  font-size: 14px;
  line-height: 1.35;
  color: var(--ac-muted);
  cursor: pointer;
  transition: border-color .15s, color .15s;
}
.ac-role:hover { border-color: var(--ac-acc); }
/* Ten sam problem co przy .ac-consent — style.css dokłada display:none
   na input[type="checkbox"], więc przywracamy natywną kontrolkę. */
.ac-role input[type="checkbox"] {
  display: inline-block;
  visibility: visible;
  opacity: 1;
  width: 16px;
  height: 16px;
  margin: 0;
  flex: 0 0 auto;
  accent-color: var(--ac-btn-bg);
  cursor: pointer;
}
.ac-role:has(input:checked) { border-color: var(--ac-acc); color: var(--ac-ink); }
.ac-roles.is-invalid .ac-role { border-color: var(--ac-red); }

.ac-consent {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 13px;
  line-height: 1.55;
  color: var(--ac-muted);
  cursor: pointer;
}
/* Szablon chował natywny checkbox (visibility:hidden, width:0) i rysował
   własny przez `input ~ label:before` glifem Font Awesome \f00c. FA nie ma,
   a nasz input siedzi WEWNĄTRZ label-a, więc ten selektor i tak nie łapie —
   w efekcie nie było widać nic. Przywracamy natywną kontrolkę. */
.ac-consent input[type="checkbox"] {
  /* style.css deklaruje input[type="checkbox"] dwa razy — druga deklaracja
     dokłada display:none, więc samo visibility/opacity nie wystarczy. */
  display: inline-block;
  visibility: visible;
  opacity: 1;
  width: 17px;
  height: 17px;
  margin-top: 2px;
  flex: 0 0 auto;
  accent-color: var(--ac-btn-bg);
  cursor: pointer;
}
.ac-consent a { color: var(--ac-acc); border-bottom: 1px solid var(--ac-acc-soft); }

.ac-form-msg {
  font-family: var(--ac-font-mono);
  font-size: 13px;
  line-height: 1.6;
  margin: 16px 0 0;
  display: none;
}
.ac-form-msg.is-ok  { display: block; color: var(--ac-acc); }
.ac-form-msg.is-err { display: block; color: var(--ac-red-text); }
.ac-form-msg.is-busy { display: block; color: var(--ac-faint); }
.ac-form-msg a { color: inherit; border-bottom: 1px solid currentColor; }

.ac-form .form-control.is-invalid,
.ac-form .form-select.is-invalid { border-color: var(--ac-red) !important; }

.ac-contact-note {
  margin-top: 26px;
  padding-top: 22px;
  border-top: 1px solid var(--ac-line);
}
.ac-contact-note p { margin: 0; font-size: 14.5px; color: var(--ac-muted); }
.ac-contact-note a { color: var(--ac-acc); }

/*--------------------------------------------------------------
  18. Stopka
--------------------------------------------------------------*/
.footer-wrapper .widget-area {
  padding: 40px 0;
  border-top: 1px solid var(--ac-line);
  margin-top: 70px;
}
.ac-footer-brand img { height: 36px; width: auto; display: block; margin-bottom: 14px; filter: var(--ac-logofilter, none); }
.ac-umbrella { font-size: 14px; color: var(--ac-muted); margin: 0; max-width: 420px; }
.ac-umbrella a { color: var(--ac-acc); }

.ac-alphasec-link img { height: 26px; width: auto; opacity: 0.75; transition: opacity .15s; filter: var(--ac-logofilter, none); }
.ac-alphasec-link:hover img { opacity: 1; }

/* Logotypy dostarczone są w wersji białej — na jasnym papierze trzeba je
   odwrócić, inaczej znikają. Dotyczy alphaseca i logotypów partnerów. */
[data-theme="light"] { --ac-logofilter: invert(1) brightness(0.24); }
[data-theme="light"] .ac-invert { --ac-logofilter: none; }
.ac-invert { --ac-logofilter: invert(1) brightness(0.24); }

.copyright-wrap {
  background: var(--ac-bg) !important;
  border-top: 1px solid var(--ac-line);
  padding: 22px 0;
}
.copyright-text {
  font-family: var(--ac-font-mono);
  font-size: 11.5px;
  color: var(--ac-faint);
  margin: 0;
}
.footer-links ul { display: flex; gap: 20px; margin: 0; padding: 0; list-style: none; }
.footer-links a {
  font-family: var(--ac-font-mono);
  font-size: 11.5px;
  color: var(--ac-faint);
  transition: color .15s;
}
.footer-links a:hover { color: var(--ac-acc); }

/*--------------------------------------------------------------
  19. Strona treściowa (polityka prywatności)
--------------------------------------------------------------*/
.ac-doc { padding: 60px 0 84px; }
.ac-doc h1 {
  font-size: clamp(28px, 3.4vw, 38px);
  font-weight: 700;
  margin: 12px 0 10px;
}
.ac-doc h2 {
  font-size: 19px;
  font-weight: 600;
  color: var(--ac-ink);
  margin: 34px 0 10px;
}
.ac-doc p, .ac-doc li { font-size: 15px; line-height: 1.7; color: var(--ac-muted); }
.ac-doc ul { padding-left: 20px; }
.ac-doc a { color: var(--ac-acc); border-bottom: 1px solid var(--ac-acc-soft); }
.ac-doc-updated {
  font-family: var(--ac-font-mono);
  font-size: 12px;
  color: var(--ac-faint);
}
.ac-doc-narrow { max-width: 760px; }

/*--------------------------------------------------------------
  20. Konsola „/" i toast

  Klasy w środku są prefiksowane .ac-*, bo `.row`, `.box` i `.out` to nazwy
  zajęte przez Bootstrapa i szablon — bootstrapowy `.row` wstrzykiwał w wiersz
  promptu ujemne marginesy siatki i rozdymał go na trzy linie.

  Panel wjeżdża z góry, przykrywa stronę półprzezroczystym tłem.
  Styl jest celowo płaski i monospace'owy — to ma wyglądać jak terminal
  doklejony do strony, a nie jak modal z frameworka.
--------------------------------------------------------------*/
#acConsole {
  position: fixed;
  inset: 0;
  z-index: 900;
  display: none;
  background: rgba(10, 7, 5, 0.72);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  padding: 10vh 16px 16px;
}
#acConsole[data-open] { display: block; }
#acConsole .ac-box {
  max-width: 720px;
  margin: 0 auto;
  background: var(--ac-term-bg);
  border: 1px solid rgb(var(--ac-term-rgb) / 0.35);
  border-radius: 4px;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.55);
  overflow: hidden;
}
#acConsole .ac-out {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px;
  line-height: 1.75;
  color: var(--ac-term);
  padding: 16px 18px 8px;
  max-height: 52vh;
  overflow-y: auto;
  white-space: pre-wrap;
}
#acConsole .ac-out .dim { color: var(--ac-term-dim); }
#acConsole .ac-out .err { color: #ff7a66; }
#acConsole .ac-out .cmd { color: #fff2d8; }
#acConsole .ac-out b { color: #ffd489; font-weight: 600; }
#acConsole .ac-cmdline {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 10px 18px 14px;
  border-top: 1px solid rgb(var(--ac-term-rgb) / 0.16);
}
#acConsole .ac-cmdline > span {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px;
  color: var(--ac-term-dim);
}
#acConsole input {
  flex: 1;
  /* szablon daje input { height: 55px } — bez tego wiersz konsoli
     rozdymał się na trzy linie, a kursor lądował pod promptem */
  height: auto;
  min-height: 0;
  line-height: 1.6;
  background: transparent;
  border: 0;
  outline: none;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 13px;
  color: var(--ac-term);
  caret-color: var(--ac-term);
  padding: 0;
}

#acToast {
  position: fixed;
  left: 50%;
  bottom: 26px;
  transform: translate(-50%, 12px);
  z-index: 950;
  background: var(--ac-card);
  border: 1px solid var(--ac-line);
  border-left: 2px solid var(--ac-acc);
  border-radius: 3px;
  padding: 11px 16px;
  font-family: var(--ac-font-mono);
  font-size: 12.5px;
  color: var(--ac-strong);
  box-shadow: 0 14px 34px var(--ac-shadow);
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s ease, transform .18s ease;
}
#acToast[data-show] { opacity: 1; transform: translate(-50%, 0); }

/*--------------------------------------------------------------
  21. Poprawki strukturalne szablonu
      (dopisane po usunięciu warstwy jQuery + scrollCue)
--------------------------------------------------------------*/

/* Szablon trzymał treść na opacity:0 i odsłaniał ją skryptem scrollCue.
   Skryptu już nie ma, więc siatka bezpieczeństwa: nic nie ma prawa
   zostać niewidoczne, nawet gdyby gdzieś został atrybut data-cue. */
[data-cue], [data-cues] > *,
.ot-hero-wrapper [data-cue] {
  opacity: 1 !important;
  -webkit-animation: none !important;
          animation: none !important;
  transform: none !important;
  visibility: visible !important;
}

/* Sticky nagłówek — wcześniej sterowany JS-em przez .sticky-wrapper */
.ot-header {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 50;
}

/* Kotwice nie mogą lądować pod przyklejonym paskiem */
[id] { scroll-margin-top: 84px; }

.hero-style2 { padding: 104px 0 96px; }

@media (max-width: 991px) {
  .hero-style2 { padding: 72px 0 64px; }
  [id] { scroll-margin-top: 120px; }
}

/*--------------------------------------------------------------
  22. Ruch — jedno miejsce, w którym wszystko się zatrzymuje
--------------------------------------------------------------*/
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .ac-cursor,
  .ac-leds i,
  .ac-ticker-track { animation: none !important; }
  /* W trybie live diody nie są animowane — jasność ustawia JS przez --l.
     Maszyna nigdy nie startuje sama, więc WCAG 2.2.2 jest spełnione
     konstrukcyjnie: użytkownik uruchamia i użytkownik zatrzymuje. */
  .ac-panel[data-live] .ac-sw::after { transition: none !important; }
  .ac-sw::after { transition: none; }
  .feature-card:hover,
  .ac-people li:hover { transform: none; }
}

/*--------------------------------------------------------------
  23. Detale
--------------------------------------------------------------*/
.ot-btn span[aria-hidden], .ac-forward-link span[aria-hidden] { margin-left: 8px; }
.ot-btn span[aria-hidden]:first-child { margin-left: 0; margin-right: 8px; }
