/* ==========================================================
   Public Stack — production stylesheet
   ink #14202B · brass #A8812F (rules) · #7A5E22 (text) · paper #F6F7F8
   Newsreader (editorial) · IBM Plex Mono (metadata)
   ========================================================== */

:root{
  --ink:#14202B;
  --ink-72:rgba(20,32,43,.72);
  --ink-62:rgba(20,32,43,.62);
  --paper:#F6F7F8;
  --white:#FFFFFF;
  --brass:#A8812F;
  --brass-deep:#7A5E22;
  --brass-tint:rgba(168,129,47,.10);
  --rule:rgba(20,32,43,.13);
  --rule-soft:rgba(20,32,43,.07);
  --rule-strong:rgba(20,32,43,.32);
  --paper-62:rgba(246,247,248,.62);
  --measure:38rem;
  --max:70rem;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:"Newsreader",Georgia,"Times New Roman",serif;
  font-size:1.0625rem;line-height:1.62;font-weight:350;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
img{max-width:100%;height:auto;display:block}
a:focus-visible,button:focus-visible{outline:2px solid var(--brass);outline-offset:3px}

.skip{
  position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--paper);
  padding:.75rem 1rem;z-index:100;
  font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;
}
.skip:focus{left:0}

.wrap{max-width:var(--max);margin:0 auto;padding:0 1.5rem}
.narrow{max-width:46rem;margin:0 auto;padding:0 1.5rem}
@media (min-width:48rem){.wrap,.narrow{padding:0 2rem}}

/* ---------------- typography ---------------- */
h1,h2,h3,h4{font-weight:400;letter-spacing:-.012em;margin:0}
h1{font-size:clamp(2rem,5.2vw,3.7rem);line-height:1.05}
h2{font-size:clamp(1.5rem,3.4vw,2.2rem);line-height:1.16}
h3{font-size:clamp(1.15rem,2.4vw,1.45rem);line-height:1.26}

.eyebrow{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--brass-deep);margin:0 0 1.15rem;
}
.lede{font-size:clamp(1.05rem,2vw,1.28rem);line-height:1.55;color:var(--ink-72);max-width:40rem}

/* ---------------- header ---------------- */
.site-head{border-bottom:1px solid var(--rule);background:var(--paper);position:sticky;top:0;z-index:60}
.head-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4.25rem}

.brand{display:flex;align-items:center;gap:.65rem;text-decoration:none;flex-shrink:0}
.brand svg{width:20px;height:auto;display:block}
.brand b{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.78rem;letter-spacing:.19em;text-transform:uppercase;font-weight:500;
}

.desk-nav{display:none;align-items:center;gap:1.75rem}
@media (min-width:56rem){.desk-nav{display:flex}}
.desk-nav a{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;text-decoration:none;
  color:var(--ink-62);padding:.35rem 0;border-bottom:1px solid transparent;
  transition:color .16s ease,border-color .16s ease;
}
.desk-nav a:hover{color:var(--ink)}
.desk-nav a[aria-current]{color:var(--ink);border-bottom-color:var(--brass)}

.burger{
  display:flex;align-items:center;background:none;border:1px solid var(--rule);
  padding:.55rem .8rem;cursor:pointer;
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.65rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-62);
}
@media (min-width:56rem){.burger{display:none}}

.mob-nav{display:none;border-top:1px solid var(--rule);padding:.5rem 0 1.25rem}
.mob-nav.open{display:block}
@media (min-width:56rem){.mob-nav{display:none!important}}
.mob-nav a{
  display:block;text-decoration:none;padding:.85rem 0;border-bottom:1px solid var(--rule-soft);
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-72);
}
.mob-nav a[aria-current]{color:var(--brass-deep)}

