/*
 Theme Name: LinuxBeast
 Template: generatepress
 Description: Child theme for LinuxBeast.com tech blog
 Version: 1.4.0
 Text Domain: linuxbeast
*/

/* ===========================================
   BLOG/ARCHIVE: Card Grid Layout
   =========================================== */
.blog .site-content,
.archive .site-content,
.search .site-content {
	max-width: 960px;
	margin: 0 auto;
}

.blog .site-main,
.archive .site-main,
.search .site-main {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 20px;
}

.blog .site-main > nav,
.archive .site-main > nav,
.search .site-main > nav {
	grid-column: 1 / -1;
}

/* Archive title spans full width */
.blog .site-main > .page-header,
.archive .site-main > .page-header,
.search .site-main > .page-header {
	grid-column: 1 / -1;
	margin-bottom: 0;
}

/* Category filter spans full width */
.lb-cat-filter {
	grid-column: 1 / -1;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 4px;
	padding: 0;
}

.lb-cat-filter-item {
	display: inline-block;
	padding: 5px 14px;
	border-radius: 20px;
	font-size: 0.78rem;
	font-weight: 500;
	color: var(--lb-gray-600);
	background: var(--lb-gray-100);
	text-decoration: none;
	transition: all 0.15s;
}

.lb-cat-filter-item:hover {
	background: var(--lb-gray-200);
	color: var(--lb-gray-900);
}

.lb-cat-filter-item.active {
	background: var(--lb-blue);
	color: #fff;
}

/* ===========================================
   BLOG/ARCHIVE: Post Cards
   =========================================== */
.blog article .inside-article,
.archive article .inside-article,
.search article .inside-article {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--lb-gray-200);
	border-radius: var(--lb-radius-lg);
	overflow: hidden;
	box-shadow: var(--lb-shadow);
	transition: box-shadow 0.15s;
	padding: 0;
	height: 100%;
}

