/* ============================================================
   BootBlock — wspólna skóra serwisu (shell)
   Layout i komponenty dzielone przez WSZYSTKIE strony: pasek statusu,
   nagłówek, hero, karty artykułów, widok listy, paginacja, stopka,
   powrót na górę. Kolory biorą się wyłącznie ze zmiennych motywu
   (theme.css), więc grafit/jasny/workbench/c64/guru/fosfor działają
   bez dopisywania reguł. Ładuj PO theme.css, PRZED artykul/sekcja.css.
   ============================================================ */
:root{
  --max:1280px;
  --mono:ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace;
  --sans:ui-sans-serif,system-ui,"Segoe UI",Arial,sans-serif;
  --panel:var(--bg2);
  --panel2:var(--bg3);
  --muted:var(--dim);
  --faint:color-mix(in srgb, var(--dim) 72%, var(--bg));
  --line2:color-mix(in srgb, var(--line) 62%, var(--ink) 38%);
  --copper:linear-gradient(90deg,#c9584a,#d78a3c,#c9b458,#6aa98a,#5f8fb8,#8a6fb8);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
svg{display:block}
::selection{background:var(--acc);color:#141414}
.wrap{width:min(var(--max),calc(100% - 48px));margin-inline:auto}

/* --- pasek statusu (nad headerem, nie klei się do góry) --- */
.statusbar{border-bottom:1px solid var(--line);background:var(--panel)}
.statusbar .inner{display:flex;justify-content:space-between;gap:16px;padding:6px 0;
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--faint);text-transform:uppercase}
.statusbar b{color:var(--muted);font-weight:700}
.statusbar a:hover{color:var(--acc)}
@media (max-width:680px){.statusbar .sb-right{display:none}}

/* --- topbar --- */
header.site{position:sticky;top:0;z-index:100;border-bottom:1px solid var(--line);
  background:color-mix(in srgb, var(--bg) 92%, transparent);backdrop-filter:blur(8px)}
/* szerokość bierze z .wrap — header ma trzymać tę samą kolumnę co treść */
header.site .head-in{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;
  min-height:64px}
.logo{display:flex;align-items:center;gap:12px;flex:none}
.logo img{height:32px;width:auto;image-rendering:pixelated}
.drive-tag{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--faint);
  border:1px solid var(--line);padding:5px 7px}
/* margin-left:auto z theme.css rozwaliłby wyśrodkowanie w gridzie */
header.site nav{justify-self:center;margin-left:0;display:flex;gap:2px;align-items:center;font-size:14px}
header.site nav > a,.cat-more > summary{color:var(--muted);padding:23px 11px 21px;position:relative;line-height:1}
header.site nav > a:hover,header.site nav > a.on{color:var(--ink)}
header.site nav > a.on{box-shadow:none}
header.site nav > a.on::after{content:"";position:absolute;left:11px;right:11px;bottom:14px;height:2px;background:var(--acc)}
/* WSPOMINKI zostaje wyróżnione, tylko spokojniej niż dotąd */
header.site nav > a[data-cat="wspominki"]{border:0;padding:23px 11px 21px;box-shadow:none;color:var(--acc)}
header.site nav > a[data-cat="wspominki"]:hover{background:transparent;color:var(--acc)}
header.site nav > a[data-cat="wspominki"].on{background:transparent;color:var(--acc)}
.cat-more > summary::after{content:"⌄";font-size:11px;margin-left:5px;vertical-align:2px}
.controls{display:flex;align-items:center;gap:8px;flex:none;justify-self:end}
.controls .prefs{margin-left:0}
.menu-btn{grid-column:3;justify-self:end}

/* Statyczne menu dla stron bez site.js (prywatnosc.html) — nie ma szuflady,
   więc na mobile pasek kategorii schodzi do drugiego wiersza i przewija się
   w poziomie. Linki .xtra dokładają pełną listę działów, na desktopie zbędną. */
header.site nav.nav-static > a.xtra{display:none}
@media (max-width:860px){
  /* flex-wrap z theme.css złamałby pasek na trzy wiersze — ma być jeden, przewijany */
  header.site nav.nav-static{display:flex!important;flex-wrap:nowrap;grid-column:1/-1;justify-self:stretch;
    overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;
    border-top:1px solid var(--line);margin:0 -14px;padding:0 14px}
  header.site nav.nav-static > a{flex:none}
  header.site nav.nav-static::-webkit-scrollbar{display:none}
  header.site nav.nav-static > a{padding:13px 11px;font-size:13px;white-space:nowrap}
  header.site nav.nav-static > a.xtra{display:block}
  header.site .head-in:has(nav.nav-static){min-height:0;padding-top:10px}
}

/* --- hero --- */
.hero{border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:7.2fr 4.8fr;gap:60px;align-items:center;
  min-height:440px;padding:64px 0 58px;position:relative}
.kick{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.28em;
  text-transform:uppercase;color:var(--acc);margin-bottom:20px}
.hero h1{font-size:clamp(36px,4.6vw,64px);line-height:1.0;letter-spacing:-.035em;font-weight:900;margin:0 0 22px}
.hero h1 a:hover{text-decoration:underline;text-decoration-color:var(--acc);text-underline-offset:8px;text-decoration-thickness:3px}
.hero p{font-size:18.5px;line-height:1.6;color:var(--muted);max-width:700px;margin:0 0 24px}
.meta-row{display:flex;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;
  color:var(--faint);margin-bottom:26px}
.meta-row b{color:var(--ink);font-weight:700}
.btn{display:inline-flex;align-items:center;gap:12px;border:1px solid var(--acc);padding:12px 16px;
  font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.btn:hover{background:var(--acc);color:#141414}
.btn .arrow{transition:transform .15s}
.btn:hover .arrow{transform:translateX(3px)}

.hero-art{border-left:1px solid var(--line);padding-left:52px;display:flex;flex-direction:column;justify-content:center}
.art-head,.art-foot{display:flex;justify-content:space-between;gap:12px;
  font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.art-head{margin-bottom:14px}
.art-foot{margin-top:12px}
.pixel-stage{height:240px;border:1px solid var(--line);background:var(--panel);position:relative;overflow:hidden}
.pixel-stage::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(0,0,0,.10) 4px)}
.pixel-stage svg{width:100%;height:100%;image-rendering:pixelated}
/* Artykuł z własną grafiką (pole "art") — ten sam kadr co scena SVG, ale bez
   image-rendering:pixelated, bo to rysunek, nie siatka pikseli. */
.pixel-stage img,.story-art img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
/* Nakładka ze skanlinami dobrze wygląda na scenie z klocków, ale na rysunku
   z drobnym tekstem robi mory i całość wygląda jak zepsuty JPEG. */
.pixel-stage:has(img)::after,.story-art:has(img)::after{display:none}

/* --- nagłówek sekcji --- */
.section{padding:52px 0 76px}
.section-title{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:16px;margin-bottom:26px}
.section-title h2{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.28em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap}
.section-rule{height:2px;background:var(--copper);opacity:.7}
.section-count{font-family:var(--mono);font-size:10px;color:var(--faint);white-space:nowrap}

/* --- przełącznik widoku (desktop) --- */
.viewswitch{display:flex;border:1px solid var(--line)}
.viewswitch button{background:transparent;border:0;border-right:1px solid var(--line);cursor:pointer;
  padding:6px 10px;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted)}
.viewswitch button:last-child{border-right:0}
.viewswitch button:hover{color:var(--ink)}
.viewswitch button.on{background:var(--panel2);color:var(--acc)}
@media (max-width:860px){.viewswitch{display:none}}

/* --- siatka redakcyjna --- */
.editorial-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:22px}
.story{grid-column:span 4;border:1px solid var(--line);background:var(--panel);min-width:0;
  position:relative;display:flex;flex-direction:column;cursor:pointer;
  transition:border-color .16s,transform .16s,box-shadow .16s}
