/* ==========================================================================
   SAN DIEGO BBQ CLEANERS - PATTERNS
   Cascade position 4. Depends on foundations.css tokens.

   Editorial: single post, archives, search, pagination.
   ========================================================================== */

/* ==========================================================================
   ARCHIVE HEADER
   ========================================================================== */

.sdb-archive__header { padding-block: var(--sdb-s5); }
.sdb-archive__title  { margin: 0; }

.sdb-archive__lede {
	max-width: 62ch;
	margin-top: var(--sdb-s2);
	font-size: var(--sdb-lead);
}

/* ==========================================================================
   FEATURED POST (blog index, first item)
   Two columns, copy left and image right, on the mist band. Below the desktop
   breakpoint it stacks with the image first.
   ========================================================================== */

.sdb-featured { background: var(--sdb-cream); }

.sdb-featured__inner {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	align-items: center;
	gap: var(--sdb-s5);
	padding-block: var(--sdb-s5);
}

.sdb-featured__kicker {
	margin: 0 0 var(--sdb-s2);
	font-size: var(--sdb-tiny);
	font-weight: var(--sdb-w-semi);
	color: var(--sdb-red-hot);
}

.sdb-featured__title { margin: 0 0 var(--sdb-s2); font-size: var(--sdb-h3); color: var(--sdb-ink); }
.sdb-featured__title a { color: inherit; text-decoration: none; }
.sdb-featured__title a:hover { color: var(--sdb-red-hot); }

.sdb-featured__meta { margin: 0; font-size: var(--sdb-tiny); color: #5B616A; }

.sdb-featured__img {
	width: 100%;
	height: auto;
	border-radius: var(--sdb-radius-img);
}

@media (max-width: 900px) {
	.sdb-featured__inner { grid-template-columns: 1fr; }
	.sdb-featured__media { order: -1; }
}

/* ==========================================================================
   ARTICLE
   ========================================================================== */

.sdb-article__header {
	padding-block: var(--sdb-s5) var(--sdb-s3);
	text-align: center;
}

.sdb-article__kicker {
	margin: 0 0 var(--sdb-s2);
	font-family: var(--sdb-font-body);
	font-size: var(--sdb-tiny);
	font-weight: var(--sdb-w-semi);
	color: var(--sdb-red);
}

.sdb-article__kicker a { text-decoration: none; }

.sdb-article__title {
	max-width: 22ch;
	margin-inline: auto;
	font-size: var(--sdb-h2);
}

.sdb-article__meta {
	display: flex;
	justify-content: center;
	gap: var(--sdb-s1);
	margin: var(--sdb-s2) 0 0;
	font-size: var(--sdb-tiny);
	color: var(--sdb-text-quiet);
}

.sdb-article__hero { margin-bottom: var(--sdb-s5); }

.sdb-article__hero-img {
	width: 100%;
	max-height: 520px;
	object-fit: cover;
	border-radius: var(--sdb-radius-img);
}

/* Content column plus a sticky aside. The Elementor template achieved the
   same with a sticky HTML widget and two duplicate TOC widgets. */
.sdb-article__layout {
	display: grid;
	grid-template-columns: minmax(0, 8fr) minmax(0, 4fr);
	align-items: start;
	gap: var(--sdb-s5);
	padding-bottom: var(--sdb-s7);
}

.sdb-article__content { font-size: var(--sdb-lead); }

.sdb-article__content :where(h2, h3) {
	margin-top: var(--sdb-s5);
	scroll-margin-top: 120px;
}

.sdb-article__content h2 { font-size: var(--sdb-h4); }
.sdb-article__content h3 { font-size: var(--sdb-h5); }

.sdb-article__content :where(ul, ol) { padding-left: 1.25em; }
.sdb-article__content li { margin-bottom: var(--sdb-s1); }

.sdb-article__content img { margin-block: var(--sdb-s4); }

.sdb-article__content blockquote {
	margin: var(--sdb-s4) 0;
	padding-left: var(--sdb-s3);
	border-left: 3px solid var(--sdb-red-hot);
	font-style: italic;
}

.sdb-article__content a { color: var(--sdb-red); }

/* ==========================================================================
   TABLE OF CONTENTS
   Built by article.js from the headings already in the document. Hidden when
   a post has fewer than three headings - a two-item contents is noise.
   ========================================================================== */

.sdb-toc {
	margin-bottom: var(--sdb-s5);
	padding: var(--sdb-s3) var(--sdb-s4);
	background: var(--sdb-well);
	box-shadow: inset 0 0 0 1px rgba(244, 247, 249, .1);
	border-radius: var(--sdb-radius-card);
}

.sdb-toc[hidden] { display: none; }

/* Was cream with the theme's light text on it, so only the current item was
   readable (2026-10-14). On the well now. */
.sdb-toc__title {
	margin: 0 0 var(--sdb-s2);
	font-size: var(--sdb-h6);
	color: var(--sdb-white);
}

.sdb-toc__list {
	margin: 0;
	padding-left: 1.2em;
	color: var(--sdb-cr-3);
	display: grid;
	gap: var(--sdb-s1);
}

.sdb-toc__item--h3 { margin-left: var(--sdb-s2); }

.sdb-toc__link {
	color: var(--sdb-text);
	text-decoration: none;
}

.sdb-toc__link:hover { color: var(--sdb-red-hot); text-decoration: underline; }

.sdb-toc__link.is-current {
	color: var(--sdb-red-hot);
	font-weight: var(--sdb-w-semi);
}

/* ==========================================================================
   TAGS
   ========================================================================== */

.sdb-article__tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sdb-s1);
	margin: var(--sdb-s5) 0 0;
	padding: 0;
	list-style: none;
}

