/* Dresden Goehner — style.css · Style v2 (preview)
   Swiss International x restrained Bauhaus.
   Paper / ink base, Archivo, hairline grid. Colour is code, not area:
   red = research, blue = open source / code, yellow = community —
   small markers only; one chapter colour at full strength per view.
   No radius on blocks, no shadow, no gradient. */

:root{
  --paper:#F4F2ED;
  --ink:#111111;
  --red:#E2001A;
  --red-small:#A61B12;
  --blue:#0067AC;
  --blue-small:#005A96;
  --yellow:#F5C400;
  --grey:#595959;
  --grey-line:#D8D5CE;
  --font:"Archivo","Helvetica Neue",Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font);
  font-size:1rem;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{background:var(--yellow);color:var(--ink)}
a{color:var(--blue-small);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:var(--ink)}
a:focus-visible,button:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
img{max-width:100%;height:auto;display:block}
figure{margin:0}
figcaption{
  font-size:.75rem;line-height:1.55;color:var(--grey);margin-top:.7rem;max-width:62ch;
  border-top:1px solid var(--grey-line);padding-top:.55rem;letter-spacing:.02em;
}
h1{font-weight:800;line-height:1.05;letter-spacing:-.015em}

/* Layout */
.wrap{max-width:1200px;margin:0 auto;padding:0 1.25rem}
@media(min-width:900px){.wrap{padding:0 2rem}}
.grid12{display:grid;grid-template-columns:repeat(12,1fr);gap:0 1.25rem}
@media(max-width:899px){.grid12{grid-template-columns:1fr}}

/* Labels / rules — smaller, wider-tracked */
.label{
  font-size:.6875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;line-height:1.5;
}
.label--red{color:var(--red-small)}
.label--blue{color:var(--blue-small)}
.label--grey{color:var(--grey)}
.label--yellow-tag{background:none;color:var(--ink);display:inline-block;padding:0}
.label--yellow-tag::before{
  content:"";display:inline-block;width:.62em;height:.62em;background:var(--yellow);margin-right:.55em;
}
.rule{border:0;border-top:1px solid var(--ink);margin:0}
.rule--light{border-top-color:var(--grey-line)}
.mono-num{font-variant-numeric:tabular-nums lining-nums}

/* Top bar */
.topbar{border-top:3px solid var(--ink)}
.topbar-row{
  display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;align-items:baseline;justify-content:space-between;
  padding:1rem 0;border-bottom:1px solid var(--ink);
}
.site-nav{display:flex;flex-wrap:wrap;gap:.4rem 1.5rem}
.site-nav a{
  color:var(--ink);text-decoration:none;font-size:.6875rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;
}
.site-nav a:hover{text-decoration:underline;text-underline-offset:3px}

/* Hero — type carries the screen; legend is one row of small markers */
.hero{padding:3.5rem 0 3rem}
@media(min-width:900px){.hero{padding:3.75rem 0 3rem}}
.hero-name{
  font-size:clamp(5.25rem,12.5vw,8rem);line-height:.92;font-weight:800;letter-spacing:-.025em;
  margin:.85rem 0 1.35rem;text-transform:none;
}
.hero-claim{font-size:2.25rem;line-height:1.15;font-weight:700;max-width:22ch;margin:0 0 .6rem}
@media(max-width:640px){.hero-claim{font-size:1.7rem}}
.hero-sub{font-size:1.125rem;line-height:1.45;font-weight:500;margin:0 0 2.25rem;color:var(--ink)}
.hero-legend{display:block;border:0;border-top:1px solid var(--ink)}
.hero-block{
  display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;
  color:var(--ink);text-decoration:none;padding:1.05rem 0;border-bottom:1px solid var(--grey-line);
}
.hero-block:hover .hero-block-num{text-decoration:underline;text-underline-offset:4px}
.shape{width:14px;height:14px;margin:0;flex:none;align-self:center}
.shape--square{background:var(--red)}
.shape--circle{background:var(--blue);border-radius:50%}
.shape--triangle{
  width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;
  border-bottom:12px solid var(--yellow);background:none;
}
.shape--square-blue{background:var(--blue)}
.hero-block-num{font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.hero-block-title{font-size:1.125rem;font-weight:800;line-height:1.25;margin:.35rem 0 .5rem}
.hero-block-metric{font-size:.9375rem;line-height:1.5;color:var(--grey);margin:0;font-variant-numeric:tabular-nums}
@media(max-width:640px){.hero-block-metric{flex-basis:100%;padding-left:1.875rem}}
.legend-line{font-size:.6875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin:1.1rem 0 0;color:var(--grey)}
.legend-line .sw-red{color:var(--red-small)}
.legend-line .sw-blue{color:var(--blue-small)}
.legend-line .sw-yellow{background:none;padding:0;color:var(--ink)}
.legend-line .sw-yellow::before{
  content:"";display:inline-block;width:.62em;height:.62em;background:var(--yellow);margin-right:.45em;
}
.evidence-chips{display:flex;flex-wrap:wrap;gap:.25rem 2rem;margin-top:2rem}
.chip{
  display:inline-block;border:0;padding:.25rem 0;color:var(--ink);
  text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;
  font-size:.9375rem;font-weight:700;background:none;
}
.chip:hover{color:var(--blue-small)}
.meta .chip{
  border:1px solid var(--grey-line);padding:.12rem .5rem;text-decoration:none;
  font-size:.6875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);
}

