/* ==========================================================================
   Mầm Chồi Lá — journey.css
   Hệ 3 chặng: thanh rail, màu theo chặng, layout 2 cột, trang bài viết.

   Nguyên tắc kiến trúc: không selector nào dưới đây biết tên chặng.
   <body data-stage="..."> gán lại --stage / --stage-soft, phần còn lại
   chỉ đọc var(). Thêm chặng thứ tư = thêm một dòng ở khối ngay dưới.
   ========================================================================== */

[data-stage="mam"]  { --stage: var(--c-mam);  --stage-soft: var(--c-mam-soft); }
[data-stage="choi"] { --stage: var(--c-choi); --stage-soft: var(--c-choi-soft); }
[data-stage="la"]   { --stage: var(--c-la);   --stage-soft: var(--c-la-soft); }

/* Trang không thuộc chặng nào (trang chủ, Về blog này, 404) */
[data-stage="none"] { --stage: var(--ink); --stage-soft: var(--surface); }

/* --- Khung 2 cột: rail trái + nội dung ---------------------------------- */

.page {
  display: grid;
  grid-template-columns: var(--rail-w) minmax(0, 1fr);
  gap: var(--s6);
  align-items: start;
  padding-top: var(--s5);
}

@media (max-width: 56.25rem) {
  .page {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--s5);
    padding-top: var(--s3);
  }
}

.main { min-width: 0; }

/* --- Thanh ba chặng ------------------------------------------------------
   Đây là navigation chính của site, đồng thời thay breadcrumb ở trang bài.
   Dựng bằng HTML + CSS thuần: không ảnh, không icon, không JS.
   -------------------------------------------------------------------------- */

.rail {
  position: sticky;
  top: var(--s5);
  font-size: 0.875rem;
}

.rail-title {
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin: 0 0 var(--s3);
  font-weight: 600;
}

.rail-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--s5);
}

.rail-step {
  position: relative;
  padding-left: var(--s4);
  margin: 0;
  --step: var(--rule);
}

.rail-step[data-step="mam"]  { --step-own: var(--c-mam); }
.rail-step[data-step="choi"] { --step-own: var(--c-choi); }
.rail-step[data-step="la"]   { --step-own: var(--c-la); }

/* Chặng đã qua và chặng hiện tại mang màu của chính nó.
   Chặng chưa tới để xám — đó là thứ tạo ra cảm giác có hướng đi. */
.rail-step.is-done,
.rail-step.is-current { --step: var(--step-own); }

/* Chấm */
.rail-step::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.42em;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--step);
  box-shadow: 0 0 0 3px var(--bg);
}

/* Đoạn nối tới chấm kế tiếp */
.rail-step::after {
  content: '';
  position: absolute;
  left: 4px;
  top: calc(0.42em + 11px);
  bottom: calc(-1 * var(--s5) - 0.42em);
  width: 3px;
  border-radius: var(--r-pill);
  background: var(--step);
}
.rail-step:last-child::after { display: none; }

.rail-step.is-current::before {
  box-shadow: 0 0 0 3px var(--bg), 0 0 0 6px var(--stage-soft);
}

.rail-step a {
  text-decoration: none;
  color: var(--ink-soft);
  display: block;
}
.rail-step a:hover { color: var(--ink); }

.rail-name {
  display: block;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
}
.rail-step.is-current .rail-name { color: var(--step-own); }

.rail-age {
  display: block;
  font-size: 0.8125rem;
  color: var(--ink-soft);
}

/* Nhãn chữ cho chặng hiện tại — màu không bao giờ là tín hiệu duy nhất */
.rail-here {
  display: inline-block;
  margin-top: var(--s1);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--step-own);
  background: var(--stage-soft);
  border-radius: var(--r-pill);
  padding: 2px 10px;
}

/* Dưới 900px: rail nằm ngang dưới header */
@media (max-width: 56.25rem) {
  .rail {
    position: static;
    border-bottom: 1px solid var(--rule);
    padding-bottom: var(--s4);
  }
  .rail-title { margin-bottom: var(--s4); }
  .rail-list {
    flex-direction: row;
    gap: 0;
  }
  .rail-step {
    flex: 1 1 0;
    padding-left: 0;
    padding-top: var(--s4);
    min-width: 0;
  }
  .rail-step::before { top: 0; left: 0; }
  .rail-step::after {
    left: 14px;
    right: 3px;
    top: 4px;
    bottom: auto;
    width: auto;
    height: 3px;
  }
  .rail-here { margin-top: 2px; }
}

@media (max-width: 26rem) {
  .rail-name { font-size: 0.9375rem; }
  .rail-age  { font-size: 0.75rem; }
  .rail-here { font-size: 0.6875rem; padding: 1px 7px; }
}

/* --- Trang chủ: ba chặng xếp so le theo trục tuổi ------------------------ */

.intro { max-width: var(--measure); }
.intro h1 { margin-bottom: var(--s4); }
.intro p:last-child { margin-bottom: 0; }

.journey {
  list-style: none;
  margin: var(--s6) 0 0;
  padding: 0;
}

.stage-panel {
  max-width: var(--measure);
  background: var(--surface);
  border: 1px solid var(--rule);
  border-left: 3px solid var(--panel);
  border-radius: var(--r);
  padding: var(--s4);
  margin-bottom: var(--s5);
}

