/* Episode and Challenge page styles for GIT Going with GitHub */

/* Skip link */
.skip-link {
  position: absolute;
  left: 0.75rem;
  top: -200px;
  z-index: 1000;
  padding: 0.7rem 1rem;
  border-radius: 0.5rem;
  background: #111;
  color: #fff;
  text-decoration: none;
  font-weight: 700;
}
.skip-link:focus { top: 0.75rem; }

/* Breadcrumb bar */
.breadcrumb-bar {
  background: rgba(0,0,0,.04);
  border-bottom: 1px solid rgba(0,0,0,.08);
  font-size: 0.85rem;
}
.breadcrumb {
  display: flex;
  gap: 0.5rem;
  list-style: none;
  margin: 0;
  padding: 0.4rem 0;
}
.breadcrumb li + li::before {
  content: "›";
  margin-right: 0.5rem;
  color: #666;
  aria-hidden: true;
}

/* Episode/challenge hero header */
.ep-header {
  margin-bottom: 2rem;
  border-bottom: 2px solid var(--brand, #0b5fff);
  padding-bottom: 1.5rem;
}
.ep-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
}
.ep-badge {
  background: var(--brand, #0b5fff);
  color: #fff;
  padding: 0.2rem 0.6rem;
  border-radius: 99px;
  font-size: 0.78rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.ep-number, .ep-duration {
  color: var(--muted, #44505c);
  font-size: 0.85rem;
  font-weight: 600;
  padding: 0.2rem 0.5rem;
  background: rgba(0,0,0,.06);
  border-radius: 4px;
}
.ep-description {
  font-size: 1.1rem;
  color: var(--muted, #44505c);
  max-width: 700px;
}

/* Related docs links */
.related-docs {
  margin-top: 1rem;
}
.related-docs h3 {
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted, #44505c);
  margin: 0 0 0.5rem;
}
.related-link {
  display: inline-block;
  margin: 0 0.4rem 0.4rem 0;
  padding: 0.2rem 0.6rem;
  background: rgba(11,95,255,.08);
  border-radius: 4px;
  font-size: 0.85rem;
  text-decoration: none;
  color: var(--brand-strong, #0647be);
  border: 1px solid rgba(11,95,255,.2);
}
.related-link:hover { background: rgba(11,95,255,.16); }

/* Audio player */
.audio-section { margin-bottom: 2rem; }
.audio-player-wrap {
  background: var(--surface, #fffef8);
  border-radius: 12px;
  padding: 1.25rem 1.5rem;
  border: 1px solid rgba(0,0,0,.1);
}
.audio-player-wrap audio {
  width: 100%;
  display: block;
  margin-bottom: 0.75rem;
}
.audio-links {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  font-size: 0.85rem;
}

/* Transcript */
.transcript-section { margin-bottom: 2.5rem; }
.transcript-intro {
  color: var(--muted, #44505c);
  margin-bottom: 1.25rem;
}
.transcript-body {
  max-width: 780px;
}
.line { margin: 0 0 0.75rem; line-height: 1.65; }
.line .speaker { color: var(--brand-strong, #0647be); margin-right: 0.25rem; }
.line.alex .speaker { color: #0647be; }
.line.jamie .speaker { color: #116149; }
.transcript-pause {
  border: none;
  border-top: 1px dashed rgba(0,0,0,.18);
  margin: 1.25rem 0;
}

/* Chapter / Solution content */
.chapter-content { margin-top: 2.5rem; border-top: 2px solid rgba(0,0,0,.1); padding-top: 2rem; }
.chapter-header { margin-bottom: 1.5rem; }
.chapter-meta { color: var(--muted, #44505c); font-size: 0.9rem; }
.chapter-body { max-width: 860px; }
.markdown-body h1, .markdown-body h2, .markdown-body h3 { margin-top: 1.75rem; }
.markdown-body blockquote { border-left: 4px solid var(--brand, #0b5fff); padding-left: 1rem; color: var(--muted); }
.markdown-body code { background: rgba(0,0,0,.06); padding: 0.15em 0.35em; border-radius: 3px; font-size: 0.9em; }
.markdown-body pre { background: #1e1e1e; color: #d4d4d4; padding: 1rem 1.25rem; border-radius: 8px; overflow-x: auto; }
.markdown-body pre code { background: none; padding: 0; }
.markdown-body table { border-collapse: collapse; width: 100%; margin: 1rem 0; }
.markdown-body th, .markdown-body td { border: 1px solid rgba(0,0,0,.15); padding: 0.5rem 0.75rem; text-align: left; }
.markdown-body th { background: rgba(0,0,0,.05); font-weight: 700; }
.solution-content { background: rgba(17,97,73,.04); border-radius: 8px; padding: 1.5rem; }

/* PODCASTS.html index */
.page-hero { margin-bottom: 2.5rem; border-bottom: 2px solid var(--brand, #0b5fff); padding-bottom: 1.5rem; }
.page-hero h1 { margin-bottom: 0.5rem; }
.toc { margin-top: 1.25rem; }
.toc ul { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; margin: 0; padding: 0; }
.toc a {
  display: inline-block;
  padding: 0.3rem 0.7rem;
  background: rgba(11,95,255,.08);
  border-radius: 4px;
  font-size: 0.85rem;
  text-decoration: none;
  color: var(--brand-strong, #0647be);
  border: 1px solid rgba(11,95,255,.2);
}
.episode-group { margin-bottom: 3rem; }
.episode-group h2 { margin-bottom: 1.25rem; }
.ep-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(360px,100%), 1fr)); }
.ep-card { background: var(--surface, #fffef8); border-radius: 12px; border: 1px solid rgba(0,0,0,.1); }
.ep-card-challenge { border-left: 4px solid var(--accent, #116149); }
.ep-card-inner { padding: 1.25rem; display: flex; flex-direction: column; gap: 0.5rem; }
.ep-card-meta { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.ep-number-badge {
  background: var(--brand, #0b5fff); color: #fff;
  padding: 0.15rem 0.5rem; border-radius: 99px; font-size: 0.75rem; font-weight: 700;
}
.ep-card-challenge .ep-number-badge { background: var(--accent, #116149); }
.ep-duration-badge { color: var(--muted); font-size: 0.8rem; padding: 0.15rem 0.4rem; background: rgba(0,0,0,.06); border-radius: 4px; }
.ep-card-title { margin: 0; font-size: 1rem; }
.ep-card-title a { color: var(--ink); text-decoration: none; }
.ep-card-title a:hover { text-decoration: underline; }
.ep-card-desc { margin: 0; font-size: 0.875rem; color: var(--muted, #44505c); }
.ep-card audio { width: 100%; margin-top: 0.5rem; }
.ep-card-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin-top: 0.25rem; }
.ep-card-actions audio { width: 100%; }
.btn-ep, .btn-ep-dl {
  display: inline-block;
  padding: 0.3rem 0.7rem;
  border-radius: 6px;
  font-size: 0.8rem;
  font-weight: 700;
  text-decoration: none;
}
.btn-ep { background: var(--brand, #0b5fff); color: #fff; }
.btn-ep-dl { background: rgba(0,0,0,.08); color: var(--ink); }

/* Challenge index */
.challenge-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.challenge-card { background: var(--surface, #fffef8); border-radius: 12px; border: 1px solid rgba(0,0,0,.1); border-left: 4px solid var(--accent, #116149); }
.challenge-card-inner { padding: 1.25rem; }
.challenge-meta { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.5rem; }
.challenge-day-badge { background: var(--accent, #116149); color: #fff; padding: 0.15rem 0.5rem; border-radius: 99px; font-size: 0.75rem; font-weight: 700; }
.challenge-num { color: var(--muted); font-size: 0.8rem; font-weight: 700; }
.challenge-title { margin: 0 0 0.5rem; font-size: 1.1rem; }
.challenge-title a { color: var(--ink); text-decoration: none; }
.challenge-title a:hover { text-decoration: underline; }
.challenge-focus { margin: 0 0 0.5rem; font-size: 0.9rem; color: var(--muted); }
.challenge-chapters { margin: 0; font-size: 0.85rem; }
.challenge-chapters a { color: var(--brand-strong); }

/* work.html full challenge page */
.work-challenge { margin-bottom: 3rem; padding-bottom: 2rem; border-bottom: 1px solid rgba(0,0,0,.12); }
.work-challenge:last-child { border-bottom: none; }
.work-body { max-width: 860px; }
.work-body h2 { margin-top: 2.5rem; border-bottom: 2px solid var(--brand, #0b5fff); padding-bottom: 0.5rem; }
.work-body h3 { margin-top: 2rem; color: var(--ink); }
.work-body ul { padding-left: 1.4rem; }
.work-body li { margin-bottom: 0.35rem; line-height: 1.6; }
.work-challenge-tools {
  background: var(--surface, #fffef8);
  border: 1px solid rgba(0,0,0,.1);
  border-left: 4px solid var(--accent, #116149);
  border-radius: 8px;
  padding: 1.1rem 1.25rem;
  margin: 0.75rem 0 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.work-challenge-meta { display: flex; gap: 0.5rem; }
.work-challenge-audio audio { width: 100%; margin-top: 0.35rem; display: block; }
.challenge-audio-label { margin: 0 0 0.4rem; font-size: 0.9rem; }
.work-challenge-links { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.25rem; }

/* Utility */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.action-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1rem; }
.btn { display: inline-block; padding: 0.55rem 1.1rem; border-radius: 8px; font-weight: 700; text-decoration: none; }
.btn.primary { background: var(--brand, #0b5fff); color: #fff; }
.btn.secondary { background: rgba(0,0,0,.08); color: var(--ink); }

@media (max-width: 600px) {
  .ep-list { grid-template-columns: 1fr; }
}

/* Prev / Next navigation */
.prev-next {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin: 2rem 0 1rem;
  padding: 1rem 1.25rem;
  background: var(--surface, #fffef8);
  border: 1px solid rgba(0,0,0,.1);
  border-radius: 10px;
  flex-wrap: wrap;
}
.pn-link {
  font-weight: 700;
  text-decoration: none;
  color: var(--brand-strong, #0647be);
  max-width: 38%;
  font-size: 0.9rem;
}
.pn-link:hover { text-decoration: underline; }
.pn-index {
  font-size: 0.85rem;
  color: var(--muted, #44505c);
  text-decoration: none;
  white-space: nowrap;
}
.pn-index:hover { text-decoration: underline; }
.pn-placeholder { flex: 1; }
@media (max-width: 600px) {
  .prev-next { flex-direction: column; align-items: flex-start; }
  .pn-link { max-width: 100%; }
  .pn-placeholder { display: none; }
}

/* Episodes index list */
.ep-list-ul { list-style: none; padding: 0; margin: 0 0 2rem; display: grid; gap: 0.4rem; }
.ep-list-item { border: 1px solid rgba(0,0,0,.1); border-radius: 8px; background: var(--surface, #fffef8); }
.ep-list-link { display: flex; align-items: baseline; gap: 0.75rem; padding: 0.65rem 1rem; text-decoration: none; color: inherit; }
.ep-list-link:hover { background: rgba(11,95,255,.06); }
.ep-list-num { font-size: 0.8rem; font-weight: 700; color: var(--muted, #44505c); white-space: nowrap; min-width: 3.5rem; }
.ep-list-title { font-weight: 700; color: var(--brand-strong, #0647be); }

/* Error page */
.error-page { max-width: 600px; padding: 2rem 0; }
.error-page h1 { font-family: "Lora", Georgia, serif; }
.error-links { padding-left: 1.4rem; }
.error-links li { margin-bottom: 0.5rem; }

/* Curated listening journey */
.journey-intro { margin: 0 0 1.5rem; color: var(--muted, #44505c); max-width: 70ch; }
.journey-section { margin: 0 0 1.75rem; }
.journey-section h3 { margin: 0 0 0.5rem; font-size: 1.05rem; color: var(--brand-strong, #0647be); }
.journey-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }
.journey-row {
  display: grid;
  grid-template-columns: 2.25rem 5rem 1fr;
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.45rem 0.6rem;
  border-radius: 6px;
  background: rgba(11,95,255,.04);
  border-left: 3px solid var(--brand, #0b5fff);
}
.journey-row-cc { background: rgba(17,97,73,.05); border-left-color: var(--accent, #116149); }
.journey-seq { font-weight: 700; color: var(--muted, #44505c); font-variant-numeric: tabular-nums; }
.journey-badge {
  font-size: 0.72rem; font-weight: 700; padding: 0.1rem 0.45rem; border-radius: 99px;
  background: var(--brand, #0b5fff); color: #fff; white-space: nowrap; justify-self: start;
}
.journey-row-cc .journey-badge { background: var(--accent, #116149); }
.journey-title { color: var(--ink); text-decoration: none; font-weight: 600; }
.journey-title:hover, .journey-title:focus { text-decoration: underline; color: var(--brand-strong, #0647be); }
@media (max-width: 540px) {
  .journey-row { grid-template-columns: 2rem 1fr; }
  .journey-badge { grid-column: 1 / -1; justify-self: start; }
}
