/* Listing grids: /perspectives/ (In the News, Writing, Podcasts) and /articles/.
 * Owned by this repo (not mirrored from WordPress); loaded after the page's imported inline style.
 * - Shape: N cards per page, N a multiple of the row width (lib/grids.ts); a short last page is padded
 *   with invisible .slot-empty cells, which are dropped on 1-column layouts.
 * - Size: card text has fixed line counts (title 2, excerpt 3, labels 1) at fixed heights, so content
 *   (including an empty label or excerpt) never changes a card's height. */

/* base grid rules (were only in the Perspectives page's inline style, so /articles/ rendered unstyled) */
.articles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3.4rem 1.6rem;margin-top:3rem;align-items:stretch}
@media(max-width:900px){.articles{grid-template-columns:minmax(0,1fr)}}
.articles-spacious{gap:1.35rem}
.art{background:var(--white);border-top:4px solid var(--orange);padding:2rem 1.8rem;box-shadow:0 6px 30px rgba(22,29,70,.07);display:flex;flex-direction:column;transition:transform .25s}
.articles-spacious .art{padding-top:1.55rem;padding-bottom:1.55rem}
.art:hover{transform:translateY(-4px)}
.art small{font-size:.72rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase;color:var(--orange);margin-bottom:.8rem;display:block;line-height:1.4;height:1.4em;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.art .go{margin-top:1.2rem;font-size:.75rem;font-weight:900;letter-spacing:.2em;text-transform:uppercase;color:var(--navy)}
.art .go::after{content:" →";color:var(--orange)}
.art .meta-date{font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin-top:1rem;display:block;line-height:1.4;height:1.4em;flex:none}
.news{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.4rem;margin-top:3rem;align-items:stretch}
@media(max-width:1000px){.news{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.news{grid-template-columns:minmax(0,1fr)}}
.ep-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.2rem;margin-top:2.4rem}
@media(max-width:1100px){.ep-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.ep-grid{grid-template-columns:minmax(0,1fr)}}

/* fixed line counts: title 2, excerpt 3, one-line labels */
.art h3,.news h3,.episode-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.art h3{font-weight:900;font-size:1.08rem;line-height:1.4;text-transform:none;margin-bottom:.7rem;height:2.8em;min-height:0;flex:none}
.art p{font-size:.9rem;line-height:1.6;color:var(--mut);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;height:4.8em;flex:none;margin:0}
.news a{display:flex;flex-direction:column}
.news time,.news .outlet{display:block;line-height:1.4;height:1.4em;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.news h3{line-height:1.45;height:2.9em;flex:none;margin-bottom:.8rem}
.episode-title{line-height:1.4;height:2.8em}

/* paging: one page of N cards at a time (grids.js); padding cells keep the last page's shape */
[data-per-page]>[hidden]{display:none!important}
.slot-empty{visibility:hidden;box-shadow:none}
@media(max-width:900px){.articles>.slot-empty{display:none}}
@media(max-width:600px){.news>.slot-empty{display:none}}
@media(max-width:700px){.ep-grid>.slot-empty{display:none}}
.pager{display:flex;justify-content:center;align-items:center;gap:.6rem;margin-top:3rem;flex-wrap:wrap}
.pager button{font-family:inherit;font-size:.74rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;border:2px solid var(--navy);background:var(--white);color:var(--navy);padding:.7rem 1.1rem;transition:background .2s,color .2s}
.pager button[aria-current="true"]{background:var(--navy);color:var(--white)}
.pager button:hover:not([disabled]){background:var(--orange);border-color:var(--orange);color:var(--white)}
.pager button[disabled]{opacity:.4;cursor:default}
