/* ===== CyberSchild theme overrides — v1 (Dzień 3) ===== */

/* --- Fonts (self-hosted, revDSG) --- */
@font-face { font-family:'Space Grotesk'; font-weight:400; font-display:swap;
  src:url('../fonts/SpaceGrotesk-400.woff2') format('woff2'); }
@font-face { font-family:'Space Grotesk'; font-weight:500; font-display:swap;
  src:url('../fonts/SpaceGrotesk-500.woff2') format('woff2'); }
@font-face { font-family:'Space Grotesk'; font-weight:600; font-display:swap;
  src:url('../fonts/SpaceGrotesk-600.woff2') format('woff2'); }
@font-face { font-family:'Space Grotesk'; font-weight:700; font-display:swap;
  src:url('../fonts/SpaceGrotesk-700.woff2') format('woff2'); }
@font-face { font-family:'JetBrains Mono'; font-weight:400; font-display:swap;
  src:url('../fonts/JetBrainsMono-400.woff2') format('woff2'); }
@font-face { font-family:'JetBrains Mono'; font-weight:500; font-display:swap;
  src:url('../fonts/JetBrainsMono-500.woff2') format('woff2'); }
@font-face { font-family:'JetBrains Mono'; font-weight:600; font-display:swap;
  src:url('../fonts/JetBrainsMono-600.woff2') format('woff2'); }

/* --- Paleta --- */
:root {
  --cs-bg:#070a11; --cs-panel:#0a0e17; --cs-panel-2:#0b1020; --cs-card:#0c1220;
  --cs-border:rgba(120,140,170,0.12); --cs-border-soft:rgba(120,140,170,0.10);
  --cs-text:#e7ecf3; --cs-muted:#9aa7bb; --cs-dim:#8a97ab; --cs-faint:#5b6675;
  --cs-accent:#6aa7e0; --cs-green:#2ee6a8; --cs-teal:#7fd1b9;
  --cs-crit:#e5484d; --cs-crit-soft:rgba(229,72,77,0.15);
  --cs-high:#f5a524; --cs-high-soft:rgba(245,165,36,0.15);
  --cs-med:#e8c63a;  --cs-med-soft:rgba(232,198,58,0.15);
  --cs-mono:'JetBrains Mono',monospace;
}

/* Wymuszenie ciemnego motywu na realnych zmiennych Source.
   Potwierdzone przez grep assets/built/screen.css — nazwy zgodne. */
:root {
  --background-color: var(--cs-bg);
  --color-darker-gray: var(--cs-text);
  --color-dark-gray: var(--cs-muted);
  --color-secondary-text: var(--cs-dim);
  --color-border: var(--cs-border);
  --ghost-accent-color: var(--cs-accent) !important;
}
body { background:var(--cs-bg); color:var(--cs-text);
  font-family:'Space Grotesk',system-ui,sans-serif; }
a { color:inherit; }
.gh-outer, .gh-navigation, .gh-footer { background:var(--cs-panel-2); color:var(--cs-dim); }
.gh-navigation { border-bottom:1px solid var(--cs-border-soft); }
.gh-footer { border-top:1px solid var(--cs-border-soft);
  font-family:var(--cs-mono); font-size:11.5px; color:var(--cs-faint); }

/* --- Hero --- */
.cs-hero { position:relative; padding:64px 24px 54px; text-align:center;
  background:
    radial-gradient(900px 520px at 50% 0%, rgba(106,167,224,0.16), transparent 60%),
    radial-gradient(520px 420px at 50% -10%, rgba(229,72,77,0.08), transparent 60%),
    linear-gradient(rgba(255,255,255,0.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.022) 1px, transparent 1px),
    var(--cs-panel);
  background-size:auto,auto,34px 34px,34px 34px;
  border-bottom:1px solid var(--cs-border-soft); }
.cs-hero-kicker { display:inline-flex; align-items:center; gap:9px;
  font-family:var(--cs-mono); font-size:12px; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--cs-accent); margin-bottom:22px; }
.cs-hero-kicker::before { content:''; width:7px; height:7px; border-radius:50%;
  background:var(--cs-green); box-shadow:0 0 10px rgba(46,230,168,0.9); }
.cs-hero h1 { margin:0 auto 18px; font-size:clamp(30px,5vw,46px); line-height:1.05;
  font-weight:700; letter-spacing:-0.02em; max-width:780px; color:var(--cs-text); }
.cs-hero-sub { margin:0 auto 30px; font-size:17.5px; line-height:1.55;
  color:var(--cs-muted); max-width:600px; }
.cs-hero-checks { display:flex; justify-content:center; flex-wrap:wrap; gap:10px 26px;
  font-family:var(--cs-mono); font-size:12px; color:var(--cs-dim); margin-top:22px; }
.cs-hero-checks span::before { content:'✓ '; color:var(--cs-green); }