.story:hover{border-color:var(--acc);transform:translateY(-2px);box-shadow:4px 4px 0 var(--panel2)}
.story.large{grid-column:span 7}
.story.side{grid-column:span 5}
.story-art{height:150px;border-bottom:1px solid var(--line);background:var(--bg);position:relative;overflow:hidden}
.story.large .story-art,.story.side .story-art{height:200px}
.story-art svg{width:100%;height:100%;image-rendering:pixelated}
.story-art::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(0,0,0,.10) 4px)}
.file-label{position:absolute;top:10px;right:12px;z-index:2;font-family:var(--mono);font-size:9px;
  font-weight:700;letter-spacing:.1em;color:color-mix(in srgb,var(--ink) 55%,transparent)}
.niche-label{position:absolute;top:10px;left:12px;z-index:2;font-family:var(--mono);font-size:9px;
  font-weight:700;letter-spacing:.14em;background:var(--acc);color:#141414;padding:2px 7px;rotate:-2deg}
.story-body{padding:20px 22px 18px;display:flex;flex-direction:column;flex:1}
.story-topline{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}
.story-cat{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.24em;
  text-transform:uppercase;color:var(--acc)}
.story-no{font-family:var(--mono);font-size:10px;color:var(--faint)}
.story-title{font-size:18px;line-height:1.25;letter-spacing:-.02em;font-weight:800;margin:0 0 10px}
.story.large .story-title,.story.side .story-title{font-size:22px;line-height:1.2}
.story-copy{color:var(--muted);font-size:14px;line-height:1.6;margin:0 0 18px}
.story-bottom{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:12px;
  font-family:var(--mono);font-size:11px;color:var(--faint)}
.story-link{color:var(--acc);font-weight:700}
/* WSPOMINKI — seria felietonowa, sepiowy odcień karty */
.story.cat-wspominki{background:color-mix(in srgb, var(--bg2) 78%, var(--acc) 22%)}
.story.cat-wspominki .series-badge{position:absolute;right:-1px;top:-1px;z-index:3;
  font-family:var(--mono);font-size:9px;letter-spacing:.14em;background:var(--acc);color:#141414;padding:2px 8px}

/* --- widok listy (katalog plików) --- */
.list-view{border-top:1px solid var(--line)}
.list-row{display:grid;grid-template-columns:96px 116px minmax(0,1fr) 64px 60px;align-items:center;gap:20px;
  padding:13px 12px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11.5px;
  color:var(--faint);cursor:pointer;transition:background .12s}
.list-row:hover{background:var(--panel)}
.list-row:hover .r-title{color:var(--acc)}
.list-row .r-cat{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-size:10px}
.list-row .r-title{font-family:var(--sans);font-size:15.5px;font-weight:700;line-height:1.35;
  letter-spacing:-.01em;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.list-row .r-min,.list-row .r-no{text-align:right}
.list-row.cat-wspominki .r-cat{color:var(--acc)}
@media (max-width:860px){
  .list-row{grid-template-columns:1fr auto;gap:6px 14px;padding:12px 8px}
  .list-row .r-title{grid-column:1 / -1;white-space:normal;order:-1}
  .list-row .r-no{display:none}
}

/* --- paginacja --- */
.pager{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:34px}
.pager button{background:transparent;border:1px solid var(--line);color:var(--muted);cursor:pointer;
  min-width:34px;padding:7px 10px;font-family:var(--mono);font-size:11px;font-weight:700}
.pager button:hover:not(:disabled){border-color:var(--acc);color:var(--acc)}
.pager button.on{background:var(--acc);border-color:var(--acc);color:#141414}
.pager button:disabled{opacity:.35;cursor:default}
.pager .gap{color:var(--faint);font-family:var(--mono);font-size:11px;padding:0 2px}
.pager .info{width:100%;text-align:center;margin-top:8px;font-family:var(--mono);font-size:10px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}

/* --- powrót na górę --- */
#totop{position:fixed;right:20px;bottom:20px;z-index:400;display:flex;align-items:center;gap:8px;
  background:var(--bg2);border:1px solid var(--acc);color:var(--acc);cursor:pointer;padding:10px 13px;
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.12em;
  opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .18s,transform .18s}
#totop.show{opacity:1;transform:none;pointer-events:auto}
#totop:hover{background:var(--acc);color:#141414}
@media (max-width:680px){#totop{right:12px;bottom:12px;padding:9px 11px}#totop .lbl{display:none}}

/* --- pasek archiwum --- */
.archive-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel)}
.archive-inner{display:grid;grid-template-columns:1fr auto;gap:30px;align-items:center;padding:24px 0}
.archive-inner p{color:var(--muted);font-family:var(--mono);font-size:12px;line-height:1.7}
.archive-inner strong{color:var(--ink)}
.archive-btn{border:1px solid var(--line2);padding:10px 13px;font-family:var(--mono);font-size:11px;font-weight:700;white-space:nowrap}
.archive-btn:hover{border-color:var(--acc);color:var(--acc)}

/* --- newsletter (klasy z theme.css, tylko odstępy) --- */
#nl-box{border-top:0}

/* --- stopka --- */
footer{background:var(--foot);padding:42px 0 52px;font-family:var(--mono)}
.footer-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:40px}
.footer-brand{font-size:13px;font-weight:700;letter-spacing:.1em;margin-bottom:10px;color:var(--ink)}
.footer-note{max-width:620px;color:var(--muted);font-size:11px;line-height:1.75}
.footer-links{margin-top:12px;font-size:11px;color:var(--faint)}
.footer-links a:hover{color:var(--acc)}
.footer-stats{text-align:right;color:var(--faint);font-size:11px;line-height:1.9}
.footer-stats b{color:var(--muted)}
.footer-shell{margin-top:16px;display:flex;gap:8px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden}
.footer-shell .prompt{color:var(--acc);font-weight:700}
.footer-shell .cursor{width:8px;height:15px;background:var(--acc);display:inline-block;animation:blink .9s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.foot-motto{margin-top:10px;font-size:11px;color:var(--acc)}

@media (max-width:1080px){
  .hero-grid{grid-template-columns:1fr;gap:34px;padding:48px 0}
  .hero-art{border-left:0;border-top:1px solid var(--line);padding:30px 0 0}
  .story.large,.story.side{grid-column:span 12}
  .story{grid-column:span 6}
}
@media (max-width:860px){
  header.site .head-in{gap:12px}
  .wrap{width:min(100% - 28px,var(--max))}
}
@media (max-width:680px){
  .hero-grid{padding:38px 0}
  .hero h1{font-size:34px}
  .hero p{font-size:16.5px}
  .pixel-stage{height:190px}
  .section{padding:34px 0 52px}
  .story{grid-column:span 12}
  .story-art,.story.large .story-art,.story.side .story-art{height:160px}
  .archive-inner{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
  .footer-stats{text-align:left}
}