.sdb-article__tags a {
	display: inline-block;
	padding: 4px 12px;
	border-radius: var(--sdb-radius-input);
	background: var(--sdb-cream);
	font-size: var(--sdb-tiny);
	text-decoration: none;
}

.sdb-article__tags a:hover { background: var(--sdb-red-hot); color: var(--sdb-white); }

/* ==========================================================================
   AUTHOR + SHARE
   ========================================================================== */

.sdb-article__foot {
	display: grid;
	gap: var(--sdb-s4);
	margin-top: var(--sdb-s5);
	padding-top: var(--sdb-s4);
	border-top: 1px solid var(--sdb-hairline);
}

.sdb-author {
	display: flex;
	align-items: flex-start;
	gap: var(--sdb-s3);
}

.sdb-author__avatar {
	width: 72px;
	height: 72px;
	flex: 0 0 72px;
	border-radius: 50%;
	object-fit: cover;
}

.sdb-author__label {
	margin: 0;
	font-size: var(--sdb-tiny);
	color: var(--sdb-text-quiet);
}

.sdb-author__name {
	margin: 2px 0 var(--sdb-s1);
	font-family: var(--sdb-font-display);
	font-size: var(--sdb-h6);
	color: var(--sdb-ink);
}

.sdb-author__bio { margin: 0; max-width: var(--sdb-measure); }

.sdb-share__title {
	margin: 0 0 var(--sdb-s2);
	font-size: var(--sdb-tiny);
	font-family: var(--sdb-font-body);
	font-weight: var(--sdb-w-semi);
	color: var(--sdb-text-quiet);
}

.sdb-share__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sdb-s1);
	margin: 0;
	padding: 0;
	list-style: none;
}

.sdb-share__link {
	display: inline-block;
	padding: 8px 14px;
	border-radius: var(--sdb-radius-input);
	background: var(--sdb-ink);
	color: var(--sdb-cream);
	font-size: var(--sdb-tiny);
	text-decoration: none;
	transition: background-color .18s ease;
}

.sdb-share__link:hover { background: var(--sdb-red-hot); color: var(--sdb-white); }

/* ==========================================================================
   SIDEBAR QUOTE CARD
   ========================================================================== */

.sdb-article__aside { position: sticky; top: 120px; }

.sdb-quotecard {
	padding: var(--sdb-s4);
	background: var(--sdb-ink);
	color: var(--sdb-cream);
	border-radius: var(--sdb-radius-card);
	text-align: center;
}

.sdb-quotecard__label {
	margin: 0;
	font-size: var(--sdb-tiny);
	font-weight: var(--sdb-w-semi);
	color: var(--sdb-red-hot);
}

.sdb-quotecard__title {
	margin: var(--sdb-s1) 0 var(--sdb-s2);
	color: var(--sdb-cream);
	font-size: var(--sdb-h4);
}

.sdb-quotecard__copy { margin: 0 0 var(--sdb-s3); }

.sdb-quotecard__cta { display: block; }

.sdb-quotecard__phone {
	display: block;
	margin-top: var(--sdb-s2);
	font-family: var(--sdb-font-display);
	font-size: var(--sdb-h6);
	color: var(--sdb-cream);
	text-decoration: none;
}

/* Below the desktop breakpoint the aside stops being a sidebar and drops
   under the article. Sticky is removed with it - a sticky full-width block on
   a phone eats the viewport. */
@media (max-width: 1024px) {
	.sdb-article__layout { grid-template-columns: 1fr; }
	.sdb-article__aside { position: static; }
}

/* ==========================================================================
   PAGINATION
   ========================================================================== */

.sdb-pagination { margin-top: var(--sdb-s5); }

.sdb-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--sdb-s1);
}

.sdb-pagination .page-numbers {
	display: inline-block;
	min-width: 44px;
	padding: 10px 14px;
	border-radius: var(--sdb-radius-input);
	background: var(--sdb-well);
	box-shadow: inset 0 0 0 1px rgba(244, 247, 249, .14);
	color: var(--sdb-text);
	text-align: center;
	text-decoration: none;
}