.stage-panel[data-step="mam"]  { --panel: var(--c-mam);  --panel-soft: var(--c-mam-soft); }
.stage-panel[data-step="choi"] { --panel: var(--c-choi); --panel-soft: var(--c-choi-soft); }
.stage-panel[data-step="la"]   { --panel: var(--c-la);   --panel-soft: var(--c-la-soft); }

/* Độ so le gắn với trục tuổi: mỗi năm dịch sang phải một bước spacing.
   Đây là timeline, không phải ba thẻ lệch nhau cho vui. */
.stage-panel[data-step="choi"] { margin-left: var(--s5); }
.stage-panel[data-step="la"]   { margin-left: var(--s7); }

@media (max-width: 56.25rem) {
  .stage-panel[data-step="choi"],
  .stage-panel[data-step="la"] { margin-left: 0; }
}

.stage-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--s1) var(--s2);
  margin-bottom: var(--s2);
}

.stage-badge {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--panel, var(--stage));
  background: var(--panel-soft, var(--stage-soft));
  border-radius: var(--r-pill);
  padding: 3px 11px;
}

.stage-age {
  font-size: 0.875rem;
  color: var(--ink-soft);
}

.stage-panel h2 {
  font-size: 1.5rem;
  line-height: 1.3;
  margin: 0 0 var(--s3);
}

.stage-desc {
  margin: 0 0 var(--s3);
  font-size: 1.0625rem;
  line-height: 1.65;
}

/* Chủ đề của chặng: chữ thường, không phải chip bo tròn */
.topics {
  list-style: none;
  margin: 0 0 var(--s4);
  padding: 0;
  font-size: 0.9375rem;
  color: var(--ink-soft);
}
.topics li {
  margin: 0 0 var(--s1);
  padding-left: var(--s3);
  position: relative;
}
.topics li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--panel, var(--stage));
  opacity: 0.55;
}

/* Ghi chú trạng thái thật của site, không phải lời quảng cáo */
.note {
  font-size: 0.9375rem;
  color: var(--ink-soft);
  border-left: 3px solid var(--rule);
  padding-left: var(--s3);
  margin-bottom: 0;
}

/* Danh sách bài. Dòng dưới mỗi tiêu đề là câu trả lời thật lấy từ mở bài,
   không phải trích đoạn dẫn dắt. */
.posts {
  list-style: none;
  margin: 0;
  padding: 0;
}
.posts li { margin: 0 0 var(--s4); }
.posts li:last-child { margin-bottom: var(--s3); }

.posts a {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.1875rem;
  line-height: 1.35;
  color: var(--ink);
  text-decoration-color: var(--rule);
}
.posts a:hover { text-decoration-color: var(--panel, var(--stage)); }
.posts a:focus-visible { outline-color: var(--panel, var(--stage)); }

.posts p {
  margin: var(--s1) 0 0;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink-soft);
}

.stage-more {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--panel);
  text-decoration-color: color-mix(in srgb, var(--panel) 35%, transparent);
}

/* --- Trang chặng --------------------------------------------------------- */

.stage-intro { max-width: var(--measure); }
.stage-intro .stage-head { margin-bottom: var(--s3); }
.stage-intro h1 { margin-bottom: var(--s4); }

.stage-list { margin-top: var(--s6); }

/* --- Trang bài viết ------------------------------------------------------ */

.prose { max-width: var(--measure); }

.byline {
  font-size: 0.875rem;
  color: var(--ink-soft);
  margin: var(--s3) 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--s1) var(--s2);
  align-items: center;
}
.byline .sep { color: var(--rule); }

.byline-stage {
  font-weight: 600;
  color: var(--stage);
  background: var(--stage-soft);
  border-radius: var(--r-pill);
  padding: 2px 10px;
}

/* Câu trả lời thẳng: to hơn thân bài một nấc, không hộp, không viền màu */
.lede {
  font-size: 1.25rem;
  line-height: 1.6;
  margin: var(--s5) 0 0;
  color: var(--ink);
}

.prose h2:first-of-type { margin-top: var(--s5); }

/* --- Link dọc theo tiến trình ------------------------------------------- */

.updown {
  max-width: var(--measure);
  margin-top: var(--s6);
  border: 1px solid var(--rule);
  border-radius: var(--r);
  overflow: hidden;
  background: var(--surface);
}

.updown-item {
  display: block;
  padding: var(--s3) var(--s4);
  text-decoration: none;
  border-left: 3px solid var(--item);
}
.updown-item + .updown-item { border-top: 1px solid var(--rule); }

.updown-item[data-step="mam"]  { --item: var(--c-mam); }
.updown-item[data-step="choi"] { --item: var(--c-choi); }
.updown-item[data-step="la"]   { --item: var(--c-la); }

.updown-item:hover { background: var(--bg); }
.updown-item:focus-visible { outline-color: var(--item); }

.updown-kicker {
  display: block;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--item);
  margin-bottom: 2px;
}

.updown-title {
  display: block;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.125rem;
  line-height: 1.35;
  color: var(--ink);
}

/* --- Trang liên hệ ------------------------------------------------------- */

.contact-email {
  font-family: var(--font-display);
  font-size: 1.375rem;
  margin: var(--s5) 0;
}
.contact-email a {
  color: var(--c-choi);
  text-decoration-color: color-mix(in srgb, var(--c-choi) 35%, transparent);
  word-break: break-word;
}
.contact-email a:focus-visible { outline-color: var(--c-choi); }

/* --- Trang 404 ----------------------------------------------------------- */

.notfound { max-width: var(--measure); padding-top: var(--s6); }