/* ---------------- buttons ---------------- */
.btn{
  display:inline-block;text-decoration:none;cursor:pointer;
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;
  padding:.82rem 1.35rem;border:1px solid var(--ink);background:transparent;color:var(--ink);
  transition:background .18s ease,color .18s ease,border-color .18s ease;white-space:nowrap;
}
.btn-solid{background:var(--ink);color:var(--paper)}
.btn-solid:hover{background:var(--brass-deep);border-color:var(--brass-deep);color:#fff}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}
.btn-sm{padding:.58rem 1rem;font-size:.64rem}
.btn-row{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem}

/* ---------------- layout blocks ---------------- */
.hero{padding:4rem 0 3.5rem}
@media (min-width:48rem){.hero{padding:5.5rem 0 4.5rem}}
.hero-rule{width:56px;height:4px;background:var(--brass);margin-bottom:2rem}
.hero h1{max-width:15ch;margin-bottom:1.2rem}

.section{padding:3.75rem 0;border-top:1px solid var(--rule)}
@media (min-width:48rem){.section{padding:5rem 0}}
.sec-head{margin-bottom:2.5rem}
.sec-head h2{max-width:26ch}

/* ---------------- domains ---------------- */
.domains{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);grid-template-columns:1fr}
@media (min-width:38rem){.domains{grid-template-columns:1fr 1fr}}
@media (min-width:64rem){.domains{grid-template-columns:repeat(4,1fr)}}
.domains a{background:var(--paper);padding:1.9rem 1.5rem;transition:background .2s ease;text-decoration:none;display:block}
.domains a:hover{background:var(--white)}
.domains .no{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.14em;color:var(--brass-deep);display:block;margin-bottom:1rem;
}
.domains h3{font-size:1.1rem;margin-bottom:.7rem}
.domains p{margin:0;font-size:.93rem;line-height:1.5;color:var(--ink-62)}

/* ---------------- cards ---------------- */
.cards{display:grid;gap:0}
.card{
  display:block;text-decoration:none;border-top:1px solid var(--rule);
  padding:2rem 0 2rem 1.25rem;border-left:2px solid transparent;
  transition:border-left-color .2s ease,padding-left .2s ease,background .2s ease;
}
.card:last-of-type{border-bottom:1px solid var(--rule)}
.card:hover{border-left-color:var(--brass);padding-left:1.75rem;background:var(--white)}
.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.85rem}
.tag{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.70rem;letter-spacing:.11em;text-transform:uppercase;
  color:var(--brass-deep);background:var(--brass-tint);padding:.26rem .5rem;
}
.tag-status{background:transparent;border:1px solid var(--brass)}
.tag-plain{color:var(--ink-62);background:var(--rule-soft)}
.card h3{max-width:32ch;margin-bottom:.5rem}
.card p{margin:0 0 1rem;color:var(--ink-72);max-width:var(--measure);font-size:.99rem}
.meta{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-62);
  display:flex;flex-wrap:wrap;gap:.35rem .8rem;align-items:center;
}
.meta .go{color:var(--brass-deep)}

/* ---------------- filters ---------------- */
.filters{display:flex;flex-wrap:wrap;gap:.45rem;padding-bottom:2rem;border-bottom:1px solid var(--rule)}
.filter{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.11em;text-transform:uppercase;
  background:transparent;border:1px solid var(--rule);color:var(--ink-62);
  padding:.55rem .9rem;cursor:pointer;
  transition:border-color .16s ease,color .16s ease,background .16s ease;
}
.filter:hover{border-color:var(--ink-62);color:var(--ink)}
.filter[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.count{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-62);
  padding:1.5rem 0 0;margin:0;
}

/* ---------------- article ---------------- */
.art-head{padding:3rem 0 2rem}
@media (min-width:48rem){.art-head{padding:4.25rem 0 2.5rem}}
.art-head h1{max-width:19ch;margin-bottom:1rem;font-size:clamp(1.85rem,4.6vw,3rem)}
.art-sub{font-size:clamp(1.02rem,2vw,1.25rem);line-height:1.5;color:var(--ink-72);max-width:var(--measure);margin:0 0 1.75rem}
.byline{
  display:flex;flex-wrap:wrap;gap:.35rem .8rem;align-items:center;
  padding-top:1.35rem;border-top:1px solid var(--rule);
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-62);
}
.byline strong{color:var(--ink);font-weight:500}
.byline a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--brass)}
.tags-sub{margin:1.15rem 0 0}

