/* Ironspan — shared stylesheet for every page except the two home pages,
   which inline theirs for speed. */
/* Self-hosted IBM Plex (SIL Open Font License 1.1), latin subset only: every
   character in the Finnish and English copy is inside this range, and no
   request leaves ironspan.eu for fonts. */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-400-latin-v20.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}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-500-latin-v20.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}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/ibm-plex-mono-600-latin-v20.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}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/ibm-plex-sans-400-latin-v23.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}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/ibm-plex-sans-500-latin-v23.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}
@font-face{font-family:'IBM Plex Sans Condensed';font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/ibm-plex-sans-condensed-600-latin-v15.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{--ground:#15191D;--surface:#1E242A;--hair:#2A323A;--hair-strong:#3B4650;--light:#EDF1F3;--muted:#8F99A1;--mark:#E9B824;--mark-hover:#F2C63C;--mark-deep:#B88C08;
--display:'IBM Plex Sans Condensed','Helvetica Neue',Arial,sans-serif;--body:'IBM Plex Sans',system-ui,-apple-system,sans-serif;--mono:'IBM Plex Mono',Menlo,Consolas,monospace;--gut:32px;--ease:cubic-bezier(.2,.7,.3,1)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{background:var(--ground);-webkit-text-size-adjust:100%}
body{background:var(--ground);color:var(--light);font-family:var(--body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
h1,h2{font-family:var(--display);font-weight:600;letter-spacing:-.015em;line-height:1.08;text-wrap:balance;overflow-wrap:break-word;hyphens:auto}
p{text-wrap:pretty;hyphens:auto;overflow-wrap:break-word}
a{color:var(--mark);text-decoration:underline;text-underline-offset:3px;transition:color .25s var(--ease)}
a:hover{color:var(--mark-hover)}a:active{color:var(--mark-deep)}
:focus-visible{outline:2px solid var(--mark);outline-offset:3px}
::selection{background:var(--mark);color:var(--ground)}
.wrap{max-width:1180px;margin:0 auto;padding:0 var(--gut)}
.label{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);line-height:1.4}
.label--mark{color:var(--mark);font-weight:600}
.top{border-bottom:1px solid var(--hair)}
.top__bar{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:72px}
.brand{display:flex;align-items:center;gap:14px;min-height:44px;color:#fff;text-decoration:none}
.brand:hover{color:#fff}
.brand span{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:.34em;text-transform:uppercase}
.top__nav{display:flex;align-items:center;gap:24px}
.top__nav a{display:inline-flex;align-items:center;min-height:44px;font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:#B9C1C7}
.top__nav a:hover{color:var(--light)}
.doc{max-width:calc(70ch + 2 * var(--gut));margin:0 auto;padding:96px var(--gut) 128px}
.sheet{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-bottom:14px;border-bottom:1px solid var(--hair);margin-bottom:48px}
.doc h1{font-size:clamp(44px,7vw,64px)}
.doc .lead{margin-top:24px;font-size:21px;color:var(--muted)}
.doc h2{font-size:27px;margin-top:64px;padding-top:24px;border-top:1px solid var(--hair)}
.doc p{margin-top:16px;color:#C9D1D6}
.doc code{font-family:var(--mono);font-size:.86em;color:var(--light);background:var(--surface);border:1px solid var(--hair);padding:1px 6px}
.foot{border-top:1px solid var(--hair);padding:32px 0}
.foot__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px}
.foot__mark{display:flex;align-items:center;gap:12px}
.foot__mark span{font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:.28em;text-transform:uppercase}
@media (max-width:560px){:root{--gut:20px}.doc{padding-top:64px}.top__nav{gap:16px}.brand span{font-size:17px;letter-spacing:.28em}}

/* ---------------------------------------------------------------- subpages */
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:16px;top:16px;z-index:200;background:var(--mark);color:var(--ground);padding:10px 16px;text-decoration:none}
.top__nav a.top__cta{padding:0 18px;background:var(--mark);color:var(--ground);font-weight:600;transition:background .25s var(--ease)}
.top__nav a.top__cta:hover{background:var(--mark-hover);color:var(--ground)}
.top__nav a.top__cta:active{background:var(--mark-deep)}
.top__nav a[aria-current="page"]{color:#fff}
.foot a.label{display:inline-flex;align-items:center;min-height:44px}
.foot__cc{background:none;border:0;padding:0;min-height:44px;cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);text-decoration:underline;text-underline-offset:4px}
.foot__cc:hover{color:var(--light)}.foot__cc:active{color:var(--mark)}

/* ---------------------------------------------------------------- breadcrumb
   Matches the BreadcrumbList JSON-LD word for word. The separator is drawn by
   CSS; the "/ ''" alternative text keeps screen readers from announcing it
   (browsers without that syntax keep the first declaration). */
.crumbs{margin:0 0 16px}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;font-family:var(--mono);font-size:11px;line-height:1.6;letter-spacing:.14em;color:#8F99A1}
.art .crumbs li{margin:0;display:inline-flex;align-items:center;min-height:44px}
.crumbs li:not(:last-child)::after{content:"\203A";content:"\203A" / "";margin:0 .8em;color:#8F99A1}
.crumbs a{color:#8F99A1;text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
.crumbs a:hover{color:#EDF1F3;text-decoration:underline;text-underline-offset:4px}
.crumbs a:active{color:var(--mark)}
.crumbs [aria-current="page"]{color:#EDF1F3}

/* ---------------------------------------------------------------- article */
.art{max-width:calc(70ch + 2 * var(--gut));margin:0 auto;padding:96px var(--gut) 128px}
.art .sheet a.label{text-decoration:none}
.art h1{font-size:clamp(34px,6vw,64px)}
.art .lead{margin-top:24px;font-size:21px;color:var(--muted)}
.art h2{font-size:27px;margin-top:64px;padding-top:24px;border-top:1px solid var(--hair);scroll-margin-top:24px}
.art p{margin-top:16px;color:#C9D1D6}
.art strong{color:var(--light);font-weight:500}
.art ul{margin:16px 0 0 1.2em;color:#C9D1D6}.art li{margin-top:8px}
.art .example{margin-top:24px;padding:14px 18px;border-left:2px solid var(--mark);background:var(--surface);font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted)}
.art .example p{margin:0;color:var(--muted)}
.art .example strong{color:var(--mark);font-weight:600;letter-spacing:.18em}
.tbl{margin-top:24px;overflow-x:auto;border:1px solid var(--hair)}
.tbl table{width:100%;border-collapse:collapse;min-width:520px;font-size:15px}
.tbl th,.tbl td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--hair);vertical-align:top}
.tbl th{white-space:nowrap;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:500}
.tbl td{color:var(--light)}.tbl tr:last-child td{border-bottom:0}
.art__cta{margin-top:64px;padding-top:32px;border-top:2px solid var(--mark)}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 26px;background:var(--mark);color:var(--ground);font-family:var(--mono);font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;transition:background .3s var(--ease),transform .3s var(--ease)}
.btn:hover{background:var(--mark-hover);color:var(--ground)}.btn:active{background:var(--mark-deep);transform:translateY(1px)}
.risk{margin-top:14px;font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

/* ---------------------------------------------------------------- blog index */
.art .posts{list-style:none;margin:48px 0 0;padding:0;border-top:1px solid var(--hair)}
.post{padding:32px 0;border-bottom:1px solid var(--hair)}
.post h2{font-size:clamp(27px,4vw,34px);margin-top:12px;border:0;padding:0}
.post h2 a{color:var(--light);text-decoration:none}.post h2 a:hover{color:var(--mark)}
.post p{margin-top:12px;color:#C9D1D6}

/* ---------------------------------------------------------------- consent banner (same as the home page) */
.cc{display:none;position:fixed;left:24px;bottom:24px;z-index:120;width:min(420px,calc(100vw - 48px));background:var(--surface);border:1px solid var(--hair);border-radius:2px;padding:24px}
.cc.is-open{display:block;animation:ccUp .45s var(--ease) both}
@keyframes ccUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.cc h2{font-size:17px;margin:0 0 10px;padding:0;border:0}
.cc p{font-size:14px;color:var(--muted);margin:0}
.cc__row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:24px}
.cc__btn{min-height:44px;padding:0 18px;border:0;cursor:pointer;font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:600;transition:background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease)}
.cc__btn--solid{background:var(--mark);color:var(--ground)}.cc__btn--solid:hover{background:var(--mark-hover)}.cc__btn--solid:active{background:var(--mark-deep)}
.cc__btn--ghost{background:transparent;border:1px solid var(--hair-strong);color:var(--light)}.cc__btn--ghost:hover{border-color:var(--mark);color:var(--mark)}
.cc__link{background:none;border:0;cursor:pointer;color:var(--mark);font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;text-decoration:underline;text-underline-offset:4px;min-height:44px}
.cc__panel{display:none;margin-top:24px;border-top:1px solid var(--hair);padding-top:16px}.cc__panel.is-open{display:block}
.cc__cat{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--hair)}
.cc__cat input{width:18px;height:18px;margin-top:3px;accent-color:var(--mark);flex:0 0 auto}
.cc__cat b{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--light);font-weight:500}
.cc__cat span{font-size:14px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){.cc.is-open{animation:none}}
@media (max-width:560px){.art{padding-top:64px}.tbl table{min-width:0;font-size:14px}.tbl th,.tbl td{padding:10px 12px}.tbl th{letter-spacing:.1em;white-space:normal}.tbl td:not(:first-child){white-space:nowrap}.cc{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:auto}}
@media (max-width:480px){.top__nav .top__hide-sm{display:none}}
