/* Structural foundations shared by the archive and reader. */
.layout{display:grid;margin-inline:auto;min-width:0}
.sidebar{position:sticky;align-self:start;overflow:auto}
.side-nav a{text-decoration:none;border-left:2px solid transparent}
.sidebar-links{display:flex;flex-wrap:wrap;border-top:1px solid var(--border)}
.nav-folder summary{cursor:pointer;text-transform:uppercase}
.nav-folder-content{display:flex;flex-direction:column;min-width:0}
.reader-breadcrumb{display:flex;flex-wrap:wrap}
.comp-hero{position:relative;overflow:hidden}
.challenge-workspace{display:grid;align-items:start}
.challenge-list-pane{position:sticky;max-height:calc(100dvh - 130px);overflow:auto;border:1px solid var(--border)}
.list-links{display:grid;gap:8px;counter-reset:challenge-index}
.nav-folder-content{counter-reset:challenge-index}
.challenge-link{counter-increment:challenge-index;position:relative;display:flex;align-items:start;justify-content:space-between;min-width:0;overflow-wrap:anywhere;color:var(--text);text-decoration:none}
.challenge-link::before{content:counter(challenge-index,decimal-leading-zero);position:absolute}
.challenge-inline-link{width:100%;cursor:pointer;text-align:left}
.link-meta{text-transform:uppercase;flex-shrink:0}
.file-tabs{display:flex;flex-wrap:wrap}
.file-tab{border:1px solid var(--border2);color:var(--muted);cursor:pointer}
.file-tab:hover{color:var(--text);border-color:var(--accent)}
.file-tab.active{font-weight:700}
.file-viewer .code-section{margin-top:0}
.code-section{overflow:hidden}
.code-section-header{border-bottom:1px solid var(--border)}
.code-block{margin:0}
.code-line::before{content:attr(data-ln);position:absolute;left:0;text-align:right}
.tok-kw{color:var(--accent2)}.tok-str{color:#d8bf7c}.tok-num{color:#dfadff}.tok-com{color:var(--muted)}.tok-meta{color:var(--accent3)}
.writeup-filters{display:grid}
.writeup-filters label{display:grid}
.writeup-grid{display:grid}
.writeup-card{display:flex;flex-direction:column}
.reader-actions,.code-actions{display:flex;flex-wrap:wrap;align-items:center}
.writeup-prose ul,.writeup-prose ol{padding-left:24px}
.writeup-prose table{display:block;max-width:100%;overflow:auto;border-collapse:collapse}
.writeup-prose th,.writeup-prose td{border:1px solid var(--border2);padding:8px}
.writeup-pagination{display:flex;flex-wrap:wrap;justify-content:space-between}
@media(max-width:620px){.writeup-pagination{flex-direction:column}}
