/* Editorial extensions of the Open Knowledge visual identity. */
.journal-page .root{overflow:clip}
.journal-main{grid-column:1/-1;min-width:0;padding-bottom:100px}
.breadcrumbs{margin:16px 0 56px;font-family:"Necto Mono",monospace;font-size:13px;line-height:1.7}
.breadcrumbs ol{display:flex;flex-wrap:wrap;gap:8px 16px;list-style:none}
.breadcrumbs li+li:before{content:"/";margin-right:16px;color:#555}
.breadcrumbs a{text-decoration:underline;text-underline-offset:4px}
.journal-heading{max-width:960px;margin:0 auto 72px;text-align:center}
.journal-heading h1{font-size:88px;font-weight:700;line-height:1.02;letter-spacing:-2px;margin:24px 0}
.journal-heading>p:not(.eyebrow){max-width:740px;font-size:24px;line-height:1.5;margin:0 auto 28px}
.rss-link{margin-top:4px}
.journal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.journal-card{min-width:0;border:1px solid #dedede;border-radius:20px;overflow:hidden;background:#fff;display:flex;flex-direction:column}
.journal-card-art{display:block;overflow:hidden;background:#adffed}
.journal-card-art img{width:100%;height:auto;aspect-ratio:1200/630;object-fit:cover}
.journal-card-copy{padding:32px;display:flex;flex-direction:column;flex:1}
.journal-card h3{font-size:34px;font-weight:700;line-height:1.12;margin:0 0 20px}
.journal-card h3 a:hover{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:2px}
.journal-card-copy>p:not(.eyebrow){font-size:20px;line-height:1.5;margin:0 0 24px}
.journal-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;font-family:"Necto Mono",monospace;font-size:12px;line-height:1.7}
.journal-meta a{text-decoration:underline;text-underline-offset:3px}
.journal-card .journal-meta{margin-top:auto;margin-bottom:24px}
.journal-card .text-link{margin-top:0;align-self:flex-start}
.journal-home{margin:8px 0 96px}
.journal-section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:32px}
.journal-section-heading h2{font-size:40px;font-weight:700;line-height:1.1}
.journal-section-heading .text-link{margin-top:0}
.article-header{max-width:980px;margin:0 auto 48px;text-align:center}
.article-header h1{font-size:76px;font-weight:700;line-height:1.04;letter-spacing:-1.6px;margin:24px 0}
.article-deck{font-size:26px;line-height:1.4;max-width:830px;margin:0 auto 32px}
.article-header .journal-meta{justify-content:center}
.article-cover{margin-bottom:64px;border-radius:20px;overflow:hidden}
.article-cover img{display:block;width:100%;height:auto}
.article-layout{display:grid;grid-template-columns:240px minmax(0,760px);justify-content:center;gap:80px}
.article-layout>aside{align-self:start;position:sticky;top:32px;min-width:0}
.article-toc{border-top:1px solid #aaa;padding-top:24px;margin-bottom:28px}
.article-toc ol{display:flex;flex-direction:column;gap:16px;list-style:none}
.article-toc a{font-size:16px;line-height:1.5;display:block;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#aaa}
.article-toc a:hover{text-decoration-color:#000}
.article-prose{min-width:0;font-size:21px;line-height:1.7;overflow-wrap:anywhere}
.article-prose>p{margin-bottom:28px}
.article-prose .article-opening{font-size:28px;line-height:1.45;font-weight:700}
.article-prose h2{font-size:38px;line-height:1.15;font-weight:700;letter-spacing:-.5px;margin:60px 0 24px;scroll-margin-top:32px}
.article-prose h2:first-child{margin-top:0}
.article-prose a:not(.btn){text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.article-prose a:not(.btn):hover{text-decoration-thickness:2px}
.article-prose blockquote{border-left:5px solid #00c7eb;background:#edfcff;padding:28px 32px;margin:40px 0;font-size:30px;font-weight:700;line-height:1.35}
.story-timeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-block:1px solid #aaa;padding:28px 0;gap:24px;margin:36px 0}
.story-timeline strong{display:block;font-family:"Necto Mono",monospace;font-size:30px;margin-bottom:12px}
.story-timeline p{font-size:16px;line-height:1.5}
.article-people{display:grid;grid-template-columns:1fr 1fr;gap:32px;padding:32px;margin:36px 0;background:#f7f7f7;border-radius:20px}
.article-people .team-portrait{margin-bottom:20px}
.article-people strong{display:block;font-size:22px;line-height:1.4}
.article-people span{display:block;font-family:"Necto Mono",monospace;font-size:14px}
.article-figure{margin:40px 0}
.article-figure>a{display:block;border:1px solid #ddd;border-radius:12px;overflow:hidden}
.article-figure img{display:block;width:100%;height:auto}
.article-figure figcaption{font-size:14px;line-height:1.6;margin-top:14px;color:#414141}
.article-steps{list-style:decimal;padding-left:28px;margin:32px 0}
.article-steps li{padding-left:8px;margin-bottom:20px}
.article-sources{margin:40px 0;border-block:1px solid #aaa;padding:24px 0;font-size:16px;line-height:1.6}
.article-sources summary{cursor:pointer;font-family:"Necto Mono",monospace;font-size:16px;font-weight:700;min-height:28px}
.article-sources summary:focus-visible{outline:3px solid #000;outline-offset:6px}
.article-sources p{margin:24px 0 16px}
.article-sources ul{list-style:disc;padding-left:24px}
.article-sources li{margin:12px 0}
.article-invitation{padding:40px;background:#adffed;border-radius:20px;margin-top:48px}
.article-invitation h2{margin:0 0 20px}
.article-invitation p{margin-bottom:28px}
.article-invitation .btn{max-width:100%;white-space:normal;text-align:center}
.article-related{margin-top:100px;border-top:1px solid #ddd;padding-top:60px}
.article-related .journal-card{display:grid;grid-template-columns:1fr 1fr;grid-column:1/-1}
.article-related .journal-card-art{height:100%;display:flex;align-items:center;background:#eefdf8}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1199px){.article-layout{grid-template-columns:200px minmax(0,1fr);gap:40px}.journal-card h3{font-size:30px}.journal-card-copy{padding:28px}.article-header h1{font-size:64px}}
@media(max-width:1023px){.article-layout{grid-template-columns:1fr;gap:32px}.article-layout>aside{position:static}.article-toc ol{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px}.article-layout>aside>.text-link{display:none}.article-prose{max-width:760px;margin:auto}.article-cover{margin-bottom:40px}.journal-heading h1{font-size:72px}.article-people{max-width:600px}}
@media(max-width:767px){.journal-main{padding-bottom:60px}.breadcrumbs{margin:8px 0 36px;font-size:11px}.journal-heading{margin-bottom:40px}.journal-heading h1{font-size:52px;letter-spacing:-1px}.journal-heading>p:not(.eyebrow){font-size:21px}.journal-grid{grid-template-columns:1fr;gap:28px}.journal-card-copy{padding:28px}.journal-card h3{font-size:30px}.journal-card-copy>p:not(.eyebrow){font-size:19px}.journal-section-heading{align-items:flex-start}.journal-section-heading h2{font-size:30px}.journal-section-heading .text-link{font-size:12px;flex-shrink:0}.journal-home{margin-bottom:60px}.article-header h1{font-size:44px;letter-spacing:-.7px}.article-deck{font-size:22px}.article-header .journal-meta{gap:8px 16px}.article-cover{border-radius:12px}.article-toc ol{grid-template-columns:1fr}.article-prose{font-size:19px;line-height:1.65}.article-prose .article-opening{font-size:24px}.article-prose h2{font-size:30px;margin-top:44px}.article-prose blockquote{font-size:25px;padding:24px}.story-timeline{grid-template-columns:1fr;gap:24px}.story-timeline>div{display:grid;grid-template-columns:85px 1fr;gap:16px}.story-timeline strong{font-size:26px;margin:0}.article-people{padding:24px;gap:24px;grid-template-columns:1fr}.article-people .team-portrait{width:160px;height:160px}.article-invitation{padding:28px}.article-invitation .btn{font-size:20px;padding:16px 24px}.article-related{margin-top:60px;padding-top:40px}.article-related .journal-card{display:flex}.article-related .journal-card-art{height:auto}}
@media(max-width:374px){.journal-heading h1{font-size:44px}.article-header h1{font-size:38px}.journal-card-copy{padding:24px}.journal-card h3{font-size:27px}.journal-section-heading{flex-direction:column;gap:16px}}
