/* Self-hosted so that reading a page sends nothing to a third party.
   IBM Plex Sans, IBM Plex Mono and Newsreader are all SIL Open Font
   License 1.1; see assets/fonts/OFL.txt. */
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/IBMPlexMono-400-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/IBMPlexMono-400-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/IBMPlexMono-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(fonts/IBMPlexMono-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/IBMPlexMono-500-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/IBMPlexMono-500-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/IBMPlexMono-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/IBMPlexMono-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-400-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-400-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-400-greek.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-400-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-400-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-500-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-500-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-500-greek.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-600-cyrillic-ext.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-600-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-600-greek.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(fonts/IBMPlexSans-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/Newsreader-500-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(fonts/Newsreader-500-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/Newsreader-600-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(fonts/Newsreader-600-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
  --paper:#f6f5f0; --ink:#14201c; --mut:#5d6b65; --line:#d8d8cf;
  --card:#fffefa; --seal:#1f5c4a; --seal-soft:#e4ece7; --flag:#9a5a12; --rule:#25342e;
}
:root:not([data-theme="light"]){}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#11150f; --ink:#e6e8e0; --mut:#98a39a; --line:#2a2f28;
  --card:#171c15; --seal:#7fc0a5; --seal-soft:#17251f; --flag:#d9a25a; --rule:#3a4239;
}}
:root[data-theme="dark"]{
  --paper:#11150f; --ink:#e6e8e0; --mut:#98a39a; --line:#2a2f28;
  --card:#171c15; --seal:#7fc0a5; --seal-soft:#17251f; --flag:#d9a25a; --rule:#3a4239;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);
  font-family:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--seal);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:2px}
:focus-visible{outline:2px solid var(--seal);outline-offset:2px}
.wrap{max-width:1000px;margin:0 auto;padding:0 24px}
.mast{border-bottom:2px solid var(--rule);background:var(--paper)}
.mast .wrap{display:flex;align-items:baseline;gap:26px;padding:18px 24px 14px}
.logo{font-family:"Newsreader",Georgia,serif;font-weight:600;font-size:23px;
  letter-spacing:-.015em;color:var(--ink)}
.logo em{font-style:normal;color:var(--seal)}
.mast nav{margin-left:auto;display:flex;gap:20px;font-size:13px;letter-spacing:.02em}
.mast nav a{color:var(--mut)}
.mast nav a:hover{color:var(--ink)}
h1{font-family:"Newsreader",Georgia,serif;font-weight:600;font-size:clamp(28px,4.2vw,42px);
  line-height:1.12;letter-spacing:-.02em;margin:38px 0 10px;text-wrap:balance;max-width:20ch}
h2{font-family:"IBM Plex Sans",sans-serif;font-size:12px;font-weight:600;
  text-transform:uppercase;letter-spacing:.14em;color:var(--mut);
  margin:44px 0 14px;padding-bottom:7px;border-bottom:1px solid var(--line)}