.blog article .inside-article:hover,
.archive article .inside-article:hover,
.search article .inside-article:hover {
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* Featured image at top of card */
.blog .post-image,
.archive .post-image,
.search .post-image {
	order: -1;
	margin: 0;
}

.blog .post-image img,
.archive .post-image img,
.search .post-image img {
	width: 100%;
	height: 180px;
	object-fit: cover;
	display: block;
	border-radius: 0;
}

/* Card content area */
.blog .entry-header,
.archive .entry-header,
.search .entry-header {
	padding: 16px 18px 0;
}

.blog .entry-summary,
.archive .entry-summary,
.search .entry-summary {
	padding: 0 18px 16px;
	flex: 1;
}

/* Category badge */
.lb-cat-badge {
	display: inline-block;
	font-size: 0.68rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	padding: 2px 8px;
	border-radius: 4px;
	background: var(--lb-blue-light);
	color: var(--lb-blue);
	text-decoration: none;
	margin-bottom: 6px;
}

.lb-cat-badge:hover {
	background: var(--lb-blue);
	color: #fff;
}

/* Card title */
.blog .entry-title,
.archive .entry-title,
.search .entry-title {
	font-size: 0.95rem !important;
	font-weight: 600;
	line-height: 1.35;
	margin: 0 0 4px 0 !important;
}

.blog .entry-title a,
.archive .entry-title a,
.search .entry-title a {
	color: var(--lb-gray-900);
	text-decoration: none;
}

.blog .entry-title a:hover,
.archive .entry-title a:hover,
.search .entry-title a:hover {
	color: var(--lb-blue);
}

/* Card date */
.blog .entry-meta,
.archive .entry-meta,
.search .entry-meta {
	font-size: 0.72rem;
	color: var(--lb-gray-500);
	margin-top: 2px;
}

/* Card excerpt */
.blog .entry-summary p,
.archive .entry-summary p,
.search .entry-summary p {
	font-size: 0.82rem;
	color: var(--lb-gray-600);
	line-height: 1.5;
	margin: 0;
}

.blog .entry-summary .read-more,
.archive .entry-summary .read-more,
.search .entry-summary .read-more {
	color: var(--lb-blue);
	font-weight: 500;
	font-size: 0.82rem;
	text-decoration: none;
}

.blog .entry-summary .read-more:hover,
.archive .entry-summary .read-more:hover,
.search .entry-summary .read-more:hover {
	text-decoration: underline;
}

/* Hide footer meta on cards (moved to functions.php) */
.blog article .entry-meta.post-meta,
.archive article .entry-meta.post-meta {
	display: none;
}

/* Remove GP's default article spacing */
.blog .separate-containers .inside-article,
.archive .separate-containers .inside-article,
.search .separate-containers .inside-article {
	padding: 0;
}

.blog .separate-containers article,
.archive .separate-containers article,
.search .separate-containers article {
	margin-bottom: 0;
}

/* ===========================================
   BLOG/ARCHIVE: Responsive
   =========================================== */
@media (max-width: 768px) {
	.blog .site-main,
	.archive .site-main,
	.search .site-main {
		grid-template-columns: 1fr;
		gap: 14px;
	}

	.lb-cat-filter {
		gap: 6px;
	}

	.lb-cat-filter-item {
		padding: 4px 10px;
		font-size: 0.74rem;
	}

	.blog .post-image img,
	.archive .post-image img,
	.search .post-image img {
		height: 160px;
	}
}

/* ===========================================
   Header & Navigation
   =========================================== */

/* Sticky nav on scroll */
.main-navigation {
	position: sticky;
	top: 0;
	background: #fff;
	border-bottom: 1px solid var(--lb-gray-200);
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

/* Tighter nav height and padding */
.main-navigation .main-nav ul li a,
.main-navigation .menu-bar-item > a {
	line-height: 48px;
	padding-left: 14px;
	padding-right: 14px;
	font-size: 0.84rem;
	font-weight: 500;
	color: var(--lb-gray-600);
	transition: color 0.15s;
}

/* Hover state */
.main-navigation .main-nav ul li a:hover,
.main-navigation .menu-bar-item > a:hover {
	color: var(--lb-blue);
}

/* Active page indicator */
.main-navigation .main-nav ul li.current-menu-item > a,
.main-navigation .main-nav ul li.current-menu-ancestor > a {
	color: var(--lb-blue);
	box-shadow: inset 0 -2px 0 var(--lb-blue);
}

/* Dropdown arrow subtle */
.menu-item-has-children .dropdown-menu-toggle {
	padding: 0 8px;
}

/* Dropdown menu styling */
.main-navigation ul ul {
	border-radius: var(--lb-radius);
	border: 1px solid var(--lb-gray-200);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
	overflow: hidden;
}

.main-navigation ul ul a {
	font-size: 0.82rem;
	padding: 8px 16px !important;
	line-height: 1.5 !important;
}

.main-navigation ul ul li a:hover {
	background: var(--lb-gray-50);
}

/* ===========================================
   CSS Custom Properties
   =========================================== */
:root {
	--lb-blue: #2563eb;
	--lb-blue-light: #eff6ff;
	--lb-blue-dark: #1e40af;
	--lb-green: #059669;
	--lb-green-light: #f0fff4;
	--lb-green-dark: #276749;
	--lb-orange: #d97706;
	--lb-orange-light: #fffbeb;
	--lb-orange-dark: #92400e;
	--lb-red: #e53e3e;
	--lb-red-light: #fff5f5;
	--lb-red-dark: #9b2c2c;
	--lb-gray-50: #f9fafb;
	--lb-gray-100: #f3f4f6;
	--lb-gray-200: #e5e7eb;
	--lb-gray-300: #d1d5db;
	--lb-gray-500: #6b7280;
	--lb-gray-600: #4b5563;
	--lb-gray-700: #374151;
	--lb-gray-800: #1f2937;
	--lb-gray-900: #111827;
	--lb-code-bg: #1e293b;
	--lb-code-fg: #e2e8f0;
	--lb-radius: 6px;
	--lb-radius-lg: 10px;
	--lb-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
	--lb-font-mono: 'Fira Code', Consolas, 'Courier New', monospace;
	--lb-content-width: 720px;
}

/* ===========================================
   Content Width — Narrow for Readability
   =========================================== */
.single .inside-article {
	max-width: 820px;
	margin: 0 auto;
}

.single .entry-content {
	max-width: var(--lb-content-width);
	margin-left: auto;
	margin-right: auto;
}

/* ===========================================
   Post Title
   =========================================== */
.single .entry-header {
	max-width: var(--lb-content-width);
	margin-left: auto;
	margin-right: auto;
}

.single .entry-header h1 {
	font-size: 1.65rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--lb-gray-900);
	margin-bottom: 0.3em;
}

.single .entry-meta {
	font-size: 0.8rem;
	color: var(--lb-gray-500);
}

/* ===========================================
   Global Typography (Single Posts)
   =========================================== */
.single .entry-content {
	font-size: 0.94rem;
	line-height: 1.7;
	color: var(--lb-gray-700);
}

.single .entry-content p {
	margin-bottom: 1.1em;
}

.single .entry-content strong {
	color: var(--lb-gray-900);
	font-weight: 600;
}

/* Headings — tight, clean hierarchy */
.single .entry-content h2 {
	font-size: 1.25rem;
	font-weight: 700;
	color: var(--lb-gray-900);
	margin: 2em 0 0.6em 0;
	padding: 0;
	border: none;
	line-height: 1.3;
}

.single .entry-content h3 {
	font-size: 1.05rem;
	font-weight: 600;
	color: var(--lb-gray-900);
	margin: 1.6em 0 0.5em 0;
	line-height: 1.4;
}

.single .entry-content h4 {
	font-size: 0.94rem;
	font-weight: 600;
	color: var(--lb-gray-800);
	margin: 1.3em 0 0.4em 0;
}

/* ===========================================
   Ordered Lists — Compact Numbered Steps
   =========================================== */
.single .entry-content > ol {
	counter-reset: step-counter;
	list-style: none;
	padding-left: 0;
	margin: 0.8em 0;
}

.single .entry-content > ol > li {
	counter-increment: step-counter;
	position: relative;
	padding-left: 2.4rem;
	margin-bottom: 0.6em;
	padding-bottom: 0.6em;
	border-bottom: 1px solid var(--lb-gray-100);
	font-size: 0.9rem;
}

.single .entry-content > ol > li::before {
	content: counter(step-counter);
	position: absolute;
	left: 0;
	top: 0.05em;
	width: 1.55rem;
	height: 1.55rem;
	background: var(--lb-blue);
	color: #fff;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: 0.72rem;
	line-height: 1;
}

.single .entry-content > ol > li:last-child {
	border-bottom: none;
	padding-bottom: 0;
}

/* Unordered lists */
.single .entry-content > ul {
	padding-left: 1.2em;
	margin: 0.8em 0;
}

.single .entry-content > ul > li {
	margin-bottom: 0.35em;
	font-size: 0.9rem;
}

/* ===========================================
   Blockquotes — Clean Info Callout
   =========================================== */
.single .entry-content blockquote {
	border-left: 3px solid var(--lb-blue);
	background: var(--lb-blue-light);
	padding: 10px 14px;
	margin: 1em 0;
	border-radius: 0 var(--lb-radius) var(--lb-radius) 0;
	font-style: normal;
	font-size: 0.84rem;
	color: var(--lb-blue-dark);
}

.single .entry-content blockquote p {
	margin-bottom: 0;
}

/* ===========================================
   Inline Code
   =========================================== */
.single .entry-content code,
.lbo-card code {
	background: #f1f5f9;
	color: #0f172a;
	padding: 1px 5px;
	border-radius: 3px;
	font-size: 0.82em;
	font-family: var(--lb-font-mono);
}

.single .entry-content pre code,
.lbo-code code {
	background: transparent;
	color: inherit;
	padding: 0;
	border-radius: 0;
	font-size: inherit;
}

/* ===========================================
   Code Blocks (pre) — Dark
   =========================================== */
.single .entry-content pre {
	background: var(--lb-code-bg) !important;
	color: var(--lb-code-fg) !important;
	border-radius: var(--lb-radius);
	padding: 14px 16px;
	font-family: var(--lb-font-mono);
	font-size: 0.78rem;
	line-height: 1.7;
	overflow-x: auto;
	margin: 0.8em 0;
	white-space: pre-wrap;
	word-wrap: break-word;
	border: none;
}

/* ===========================================
   Code Blocks (lbo-code) — Reference Design
   =========================================== */
.lbo-code {
	background: var(--lb-code-bg);
	color: var(--lb-code-fg);
	border-radius: var(--lb-radius);
	padding: 14px 16px;
	font-family: var(--lb-font-mono);
	font-size: 0.78rem;
	line-height: 1.7;
	overflow-x: auto;
	margin-bottom: 10px;
	position: relative;
	white-space: pre-wrap;
	word-wrap: break-word;
}

.lbo-code:last-child {
	margin-bottom: 0;
}

/* Syntax highlighting spans */
.lbo-code .lbo-comment { color: #64748b; }
.lbo-code .lbo-cmd { color: #38bdf8; }
.lbo-code .lbo-flag { color: #a78bfa; }
.lbo-code .lbo-str { color: #86efac; }
.lbo-code .lbo-keyword { color: #c084fc; }
.lbo-code .lbo-var { color: #67e8f9; }
.lbo-code .lbo-num { color: #fbbf24; }

/* ===========================================
   Tables
   =========================================== */
.single .entry-content table,
.lbo-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.82rem;
	margin: 0.8em 0;
}

.single .entry-content thead th,
.lbo-table thead th {
	background: var(--lb-gray-900);
	color: #fff;
	padding: 8px 12px;
	text-align: left;
	font-weight: 600;
	font-size: 0.74rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.lbo-table thead th:first-child { border-radius: 6px 0 0 0; }
.lbo-table thead th:last-child { border-radius: 0 6px 0 0; }

.single .entry-content tbody td,
.lbo-table tbody td {
	padding: 8px 12px;
	border-bottom: 1px solid var(--lb-gray-100);
}

.single .entry-content tbody tr:last-child td,
.lbo-table tbody tr:last-child td { border-bottom: none; }

.single .entry-content tbody tr:hover,
.lbo-table tbody tr:hover { background: var(--lb-gray-50); }

.lbo-rec { color: var(--lb-green); font-weight: 600; }

/* ===========================================
   Images & Figures
   =========================================== */
.single .entry-content img {
	border-radius: var(--lb-radius);
}

.single .entry-content figure {
	margin: 1em 0;
}

.single .entry-content figcaption {
	font-size: 0.78rem;
	color: var(--lb-gray-500);
	text-align: center;
	margin-top: 0.4em;
}

/* ===========================================
   Cards (lbo-card) — Reference Design
   =========================================== */
.lbo-card {
	background: #fff;
	border: 1px solid var(--lb-gray-200);
	border-radius: var(--lb-radius-lg);
	padding: 20px;
	margin-bottom: 14px;
	box-shadow: var(--lb-shadow);
}

.lbo-card > *:last-child { margin-bottom: 0; }

.lbo-card h2 {
	font-size: 0.95rem !important;
	font-weight: 700 !important;
	color: var(--lb-gray-900) !important;
	margin: 0 0 12px 0 !important;
	padding: 0 0 8px 0 !important;
	border: none !important;
	border-bottom: 2px solid var(--lb-gray-200) !important;
	display: flex !important;
	align-items: center !important;
	gap: 8px !important;
}

.lbo-card h3 {
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--lb-gray-900);
	margin: 14px 0 8px 0;
}

/* Step number badge */
.lbo-step {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--lb-blue);
	color: #fff;
	font-size: 0.7rem;
	font-weight: 700;
	flex-shrink: 0;
}

/* Description text */
.lbo-desc {
	font-size: 0.85rem;
	color: var(--lb-gray-600);
	margin-bottom: 10px;
}

/* ===========================================
   Callouts
   =========================================== */
.lbo-note {
	border-left: 3px solid var(--lb-orange);
	background: var(--lb-orange-light);
	padding: 9px 13px;
	border-radius: 0 var(--lb-radius) var(--lb-radius) 0;
	font-size: 0.82rem;
	color: var(--lb-orange-dark);
	margin-bottom: 10px;
}
.lbo-note strong { color: #78350f; }

.lbo-info {
	border-left: 3px solid var(--lb-blue);
	background: var(--lb-blue-light);
	padding: 9px 13px;
	border-radius: 0 var(--lb-radius) var(--lb-radius) 0;
	font-size: 0.82rem;
	color: var(--lb-blue-dark);
	margin-bottom: 10px;
}

.lbo-tip {
	border-left: 3px solid var(--lb-green);
	background: var(--lb-green-light);
	padding: 9px 13px;
	border-radius: 0 var(--lb-radius) var(--lb-radius) 0;
	font-size: 0.82rem;
	color: var(--lb-green-dark);
	margin-bottom: 10px;
}

.lbo-danger {
	border-left: 3px solid var(--lb-red);
	background: var(--lb-red-light);
	padding: 9px 13px;
	border-radius: 0 var(--lb-radius) var(--lb-radius) 0;
	font-size: 0.82rem;
	color: var(--lb-red-dark);
	margin-bottom: 10px;
}

/* ===========================================
   Extension / Badge Tags
   =========================================== */
.lbo-ext {
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
	margin-bottom: 10px;
}

.lbo-ext-tag {
	display: inline-block;
	font-size: 0.74rem;
	padding: 3px 10px;
	border-radius: 10px;
	background: #ede9fe;
	color: #5b21b6;
	font-weight: 500;
}

/* ===========================================
   Checklist
   =========================================== */
.lbo-check {
	list-style: none;
	padding: 0;
	margin: 0;
}

.lbo-check li {
	font-size: 0.82rem;
	color: var(--lb-gray-700);
	padding: 5px 0;
	border-bottom: 1px solid var(--lb-gray-100);
	display: flex;
	align-items: center;
	gap: 7px;
	font-family: var(--lb-font-mono);
}

.lbo-check li:last-child { border-bottom: none; }

.lbo-check .lbo-chk {
	width: 16px;
	height: 16px;
	border: 2px solid var(--lb-gray-300);
	border-radius: 3px;
	flex-shrink: 0;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.15s;
	background: #fff;
}

.lbo-check .lbo-chk.checked {
	background: var(--lb-green);
	border-color: var(--lb-green);
}

.lbo-check .lbo-chk.checked::after {
	content: "\2713";
	color: #fff;
	font-size: 0.65rem;
	font-weight: 700;
}

.lbo-check li.done {
	color: #9ca3af;
	text-decoration: line-through;
}

/* ===========================================
   Next Steps List
   =========================================== */
.lbo-next {
	list-style: none;
	padding: 0;
	margin: 0;
}

.lbo-next li {
	font-size: 0.84rem;
	color: var(--lb-gray-600);
	padding: 5px 0;
	border-bottom: 1px solid var(--lb-gray-100);
	display: flex;
	align-items: baseline;
	gap: 7px;
}

.lbo-next li:last-child { border-bottom: none; }

.lbo-next li::before {
	content: "\2192";
	color: var(--lb-blue);
	font-weight: 700;
	flex-shrink: 0;
}

/* ===========================================
   Header — Reference Design
   =========================================== */
.lbo-header {
	text-align: center;
	margin-bottom: 24px;
}

.lbo-header h1 {
	font-size: 1.5rem !important;
	font-weight: 700 !important;
	color: var(--lb-gray-900) !important;
	margin: 0 0 4px 0 !important;
	padding: 0 !important;
	border: none !important;
}

.lbo-header p {
	font-size: 0.88rem;
	color: var(--lb-gray-500);
	max-width: 580px;
	margin: 0 auto;
}

.lbo-header .lbo-meta {
	font-size: 0.76rem;
	color: #9ca3af;
	margin-top: 6px;
}

/* ===========================================
   Responsive (Mobile)
   =========================================== */
/* Nav items: reduce padding further on tablets */
@media (max-width: 960px) {
	.main-navigation .main-nav ul li a,
	.main-navigation .menu-bar-item > a {
		padding-left: 10px;
		padding-right: 10px;
		font-size: 0.8rem;
	}
}

@media (max-width: 640px) {
	.single .inside-article {
		padding-left: 16px;
		padding-right: 16px;
	}

	.single .entry-header h1 {
		font-size: 1.35rem;
	}

	.single .entry-content > ol > li {
		padding-left: 2.2rem;
	}

	.single .entry-content > ol > li::before {
		width: 1.4rem;
		height: 1.4rem;
		font-size: 0.68rem;
	}

	.lbo-card {
		padding: 14px;
	}

	.lbo-code,
	.single .entry-content pre {
		font-size: 0.72rem;
		padding: 10px 12px;
	}

	.lbo-table {
		font-size: 0.76rem;
	}

	.lbo-table thead th,
	.lbo-table tbody td {
		padding: 6px 8px;
	}
}
