.single-news-section{padding:30px 0;}
.single-news-grid{display:grid;grid-template-columns:1fr var(--single-sidebar-width,300px);gap:30px;}
.single-news-grid-no-sidebar{grid-template-columns:1fr;}
.article-header{margin-bottom:10px;}
.article-title{font-size:var(--fs-article-h1,36px);font-weight:700;line-height:1.2;color:var(--color-news-title);margin-bottom:20px;}
.archive-heading{margin-bottom:0 !important;}
.archive-heading-border{border-bottom:1px solid var(--color-border-light);}
.archive-desc{margin-top:clamp(18px,2.2vw,26px);font-size:clamp(14.45px,1.1475vw,16.15px);line-height:1.5;color:var(--color-text);}
.archive-desc.text-center{padding-left:20%;padding-right:20%;}
.article-meta{display:flex;flex-wrap:wrap;gap:20px;}
.meta-item{display:flex;align-items:center;gap:8px;font-size:var(--fs-article-micro,14px);color:var(--color-news-date);}
.meta-icon{width:16px;height:16px;color:var(--color-primary);}
.article-featured-image{position:relative;margin:10px 0;aspect-ratio:100 / var(--single-image-height-percent,50);}
.article-featured-image img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-card,var(--news-border-radius));display:block;}
.image-caption{margin-top:12px;font-size:var(--fs-article-micro,14px);color:var(--color-news-date);font-style:italic;}
/* Overlay — tytuł na zdjęciu (7.43.385, na życzenie klienta). Style
   .article-featured/.img-fill-absolute/.overlay-gradient/
   .hero-featured-block-title skopiowane 1:1 ze środkowej kolumny Hero V8
   (assets/css/utilities.css) — tu WYŁĄCZNIE wymiar (brak kontekstu
   siatki Hero) + wysoka specyficzność na .article-title, żeby zawsze
   wygrywał z domyślnym, dużym stylem h1 niezależnie od kolejności
   ładowania arkuszy. `cursor:default` (7.43.397, na życzenie klienta) —
   .article-featured (bazowa klasa, utilities.css) ma `cursor:pointer`,
   bo w Hero V8 CAŁA karta jest linkiem — tu nic nie jest klikalne
   (jesteśmy już na stronie artykułu), więc kursor sugerujący klikalność
   byłby mylący. Wysokość jako % szerokości (7.43.397, poprawka na
   życzenie klienta — zamiast stałej wartości w px) — `aspect-ratio`
   skaluje się proporcjonalnie do szerokości SAMO, bez osobnych reguł
   na breakpointy (w odróżnieniu od poprzedniego podejścia w px). */
