/* ==========================================================================
   Turāth House — article reading experience (v3)
   Literata for long reading, Cormorant Garamond for display, Jameel Noori for Urdu.
   ========================================================================== */
@font-face { font-family: "Literata"; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/literata-latin-400-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Literata"; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/literata-latin-ext-400-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Literata"; font-weight: 400; font-style: italic; font-display: swap; src: url("../fonts/literata-latin-400-italic.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Literata"; font-weight: 400; font-style: italic; font-display: swap; src: url("../fonts/literata-latin-ext-400-italic.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Literata"; font-weight: 600; font-style: normal; font-display: swap; src: url("../fonts/literata-latin-600-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Literata"; font-weight: 600; font-style: normal; font-display: swap; src: url("../fonts/literata-latin-ext-600-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root { --read: "Literata", Georgia, "Times New Roman", serif; }

/* reading progress */
.progress { position: fixed; top: 0; inset-inline-start: 0; height: 3px; width: 0; background: linear-gradient(90deg, var(--gold-ink), var(--gold)); z-index: 60; }

/* ---------- title band ---------- */
.a-hero { background: var(--deep); color: var(--ivory); position: relative; overflow: hidden; border-bottom: 1px solid var(--line); }
.a-hero::before { content: ""; position: absolute; inset: 0; opacity: .06; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='%23C9A84C' stroke-width='1'%3E%3Cpath d='M60 10 L74 46 L110 60 L74 74 L60 110 L46 74 L10 60 L46 46 Z'/%3E%3Crect x='32' y='32' width='56' height='56' transform='rotate(45 60 60)'/%3E%3Crect x='32' y='32' width='56' height='56'/%3E%3C/g%3E%3C/svg%3E"); background-size: 120px; }
.a-hero .wrap { position: relative; display: grid; grid-template-columns: 1.25fr .75fr; gap: clamp(1.6rem, 4vw, 3.5rem); align-items: center; padding-block: clamp(2.4rem, 5vw, 3.8rem); }
.crumbs { font: 500 .8rem var(--sans); color: rgba(244,239,230,.6); margin-bottom: 1rem; }
.crumbs a { color: var(--gold); text-decoration: none; }
.a-type { display: inline-flex; gap: .5rem; align-items: center; font: 600 .7rem var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gold); margin-bottom: .8rem; }
.a-type .verified { color: #7FC3A0; border: 1px solid; border-radius: 999px; padding: .2rem .55rem; letter-spacing: .08em; }
.a-hero h1 { color: #fff; font-size: clamp(2.3rem, 4.6vw, 3.8rem); line-height: 1.05; }
.a-hero .ar-name { font: 400 clamp(1.5rem, 2.6vw, 2.1rem)/1.6 var(--ar); color: var(--gold); margin: .2rem 0 .3rem; }
.a-hero .dek { font: italic 400 clamp(1.15rem, 1.8vw, 1.4rem)/1.5 var(--read); color: rgba(244,239,230,.85); max-width: 40ch; margin: .6rem 0 1.3rem; }
.a-meta { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; font: 500 .82rem var(--sans); color: rgba(244,239,230,.65); border-top: 1px solid var(--line); padding-top: .9rem; }
.a-meta b { color: var(--ivory); font-weight: 600; }

/* generated cover: no faces, only geometry, calligraphy and architecture */
.cover { position: relative; aspect-ratio: 4 / 5; border-radius: 16px; overflow: hidden; border: 1px solid rgba(201,168,76,.45); box-shadow: 0 40px 80px -40px rgba(0,0,0,.8); background: #0A1C2C; isolation: isolate; }
.cover svg.art { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; }
.cover .c-ar { position: absolute; inset-inline: 0; top: 38%; text-align: center; font: 400 clamp(2rem, 4vw, 3rem)/1.5 var(--ar); color: var(--gold); text-shadow: 0 0 30px rgba(201,168,76,.45); padding: 0 1rem; direction: rtl; }
.cover .c-foot { position: absolute; inset-inline: 0; bottom: 0; padding: 1rem 1.2rem; background: linear-gradient(180deg, transparent, rgba(5,14,23,.9)); font: 600 .66rem var(--mono); letter-spacing: .14em; text-transform: uppercase; color: rgba(244,239,230,.75); display: flex; justify-content: space-between; }
.cover.book { aspect-ratio: 3 / 4; border-radius: 6px 16px 16px 6px; }
.cover.book::before { content: ""; position: absolute; inset-block: 0; inset-inline-start: 0; width: 18px; background: linear-gradient(90deg, rgba(0,0,0,.5), rgba(201,168,76,.18), rgba(0,0,0,.35)); z-index: 2; }
.cover .frame { position: absolute; inset: 14px; border: 1px solid rgba(201,168,76,.5); border-radius: 10px; pointer-events: none; }
.cover .frame::after { content: ""; position: absolute; inset: 5px; border: 1px solid rgba(201,168,76,.22); border-radius: 7px; }
.cover figcaption { position: absolute; inset-inline: 0; top: 18px; text-align: center; font: 600 .6rem var(--mono); letter-spacing: .2em; text-transform: uppercase; color: rgba(201,168,76,.8); }

/* ---------- reading layout ---------- */
.a-body { background: var(--paper); }
.a-body .wrap { display: grid; grid-template-columns: 230px minmax(0, 1fr) 230px; gap: clamp(1.4rem, 3vw, 3rem); padding-block: clamp(2rem, 4vw, 3rem) 1rem; }
.toc { position: sticky; top: 100px; align-self: start; font: 500 .84rem/1.45 var(--sans); max-height: calc(100vh - 120px); overflow: auto; }
.toc h2 { font: 600 .68rem var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-ink); margin-bottom: .8rem; }
.toc ol { list-style: none; margin: 0; padding: 0; counter-reset: t; border-inline-start: 1px solid var(--rule); }
.toc li { counter-increment: t; }
.toc a { display: block; padding: .38rem .8rem; color: var(--ink-2); text-decoration: none; border-inline-start: 2px solid transparent; margin-inline-start: -1px; }
.toc a:hover, .toc a.on { color: var(--navy); border-color: var(--gold); background: rgba(201,168,76,.08); }
.aside-r { align-self: start; position: sticky; top: 100px; display: grid; gap: 1rem; }
.facts { background: #fff; border: 1px solid var(--rule); border-radius: 14px; padding: 1.1rem 1.2rem; font: 400 .85rem/1.5 var(--sans); }
.facts h2 { font: 600 .68rem var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-ink); margin-bottom: .6rem; }
.facts dl { margin: 0; display: grid; gap: .55rem; }
.facts dt { font-weight: 600; color: var(--navy); font-size: .78rem; }
.facts dd { margin: 0; color: var(--ink-2); }
.verify-card { background: var(--navy); color: var(--ivory); border-radius: 14px; padding: 1.1rem 1.2rem; font: 400 .82rem/1.5 var(--sans); }
.verify-card b { display: block; font: 600 .68rem var(--mono); letter-spacing: .14em; text-transform: uppercase; color: #7FC3A0; margin-bottom: .4rem; }
.verify-card a { color: var(--gold); }

/* prose */
.prose { font: 400 1.14rem/1.82 var(--read); color: #1E2633; max-width: 68ch; }
.prose > p:first-of-type::first-letter { float: inline-start; font: 600 4.3rem/.85 var(--serif); color: var(--gold-ink); margin: .45rem .55rem 0 0; }
.prose p { margin: 0 0 1.15em; hyphens: auto; }
.prose h2 { font: 600 clamp(1.65rem, 2.6vw, 2.15rem)/1.15 var(--serif); color: var(--navy); margin: 2.4rem 0 .9rem; scroll-margin-top: 100px; }
.prose h2 .num { display: block; font: 600 .72rem var(--mono); letter-spacing: .16em; color: var(--gold-ink); margin-bottom: .45rem; }
.prose h3 { font: 600 1.25rem/1.3 var(--serif); color: var(--navy); margin: 1.8rem 0 .6rem; letter-spacing: .01em; }
.prose a { color: var(--gold-ink); }
.prose em { font-style: italic; }
.prose strong { font-weight: 600; color: var(--navy); }
.prose blockquote { margin: 2rem 0; padding: 1.2rem 0 1.2rem 1.6rem; border-inline-start: 3px solid var(--gold); font: italic 500 clamp(1.35rem, 2.2vw, 1.7rem)/1.45 var(--serif); color: var(--navy); }
.prose blockquote p { margin: 0; }
.prose ul, .prose ol { padding-inline-start: 1.3rem; margin: 0 0 1.2em; }
.prose li { margin-bottom: .4em; }
.prose li::marker { color: var(--gold-ink); }
.prose table { width: 100%; border-collapse: collapse; margin: 1.6rem 0; font: 400 .92rem/1.5 var(--sans); background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 0 0 1px var(--rule); }
.prose th, .prose td { text-align: start; padding: .75rem .9rem; border-bottom: 1px solid var(--rule); vertical-align: top; }
.prose th { background: var(--navy); color: var(--ivory); font-weight: 600; }
.prose tr:last-child td { border-bottom: 0; }
.prose td strong { color: var(--navy); }
.prose .ornament { text-align: center; color: var(--gold-ink); font: 400 1.4rem var(--serif); letter-spacing: 1rem; margin: 2rem 0; }
.prose .readings { font: 400 .95rem/1.6 var(--sans); }
.prose .readings p { margin-bottom: .6em; padding-inline-start: 1.2rem; text-indent: -1.2rem; }
.pull { margin: 2.4rem -2rem; padding: 1.8rem 2rem; background: var(--deep); color: var(--ivory); border-radius: 16px; position: relative; font: italic 500 clamp(1.4rem, 2.4vw, 1.85rem)/1.4 var(--serif); }
.pull::before { content: "“"; position: absolute; top: -.2rem; inset-inline-start: 1rem; font: 400 5rem/1 var(--serif); color: var(--gold); opacity: .5; }
.pull span { position: relative; }

/* end matter */
.a-end { background: var(--ivory); border-top: 1px solid var(--rule); }
.a-end .wrap { padding-block: 2.4rem; display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
.a-end h2 { font: 600 .72rem var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gold-ink); margin-bottom: .9rem; }
.related { display: grid; gap: .7rem; }
.rel { display: grid; grid-template-columns: 64px 1fr; gap: .9rem; align-items: center; text-decoration: none; color: var(--ink); background: #fff; border: 1px solid var(--rule); border-radius: 12px; padding: .6rem; transition: border-color .2s; }
.rel:hover { border-color: var(--gold); }
.rel .mini { width: 64px; height: 76px; border-radius: 8px; background: var(--deep); display: grid; place-items: center; font: 400 1rem/1.4 var(--ar); color: var(--gold); text-align: center; padding: .2rem; overflow: hidden; }
.rel b { font: 600 1.15rem var(--serif); color: var(--navy); display: block; }
.rel small { font: 500 .78rem var(--sans); color: var(--ink-2); }

/* library listing */
.lib-hero { background: var(--deep); color: var(--ivory); padding-block: clamp(2.4rem, 5vw, 3.6rem); border-bottom: 1px solid var(--line); }
.lib-hero h1 { color: #fff; font-size: clamp(2.4rem, 5vw, 3.8rem); }
.lib-hero p { color: rgba(244,239,230,.78); max-width: 46rem; margin-top: .8rem; font-size: 1.1rem; }
.lib-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.4rem; }
.lib-filters button { background: none; border: 1px solid var(--line); color: rgba(244,239,230,.8); border-radius: 999px; padding: .45rem .95rem; font: 500 .85rem var(--sans); cursor: pointer; }
.lib-filters button[aria-pressed="true"] { background: var(--gold); color: var(--navy); border-color: var(--gold); }
.lib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1.2rem; padding-block: 2.2rem 3rem; }
.lcard { display: flex; flex-direction: column; text-decoration: none; color: var(--ink); background: #fff; border: 1px solid var(--rule); border-radius: 16px; overflow: hidden; transition: transform .25s, box-shadow .25s; }
.lcard:hover { transform: translateY(-3px); box-shadow: 0 24px 50px -30px rgba(11,29,45,.45); }
.lcard .cover { border-radius: 0; border: 0; aspect-ratio: 16 / 10; box-shadow: none; }
.lcard .cover .c-ar { top: 30%; font-size: 2.1rem; }
.lcard .cover.book::before { display: none; }
.lcard .lc-body { padding: 1.1rem 1.2rem 1.3rem; display: flex; flex-direction: column; gap: .35rem; flex: 1; }
.lcard .lc-type { font: 600 .64rem var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gold-ink); }
.lcard b { font: 600 1.45rem/1.15 var(--serif); color: var(--navy); }
.lcard p { font: 400 .9rem/1.55 var(--sans); color: var(--ink-2); margin: 0; }
.lcard .lc-foot { margin-top: auto; padding-top: .7rem; display: flex; justify-content: space-between; font: 500 .75rem var(--sans); color: var(--ink-2); }
.lcard .lc-foot .ok { color: var(--est); font-weight: 600; }

/* ---------- Urdu articles ---------- */
.urdu .prose { font: 400 1.32rem/2.25 var(--ur); max-width: 64ch; color: #1E2633; }
.urdu .prose > p:first-of-type::first-letter { float: none; font: inherit; color: inherit; margin: 0; }
.urdu .prose h2 { font: 400 clamp(1.5rem, 2.4vw, 1.9rem)/1.8 var(--ur); }
.urdu .prose h3 { font: 400 1.3rem/1.8 var(--ur); }
.urdu .prose blockquote, .urdu .pull { font: 400 clamp(1.3rem, 2vw, 1.6rem)/2 var(--ur); }
.urdu .prose blockquote { border-inline-start: 3px solid var(--gold); padding-inline: 1.4rem 0; }
.urdu .prose table { font: 400 1.08rem/1.9 var(--ur); }
.urdu .prose [lang="en"], .urdu .prose .ltr { font: 400 1rem/1.7 var(--read); direction: ltr; text-align: left; }
.urdu .prose [lang="ar"] { font: 400 1.35rem/2 var(--ar); }
.urdu .a-hero h1 { font: 400 clamp(1.9rem, 3.8vw, 3rem)/1.7 var(--ur); }
.urdu .a-hero .dek { font: 400 1.25rem/2 var(--ur); }
.urdu .a-meta, .urdu .crumbs, .urdu .toc, .urdu .facts, .urdu .verify-card, .urdu .a-type, .urdu .toc h2, .urdu .facts h2, .urdu .verify-card b, .urdu .a-end h2, .urdu .rel b, .urdu .rel small, .urdu .cover .c-foot, .urdu .cover figcaption, .urdu .lcard b, .urdu .lcard p, .urdu .lcard .lc-type, .urdu .lcard .lc-foot, .urdu .lib-filters button { font-family: var(--ur); letter-spacing: 0; text-transform: none; }
.urdu .toc { font-size: 1rem; line-height: 1.8; }
.urdu .facts, .urdu .verify-card { font-size: 1rem; line-height: 1.9; }
.urdu .lcard b { font-size: 1.35rem; line-height: 1.7; font-weight: 400; }

@media (max-width: 1180px) { .a-body .wrap { grid-template-columns: 210px minmax(0, 1fr); } .aside-r { grid-column: 2; position: static; grid-template-columns: 1fr 1fr; } }
@media (max-width: 860px) {
  .a-hero .wrap { grid-template-columns: 1fr; }
  .a-hero .cover { max-width: 300px; }
  .a-body .wrap { grid-template-columns: 1fr; }
  .toc { position: static; max-height: none; }
  .toc ol { columns: 2; }
  .aside-r { grid-column: 1; grid-template-columns: 1fr; }
  .a-end .wrap { grid-template-columns: 1fr; }
  .pull { margin-inline: 0; }
}
@media (max-width: 560px) { .toc ol { columns: 1; } .prose { font-size: 1.06rem; } }
.a-hero .ar-name { text-align: start; direction: rtl; display: inline-block; }
.cover .c-ar { top: 16%; font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.lcard .cover .c-ar { top: 12%; font-size: 1.9rem; }
.prose p { hyphens: manual; }
.urdu .a-hero .ar-name { display: block; }
figure.cover { margin: 0; }
.lcard .cover figcaption, .lcard .cover .frame { display: none; }
.lcard .cover .c-ar { top: 26%; font-size: 2.2rem; }
.lcard .cover svg.art { transform: translateY(18%); }
.urdu .crumbs { font-size: 1.05rem; }
.urdu .a-type { font-size: 1.15rem; gap: .7rem; }
.urdu .a-type .verified { font-size: 1rem; padding: .05rem .7rem .3rem; }
.urdu .a-meta { font-size: 1.08rem; line-height: 1.9; gap: .4rem 1.6rem; }
.urdu .toc { font-size: 1.12rem; }
.urdu .toc h2, .urdu .facts h2, .urdu .a-end h2 { font-size: 1.15rem; }
.urdu .facts { font-size: 1.08rem; } .urdu .facts dt { font-size: 1.05rem; }
.urdu .verify-card { font-size: 1.08rem; } .urdu .verify-card b { font-size: 1.1rem; }
.urdu .cover figcaption { font-size: .95rem; letter-spacing: 0; }
.urdu .cover .c-foot { font-size: .95rem; letter-spacing: 0; }
.urdu .rel b { font-size: 1.2rem; line-height: 1.7; } .urdu .rel small { font-size: 1rem; }
.urdu .lcard .lc-type { font-size: 1.05rem; } .urdu .lcard p { font-size: 1.1rem; line-height: 1.9; } .urdu .lcard .lc-foot { font-size: 1rem; }
.urdu .lib-hero p { font-size: 1.35rem; line-height: 2; }
.urdu .lib-hero h1 { font: 400 clamp(2.4rem, 4.6vw, 3.6rem)/1.6 var(--ur); }
/* photographs */
.cover.photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.cover.photo::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(5,14,23,.15) 0%, rgba(5,14,23,.05) 40%, rgba(5,14,23,.85) 100%); }
.cover.photo .c-ar { top: auto; bottom: 2.6rem; font-size: clamp(1.6rem, 3vw, 2.3rem); text-shadow: 0 2px 18px rgba(0,0,0,.8); }
.lcard .cover.photo .c-ar { top: auto; bottom: 2.1rem; font-size: 1.7rem; }
.cover-wrap { display: grid; gap: .5rem; }
.cover-credit { font: 400 .7rem/1.4 var(--sans); color: rgba(244,239,230,.5); margin: 0; }
.cover-credit a { color: inherit; }
.a-fig { margin: 2.2rem 0; }
.a-fig img { width: 100%; max-height: 520px; object-fit: cover; border-radius: 14px; display: block; box-shadow: 0 30px 60px -40px rgba(11,29,45,.6); }
.a-fig figcaption { font: 400 .8rem/1.5 var(--sans); color: var(--ink-2); margin-top: .6rem; }
.a-fig figcaption a { color: var(--ink-2); }
.urdu .a-fig figcaption, .urdu .cover-credit { font-family: var(--ur); font-size: .95rem; line-height: 1.8; }
/* readable Arabic on photographs */
.cover.photo .c-ar { top: auto !important; bottom: 3rem; left: 50%; right: auto; transform: translateX(-50%); width: max-content; max-width: 88%; background: rgba(5,14,23,.68); border-radius: 12px; padding: .1rem 1.1rem .45rem; font-size: clamp(1.5rem, 2.6vw, 2.1rem); text-shadow: none; backdrop-filter: blur(4px); }
.lcard .cover.photo .c-ar { display: none; }
.lcard .cover.photo::after { background: linear-gradient(180deg, transparent 55%, rgba(5,14,23,.75)); }
