<section id="tl" class="tl-wrap">
  <aside class="tl-index"></aside>
  <ol class="tl-list"></ol>
</section>
#tl { display: grid; grid-template-columns: 220px 1fr; gap: 1.25rem; max-width: 1100px; margin: 0 auto; padding: 3rem 1rem; }
.tl-index { position: sticky; top: 80px; align-self: start; max-height: calc(100vh - 120px); overflow: auto; padding-right: 0.5rem; }
.tl-index button { display: block; width: 100%; text-align: left; background: transparent; border: 0; padding: 0.4rem 0.25rem; cursor: pointer; opacity: 0.9; }
.tl-index button.is-active { font-weight: 600; opacity: 1; }

.tl-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 2rem; }
.tl-item { display: grid; grid-template-columns: 320px 1fr; gap: 1rem; align-items: start; scroll-margin-top: 90px; }
.tl-date { font-weight: 600; }
.tl-img { width: 100%; border-radius: 12px; aspect-ratio: 4 / 3; object-fit: cover; }
.tl-card { padding: 1rem; border: 1px solid rgba(0,0,0,0.12); border-radius: 14px; background: rgba(255,255,255,0.7); backdrop-filter: saturate(140%) blur(6px); }

@media (max-width: 900px) {
  #tl { grid-template-columns: 1fr; }
  .tl-item { grid-template-columns: 1fr; }
  .tl-index { position: static; display: flex; flex-wrap: wrap; gap: 0.5rem; max-height: none; }
  .tl-index button { width: auto; border: 1px solid rgba(0,0,0,0.12); border-radius: 999px; padding: 0.35rem 0.7rem; }
}

@media (prefers-color-scheme: dark) {
  .tl-card { background: rgba(20,20,20,0.6); color: #f5f5f5; border-color: rgba(255,255,255,0.12); }
}