/* DSD Stoplight: page templates and GeoDirectory / AyeCode UI integration.
   AUI runs in "compatibility" mode, so every Bootstrap rule is scoped under .bsui;
   overrides below use the same scope to win cleanly without !important. */

/* ---------- Page head and breadcrumbs ---------- */
.dsd-page-head { background: var(--card); border-bottom: 1px solid var(--line); padding: 20px 0 26px; }
.dsd-page-title { font-size: clamp(1.75rem, 1.2rem + 2vw, 2.6rem); font-weight: 800; letter-spacing: -0.03em; margin: 8px 0 0; }
.dsd-page-lead { color: var(--muted); font-size: 1.1rem; margin: 10px 0 0; max-width: 65ch; }

.dsd-crumbs ol { display: flex; flex-wrap: wrap; gap: 4px; list-style: none; margin: 0; padding: 0; font-size: 0.875rem; color: var(--muted); }
.dsd-crumbs li + li::before { content: "/"; margin-right: 4px; color: var(--lane); }
.dsd-crumbs a { color: var(--muted); }
.dsd-crumbs a:hover { color: var(--go-ink); }
.dsd-crumbs [aria-current] { color: var(--ink); font-weight: 600; }
.dsd-crumbs--gd { font-size: 0.875rem; color: var(--muted); }
.dsd-crumbs--gd .breadcrumb { background: none; padding: 0; margin: 0; font-size: 0.875rem; }
.dsd-crumbs--gd a { color: var(--muted); }

/* ---------- Prose ---------- */
.dsd-prose-wrap { padding-top: 36px; padding-bottom: 64px; }
.dsd-prose { max-width: 72ch; font-size: 1.0625rem; }
.dsd-prose h2 { font-size: 1.6rem; margin-top: 1.8em; }
.dsd-prose h3 { font-size: 1.25rem; margin-top: 1.5em; }
.dsd-prose ul, .dsd-prose ol { padding-left: 1.3em; }
.dsd-prose li { margin-bottom: 0.4em; }
.dsd-prose img { border-radius: var(--radius); }
.dsd-prose blockquote { margin: 1.5em 0; padding: 4px 0 4px 18px; border-left: 4px solid var(--caution); color: var(--muted); }
.dsd-prose table { width: 100%; border-collapse: collapse; margin: 1.5em 0; font-size: 0.95rem; display: block; overflow-x: auto; }
.dsd-prose th, .dsd-prose td { border: 1px solid var(--line); padding: 8px 10px; text-align: left; }
.dsd-prose th { background: var(--tint); }
.dsd-prose hr { border: 0; height: 3px; margin: 2em 0; background: repeating-linear-gradient(90deg, var(--caution) 0 24px, transparent 24px 44px); opacity: 0.6; }

/* ---------- Blog ---------- */
.dsd-list-wrap { padding-top: 36px; padding-bottom: 64px; }
.dsd-article__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; color: var(--muted); font-size: 0.9rem; margin: 12px 0 0; }
.dsd-article__hero { margin: 28px 0 0; }
.dsd-article__hero img { width: 100%; border-radius: var(--radius); }
.dsd-article .dsd-prose { padding-top: 28px; }
.dsd-cta-box { margin: 40px 0 24px; padding: 24px; border-radius: var(--radius); background: var(--go-tint); border: 1px solid color-mix(in srgb, var(--go) 30%, transparent); }
.dsd-cta-box h2 { font-size: 1.3rem; }
.dsd-post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 0 0 64px; }
.dsd-post-nav a { display: block; height: 100%; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); color: var(--ink); text-decoration: none; font-weight: 650; }
.dsd-post-nav a:hover { border-color: var(--go); }
.dsd-post-nav span { display: block; color: var(--muted); font-size: 0.8rem; font-weight: 600; }
.dsd-post-nav__next { text-align: right; grid-column: 2; }
@media (max-width: 600px) { .dsd-post-nav { grid-template-columns: 1fr; } .dsd-post-nav__next { grid-column: 1; text-align: left; } }

.dsd-pagination { margin-top: 32px; }
.dsd-pagination .nav-links { display: flex; flex-wrap: wrap; gap: 6px; }
.dsd-pagination .page-numbers { display: inline-grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: var(--radius-sm); background: var(--card); color: var(--ink); text-decoration: none; font-weight: 600; }
.dsd-pagination .page-numbers.current { background: var(--asphalt); border-color: var(--asphalt); color: #fff; }

.dsd-empty { padding: 32px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); max-width: 640px; }
.dsd-searchform { display: flex; gap: 8px; }
.dsd-input { flex: 1; min-height: 44px; padding: 8px 12px; border: 1.5px solid var(--lane); border-radius: var(--radius-sm); background: var(--card); color: var(--ink); font: inherit; }