.sub{color:var(--mut);max-width:60ch;font-size:16.5px}
.band{display:flex;gap:0;flex-wrap:wrap;margin:26px 0 30px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.band div{padding:13px 26px 13px 0;margin-right:26px;border-right:1px solid var(--line)}
.band div:last-child{border-right:0}
.band b{display:block;font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:21px;font-weight:500;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.band span{font-size:10.5px;text-transform:uppercase;letter-spacing:.13em;color:var(--mut)}
#q{width:100%;padding:14px 16px;font-size:16px;font-family:inherit;
  border:1px solid var(--rule);border-radius:2px;background:var(--card);color:var(--ink)}
#q::placeholder{color:var(--mut)}
.filters{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 6px}
.filters select{padding:9px 11px;border:1px solid var(--line);border-radius:2px;
  background:var(--card);color:var(--ink);font-family:inherit;font-size:13.5px}
.row{display:grid;grid-template-columns:104px 1fr 132px;gap:20px;align-items:start;
  padding:15px 0;border-bottom:1px solid var(--line)}
.row .ref{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;
  color:var(--mut);padding-top:2px;font-variant-numeric:tabular-nums}
.row .ttl{font-size:15.5px;line-height:1.45}
.row .ttl a{color:var(--ink);font-weight:500}
.row .ttl a:hover{color:var(--seal)}
.row .meta{color:var(--mut);font-size:13px;margin-top:3px}
.row .when{text-align:right;font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:12.5px;color:var(--mut);font-variant-numeric:tabular-nums;padding-top:2px}
.row .when b{display:block;color:var(--ink);font-weight:500}
.row .when.soon b{color:var(--flag)}
.chip{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:10.5px;
  letter-spacing:.04em;background:var(--seal-soft);color:var(--seal);
  padding:2px 7px;border-radius:2px;margin-right:5px}
.index{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:0 34px}
.cpv{border-top:1px solid var(--line);margin:18px 0}
.cpv a{display:grid;grid-template-columns:96px 1fr auto;gap:8px 18px;align-items:baseline;
  padding:11px 4px;border-bottom:1px solid var(--line);color:var(--ink)}
.cpv a:hover{background:var(--seal-soft);text-decoration:none}
.cpv a:not([href]){color:var(--mut);cursor:default}
.cpv a:not([href]):hover{background:none}
.cpv b{font-family:"IBM Plex Mono",monospace;font-size:13px;font-weight:500;color:var(--seal)}
.cpv i{font-style:normal}
.cpv u{text-decoration:none;font-family:"IBM Plex Mono",monospace;font-size:12px;
  color:var(--mut);white-space:nowrap}
.cpv em{font-style:normal;background:var(--seal-soft);border-radius:2px}
.closed{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:11px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--flag);
  border:1px solid var(--flag);border-radius:2px;padding:2px 7px;margin-top:26px}
@media(max-width:560px){.cpv a{grid-template-columns:1fr auto}.cpv b{grid-column:1/-1}}
.index a{display:flex;align-items:baseline;gap:8px;padding:7px 0;
  border-bottom:1px dotted var(--line);color:var(--ink);font-size:14px}
.index a:hover{color:var(--seal);text-decoration:none}
.index a i{font-style:normal;flex:1;border-bottom:1px dotted var(--line);
  transform:translateY(-3px)}
.index a u{text-decoration:none;font-family:"IBM Plex Mono",monospace;font-size:12px;
  color:var(--mut);font-variant-numeric:tabular-nums}
.note{border-left:3px solid var(--seal);background:var(--card);padding:20px 22px;margin:38px 0}
.note h2{margin-top:0;border:0;padding:0}
.note p{max-width:58ch;color:var(--mut)}
.btn{display:inline-block;background:var(--seal);color:var(--paper);padding:10px 20px;
  border-radius:2px;font-size:14px;font-weight:600;margin-top:14px;letter-spacing:.01em}
.btn:hover{text-decoration:none;filter:brightness(1.08)}
.crumb{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--mut);
  letter-spacing:.05em;text-transform:uppercase;margin-top:26px}
.detail dl{display:grid;grid-template-columns:200px 1fr;gap:0;margin:26px 0;font-size:15px}
.detail dt{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.1em;
  padding:11px 0;border-bottom:1px solid var(--line)}
.detail dd{padding:11px 0;border-bottom:1px solid var(--line)}
.desc{background:var(--card);border:1px solid var(--line);padding:18px 20px;
  margin:22px 0;font-size:15px;max-width:66ch}
footer{border-top:2px solid var(--rule);margin-top:64px;padding:26px 0 52px;
  font-size:12.5px;color:var(--mut);line-height:1.7}
footer a{color:var(--mut);text-decoration:underline}
@media(max-width:660px){
  .row{grid-template-columns:1fr;gap:5px}
  .row .when{text-align:left}.row .ref{padding-top:0}
  .detail dl{grid-template-columns:1fr}.detail dt{border:0;padding-bottom:0}
  .band div{padding-right:18px;margin-right:18px}
  .mast .wrap{flex-wrap:wrap;gap:10px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