/* Evidence band — hairline rows, tabular numerals */
.evidence-band{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:2rem 0}
.evidence-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr)}
@media(max-width:899px){.evidence-list{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.evidence-list{grid-template-columns:1fr}}
.evidence-item{border-right:1px solid var(--grey-line);padding:.25rem 1rem .25rem 0;margin-right:1rem}
.evidence-item:last-child{border-right:0}
.evidence-item a{color:var(--ink);text-decoration:none;display:block}
.evidence-item a:hover .evidence-num{text-decoration:underline;text-underline-offset:4px}
.evidence-num{display:block;font-size:1.875rem;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums lining-nums}
.evidence-cap{display:block;font-size:.875rem;color:var(--grey);margin-top:.35rem;line-height:1.45}
.footnote{font-size:.8125rem;color:var(--grey);margin:1.25rem 0 0}

/* Sections — air first, hairline + numbered label as the divider */
.section{padding:3.25rem 0;border-bottom:1px solid var(--grey-line)}
@media(min-width:900px){.section{padding:4.5rem 0}}
.section-head{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:baseline;margin-bottom:2rem}
.section-title{font-size:2rem;line-height:1.15;font-weight:800;margin:0;letter-spacing:-.01em}
.section-intro{max-width:68ch}
.section p{max-width:68ch}
.section p,.section li{font-size:1rem}

/* Flagship — the chapter colour lives in the label, not in bars or blocks */
.flagship{border-top:1px solid var(--ink)}
.flagship-question{font-size:1.625rem;line-height:1.3;font-weight:700;max-width:32ch;margin:.5rem 0 1.25rem}
@media(min-width:900px){
  .flagship-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:0 1.25rem}
  .flagship-main{grid-column:1 / span 7}
  .flagship-side{grid-column:9 / span 4}
}
.field-label{font-size:.6875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--grey);margin:2.25rem 0 .5rem}
.field-label:first-child{margin-top:0}
.metrics{list-style:none;margin:0;padding:0;border-top:1px solid var(--ink)}
.metrics li{border-bottom:1px solid var(--grey-line);padding:.85rem 0;font-size:.9375rem;line-height:1.6;font-variant-numeric:tabular-nums}
.metrics strong{font-weight:800}
.status-box{border:0;border-top:1px solid var(--ink);padding:1.1rem 0 0;margin-top:2.25rem;max-width:68ch}
.status-box p{margin:0;font-size:.9375rem}
.link-list{list-style:none;margin:0;padding:0}
.link-list li{padding:.55rem 0;border-bottom:1px solid var(--grey-line);font-size:.9375rem}
.link-note{font-size:.8125rem;color:var(--grey)}