/* ---------- 404 ---------- */
.dsd-404 { padding: 72px 0 88px; }
.dsd-404__inner { display: grid; grid-template-columns: auto 1fr; gap: 48px; align-items: center; }
.dsd-404__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
.dsd-404 .dsd-light { width: max-content; }
@media (max-width: 640px) { .dsd-404__inner { grid-template-columns: 1fr; } }

/* ---------- Single listing ---------- */
.dsd-listing-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; }
.dsd-listing-head__address { color: var(--muted); margin: 6px 0 10px; }
.dsd-listing-head__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.dsd-listing { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 32px; padding-top: 28px; padding-bottom: 56px; align-items: start; }
.dsd-listing__aside { display: grid; gap: 16px; position: sticky; top: calc(var(--header-h) + 16px); }
@media (max-width: 960px) {
	.dsd-listing { grid-template-columns: 1fr; }
	.dsd-listing__aside { position: static; }
	.dsd-listing-head__actions { width: 100%; }
	.dsd-listing-head__actions .dsd-btn--go { flex: 1 1 100%; }
}
.dsd-widget { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; }
.dsd-widget__title { font-size: 1rem; font-weight: 750; margin: 0 0 12px; }
.dsd-widget ul { margin: 0; padding-left: 1.1em; }

.dsd-checklist { margin-top: 32px; padding: 22px 24px; background: var(--card); border: 1px solid var(--line); border-left: 4px solid var(--caution); border-radius: var(--radius); }
.dsd-checklist h2 { font-size: 1.2rem; }
.dsd-checklist ul { list-style: none; margin: 0; padding: 0; }
.dsd-checklist li { position: relative; padding-left: 26px; margin-bottom: 8px; }
.dsd-checklist li::before { content: ""; position: absolute; left: 2px; top: 0.55em; width: 12px; height: 12px; border-radius: 50%; background: var(--go); }
.dsd-about { margin-top: 28px; }
.dsd-about h2, .dsd-guides h2, .dsd-claim h2 { font-size: 1.2rem; }
.dsd-about p { color: var(--ink); max-width: 72ch; }
.dsd-guides { margin-top: 24px; }
.dsd-guides ul { list-style: none; margin: 0; padding: 0; }
.dsd-guides li { position: relative; padding-left: 26px; margin-bottom: 8px; }
.dsd-guides li::before { content: ""; position: absolute; left: 0; top: 0.5em; width: 14px; height: 8px; border-radius: 4px; background: var(--go); }
.dsd-guides a { font-weight: 650; }
.dsd-claim { margin-top: 24px; padding: 22px 24px; background: var(--tint); border: 1px solid var(--line); border-left: 4px solid var(--go); border-radius: var(--radius); }
.dsd-claim p { color: var(--muted); margin: 0 0 14px; }

/* ---------- GeoDirectory content area ---------- */
.dsd-gd-content { padding-top: 24px; padding-bottom: 64px; }
.dsd-gd-body { min-width: 0; }

.bsui { font-family: var(--font); }
.bsui :where(h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6) { font-family: var(--font); color: var(--ink); font-weight: 750; letter-spacing: -0.01em; }
.bsui a:not(.btn):not(.badge) { color: var(--go-ink); }
.bsui .text-muted { color: var(--muted) !important; }

/* Buttons follow stoplight semantics: primary = go. */
.bsui .btn { border-radius: var(--radius-sm); font-weight: 650; }
.bsui .btn-primary { background-color: var(--go-fill); border-color: var(--go-fill); color: var(--go-on); }
.bsui .btn-primary:hover, .bsui .btn-primary:focus { background-color: var(--go-fill-hover); border-color: var(--go-fill-hover); color: var(--go-on); }
.bsui .btn-outline-primary { color: var(--go-ink); border-color: var(--go); }
.bsui .btn-outline-primary:hover { background: var(--go-fill); border-color: var(--go-fill); color: var(--go-on); }

