burtenshaw
feat: publish slopfarmer article
3878dd8
/* ============================================================================ */
/* Layout – 3-column grid (Table of Contents / Article / Aside) */
/* ============================================================================ */
.content-grid {
max-width: 1280px;
margin: 0 auto;
padding: 0 var(--content-padding-x);
margin-top: 40px;
display: grid;
grid-template-columns: 260px minmax(0, 680px) 260px;
gap: 32px;
align-items: start;
}
.content-grid>main {
max-width: 100%;
margin: 0;
padding: 0;
}
.content-grid>main>*:first-child {
margin-top: 0;
}
@media (--bp-content-collapse) {
.content-grid {
overflow: hidden;
display: block;
margin-top: var(--spacing-2);
}
.content-grid {
grid-template-columns: 1fr;
}
.table-of-contents {
position: static;
display: none;
}
.toc-mobile-toggle {
display: flex;
}
.toc-mobile-backdrop {
display: block;
}
.toc-mobile-sidebar {
display: flex;
}
.footer-inner {
grid-template-columns: 1fr;
gap: 16px;
}
.footer-inner>.footer-heading {
grid-column: auto;
margin-top: 16px;
}
.footer-inner {
display: block;
padding: 40px 16px;
}
}
/* ============================================================================ */
/* Width helpers – slightly wider than main column, and full-width to viewport */
/* ---------------------------------------------------------------------------- */
.wide,
.full-width {
box-sizing: border-box;
position: relative;
z-index: var(--z-elevated);
background-color: var(--page-bg);
}
.wide {
/* Target up to ~1100px while staying within viewport minus page gutters */
width: min(1100px, 100vw - var(--content-padding-x) * 4);
margin-left: 50%;
transform: translateX(-50%);
padding: calc(var(--content-padding-x)*4);
border-radius: calc(var(--button-radius)*4);
background-color: var(--page-bg);
-webkit-mask:
linear-gradient(to right, transparent 0px, black 20px, black calc(100% - 20px), transparent 100%),
linear-gradient(to bottom, transparent 0px, black 20px, black calc(100% - 20px), transparent 100%);
-webkit-mask-composite: intersect;
mask:
linear-gradient(to right, transparent 0px, black 20px, black calc(100% - 20px), transparent 100%),
linear-gradient(to bottom, transparent 0px, black 20px, black calc(100% - 20px), transparent 100%);
mask-composite: intersect;
}
.wide>* {
margin-bottom: 0 !important;
}
.full-width {
/* Span the full viewport width and center relative to viewport */
width: 100vw;
margin-left: calc(50% - 50vw);
margin-right: calc(50% - 50vw);
padding: calc(var(--content-padding-x)*4);
border-radius: calc(var(--button-radius)*4);
background-color: var(--page-bg);
-webkit-mask:
linear-gradient(to bottom, transparent 0px, black 20px, black calc(100% - 20px), transparent 100%);
mask:
linear-gradient(to bottom, transparent 0px, black 20px, black calc(100% - 20px), transparent 100%);
}
.full-width figure figcaption {
text-align: center !important;
}
@media (--bp-content-collapse) {
.wide,
.full-width {
width: 100%;
margin-left: 0;
margin-right: 0;
padding: 0;
transform: none;
}
}
/* ============================================================================ */
/* Theme toggle placement */
/* ============================================================================ */
#theme-toggle {
position: absolute;
top: var(--spacing-4);
left: var(--spacing-4);
margin: 0;
z-index: var(--z-overlay);
width: 40px;
height: 40px;
border-radius: 50%;
border: 1px solid var(--border-color);
background: var(--page-bg);
box-shadow: 0 2px 12px rgba(0,0,0,.08);
display: flex;
align-items: center;
justify-content: center;
padding: 0;
cursor: pointer;
color: var(--text-color);
transition: transform 150ms ease, box-shadow 150ms ease;
}
#theme-toggle:active {
transform: scale(0.92);
}
@media (--bp-content-collapse) {
#theme-toggle {
display: none;
}
}
/* ------------------------------------------------------------------------- */
/* Hero meta bar responsiveness */
/* Two columns at collapse breakpoint, then one column below small screens */
/* ------------------------------------------------------------------------- */
@media (--bp-md) {
header.meta .meta-container {
display: flex;
flex-wrap: wrap;
row-gap: 12px;
column-gap: 8px;
max-width: 100%;
padding: 0 var(--spacing-4);
}
header.meta .meta-container .meta-container-cell {
flex: 1 1 calc(50% - 8px);
min-width: 0;
}
}
@media (--bp-xxs) {
header.meta .meta-container .meta-container-cell {
flex-basis: 100%;
text-align: center;
}
/* Center ordered list numbers within meta (e.g., affiliations) */
header.meta .affiliations {
list-style-position: inside;
padding-left: 0;
margin-left: 0;
}
header.meta .affiliations li {
text-align: center;
}
}
/* ------------------------------------------------------------------------- */
/* D3 neural embed responsiveness */
/* Stack canvas (left) over network (right) on small screens */
/* ------------------------------------------------------------------------- */
@media (--bp-md) {
.d3-neural .panel {
flex-direction: column;
}
.d3-neural .panel .left {
flex: 0 0 auto;
width: 100%;
}
.d3-neural .panel .right {
flex: 0 0 auto;
width: 100%;
min-width: 0;
}
}
/* ============================================================================ */
/* Auto figure numbering */
/* Applies a CSS counter across all figure-bearing components: */
/* Reference (.reference-wrapper), Image (.image-wrapper figure), */
/* and HtmlEmbed (.html-embed) */
/* ============================================================================ */
.content-grid > main {
counter-reset: figure;
}
/* Increment on every figure-like component */
.content-grid > main .reference-wrapper,
.content-grid > main .image-wrapper > figure,
.content-grid > main figure.html-embed {
counter-increment: figure;
}
/* Display "Figure N · " before each figcaption */
.content-grid > main .reference-wrapper .reference__caption::before,
.content-grid > main .image-wrapper > figure > figcaption::before,
.content-grid > main figure.html-embed > .html-embed__desc::before {
content: "Figure " counter(figure) " · ";
font-weight: 600;
}
/* ============================================================================ */
/* "paper" template - academic project-page layout (single centered column) */
/* Activated by frontmatter `template: "paper"` -> data-template="paper" */
/* Reference: academic project pages like diffusion-cot.github.io */
/* ============================================================================ */
/* ---- Paper hero banner: placed between meta and content in index.astro ---- */
.paper-hero-banner {
max-width: 920px;
margin: 32px auto 0;
padding: 0 16px;
}
.paper-hero-banner :global(.html-embed) {
border-radius: 8px;
overflow: hidden;
}
.paper-hero-banner :global(.html-embed__card) {
border-radius: 8px;
}
/* Thin separator between banner area and content */
[data-template="paper"] .paper-hero-banner + .content-grid {
margin-top: 48px;
border-top: 1px solid var(--border-color);
padding-top: 40px;
}
/* When no banner, separator is directly below meta */
[data-template="paper"] .meta + .content-grid,
[data-template="paper"] .hero-paper-meta + .content-grid {
margin-top: 32px;
border-top: 1px solid var(--border-color);
padding-top: 40px;
}
/* ---- Content grid: single centered column, no TOC ---- */
[data-template="paper"] .content-grid {
grid-template-columns: minmax(0, 780px);
justify-content: center;
margin-top: 0;
}
[data-template="paper"] .table-of-contents {
display: none;
}
/* ---- Typography: clean left-aligned headings ---- */
[data-template="paper"] .content-grid > main h2 {
text-align: left;
font-size: 1.75em;
font-weight: 700;
margin-top: 2.5em;
margin-bottom: 0.8em;
border-bottom: none;
padding-bottom: 0;
}
[data-template="paper"] .content-grid > main h2 a {
background: none;
}
[data-template="paper"] .content-grid > main h2:first-child,
[data-template="paper"] .content-grid > main > *:first-child h2 {
margin-top: 0;
}
[data-template="paper"] .content-grid > main h3 {
font-size: 1.3em;
font-weight: 600;
margin-top: 2em;
margin-bottom: 0.6em;
}
/* ---- No figure numbering ---- */
[data-template="paper"] .content-grid > main {
counter-reset: none;
}
[data-template="paper"] .content-grid > main .reference-wrapper .reference__caption::before,
[data-template="paper"] .content-grid > main .image-wrapper > figure > figcaption::before,
[data-template="paper"] .content-grid > main figure.html-embed > .html-embed__desc::before {
content: none;
}
/* ---- Footer: simple single-column block layout ---- */
[data-template="paper"] .footer-inner {
display: block;
max-width: 780px;
}
[data-template="paper"] .references-block > .footer-heading,
[data-template="paper"] .reuse-block > .footer-heading {
text-align: left;
padding-right: 0;
margin-top: 16px;
margin-bottom: 8px;
}
[data-template="paper"] .template-credit p {
margin-top: 32px;
}