.sdb-pagination .page-numbers:hover { background: var(--sdb-raised); color: var(--sdb-white); }

.sdb-pagination .page-numbers.current {
	background: var(--sdb-red-hot);
	color: var(--sdb-white);
}

.sdb-pagination .page-numbers.dots { background: none; box-shadow: none; }

/* ==========================================================================
   SEARCH FORM
   ========================================================================== */

.search-form {
	display: flex;
	gap: var(--sdb-s1);
	max-width: 480px;
	margin-top: var(--sdb-s3);
}

.search-form label { flex: 1; }

.search-form .search-field {
	width: 100%;
	padding: var(--sdb-body);
	border: 1px solid var(--sdb-hairline);
	border-radius: var(--sdb-radius-input);
	font-family: var(--sdb-font-body);
	font-size: var(--sdb-body);
}

.search-form .search-submit {
	padding: var(--sdb-btn);
	border: 0;
	background: var(--sdb-red-hot);
	color: var(--sdb-white);
	font-family: var(--sdb-font-display);
	font-size: var(--sdb-btn);
	cursor: pointer;
}

.search-form .search-submit:hover { background: var(--sdb-red-hot); }

/* ==========================================================================
   DEFAULT PAGE (privacy, accessibility, anything without a template)
   ========================================================================== */

.sdb-page__header { padding-block: var(--sdb-s5); }
.sdb-page__title { margin: 0; }

.sdb-page__content { font-size: var(--sdb-lead); }
.sdb-page__content :where(h2, h3, h4) { margin-top: var(--sdb-s4); }
.sdb-page__content h2 { font-size: var(--sdb-h4); }
.sdb-page__content h3 { font-size: var(--sdb-h5); }
.sdb-page__content :where(ul, ol) { padding-left: 1.25em; }
.sdb-page__content li { margin-bottom: var(--sdb-s1); }
.sdb-page__content a { color: var(--sdb-red); }

.sdb-page__content table {
	width: 100%;
	border-collapse: collapse;
	margin: var(--sdb-s3) 0;
}

.sdb-page__content :where(th, td) {
	padding: var(--sdb-s1) var(--sdb-s2);
	border: 1px solid var(--sdb-hairline);
	text-align: left;
}

.sdb-page__content th { background: var(--sdb-cream); font-weight: var(--sdb-w-semi); }

/* ==========================================================================
   POST CONTENT: ALIGNED IMAGES AND TABLES (2026-10-14)
   Imported posts float images left and use fixed-layout block tables. On a
   phone that squeezed the text into a sliver beside the image and broke
   table words mid-word. Images stop floating under 600px; tables scroll
   sideways inside their figure instead of crushing their columns.
   ========================================================================== */

.sdb-prose .alignleft  { float: left;  max-width: 45%; margin: .35em var(--sdb-s3) var(--sdb-s2) 0; }
.sdb-prose .alignright { float: right; max-width: 45%; margin: .35em 0 var(--sdb-s2) var(--sdb-s3); }
.sdb-prose .aligncenter { margin-inline: auto; }
.sdb-prose figure img { max-width: 100%; height: auto; border-radius: var(--sdb-radius-img); }
.sdb-prose h2, .sdb-prose h3, .sdb-prose .wp-block-table, .sdb-prose hr { clear: both; }

.sdb-article__main, .sdb-article__content { min-width: 0; }
.sdb-prose .wp-block-table {
	max-width: 100%;
	margin: var(--sdb-s4) 0;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border-radius: var(--sdb-radius-card);
	box-shadow: inset 0 0 0 1px rgba(244, 247, 249, .12);
}
.sdb-prose table { width: 100%; border-collapse: collapse; font-size: var(--sdb-small); line-height: 1.45; }
.sdb-prose th,
.sdb-prose td { padding: 12px 14px; border: 0; border-bottom: 1px solid rgba(244, 247, 249, .1); text-align: left; vertical-align: top; }
.sdb-prose thead th, .sdb-prose tr:first-child td { color: var(--sdb-white); font-weight: var(--sdb-w-semi); background: var(--sdb-well); }
.sdb-prose td:first-child { color: var(--sdb-white); font-weight: var(--sdb-w-semi); }

@media (max-width: 600px) {
	.sdb-prose .alignleft,
	.sdb-prose .alignright { float: none; max-width: 100%; margin: var(--sdb-s2) 0; }
	.sdb-prose .alignleft img,
	.sdb-prose .alignright img { width: 100% !important; }
	.sdb-prose table.has-fixed-layout { table-layout: auto; }
	.sdb-prose table { min-width: 540px; }
	.sdb-prose th, .sdb-prose td { padding: 10px 12px; }
}
