/* The route between al-Andalus and Ifriqiya is the organizing line. */
.collection-main,.book-landing,.reader-page{max-width:1120px;margin:0 auto;padding:clamp(110px,14vw,160px) clamp(18px,4vw,48px) 90px}
.collection-hero{max-width:850px;padding-bottom:clamp(52px,8vw,92px)}
.collection-hero h1{font-family:var(--serif);font-size:clamp(3rem,8vw,7rem);line-height:.98;letter-spacing:-.035em;margin:.28em 0 .32em}
.collection-hero h1 em{color:var(--accent);font-style:normal}
.collection-hero>p{max-width:620px;color:var(--muted);font-size:clamp(1.05rem,2vw,1.3rem)}
.route-key{display:flex;align-items:center;gap:.8em;margin-top:2em;color:var(--faint);font-family:var(--mono);font-size:.65rem;letter-spacing:.08em}
.route-key i{height:1px;flex:0 1 72px;background:linear-gradient(90deg,var(--line),var(--accent),var(--line))}
.route-thread{position:relative;padding-right:clamp(0px,3vw,44px)}
.route-thread::before{content:"";position:absolute;right:18px;top:38px;bottom:38px;width:1px;background:linear-gradient(var(--accent),var(--ice),var(--accent));opacity:.65}
.subject-group{position:relative;display:grid;grid-template-columns:56px 1fr;gap:clamp(18px,3vw,38px);padding:0 0 clamp(54px,8vw,88px)}
.group-marker{position:relative;z-index:1;display:grid;place-items:center;align-self:start;width:38px;height:38px;border:1px solid var(--accent);border-radius:50%;background:var(--bg);color:var(--accent);font-family:var(--mono);font-size:.72rem}
.group-note{font-family:var(--mono);font-size:.67rem;color:var(--ice);letter-spacing:.06em;margin-bottom:.35em}
.group-copy h2,.parts h2{font-family:var(--serif);font-size:clamp(2rem,4vw,3.25rem);line-height:1.15;margin-bottom:.75em}
.collection-grid,.parts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.collection-card,.part-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1em;min-height:105px;padding:1.15em 1.25em;border:1px solid var(--line);background:var(--surface);text-decoration:none;transition:border-color .25s,transform .25s,background .25s}
.collection-card:hover,.part-card:hover{border-color:var(--line-strong);background:var(--surface-2);transform:translateY(-2px)}
.collection-card:focus-visible,.part-card:focus-visible,.part-nav a:focus-visible,.crumbs a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.card-index,.part-card>span{font-family:var(--mono);font-size:.7rem;color:var(--accent)}
.collection-card strong,.part-card strong{display:block;font-family:var(--serif);font-size:1.12rem;line-height:1.55}
.collection-card small,.part-card small{display:block;color:var(--muted);font-size:.85rem;margin-top:.2em}
.card-arrow{color:var(--accent);font-size:1.25rem}
.collection-disclosure,.source-note{border:1px solid var(--line);background:var(--surface);padding:1.25em 1.4em;color:var(--muted)}
.collection-disclosure{margin-right:clamp(74px,9vw,110px);max-width:760px}
.collection-disclosure strong,.source-kicker{display:block;color:var(--text);font-family:var(--serif);font-size:1.1rem;margin-bottom:.25em}
.crumbs{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.65em;color:var(--muted);font-size:.86rem;margin-bottom:clamp(38px,7vw,70px)}
.crumbs a{color:var(--accent);text-decoration:none}
.book-hero{max-width:860px;margin-bottom:2em}
.book-label{font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;color:var(--accent)}
.book-hero h1,.part-banner h1{font-family:var(--serif);font-size:clamp(2.8rem,7vw,6rem);line-height:1.08;margin:.2em 0}
.book-author,.part-banner>p{color:var(--muted);font-size:1.2rem}
.book-note{margin-top:1.6em;max-width:640px;color:var(--muted);font-size:1.02rem;line-height:1.75;border-inline-start:2px solid var(--accent);padding-inline-start:1em}
.book-source{margin-top:clamp(48px,7vw,80px);padding-top:1.4em;border-top:1px solid var(--line);color:var(--faint);font-size:.82rem;overflow-wrap:anywhere}
.book-source a{color:var(--muted);text-decoration:none}
.book-source a:hover{color:var(--text)}
.book-source code{font-family:var(--mono);font-size:.72rem;color:var(--ice)}
.parts{margin-top:clamp(52px,8vw,90px)}
.part-card{grid-template-columns:auto 1fr;min-height:90px}.part-card small{grid-column:2}
.part-banner{max-width:900px;margin-bottom:clamp(45px,8vw,82px)}
.reader-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:clamp(32px,5vw,70px);align-items:start}
.part-rail{position:sticky;top:100px}.part-rail .source-note{margin:0 0 1em}
.part-toc{display:block;max-width:none;margin:0 0 1.6em;padding:0}
.part-toc h4{font-family:var(--serif);font-weight:400;font-size:.95rem;color:var(--faint);margin:0 0 .8em}
.part-toc ul{list-style:none;margin:0;padding:0;max-height:calc(100vh - 170px);overflow:auto}
.part-toc a{display:block;color:var(--muted);text-decoration:none;font-size:.9rem;line-height:1.5;padding:.3em .7em;border-inline-start:2px solid transparent;transition:color .2s,border-color .2s}
.part-toc a:hover{color:var(--text)}
.part-toc a.active{color:var(--accent);border-color:var(--accent)}
.part-toc a.h3{padding-inline-start:1.5em;font-size:.85rem;color:var(--faint)}
.part-toc a.h4{padding-inline-start:2.3em;font-size:.82rem;color:var(--faint)}
.part-toc::-webkit-scrollbar,.part-toc ul::-webkit-scrollbar{width:5px}
.part-toc ul::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}
.back-book{display:block;text-align:center;padding:.75em;border:1px solid var(--line);color:var(--accent);text-decoration:none}
.part-nav{display:grid;grid-template-columns:1fr 1fr;gap:1em;margin:clamp(60px,9vw,110px) auto 0;max-width:var(--read-measure)}
.part-nav a{padding:1em 1.2em;border:1px solid var(--line);text-decoration:none;color:var(--accent)}
.part-nav a:last-child{text-align:left}
@media(max-width:820px){.collection-grid,.parts-grid{grid-template-columns:1fr}.reader-layout{grid-template-columns:1fr}.part-rail{position:static;order:-1}.part-toc ul{max-height:52vh}.route-thread{padding-right:0}.collection-disclosure{margin-right:0}}
@media(max-width:560px){.subject-group{grid-template-columns:42px 1fr;gap:10px}.route-thread::before{right:18px}.collection-card{padding:1em;min-height:92px}.book-hero dl{display:grid;grid-template-columns:1fr 1fr}.part-nav{grid-template-columns:1fr}.part-nav a:last-child{text-align:right}.route-key{gap:.45em}}
@media(prefers-reduced-motion:reduce){.collection-card,.part-card{transition:none}.collection-card:hover,.part-card:hover{transform:none}}

