/**
 * article-shell.css — blog family base layer · procyclingapparel.com
 * Ported 2026-10-13 from cyclingapparelfactory.com and rebuilt on this site's
 * _DESIGN-SYSTEM.md §0 tokens (loaded after global.css; every var() carries a
 * literal fallback so ERP-rendered pages still read right without it):
 *   ink #111827 · ink-2 #1F2937 · g-50 #F9FAFB · g-100 #F3F4F6 · g-200 #E5E7EB
 *   g-600 #4B5563 · on-ink-2 #D1D5DB · red #DC2626 (CTA fills only) · amber (focus only)
 *   IBM Plex Sans Condensed (headings) + IBM Plex Sans (body)
 * No Bootstrap CSS on this site: .row / .col-lg-8 / .col-lg-4 / .breadcrumb are kept as
 * class names (ERP shell contract) and given their layout here.
 * Used by: _shell.html (and every rendered article), blog.html, category/*, author/*.
 */

/* ========== Header plugin brought onto §0 (same block the landing pages inline) ========== */
.dm-menu { font-family: var(--ff-body, "IBM Plex Sans", Arial, sans-serif); }
.dm-logo { font-family: var(--ff-head, "IBM Plex Sans Condensed", Arial, sans-serif); font-weight: 700; font-size: 22px; letter-spacing: -.005em; color: var(--ink, #111827); }
.dm-menu a.dm-cta-button { background: var(--red, #DC2626); color: #fff !important; border-radius: 2px; padding: 11px 22px; font-size: 15px; transition: background-color 160ms; }
.dm-menu .dm-nav-link.active { background: transparent; color: var(--ink, #111827); font-weight: 600; }
.dm-menu a.dm-cta-button:hover { background: var(--red-dark, #B91C1C); transform: none; box-shadow: none; }
@media (max-width: 768px) {
  .dm-container { padding-inline: 16px; }
  .dm-logo { margin-right: 12px; min-width: 0; font-size: 18px; }
  .dm-logo-text { display: inline; white-space: nowrap; }
}
#main-content:focus { outline: none; }

/* ========== Blog hero (ink, flat — §0.1: no decorative gradient, no shadow) ========== */
.blog-hero {
  position: relative;
  background: var(--ink, #111827);
  color: #fff;
  padding: clamp(56px, 7vw, 96px) 0 clamp(48px, 6vw, 80px);
  overflow: hidden;
}
.blog-hero .container {
  width: 100%;
  max-width: calc(1080px + 2 * clamp(16px, 4vw, 40px));
  margin-inline: auto;
  padding-inline: clamp(16px, 4vw, 40px);
}
/* Optional photo hero: add .has-bg-image and a ::before background in an inline <style>;
   the overlay below keeps text readable (single-direction ink overlay, not decoration). */
.blog-hero.has-bg-image::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(17, 24, 39, .80);
  z-index: 1;
}
.blog-hero.has-bg-image::before { content: ''; position: absolute; inset: 0; background-size: cover; background-position: center; z-index: 0; }
.blog-hero > * { position: relative; z-index: 2; }

.blog-hero h1 {
  font-family: var(--ff-head, "IBM Plex Sans Condensed", Arial, sans-serif);
  font-size: clamp(36px, 3.8vw, 54px);
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -.01em;
  color: #fff;
  max-width: 24ch;
  margin: 0 0 24px;
  text-wrap: balance;
}
.blog-hero .lead,
.blog-hero p { color: var(--on-ink-2, #D1D5DB); font-size: 19px; line-height: 1.6; max-width: 62ch; margin: 0; }

/* eyebrow = §0.3 label role on ink (no pill, no colour) */
.blog-hero .article-eyebrow {
  display: inline-block;
  font-family: var(--ff-body, "IBM Plex Sans", Arial, sans-serif);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--on-ink-2, #D1D5DB);
  margin: 0 0 14px;
}

/* ========== Breadcrumb (Bootstrap class names, own styling) ========== */
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  list-style: none;
  margin: 0 0 32px;
  padding: 0;
  font-size: 15px;
  line-height: 1.5;
}
.breadcrumb-item { display: inline-flex; align-items: center; min-width: 0; }
.breadcrumb-item + .breadcrumb-item::before { content: '/'; padding: 0 10px; color: var(--g-500, #6B7280); }
.breadcrumb-item a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.breadcrumb-item a:hover { text-decoration-thickness: 2px; }
.breadcrumb-item.active { color: inherit; opacity: .9; }
.blog-hero .breadcrumb { color: var(--on-ink-2, #D1D5DB); }
.blog-hero .breadcrumb-item.active {
  color: #fff;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; line-clamp: 1;
  overflow: hidden; max-width: 46ch;
}
.blog-hero .breadcrumb-item + .breadcrumb-item::before { color: rgba(255, 255, 255, .35); }

/* ========== Meta row (author / date / reading time) ========== */
.article-info,
.article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 28px;
  margin: 0;
  font-size: 15px;
  line-height: 1.5;
  color: var(--on-ink-2, #D1D5DB);
  font-variant-numeric: tabular-nums;
}
.article-info span + span::before { content: ''; }
.blog-hero .article-info a,
.blog-hero .article-meta a { color: #fff; font-weight: 600; }

/* ========== Page + two-column layout ========== */
.article-page {
  font-family: var(--ff-body, "IBM Plex Sans", Arial, sans-serif);
  color: var(--ink, #111827);
  padding: clamp(48px, 6vw, 88px) 0 clamp(72px, 8vw, 120px);
}
.article-page > .container {
  width: 100%;
  max-width: calc(1200px + 2 * clamp(16px, 4vw, 40px));
  margin-inline: auto;
  padding-inline: clamp(16px, 4vw, 40px);
}
.article-page .row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 40px;
}
.article-page .row > * { min-width: 0; }
@media (min-width: 992px) {
  .article-page .row { grid-template-columns: minmax(0, 1fr) 320px; gap: clamp(48px, 5vw, 80px); align-items: start; }
}

/* ========== Article body ========== */
.article-content {
  max-width: 72ch;
  font-size: 17px;
  line-height: 1.7;
  color: var(--ink, #111827);
  overflow-wrap: break-word;
}
.article-content img {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 32px 0;
  border-radius: 10px;
}
.article-content a {
  color: var(--ink, #111827);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}
.article-content a:hover { text-decoration-thickness: 2px; }

/* Ready class set by article-shell.js */
.article-shell-ready .article-content { opacity: 1; }

@media (max-width: 767.98px) {
  .blog-hero h1 { font-size: 34px; }
  .breadcrumb { margin-bottom: 24px; font-size: 14px; }
  .blog-hero .breadcrumb-item.active { max-width: 100%; }
  .article-content { font-size: 17px; }
}