.article-featured-overlay{margin:0 0 30px 0;aspect-ratio:100 / var(--single-image-height-percent,50);cursor:default;}
.article-featured-overlay .article-title{color:var(--color-white,#fff);font-size:32px;line-height:1.4;font-weight:700;margin:0;}
/* Bez efektu hover na tytule (7.43.401, na życzenie klienta) — nic
   tutaj nie jest linkiem (patrz cursor:default wyżej), więc dziedziczony
   ze wspólnej .article-featured (utilities.css, gdzie MA sens — tam
   karty SĄ linkami) hover na .news-title-white byłby mylący. Wyższa
   specyficzność + !important, żeby wygrać niezależnie od kolejności
   ładowania arkuszy i dokładnej specyficzności reguły źródłowej. */
.article-featured-overlay:hover .article-title{color:var(--color-white,#fff) !important;text-decoration:none !important;}
.article-meta-on-image{margin-top:8px;}
.article-meta-on-image .meta-item{color:var(--color-white,#fff);opacity:0.9;}
.article-meta-on-image .meta-icon{color:var(--color-white,#fff);}
.article-meta-below-overlay{margin-bottom:20px;}
.article-meta-on-image-top{position:absolute;top:16px;left:16px;z-index:2;gap:12px;color:var(--color-white,#fff);background:rgba(29,29,29,.55);padding:5px 10px;border-radius:var(--badge-border-radius,4px);}
.article-meta-on-image-top .meta-item{color:var(--color-white,#fff);}
.article-meta-on-image-top .meta-icon{color:var(--color-white,#fff);}
.article-body{font-size:var(--fs-article-body,17px);line-height:1.8;color:var(--color-text);}
.article-body p{margin-bottom:20px;}
.article-body h2{font-size:var(--fs-article-h2,28px);font-weight:700;margin:40px 0 20px;line-height:1.3;color:var(--color-news-title);}
.article-body h3{font-size:var(--fs-article-h3,22px);font-weight:600;margin:32px 0 16px;line-height:1.4;color:var(--color-news-title);}
.article-body ul,.article-body ol{margin:24px 0;padding-left:0;list-style:none;}
.article-body ul li{position:relative;padding-left:24px;}
.article-body ul li::before{content:'';position:absolute;left:0;top:11px;width:8px;height:8px;background-color:var(--color-primary);}
.article-body ol{counter-reset:theme-ol;}
.article-body ol li{counter-increment:theme-ol;position:relative;padding-left:32px;}
.article-body ol li::before{content:counter(theme-ol);position:absolute;left:0;top:4px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background-color:var(--color-primary);color:var(--color-white,#fff);font-size:12px;font-weight:700;line-height:1;}
.article-body li{margin-bottom:12px;}
.article-body blockquote{margin:32px 0;padding:24px;background-color:var(--color-quote-bg,var(--color-bg-light));border-left:4px solid var(--color-quote-border,var(--color-primary));border-radius:var(--radius-card-sm,0);font-style:italic;font-size:var(--fs-article-quote,18px);color:var(--color-quote-text,var(--color-text));}
.article-body blockquote p{margin-bottom:0;}
.article-body blockquote cite{display:block;margin-top:12px;font-style:normal;font-size:var(--fs-article-quote-cite,12px);letter-spacing:0.1em;text-transform:uppercase;opacity:0.75;}
.article-body table{width:100%;margin:32px 0;border-collapse:collapse;font-size:var(--fs-article-table,15px);}
.article-body table th,.article-body table td{padding:12px;text-align:left;border:1px solid var(--tbl-border,var(--color-border-light));}
.article-body table thead th,.article-body table tbody:first-child > tr:first-child > td{border-top:none;}
.article-body table th{background-color:var(--tbl-header-bg,var(--color-bg-light));font-weight:600;color:var(--tbl-header-text,var(--color-news-title));}
.article-body table td{background-color:var(--tbl-cell-bg,transparent);}
.article-body table tr:nth-child(even) td{background-color:var(--tbl-alt-bg,transparent);}
.article-body table tr:hover td{background-color:var(--color-bg-light);}
.article-body table td.hi{color:var(--tbl-accent,var(--color-primary));font-weight:600;}
.article-body .content-image{margin:32px 0;}
.article-body .content-image img{border-radius:var(--news-border-radius);}
.article-body .toc-box{margin:32px auto;width:fit-content;min-width:100px;max-width:440px;padding:20px 24px;background-color:var(--color-toc-bg,var(--color-bg-light));border-radius:var(--radius-card-sm,0);text-align:center;line-height:1.2;}
.article-body .toc-box-title{margin:0 0 12px;font-size:var(--fs-article-toc-title,13px);font-weight:700;text-transform:var(--toc-text-transform,uppercase);letter-spacing:var(--toc-letter-spacing,0.06em);color:var(--color-news-title);}
.article-body .toc-box > summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;justify-content:center;gap:8px;margin:0 0 12px;}
.article-body .toc-box > summary::-webkit-details-marker{display:none;}
.article-body .toc-box > summary::before{content:var(--toc-label,"Spis treści");font-size:var(--fs-article-toc-title,13px);font-weight:700;text-transform:var(--toc-text-transform,uppercase);letter-spacing:var(--toc-letter-spacing,0.06em);color:var(--color-news-title);}
.article-body .toc-box > summary::after{content:'[pokaż]';font-size:12px;font-weight:400;text-transform:none;letter-spacing:normal;color:var(--color-toc-link);}
.article-body .toc-box[open] > summary::after{content:'[ukryj]';}
.article-body .toc-box ol,.article-body .toc-box ul{margin:0;padding:0;list-style:none;text-align:left;}
.article-body .toc-box li{margin-bottom:0;padding-left:0;position:static;}
.article-body .toc-box li::before{content:none;}
.article-body .toc-box li.toc-sub{padding-left:18px;}
.article-body .toc-box li.toc-sub-sub{padding-left:36px;}
.article-body .toc-box a{font-size:var(--fs-boxy-body-text,15px);font-weight:400;color:var(--color-toc-link);text-decoration:none;}
.article-body .toc-box a:hover{text-decoration:underline;}
.article-body .infobox{margin:32px 0;padding:20px 24px;background-color:var(--color-bg-light);border-left:4px solid var(--color-bg-light-shade,var(--color-primary));border-radius:var(--radius-card-sm,0);}
.article-body .infobox-title{margin:0 0 8px;font-size:var(--fs-article-infobox-title,14px);font-weight:700;color:var(--color-news-title);}
.article-body .infobox p{margin:0;font-size:var(--fs-boxy-body-text,15px);line-height:1.6;}
.article-body .infobox p + p{margin-top:10px;}
.article-body .faq{margin:32px 0;}
.article-body .faq-title{margin:0 0 4px;font-size:var(--fs-article-faq-title,20px);font-weight:700;color:var(--color-news-title);}
.article-body .faq-item{border-bottom:1px solid var(--color-border-light);padding:16px 0;}
.article-body .faq-item:first-of-type{border-top:1px solid var(--color-border-light);}
.article-body .faq-item summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:var(--fs-article-faq-question,16px);font-weight:600;color:var(--color-news-title);}
.article-body .faq-item summary::-webkit-details-marker{display:none;}
.article-body .faq-item summary::after{content:'+';flex:0 0 auto;font-size:20px;line-height:1;font-weight:400;color:var(--color-primary);transition:transform 0.2s ease;}
.article-body .faq-item[open] summary::after{transform:rotate(45deg);}
.article-body .faq-item p{margin:12px 0 0;font-size:var(--fs-article-faq-answer,15px);line-height:1.6;color:var(--color-text);}
.article-body a{color:var(--color-link);font-weight:700;text-decoration:underline;text-underline-offset:min(4px,.175em);}
.article-body a:hover{color:var(--color-menu);}
.article-share{margin-top:32px;}
.share-buttons{display:flex;gap:12px;margin-top:16px;}
.share-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background-color:var(--color-bg-light);color:var(--color-text);transition:all 0.2s ease;}
.share-btn:hover{background-color:var(--color-primary);color:var(--color-white);transform:translateY(-2px);}
.sidebar{display:flex;flex-direction:column;gap:20px;}
@media (max-width:1200px){
.single-news-grid{grid-template-columns:1fr;gap:40px;}
}
@media (max-width:1024px){
.article-title{font-size:var(--fs-article-h1,32px);}
.article-featured-overlay .article-title{font-size:26px;}
}
@media (max-width:768px){
.single-news-section{padding:20px 0;}
.article-title{font-size:var(--fs-article-h1,26px);}
.article-body{font-size:var(--fs-article-body,16px);}
.article-body h2{font-size:var(--fs-article-h2,24px);}
.article-body h3{font-size:var(--fs-article-h3,20px);}
.archive-desc.text-center{padding:0 20px !important;}
.article-featured-overlay{margin:0 0 20px 0;}
.article-featured-overlay .article-title{font-size:20px;}
}
@media (max-width:480px){
.article-meta{gap:12px;}
}
/* Siatka newsów pod artykułem (7.43.393, na życzenie klienta) — TA SAMA
   siatka/style co na stronie głównej (assets/css/news-grid.css),
   WYŁĄCZNIE liczba kolumn na desktopie zmniejszona o 1 (każdy wariant
   ma swoją bazową klasę, redukcja per wariant niżej). Celowo w
   @media (min-width:1025px) — GWARANCJA zera interferencji z
   responsywnymi breakpointami 1024px/768px w news-grid.css (te są
   scope'owane do WŁASNYCH klas .news-grid-section-vN i tak przejmują
   z powrotem kontrolę poniżej 1024px, ale bez tego @media tutaj groziłby
   remis specyficzności z regułami tam — bezpieczniej wyłączyć się
   całkowicie, niż polegać na kolejności ładowania plików). */
@media (min-width:1025px){
.single-news-grid-below .category-news-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
.single-news-grid-below .news-grid-overlay{grid-template-columns:repeat(2,minmax(0,1fr));}
.single-news-grid-below .news-grid-full{grid-template-columns:repeat(4,minmax(0,1fr));}
.single-news-grid-below .news-grid-section-v4{--v4-cols:3;}
.single-news-grid-below .news-grid-author{grid-template-columns:repeat(3,minmax(0,1fr));}
.single-news-grid-below .news-grid-horizontal-large{grid-template-columns:repeat(2,minmax(0,1fr));}
.single-news-grid-below .news-grid-backgrounded{grid-template-columns:repeat(3,minmax(0,1fr));}
.single-news-grid-below .news-grid-section-v8 .grid-cols-4{grid-template-columns:repeat(3,minmax(0,1fr));}
}
.single-news-grid-below .news-grid-section-v5{padding:20px;border-radius:8px;}
.single-news-grid-below .news-grid-v7-wrapper{padding:20px;}