/* Charts — the one image per section: frameless, room around it, label caption */
.chart{border:0;background:none;padding:0;margin:2.5rem 0;max-width:780px}
.chart img{width:100%}

/* Kaggle — small ink marker; yellow stays with community */
.kaggle-mark{display:flex;align-items:center;gap:.75rem}
.kaggle-mark .shape--triangle{border-bottom-color:var(--ink)}

/* Open source */
.pr-list{list-style:none;margin:0;padding:0;columns:2;column-gap:2.5rem}
@media(max-width:899px){.pr-list{columns:1}}
.pr-list li{break-inside:avoid;border-bottom:1px solid var(--grey-line);padding:.65rem 0;font-size:.9375rem;font-variant-numeric:tabular-nums}
.pr-list .repo{font-weight:800}
.listing-box{background:none;color:var(--ink);padding:1.25rem 0 0;border-top:1px solid var(--ink);margin-top:2rem;max-width:72ch}
.listing-box p{margin:.35rem 0 0}
.listing-box a{color:var(--ink);font-weight:700}
.listing-box .label::before{
  content:"";display:inline-block;width:.62em;height:.62em;background:var(--yellow);margin-right:.55em;
}

/* Table */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.9375rem;font-variant-numeric:tabular-nums lining-nums}
caption{text-align:left;font-size:.6875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding-bottom:.85rem}
th,td{text-align:left;vertical-align:top;padding:.8rem .75rem .8rem 0;border-bottom:1px solid var(--grey-line);line-height:1.5}
thead th{border-bottom:1px solid var(--ink);font-size:.6875rem;letter-spacing:.16em;text-transform:uppercase}
td.score{font-weight:800;white-space:nowrap}
.artifact-link{white-space:nowrap;font-size:.8125rem}

/* Organisations */
.org-list{list-style:none;margin:0;padding:0}
.org-item{border-top:1px solid var(--ink);padding:1.4rem 0;display:grid;grid-template-columns:1fr}
@media(min-width:900px){.org-item{grid-template-columns:4fr 8fr;gap:0 1.25rem}}
.org-item h3{font-size:1.125rem;margin:0 0 .25rem}
.org-item p{margin:0;max-width:62ch}

/* Work index */
.index-list{list-style:none;margin:0;padding:0;counter-reset:none}
.index-item{display:grid;grid-template-columns:1fr;border-bottom:1px solid var(--grey-line);padding:.85rem 0;gap:.15rem}
@media(min-width:900px){.index-item{grid-template-columns:4fr 8fr;gap:0 1.25rem}}
.index-item-name{font-weight:800}
.index-item-desc{color:var(--grey);font-size:.9375rem}
.index-item-desc a{color:var(--blue-small)}

/* About */
@media(min-width:900px){
  .about-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:0 1.25rem}
  .about-text{grid-column:1 / span 7}
  .about-fig{grid-column:9 / span 4}
}
.portrait{aspect-ratio:1/1;object-fit:cover;width:100%;border:1px solid var(--grey-line)}
.cv-link{
  display:inline-block;margin-top:1.5rem;border:0;padding:.2rem 0;color:var(--ink);
  text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px;font-weight:700;
}
.cv-link:hover{color:var(--blue-small)}

/* Footer (index) */
.site-footer{border-top:3px solid var(--ink);padding:2.5rem 0 3.5rem;margin-top:0}
.footer-name{font-size:1.25rem;font-weight:800;margin:0 0 .5rem}
.footer-links{display:flex;flex-wrap:wrap;gap:.4rem 1.5rem;margin:.75rem 0}
.footer-links a{color:var(--ink)}
.small{font-size:.8125rem;color:var(--grey)}