/* Cards, list items, tabs. */
.bsui .card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); color: var(--ink); }
.bsui .card:hover { box-shadow: var(--shadow-hover); }
.bsui .card-footer, .bsui .card-header { background: transparent; border-color: var(--line); }
.bsui .geodir-post-title, .bsui .geodir-entry-title { font-weight: 750; }
.bsui .geodir-post-title a { color: var(--ink) !important; }
.bsui .geodir-post-title a:hover { color: var(--go-ink) !important; }
.bsui .list-group-item { background: var(--card); border-color: var(--line); color: var(--ink); }
.bsui .nav-tabs { border-color: var(--line); }
.bsui .nav-tabs .nav-link { color: var(--muted); font-weight: 650; border: 0; border-bottom: 3px solid transparent; }
.bsui .nav-tabs .nav-link:hover { color: var(--ink); }
.bsui .nav-tabs .nav-link.active { color: var(--ink); background: transparent; border-bottom-color: var(--go); }
.bsui .tab-content { padding-top: 16px; }
.bsui .badge { border-radius: 999px; font-weight: 700; }
.bsui .badge-primary { background: var(--go-fill); color: var(--go-on); }
.bsui .badge-warning { color: #5c4300; }
.bsui .page-link { color: var(--ink); border-color: var(--line-strong); background: var(--card); }
.bsui .page-item.active .page-link { background: var(--asphalt); border-color: var(--asphalt); color: #fff; }
.bsui .alert-info { background: var(--tint); border-color: var(--line); color: var(--ink); }

/* Forms (GD search, add listing, UsersWP). */
.bsui .form-control, .bsui .custom-select {
	min-height: 44px; border: 1.5px solid var(--lane); border-radius: var(--radius-sm);
	background-color: var(--card); color: var(--ink);
}
.bsui .form-control:focus, .bsui .custom-select:focus { border-color: var(--ink); box-shadow: 0 0 0 3px color-mix(in srgb, var(--go) 30%, transparent); }
.bsui .form-control::placeholder { color: var(--muted); }
.bsui .input-group-text { background: var(--tint); border-color: var(--lane); color: var(--muted); }
.bsui label { font-weight: 600; }

/* GD search bar inside the hero panel. */
.dsd-search-panel .geodir-search-container { margin-bottom: 16px !important; }
.dsd-search-panel .geodir-search { margin: 0; }
.dsd-search-panel .geodir_submit_search, .dsd-search-panel .btn { min-height: 44px; }

/* GD archive item badges: map legacy loud colors to stoplight semantics. */
.bsui .gd-badge-meta-featured .badge, .bsui .gd-badge-meta-featured.badge { background-color: var(--caution) !important; color: #5c4300 !important; }
.bsui .gd-badge-meta-post_date .badge, .bsui .gd-badge-meta-post_date.badge { background-color: var(--go-fill) !important; color: var(--go-on) !important; }

/* Maps and images. */
.bsui .geodir_map_container, .bsui .geodir-image-container { border-radius: var(--radius); overflow: hidden; }
.dsd-gd-body img { border-radius: 6px; }

/* ---------- GeoDirectory legacy markup (design style: legacy) ---------- */
/* Listing grids. */
.dsd-main ul.geodir-category-list-view {
	display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px;
	list-style: none; margin: 0 0 24px; padding: 0;
}
.dsd-main ul.geodir-category-list-view::before, .dsd-main ul.geodir-category-list-view::after { display: none; }
.dsd-main ul.geodir-category-list-view > li.geodir-post {
	position: relative; display: flex; flex-direction: column; width: auto !important; float: none !important; margin: 0 !important; padding: 0 !important;
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden;
	transition: box-shadow 0.15s, border-color 0.15s;
}
.dsd-main ul.geodir-category-list-view > li.geodir-post:hover { box-shadow: var(--shadow-hover); border-color: var(--line-strong); }
.dsd-main li.geodir-post .gd-list-item-left { position: relative; }
.dsd-main li.geodir-post .gd-list-item-right { padding: 12px 16px; }
.dsd-main li.geodir-post .gd-list-item-right:last-child:empty { display: none; }
.dsd-main li.geodir-post .geodir-image-container { margin: 0 !important; background: var(--tint); }
.dsd-main li.geodir-post .geodir-image-container img { width: 100%; aspect-ratio: 16 / 9; object-fit: contain; background: #fff; border-radius: 0; }
/* Generated listing covers carry text, so never crop them (sliders use their own box ratio). */
.dsd-main img[src*="/listing-cover/"] { object-fit: contain !important; background: #1c1f24; }
.dsd-main .geodir-entry-title { font-size: 1.1rem; font-weight: 750; line-height: 1.3; margin: 0 0 6px; }
.dsd-main .geodir-entry-title a { color: var(--ink); text-decoration: none; }
.dsd-main .geodir-entry-title a:hover { color: var(--go-ink); text-decoration: underline; }
.dsd-main .geodir-field-post_content, .dsd-main .geodir-post-content-container { text-align: left !important; color: var(--muted); font-size: 0.925rem; line-height: 1.55; }
.dsd-main .gd-badge-meta .gd-badge { border-radius: 999px !important; font-weight: 700; font-size: 0.75rem; }
.dsd-main .gd-list-favorite { display: none; }

/* Search bar. */
.dsd-main .geodir-search-container .geodir-loc-bar, .dsd-search-panel .geodir-loc-bar { background: transparent; border: 0; padding: 0; margin: 0; }
.dsd-main .geodir-search { display: flex; flex-wrap: wrap; gap: 8px; align-items: stretch; margin: 0 0 16px; }
.dsd-main .geodir-search .gd-search-input-wrapper { flex: 1 1 220px; margin: 0 !important; position: relative; }
.dsd-main .geodir-search input[type="text"], .dsd-main .geodir-search input[type="search"], .dsd-main .geodir-search select {
	width: 100% !important; min-height: 46px; margin: 0 !important; padding: 8px 12px 8px 34px !important;
	border: 1.5px solid var(--lane) !important; border-radius: var(--radius-sm) !important;
	background: var(--card) !important; color: var(--ink) !important; font: inherit !important; box-shadow: none !important;
}
.dsd-main .geodir-search input:focus { border-color: var(--ink) !important; outline: 3px solid color-mix(in srgb, var(--go) 35%, transparent); }
.dsd-main .geodir-loc-bar .geodir-loc-bar-in { background: transparent !important; padding: 0 !important; border: 0 !important; }
.dsd-main .geodir-search .gd-search-input-wrapper input.search_text, .dsd-main .geodir-search .gd-search-input-wrapper input.snear { padding-left: 36px !important; }
.dsd-main .geodir-search .gd-search-input-wrapper .geodir-search-input-label {
	position: absolute !important; left: 13px !important; top: 50% !important; transform: translateY(-50%); height: auto !important;
	line-height: 1 !important; color: var(--muted); z-index: 1;
}
.dsd-main .geodir-more-filters { background: var(--card) !important; border: 1px solid var(--line) !important; border-radius: var(--radius); color: var(--ink); }
.dsd-main .geodir-search button, .dsd-main .geodir_submit_search {
	min-height: 46px; min-width: 52px; margin: 0 !important; padding: 0 18px !important;
	background: var(--go-fill) !important; border: 1.5px solid var(--go-fill) !important; color: var(--go-on) !important;
	border-radius: var(--radius-sm) !important; font-weight: 700; cursor: pointer;
}
.dsd-main .geodir-search button:hover { background: var(--go-fill-hover) !important; }
.dsd-main .geodir-search .geodir-show-filters, .dsd-main .geodir-search button.geodir-show-filters { background: var(--card) !important; color: var(--ink) !important; border-color: var(--lane) !important; }

/* Single listing tabs. */
.dsd-main .geodir-tabs { margin-top: 24px; }
.dsd-main dl.geodir-tab-head { display: flex; flex-wrap: wrap; gap: 4px; margin: 0; padding: 0; border-bottom: 1px solid var(--line); }
.dsd-main dl.geodir-tab-head dd { margin: 0; }
.dsd-main dl.geodir-tab-head dd a { display: block; padding: 10px 14px; color: var(--muted); font-weight: 650; text-decoration: none; border-bottom: 3px solid transparent; background: none; }
.dsd-main dl.geodir-tab-head dd.geodir-tab-active a, .dsd-main dl.geodir-tab-head dd a:hover { color: var(--ink); border-bottom-color: var(--go); }
.dsd-main ul.geodir-tabs-content { list-style: none; margin: 0; padding: 18px 0 0; }
.dsd-main .geodir-wgt-map, .dsd-main .geodir-post-map-wrap { margin-top: 24px; border-radius: var(--radius); overflow: hidden; }
.dsd-main .geodir-pos_navigation { display: flex; justify-content: space-between; gap: 16px; margin-top: 24px; }
.dsd-main .geodir-pos_navigation a { font-weight: 650; }

/* Sidebar widgets. */
.dsd-widget .geodir-location-near-me, .dsd-widget .gd-post-claim-wrap a, .dsd-widget .geodir_claim_enable {
	display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 8px 14px; border-radius: var(--radius-sm);
	border: 1.5px solid var(--lane); background: var(--card); color: var(--ink); font: 650 0.9rem/1.2 var(--font); cursor: pointer; text-decoration: none;
}
.dsd-widget .gd-post-claim-wrap a, .dsd-widget .geodir-claim-post-form-link {
	display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 8px 16px; border-radius: var(--radius-sm);
	background: var(--go-fill); border: 1.5px solid var(--go-fill); color: var(--go-on); font: 700 0.95rem/1.2 var(--font); cursor: pointer; width: 100%;
}
.dsd-widget .geodir-claim-post-form-link:hover { background: var(--go-fill-hover); border-color: var(--go-fill-hover); }
.dsd-widget.geodir-single-taxonomies-container:not(:has(a)) { display: none; }
.dsd-widget.geodir-dynamic-content { line-height: 1.9; word-break: break-word; }
.dsd-widget .gd-categories-widget ul, .dsd-widget .geodir_post_taxomomies { margin: 0; padding: 0; list-style: none; }
.dsd-widget .geodir_post_taxomomies a { display: inline-block; margin: 0 4px 6px 0; }

/* Category tiles (gd_categories widget on location pages and the listing sidebar).
   GD prints a flat colored block with a font glyph; we show the detailed category artwork
   instead, matched by the category link so the small map-pin icons stay untouched. */
.dsd-main .geodir-categories-container { margin-bottom: 20px; }
.dsd-main .gd-cptcat-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.dsd-main .gd-cptcat-row > .gd-cptcat-ul { margin: 0 !important; padding: 0; list-style: none; width: auto !important; float: none !important; }
.dsd-main .gd-cptcat-li-main {
	display: flex; align-items: center; gap: 14px; margin: 0; padding: 10px 14px 10px 10px;
	background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow);
	transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}
.dsd-main .gd-cptcat-li-main:hover { border-color: var(--go); box-shadow: var(--shadow-hover); transform: translateY(-1px); }
.dsd-main .gd-cptcat-cat-left { flex: none; width: 64px !important; height: 64px !important; padding: 0 !important; background: transparent !important; border-radius: 12px; }
.dsd-main .gd-cptcat-cat-left a { display: block; width: 64px; height: 64px; background: center / contain no-repeat; }
.dsd-main .gd-cptcat-cat-left .gd-cptcat-icon { display: none; }
.dsd-main .gd-cptcat-cat-left a[href*="/category/car/"] { background-image: url("../img/cats/car.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/cdl/"] { background-image: url("../img/cats/cdl.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/bus/"] { background-image: url("../img/cats/bus.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/motorcycle/"] { background-image: url("../img/cats/motorcycle.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/defensive-driving-course/"] { background-image: url("../img/cats/defensive-driving.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/pre-licensing-course/"] { background-image: url("../img/cats/pre-licensing.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/tractor-trailer/"] { background-image: url("../img/cats/tractor-trailer.webp"); }
.dsd-main .gd-cptcat-cat-left a[href*="/category/truck/"] { background-image: url("../img/cats/truck.webp"); }
.dsd-main .gd-cptcat-cat-right { min-width: 0; }
.dsd-main .gd-cptcat-cat-right a { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; color: var(--ink) !important; font-weight: 700; text-decoration: none; line-height: 1.3; }
.dsd-main .gd-cptcat-cat-right a:hover { color: var(--go-ink) !important; }
.dsd-main .gd-cptcat-cat-right .gd-cptcat-count .gd-cptcat-count {
	display: inline-block; padding: 1px 8px; border-radius: 999px; background: var(--chip); color: var(--muted);
	font-size: 0.8rem; font-weight: 600; font-variant-numeric: tabular-nums;
}
/* Compact version inside the listing sidebar. */
.dsd-widget .gd-cptcat-row { grid-template-columns: 1fr; gap: 8px; }
.dsd-widget .gd-cptcat-li-main { padding: 6px 10px 6px 6px; box-shadow: none; }
.dsd-widget .gd-cptcat-cat-left, .dsd-widget .gd-cptcat-cat-left a { width: 48px !important; height: 48px !important; }

/* ---------- Dark mode for AUI surfaces ---------- */
@media (prefers-color-scheme: dark) {
	.bsui .bg-white, .bsui .bg-light { background-color: var(--card) !important; }
	.bsui .text-dark, .bsui .text-body { color: var(--ink) !important; }
	.bsui .border, .bsui .border-top, .bsui .border-bottom, .bsui hr { border-color: var(--line) !important; }
	.bsui .dropdown-menu, .bsui .modal-content, .bsui .popover { background: var(--card); color: var(--ink); border-color: var(--line); }
	.bsui .dropdown-item { color: var(--ink); }
	.bsui .dropdown-item:hover { background: var(--tint); }
	.bsui .table { color: var(--ink); }
	.bsui .table td, .bsui .table th { border-color: var(--line); }
	.bsui .btn-light, .bsui .btn-outline-secondary { background: var(--chip); border-color: var(--line-strong); color: var(--ink); }
	.bsui .badge-light { background: var(--chip); color: var(--ink); }
	.bsui .close { color: var(--ink); text-shadow: none; }
}