.takeaways{background:var(--white);border-left:3px solid var(--brass);padding:1.75rem 1.6rem;margin:2.5rem 0}
.takeaways .lbl{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;color:var(--brass-deep);
  display:block;margin-bottom:1rem;
}
.takeaways ul{margin:0;padding-left:1.05rem}
.takeaways li{margin-bottom:.7rem;color:var(--ink-72)}
.takeaways li:last-child{margin-bottom:0}

.prose{max-width:var(--measure);margin:0 auto}
.prose h2{margin:3rem 0 1rem;padding-bottom:.55rem;border-bottom:1px solid var(--rule);font-size:1.4rem}
.prose h3{margin:2rem 0 .7rem;font-size:1.15rem}
.prose p{margin:0 0 1.2rem}
.prose ul,.prose ol{margin:0 0 1.3rem;padding-left:1.25rem}
.prose li{margin-bottom:.45rem}
.prose a{color:var(--brass-deep);text-decoration:underline;text-underline-offset:2px}

.placeholder{
  border-left:2px solid var(--rule-strong);
  padding:.15rem 0 .15rem 1.15rem;
  margin:0 0 1.4rem;
  font-family:inherit;font-size:1rem;font-style:italic;line-height:1.55;
  letter-spacing:normal;text-transform:none;color:var(--ink-62);
}

.stat{border-top:2px solid var(--brass);border-bottom:1px solid var(--rule);padding:1.5rem 0;margin:2.25rem 0}
.stat b{display:block;font-size:clamp(2.4rem,6vw,3.4rem);line-height:1;font-weight:400;letter-spacing:-.02em}
.stat span{
  display:block;margin-top:.65rem;max-width:30rem;
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-62);line-height:1.6;
}

.pull{border-left:3px solid var(--brass);padding:.3rem 0 .3rem 1.3rem;margin:2.25rem 0;font-size:1.2rem;line-height:1.45}

.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:1.5rem 0 .5rem}
.dtable{width:100%;border-collapse:collapse;font-size:.93rem;min-width:30rem}
.dtable th,.dtable td{text-align:left;padding:.7rem;border-bottom:1px solid var(--rule)}
.dtable th{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-62);
  font-weight:400;border-bottom:1px solid var(--rule-strong);
}

.fig{margin:2.25rem 0}
.fig .frame{border:1px solid var(--rule);background:var(--white);padding:3rem 1.25rem;text-align:center}
.fig .frame span{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-62);
}
.cap{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-62);
  margin-top:.6rem;line-height:1.55;
}

.cite-box{background:var(--white);border:1px solid var(--rule);padding:1.25rem 1.35rem;margin:2rem 0}
.cite-box .lbl{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--brass-deep);
  display:block;margin-bottom:.6rem;
}
.cite-box p{margin:0;font-size:.95rem;color:var(--ink-72)}

.fn{border-top:1px solid var(--rule);margin-top:2.5rem;padding-top:1.25rem}
.fn ol{counter-reset:f;list-style:none;padding:0;margin:0}
.fn li{
  counter-increment:f;position:relative;padding:.6rem 0 .6rem 2.4rem;
  border-bottom:1px solid var(--rule-soft);font-size:.9rem;color:var(--ink-72);
}
.fn li::before{
  content:counter(f,decimal-leading-zero);position:absolute;left:0;top:.75rem;
  font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.70rem;color:var(--brass-deep);
}

.art-foot{border-top:1px solid var(--rule);margin-top:3rem;padding-top:2rem}