/* Subpages (notes / proof / 404 / article) — same system */
.site-head{
  max-width:1200px;margin:0 auto;padding:1.1rem 1.25rem;
  display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;align-items:baseline;justify-content:space-between;
  border-bottom:1px solid var(--ink);
}
@media(min-width:900px){.site-head{padding-left:2rem;padding-right:2rem}}
.brand{font-weight:800;color:var(--ink);text-decoration:none;font-size:1rem;letter-spacing:-.01em}
.site-head nav{display:flex;flex-wrap:wrap;gap:.4rem 1.5rem}
.site-head nav a{
  color:var(--ink);text-decoration:none;font-size:.6875rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;
}
.site-head nav a:hover,.site-head nav a[aria-current="page"]{text-decoration:underline;text-underline-offset:3px}
header.site-head + main{max-width:1200px;margin:0 auto;padding:0 1.25rem 1rem}
@media(min-width:900px){header.site-head + main{padding-left:2rem;padding-right:2rem}}
header.site-head + main .hero{padding:3.5rem 0 2.5rem}
header.site-head + main h1{font-size:clamp(2.5rem,5.5vw,3.75rem);margin:.75rem 0 1rem}
.lede{font-size:1.375rem;line-height:1.4;font-weight:500;max-width:56ch}
.meta{font-size:.8125rem;color:var(--grey);letter-spacing:.04em;line-height:1.6}
.note{font-size:.9375rem;color:var(--grey);margin-top:1.75rem;max-width:68ch}
.btn{
  display:inline-block;margin-right:1.75rem;font-weight:700;color:var(--ink);
  text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;font-size:.9375rem;
}
.btn:hover{color:var(--blue-small)}
.site-foot{
  max-width:1200px;margin:3rem auto 0;padding:1.5rem 1.25rem 2.5rem;
  border-top:1px solid var(--ink);font-size:.875rem;
}
@media(min-width:900px){.site-foot{padding-left:2rem;padding-right:2rem}}
.site-foot p{margin:.25rem 0}
.site-foot nav{display:flex;flex-wrap:wrap;gap:.4rem 1.5rem;margin-top:.5rem}
.site-foot nav a,.site-foot > a{
  color:var(--ink);text-decoration:none;font-size:.6875rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;
}
.site-foot nav a:hover,.site-foot > a:hover{text-decoration:underline;text-underline-offset:3px}

/* Notes index */
.note-list{list-style:none;margin:0;padding:0}
.note-item{border-top:1px solid var(--ink);padding:1.75rem 0}
.note-item h2{font-size:1.75rem;line-height:1.2;font-weight:800;margin:.6rem 0 .5rem;letter-spacing:-.01em}
.note-item h2 a{color:var(--ink);text-decoration:none}
.note-item h2 a:hover{text-decoration:underline;text-underline-offset:4px}
.note-item p{max-width:68ch}

/* 404 */
.display-404{font-size:clamp(6rem,17vw,11rem);font-weight:800;line-height:.9;letter-spacing:-.03em;margin:1.5rem 0 0}
.display-404 + h1{font-size:1.5rem;margin:.75rem 0 .5rem}

/* Article (field note) */
article p{max-width:68ch;line-height:1.65}
article > header{padding:3.5rem 0 1rem}
article > header h1{font-size:clamp(2.75rem,6vw,4.25rem);margin:.75rem 0 1rem}
article aside{border-top:1px solid var(--ink);padding-top:1.1rem;margin:2.5rem 0}
article aside ol{margin:.5rem 0 0;padding-left:1.25rem;line-height:1.7}
article section{padding:2.25rem 0;border-top:1px solid var(--grey-line)}
article h2{font-size:1.5rem;line-height:1.25;font-weight:800;margin:.4rem 0 1rem;letter-spacing:-.01em}
article h3{font-size:1.0625rem;margin:.3rem 0 .25rem}
article blockquote{margin:2.25rem 0;padding:0;border:0}
article blockquote p{font-size:1.375rem;font-weight:700;line-height:1.35;max-width:34ch}
article section ul{list-style:none;margin:1rem 0 0;padding:0}
article section ul li{border-top:1px solid var(--grey-line);padding:1rem 0}
article section ul p{margin:.2rem 0}

/* Utility */
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mt0{margin-top:0}

/* Print */
@media print{
  body{background:#fff;font-size:11pt}
  .site-nav,.evidence-chips,.site-head nav,.site-foot nav{display:none}
  a{color:#111;text-decoration:none}
  .section{break-inside:avoid;padding:1.2rem 0}
  .hero-name{font-size:42pt}
}
