/**
 * article-shell.css — blog family base layer · teamcyclingkits.com
 * Ported 2026-10-14 from the sister site procyclingapparel.com (itself ported 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 #0F172A · g-100 #F1F5F9 · g-200 #E2E8F0 · g-300 #CBD5E1 (text on ink) · g-600 #475569
 *   sun #FACC15 (CTA fills with ink text only) · sky not used in the blog family
 *   Barlow Semi Condensed 600 (headings) + Source Sans 3 400/600 (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.
 * The header keeps the dynamic-menu.css defaults, exactly as on the 17 landing pages.
 * Used by: _shell.html (and every rendered article), blog.html, category/*, author/*.
 */

#main-content:focus { outline: none; }

/* ========== Blog hero (ink, flat — §0.1: no decorative gradient, no shadow) ========== */
.blog-hero {
  position: relative;
  background: var(--ink, #0F172A);
  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(15, 23, 42, .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, "Barlow Semi Condensed", Arial, sans-serif);
  font-size: clamp(36px, 3.8vw, 54px);
  font-weight: 600;
  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(--g-300, #CBD5E1); 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, "Source Sans 3", Arial, sans-serif);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--g-300, #CBD5E1);
  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-600, #475569); }
.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(--g-300, #CBD5E1); }
.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(--g-300, #CBD5E1);
  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, "Source Sans 3", Arial, sans-serif);
  color: var(--ink, #0F172A);
  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, #0F172A);
  overflow-wrap: break-word;
}
.article-content img {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 32px 0;
  border-radius: 4px;
}
.article-content a {
  color: var(--ink, #0F172A);
  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; }
}