/* ---------------- contributors ---------------- */
.people{display:grid;gap:2.5rem;grid-template-columns:1fr}
@media (min-width:48rem){.people{grid-template-columns:1fr 1fr;gap:3rem}}
.person{border-top:1px solid var(--rule);padding-top:1.6rem}
.person .avatar{width:72px;height:72px;background:var(--ink);display:flex;align-items:center;justify-content:center;margin-bottom:1rem}
.person .avatar svg{width:32px;height:auto}
.person h3{margin-bottom:.2rem}
.person .role{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brass-deep);margin:0 0 1rem;
}
.person p{color:var(--ink-72);margin:0 0 1rem;font-size:.98rem}
.lbl-sm{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-62);
  margin:1.4rem 0 .6rem;
}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.plain-list{list-style:none;padding:0;margin:0}
.plain-list li{margin-bottom:.4rem;font-size:.96rem}
.plain-list a{color:var(--brass-deep);text-decoration:none}
.plain-list a:hover{text-decoration:underline}

.contribute{background:var(--white);border:1px solid var(--rule);padding:2rem;margin-top:3rem;max-width:46rem}
.contribute h3{margin-bottom:.6rem}
.contribute p{color:var(--ink-72);margin:0 0 .9rem;font-size:.98rem}
.contribute p:last-child{margin-bottom:0}

/* ---------------- labeled rows ---------------- */
.rows{list-style:none;padding:0;margin:0}
.rows li{border-top:1px solid var(--rule);padding:1.15rem 0;display:flex;gap:1.25rem;align-items:baseline;flex-wrap:wrap}
.rows li:last-child{border-bottom:1px solid var(--rule)}
.rows b{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brass-deep);
  font-weight:400;min-width:11rem;flex-shrink:0;
}
.rows span{color:var(--ink-72)}

/* ---------------- band + footer ---------------- */
.band{background:var(--ink);color:var(--paper);padding:3.5rem 0}
@media (min-width:48rem){.band{padding:4.5rem 0}}
.band h2{max-width:22ch;margin-bottom:.8rem}
.band p{color:rgba(246,247,248,.62);max-width:32rem;margin:0}
.band .eyebrow{color:var(--brass)}
.band .btn-solid{background:var(--brass-deep);border-color:var(--brass-deep);color:#fff}
.band .btn-solid:hover{background:var(--paper);border-color:var(--paper);color:var(--ink)}
.band .btn-ghost{color:var(--paper);border-color:rgba(246,247,248,.36)}
.band .btn-ghost:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}

.site-foot{background:var(--ink);color:var(--paper);padding:3rem 0 2rem}
.foot-grid{display:grid;gap:2.25rem;grid-template-columns:1fr;padding-bottom:2.25rem;border-bottom:1px solid rgba(246,247,248,.12)}
@media (min-width:48rem){.foot-grid{grid-template-columns:2fr 1fr 1fr}}
.foot-grid h4{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--paper-62);
  margin:0 0 .9rem;font-weight:400;
}
.foot-grid ul{list-style:none;padding:0;margin:0}
.foot-grid li{margin-bottom:.55rem}
.foot-grid a{text-decoration:none;color:rgba(246,247,248,.7);font-size:.94rem;transition:color .16s ease}
.foot-grid a:hover{color:var(--brass)}
.foot-brand b{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:.78rem;letter-spacing:.19em;text-transform:uppercase;font-weight:500;
  display:block;margin-bottom:.7rem;
}
.foot-brand p{color:rgba(246,247,248,.55);margin:0;max-width:24rem;font-size:.96rem}
.foot-base{
  padding-top:1.5rem;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;
  font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.70rem;letter-spacing:.11em;
  color:var(--paper-62);
}
.foot-base a{text-decoration:none}
.foot-base a:hover{color:var(--brass)}

/* ---------------- 404 ---------------- */
.notfound{padding:6rem 0;text-align:left}