/* --- Newsletter (Ghost members form) --- */
.cs-subscribe { display:flex; gap:10px; max-width:500px; margin:0 auto; }
.cs-subscribe input { flex:1; min-width:0; font-family:var(--cs-mono); font-size:14px;
  padding:14px 16px; border-radius:5px; border:1px solid rgba(120,140,170,0.28);
  background:#0c1322; color:var(--cs-text); }
.cs-subscribe input::placeholder { color:#7f8da2; }
.cs-subscribe button { font-family:'Space Grotesk',sans-serif; font-weight:600;
  font-size:14.5px; padding:0 26px; border-radius:5px; border:none;
  background:var(--cs-accent); color:var(--cs-panel); cursor:pointer; }
.cs-form-msg { display:none; width:100%; margin-top:12px; font-family:var(--cs-mono);
  font-size:13px; }
.cs-subscribe.success .cs-form-msg--success { display:block; color:var(--cs-green); }
.cs-subscribe.error   .cs-form-msg--error   { display:block; color:var(--cs-crit); }
.cs-subscribe.loading button  { opacity:0.6; pointer-events:none; }

/* --- Lista meldunek --- */
.cs-list { padding:36px 24px 44px; max-width:1080px; margin:0 auto; }
.cs-list-head { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.cs-list-head span:first-child { font-family:var(--cs-mono); font-size:12px;
  letter-spacing:0.16em; text-transform:uppercase; color:var(--cs-dim); }
.cs-list-head span:last-child { flex:1; height:1px; background:rgba(120,140,170,0.14); }
.cs-cards { display:flex; flex-direction:column; gap:12px; }

.cs-more { text-align:center; margin-top:22px; }
.cs-more a { font-family:var(--cs-mono); font-size:12.5px; letter-spacing:0.06em;
  color:var(--cs-accent); text-decoration:none; }
.cs-more a:hover { text-decoration:underline; }

/* --- Karta --- */
.cs-card { position:relative; display:block; border:1px solid rgba(120,140,170,0.11);
  border-radius:5px; overflow:hidden; background:var(--cs-card);
  padding:20px 24px 20px 28px; }
.cs-card::before { content:''; position:absolute; left:0; top:0; bottom:0;
  width:4px; background:var(--cs-faint); }   /* domyślnie: post nie-CVE (Angriffslage) */
.cs-card h3 { margin:0 0 8px; font-size:21px; font-weight:600; line-height:1.25;
  letter-spacing:-0.01em; }
.cs-card h3 a { color:var(--cs-text); text-decoration:none; }
.cs-card h3 a:hover { color:var(--cs-accent); }
.cs-card p { margin:0 0 14px; font-size:15px; line-height:1.6;
  color:var(--cs-muted); max-width:780px; }
.cs-card-meta { display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin-bottom:12px; }
.cs-card-foot { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.cs-card-foot .cs-date { margin-left:auto; font-family:var(--cs-mono);
  font-size:12px; color:#6f7c90; }
.cs-action { display:block; margin-bottom:12px; font-family:var(--cs-mono); font-size:12.5px; color:var(--cs-accent); }
.cs-action::before { content:'→ Massnahme: '; color:var(--cs-faint); }

/* Wiersz badge'y na stronie posta (post.hbs) i na kartach list
   (post-card.hbs — archiwa tagów, "Read more", paginacja). Sama logika
   i te same klasy .cs-sev/.cs-kev co na stronie głównej (cs-card.hbs). */
.cs-post-badges, .cs-badges-row { display:flex; align-items:center; gap:10px;
  flex-wrap:wrap; margin-bottom:14px; }

/* Badge severity — tekst i kolor sterowany klasą tag-* z {{post_class}}.
   Slugi potwierdzone w Kroku 0 (tagi PUBLICZNE, bez prefiksu hash-):
   critical / high / medium / aktiv-ausgenutzt. */
.cs-sev { display:none; font-family:var(--cs-mono); font-size:11px; font-weight:600;
  letter-spacing:0.1em; text-transform:uppercase; padding:4px 9px; border-radius:3px; }
.tag-critical .cs-sev, .tag-high .cs-sev, .tag-medium .cs-sev { display:inline-block; }
.tag-critical .cs-sev::after { content:'Kritisch'; }
.tag-critical .cs-sev { color:var(--cs-crit); background:var(--cs-crit-soft); }
.tag-critical::before  { background:var(--cs-crit); }
.tag-high .cs-sev::after { content:'Hoch'; }
.tag-high .cs-sev { color:var(--cs-high); background:var(--cs-high-soft); }
.tag-high::before  { background:var(--cs-high); }
.tag-medium .cs-sev::after { content:'Mittel'; }
.tag-medium .cs-sev { color:var(--cs-med); background:var(--cs-med-soft); }
.tag-medium::before  { background:var(--cs-med); }

/* KEV — brak realnego tagu "kev"; odpowiednik potwierdzony w Kroku 0: aktiv-ausgenutzt */
.cs-kev { display:none; font-family:var(--cs-mono); font-size:11px; font-weight:600;
  letter-spacing:0.1em; padding:4px 9px; border-radius:3px;
  color:var(--cs-crit); border:1px solid var(--cs-crit); }
.tag-aktiv-ausgenutzt .cs-kev { display:inline-block; }
.cs-kev::after { content:'KEV — aktiv ausgenutzt'; }

/* --- Chip tagów na karcie ---
   Tagi są publiczne, więc {{#foreach tags}} je też wypisuje — ukryj te,
   które już mają dedykowany badge (severity/KEV), żeby nie dublować informacji. */
.cs-chip { font-family:var(--cs-mono); font-size:12px; color:var(--cs-dim);
  border:1px solid rgba(120,140,170,0.2); padding:3px 8px; border-radius:3px; }
.cs-chip--critical, .cs-chip--high, .cs-chip--medium,
.cs-chip--aktiv-ausgenutzt { display:none; }

@media (max-width:560px) {
  .cs-subscribe { flex-direction:column; }
  .cs-subscribe button { padding:14px; }
}
