@layer reset,tokens,base,components;@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Regular-Latin1.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Regular-Latin2.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Regular-Latin3.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Regular-Pi.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0E3F,U+2000-200D,U+2015,U+2028-2029,U+202F,U+2032-2033,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+ECE0,U+EFCC,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Italic-Latin1.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Italic-Latin2.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Italic-Latin3.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Italic-Pi.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+0E3F,U+2000-200D,U+2015,U+2028-2029,U+202F,U+2032-2033,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+ECE0,U+EFCC,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Medium-Latin1.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Medium-Latin2.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Medium-Latin3.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Medium-Pi.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0E3F,U+2000-200D,U+2015,U+2028-2029,U+202F,U+2032-2033,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+ECE0,U+EFCC,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-SemiBold-Latin1.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-SemiBold-Latin2.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-SemiBold-Latin3.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-SemiBold-Pi.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0E3F,U+2000-200D,U+2015,U+2028-2029,U+202F,U+2032-2033,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+ECE0,U+EFCC,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Bold-Latin1.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Bold-Latin2.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Bold-Latin3.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;src:url(fonts/plex-sans-1.1.0/IBMPlexSans-Bold-Pi.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0E3F,U+2000-200D,U+2015,U+2028-2029,U+202F,U+2032-2033,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+ECE0,U+EFCC,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Regular-Latin1.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Regular-Latin2.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Regular-Latin3.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1E0C-1E0D,U+1E12-1E13,U+1E24-1E25,U+1E36-1E37,U+1E3C-1E3D,U+1E40-1E47,U+1E4A-1E4B,U+1E62-1E63,U+1E6C-1E6D,U+1E70-1E71,U+1E92-1E93,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Regular-Pi.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+03C0,U+0E3F,U+2000-200D,U+2010-2012,U+2015,U+2028-2029,U+202F,U+2032-2033,U+203E,U+205F,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+2219-221A,U+221E,U+222B,U+2236,U+2248,U+2260,U+2264-2265,U+2400-2421,U+2500-259F,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+3000,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Medium-Latin1.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Medium-Latin2.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Medium-Latin3.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1E0C-1E0D,U+1E12-1E13,U+1E24-1E25,U+1E36-1E37,U+1E3C-1E3D,U+1E40-1E47,U+1E4A-1E4B,U+1E62-1E63,U+1E6C-1E6D,U+1E70-1E71,U+1E92-1E93,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-Medium-Pi.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+03C0,U+0E3F,U+2000-200D,U+2010-2012,U+2015,U+2028-2029,U+202F,U+2032-2033,U+203E,U+205F,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+2219-221A,U+221E,U+222B,U+2236,U+2248,U+2260,U+2264-2265,U+2400-2421,U+2500-259F,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+3000,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-SemiBold-Latin1.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-SemiBold-Latin2.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E,U+20A1,U+20A4,U+20A6,U+20A8-20AA,U+20AD-20AE,U+20B1-20B2,U+20B4-20B5,U+20B8-20BA,U+20BD,U+20BF}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-SemiBold-Latin3.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+01CD-01DC,U+1E0C-1E0D,U+1E12-1E13,U+1E24-1E25,U+1E36-1E37,U+1E3C-1E3D,U+1E40-1E47,U+1E4A-1E4B,U+1E62-1E63,U+1E6C-1E6D,U+1E70-1E71,U+1E92-1E93,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;src:url(fonts/plex-mono-2.5.0/IBMPlexMono-SemiBold-Pi.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+03C0,U+0E3F,U+2000-200D,U+2010-2012,U+2015,U+2028-2029,U+202F,U+2032-2033,U+203E,U+205F,U+2070,U+2074-2079,U+2080-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+2215,U+2219-221A,U+221E,U+222B,U+2236,U+2248,U+2260,U+2264-2265,U+2400-2421,U+2500-259F,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+3000,U+FEFF,U+FFFD}@layer reset{*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}img,picture,svg{display:block;max-inline-size:100%;block-size:auto}[hidden]{display:none!important}}@layer tokens{:root{color-scheme:light dark;--color-bg-light: #ffffff;--color-bg-dark: #0f1115;--color-surface-light: #f5f6f8;--color-surface-dark: #171a21;--color-text-light: #14161a;--color-text-dark: #e6e8ed;--color-muted-light: #555c6b;--color-muted-dark: #a0a8b8;--color-accent-light: #1d4ed8;--color-accent-dark: #8ab4ff;--color-link-light: #1d4ed8;--color-link-dark: #8ab4ff;--color-border-light: #e1e4ea;--color-border-dark: #2a2f39;--color-code-bg-light: #f3f4f6;--color-code-bg-dark: #171a21;--color-focus-light: #1d4ed8;--color-focus-dark: #8ab4ff;--color-bg: light-dark(var(--color-bg-light), var(--color-bg-dark));--color-surface: light-dark(var(--color-surface-light), var(--color-surface-dark));--color-text: light-dark(var(--color-text-light), var(--color-text-dark));--color-muted: light-dark(var(--color-muted-light), var(--color-muted-dark));--color-accent: light-dark(var(--color-accent-light), var(--color-accent-dark));--color-link: light-dark(var(--color-link-light), var(--color-link-dark));--color-border: light-dark(var(--color-border-light), var(--color-border-dark));--color-code-bg: light-dark(var(--color-code-bg-light), var(--color-code-bg-dark));--color-focus: light-dark(var(--color-focus-light), var(--color-focus-dark));--color-on-accent: light-dark(#ffffff, #0f1115);--color-accent-soft: light-dark(#eef2fe, #1a2440);--color-mark: light-dark(#ffe58f, #594800);--color-mark-text: light-dark(#14161a, #fff1b8);--color-ok: light-dark(#1a7048, #7fd8b1);--color-ok-soft: light-dark(#e5f3eb, #13291f);--color-warn: light-dark(#92470a, #ffb36b);--color-warn-soft: light-dark(#fcefe0, #33220f);--color-danger: light-dark(#b42318, #ff8a7f);--tag-blue: light-dark(#1f5fd1, #8fb4ff);--tag-blue-soft: light-dark(#e8f0fd, #172540);--tag-violet: light-dark(#6a3fc4, #c8adff);--tag-violet-soft: light-dark(#f1ebfd, #251c3d);--tag-teal: light-dark(#0f6e65, #72d6c6);--tag-teal-soft: light-dark(#e0f3f0, #12302c);--tag-amber: light-dark(#8a5400, #f2c46b);--tag-amber-soft: light-dark(#fbefd9, #33280f);--tag-green: light-dark(#1f6b2f, #8fdc9f);--tag-green-soft: light-dark(#e6f4e8, #13291a);--tag-orange: light-dark(#9a3d0b, #ffb38a);--tag-orange-soft: light-dark(#fdeadd, #3a2010);--tag-red: light-dark(#b4232c, #ff9a9a);--tag-red-soft: light-dark(#fde8e8, #3a1517);--tag-pink: light-dark(#a3246e, #f5a3cf);--tag-pink-soft: light-dark(#fbe7f2, #3a1530);--tag-cyan: light-dark(#0b6577, #74d3e6);--tag-cyan-soft: light-dark(#e0f2f6, #10303a);--tag-slate: light-dark(#4a5568, #b6bfcc);--tag-slate-soft: light-dark(#eef0f3, #22262e);--hl-comment: light-dark(#4b5563, #9aa3af);--hl-keyword: light-dark(#6d28d9, #c4a3ff);--hl-string: light-dark(#9a3412, #f2b880);--hl-number: light-dark(#0f766e, #5eead4);--hl-constant: light-dark(#b91c1c, #fca5a5);--hl-function: light-dark(#1d4ed8, #8ab4ff);--hl-type: light-dark(#0e7490, #67e8f9);--hl-tag: light-dark(#166534, #86efac);--hl-attribute: light-dark(#92400e, #fcd34d);--hl-property: light-dark(#1e40af, #93c5fd);--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.5rem;--text-2xl: 2.5rem;--leading: 1.6;--space-1: .25rem;--space-2: .5rem;--space-3: 1rem;--space-4: 1.5rem;--space-5: 2.5rem;--space-6: 4.5rem;--page-width: 67.5rem;--content-width: 46rem;--radius: .375rem}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}}@layer base{html{text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading)}h1,h2,h3,h4{line-height:1.2;letter-spacing:-.01em;font-weight:600;text-wrap:balance}h1{font-size:var(--text-2xl);letter-spacing:-.02em}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}a{color:var(--color-link);text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:2px}code,kbd,pre{font-family:var(--font-mono);font-size:.9em}:not(pre)>code{background:var(--color-code-bg);padding:.1em .3em;border-radius:var(--radius)}blockquote{border-inline-start:3px solid var(--color-border);padding-inline-start:var(--space-3);color:var(--color-muted)}table{border-collapse:collapse;inline-size:100%}th,td{border-block-end:1px solid var(--color-border);padding:var(--space-2);text-align:start}hr{border:0;border-block-start:1px solid var(--color-border)}mark{background:var(--color-mark);color:var(--color-mark-text);padding-inline:.1em;border-radius:2px}}@layer components{.skip-link{position:absolute;inset-inline-start:-100vw}.skip-link:focus{inset-inline-start:var(--space-3);inset-block-start:var(--space-2);z-index:10;background:var(--color-bg);padding:var(--space-2) var(--space-3)}.visually-hidden{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.wrap{max-inline-size:var(--page-width);margin-inline:auto;padding-inline:var(--space-4)}.mono{font-family:var(--font-mono)}.muted{color:var(--color-muted)}.site-header{border-block-end:1px solid var(--color-border);>.wrap{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) 1.75rem;padding-block:.875rem}}.site-name{display:inline-flex;align-items:center;gap:.625rem;font-weight:600;font-size:1.0625rem;color:var(--color-text);text-decoration:none;&:hover{color:var(--color-accent)}}.site-menu ul,.post-list,.tags,.tag-index,.site-links{list-style:none;padding:0;margin:0}.site-menu ul,.tags,.site-links{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.site-menu{& ul{gap:var(--space-2) 1.375rem;font-size:.9375rem}& a{color:var(--color-text);text-decoration:none;padding-block-end:.1875rem}& a:hover{color:var(--color-accent)}& a[aria-current]{color:var(--color-accent);box-shadow:inset 0 -2px 0 var(--color-accent)}}.header-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-2) .75rem;margin-inline-start:auto}.search-box{display:flex;align-items:center;gap:var(--space-2);block-size:2.375rem;padding-inline:.75rem var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-muted);&:focus-within{border-color:var(--color-accent)}& svg{flex:none}& input{font:inherit;font-size:var(--text-sm);color:var(--color-text);background:transparent;border:0;inline-size:12rem;max-inline-size:100%;min-inline-size:0}& input:focus-visible{outline:none}& input::placeholder{color:var(--color-muted)}& button{font:inherit;font-size:.8125rem;color:var(--color-muted);background:transparent;border:0;border-radius:.25rem;block-size:1.875rem;padding-inline:.625rem;cursor:pointer}& button:hover{color:var(--color-accent)}}ws-theme-switch{display:contents}.theme-switch{display:flex;gap:2px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius);& button{display:grid;place-items:center;inline-size:2.125rem;block-size:2rem;border:0;border-radius:.25rem;background:transparent;color:var(--color-muted);cursor:pointer}& button:hover{color:var(--color-text)}& button[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-accent)}}main{min-block-size:60vh;padding-block-start:3rem;>.wrap>:not(.banner-wrap,.hero,.columns,.article-layout,.search-page,.wide){max-inline-size:var(--content-width)}}.btn{display:inline-flex;align-items:center;gap:.375rem;block-size:2.5rem;padding-inline:.875rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:var(--text-sm);text-decoration:none;white-space:nowrap;cursor:pointer;&:hover{border-color:var(--color-accent);color:var(--color-accent)}&.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent);font-weight:600}&.small{block-size:2rem;padding-inline:.625rem;font-size:.8125rem}}.site-footer .built-with a{text-decoration:underline;text-underline-offset:.2em}.site-footer{margin-block-start:var(--space-6);border-block-start:1px solid var(--color-border);>.wrap{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.625rem var(--space-4);padding-block:var(--space-4) 1.75rem;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-muted)}& p{margin:0}& ul{display:flex;flex-wrap:wrap;gap:var(--space-1) 1.125rem;margin:0;padding:0;list-style:none}& a{color:var(--color-text);text-decoration:none}& a:hover{color:var(--color-accent);text-decoration:underline}}:where(.content)>*+*,:where(main>.wrap)>*+*,:where(main>.wrap>section)>*+*{margin-block-start:var(--space-3)}:where(main>.wrap)>section{margin-block-start:var(--space-5)}.content :is(h2,h3,h4){margin-block-start:var(--space-5)}.content img{border-radius:var(--radius)}.meta{color:var(--color-muted);font-size:var(--text-sm)}.label{margin:0;font-family:var(--font-mono);font-size:.8125rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent)}.crumbs{margin:0;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-muted)}.page-title{margin-block:var(--space-2) 0;font-size:var(--text-2xl)}.lede{margin-block:.75rem 0;font-size:var(--text-lg);color:var(--color-muted);max-inline-size:40rem}.banner-wrap{position:relative;margin-block-start:-1rem}.banner{display:block;inline-size:100%;block-size:16.25rem;object-fit:cover;border:1px solid var(--color-border);border-radius:.625rem}.banner-default{background:url(images/banner-light.webp) center / cover no-repeat}:root[data-theme=dark] .banner-default{background-image:url(images/banner-dark.webp)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .banner-default{background-image:url(images/banner-dark.webp)}}@media(max-width:40rem){.banner-default{background-image:url(images/banner-light-narrow.webp)}:root[data-theme=dark] .banner-default{background-image:url(images/banner-dark-narrow.webp)}}@media(max-width:40rem)and (prefers-color-scheme:dark){:root:not([data-theme=light]) .banner-default{background-image:url(images/banner-dark-narrow.webp)}}.avatar{position:absolute;inset-inline-start:2rem;inset-block-end:-2.75rem;display:grid;place-items:center;inline-size:5.75rem;block-size:5.75rem;overflow:hidden;border:4px solid var(--color-bg);border-radius:50%;background:var(--color-bg);& img{inline-size:100%;block-size:100%}}.hero{margin-block-start:0;display:flex;flex-wrap:wrap;align-items:flex-end;gap:1.25rem var(--space-5);padding-block:3.5rem 2.25rem;border-block-end:1px solid var(--color-border);&.no-banner{padding-block-start:0}>div:first-child{flex:1 1 28rem}& h1{margin:0;font-size:2.75rem;letter-spacing:-.02em}.tagline{margin-block:.625rem 0;font-size:1.1875rem;color:var(--color-muted)}.links{display:flex;flex-wrap:wrap;gap:var(--space-2)}}.home-page{margin-block-start:var(--space-5)}.columns{display:flex;flex-wrap:wrap;gap:var(--space-5) 3.5rem;margin-block-start:2.25rem;>.main{flex:999 1 35rem;min-inline-size:0}>aside{flex:1 1 15rem;display:flex;flex-direction:column;gap:2rem}}.list-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;.count{font-family:var(--font-mono);font-size:.8125rem;color:var(--color-muted)}}.year-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--space-2) var(--space-3);margin-block:1.75rem var(--space-2);&:first-child{margin-block-start:0}}.year{margin:0;font-family:var(--font-mono);font-size:1.25rem;&:after{content:"";display:block;inline-size:1.5rem;block-size:3px;margin-block-start:.375rem;border-radius:2px;background:var(--color-accent)}}.post-list{& li{display:grid;grid-template-columns:4rem minmax(0,1fr) minmax(0,11.25rem);gap:1.25rem;align-items:start;padding:1.125rem .625rem;margin-inline:-.625rem;border-block-start:1px solid var(--color-border);border-radius:var(--radius)}& li:hover{background:var(--color-accent-soft)}.when{padding-block-start:.1875rem;font-family:var(--font-mono);font-size:.8125rem;line-height:1.5;color:var(--color-muted)}.when span{display:block;font-size:var(--text-xs)}& h3{margin:0;font-size:var(--text-lg);line-height:1.35}& h3 a{color:var(--color-text);text-decoration:none}& li:hover h3 a,h3 a:focus-visible{color:var(--color-accent)}& h3 a:hover{text-decoration:underline}& p{margin-block:.3125rem 0;font-size:.9375rem;line-height:1.55;color:var(--color-muted)}.tags{justify-content:flex-end;gap:var(--space-1);padding-block-start:.1875rem}}.list-foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-2) var(--space-4);margin:0;padding-block-start:1.125rem;border-block-start:1px solid var(--color-border);font-family:var(--font-mono);font-size:.8125rem;color:var(--color-muted)}.tag{display:inline-flex;align-items:center;block-size:1.375rem;padding-inline:.4375rem;border-radius:.25rem;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1;background:var(--color-surface);color:var(--color-muted);text-decoration:none;&.big{block-size:auto;padding:.125rem .625rem;font-size:.8em;vertical-align:.1em}}a.tag:hover{text-decoration:underline}.dot{display:inline-block;inline-size:.5rem;block-size:.5rem;margin-inline-end:var(--space-2);border-radius:2px;background:var(--color-muted)}.tag.blue{background:var(--tag-blue-soft);color:var(--tag-blue)}.tag.violet{background:var(--tag-violet-soft);color:var(--tag-violet)}.tag.teal{background:var(--tag-teal-soft);color:var(--tag-teal)}.tag.green{background:var(--tag-green-soft);color:var(--tag-green)}.tag.amber{background:var(--tag-amber-soft);color:var(--tag-amber)}.tag.orange{background:var(--tag-orange-soft);color:var(--tag-orange)}.tag.red{background:var(--tag-red-soft);color:var(--tag-red)}.tag.pink{background:var(--tag-pink-soft);color:var(--tag-pink)}.tag.cyan{background:var(--tag-cyan-soft);color:var(--tag-cyan)}.tag.slate{background:var(--tag-slate-soft);color:var(--tag-slate)}.dot.blue{background:var(--tag-blue)}.dot.violet{background:var(--tag-violet)}.dot.teal{background:var(--tag-teal)}.dot.green{background:var(--tag-green)}.dot.amber{background:var(--tag-amber)}.dot.orange{background:var(--tag-orange)}.dot.red{background:var(--tag-red)}.dot.pink{background:var(--tag-pink)}.dot.cyan{background:var(--tag-cyan)}.dot.slate{background:var(--tag-slate)}.tag-list,.tag-index{margin:.75rem 0 0;padding:0;list-style:none;font-family:var(--font-mono);font-size:var(--text-sm);& li{display:flex;justify-content:space-between;gap:var(--space-2);padding-block:.375rem;border-block-start:1px dashed var(--color-border)}& a{display:inline-flex;align-items:center;color:var(--color-text);text-decoration:none}& a:hover{color:var(--color-accent);text-decoration:underline}.n{color:var(--color-muted)}}.tag-index{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:0 var(--space-4);margin-block-start:var(--space-4);max-inline-size:none}aside .more{display:inline-block;margin-block-start:.625rem;font-family:var(--font-mono);font-size:.8125rem}.box{padding:1.125rem;border-radius:var(--radius);background:var(--color-accent-soft);& h2{margin:0 0 .375rem;font-size:.9375rem}& p{margin:0 0 .75rem;font-size:var(--text-sm);color:var(--color-muted)}.feeds{display:flex;gap:.875rem;margin:0;font-family:var(--font-mono);font-size:.8125rem}}pre.code{background:var(--color-code-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-3);overflow-x:auto;line-height:1.5}.hl-comment{color:var(--hl-comment);font-style:italic}.hl-keyword{color:var(--hl-keyword)}.hl-string{color:var(--hl-string)}.hl-number{color:var(--hl-number)}.hl-constant{color:var(--hl-constant)}.hl-function{color:var(--hl-function)}.hl-type{color:var(--hl-type)}.hl-tag{color:var(--hl-tag)}.hl-attribute{color:var(--hl-attribute)}.hl-property{color:var(--hl-property)}.notice{border-inline-start:3px solid var(--color-accent);background:var(--color-surface);padding:var(--space-2) var(--space-3)}.preview-note{margin-block:0 var(--space-5)}.table-scroll{overflow-x:auto}.article-layout{display:flex;flex-wrap:wrap;gap:var(--space-5) 4rem;>article{flex:999 1 37.5rem;min-inline-size:0;max-inline-size:45rem}>aside{flex:1 1 13.75rem;display:flex;flex-direction:column;gap:2rem;padding-block-start:3.25rem}}.post-meta{display:flex;flex-wrap:wrap;gap:var(--space-1) 1.125rem;margin-block:.875rem 0;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-muted)}.post .content{margin-block-start:var(--space-4);font-size:1.0625rem;line-height:1.75;& h2{margin-block:var(--space-5) .75rem;font-size:var(--text-xl)}:is(ul,ol){padding-inline-start:1.3em}& li{margin-block:var(--space-1)}& li::marker{color:var(--color-accent)}& blockquote{margin-block:var(--space-4);padding:.875rem 1.125rem;border:0;border-radius:var(--radius);background:var(--color-accent-soft);color:var(--color-text);font-size:var(--text-base)}}.content.lead>p:first-child{font-size:1.25rem;line-height:1.55}.content figure{margin-block:var(--space-4);margin-inline:0;& img{display:block;border:1px solid var(--color-border)}& figcaption{margin-block-start:var(--space-2);font-size:var(--text-sm);color:var(--color-muted)}}.code-block{margin-block:1.25rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-code-bg);overflow:hidden;.bar{display:flex;justify-content:space-between;align-items:center;min-block-size:2.375rem;padding:.3125rem var(--space-2) .3125rem .875rem;border-block-end:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted)}.bar button{display:flex;align-items:center;gap:.375rem;block-size:1.75rem;padding-inline:.625rem;border:1px solid var(--color-border);border-radius:.25rem;background:var(--color-bg);color:var(--color-muted);font:inherit;cursor:pointer}.bar button:hover{color:var(--color-accent);border-color:var(--color-accent)}& pre.code{margin:0;border:0;border-radius:0;padding:.875rem 1.125rem;font-size:.84375rem;line-height:1.65}}.post-tags{display:flex;flex-wrap:wrap;gap:.375rem;margin-block:2rem 0;padding:0;list-style:none;.tag{block-size:1.625rem;padding-inline:.5625rem;font-size:.8125rem}}.author-card{display:flex;align-items:flex-start;gap:var(--space-3);margin-block-start:2rem;padding:1.125rem;border:1px solid var(--color-border);border-radius:var(--radius);.initials{flex:none;display:grid;place-items:center;inline-size:2.75rem;block-size:2.75rem;border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent);font-family:var(--font-mono);font-weight:600}& h2{margin:0;font-size:var(--text-base)}& p{margin-block:.125rem .375rem;font-size:.9375rem;color:var(--color-muted)}}.author-links{display:flex;flex-wrap:wrap;gap:.875rem;margin:0;padding:0;list-style:none;font-family:var(--font-mono);font-size:.8125rem}.side-label{margin:0 0 .625rem;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent)}.toc{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0 0 0 .75rem;list-style:none;border-inline-start:2px solid var(--color-border);font-size:var(--text-sm);& a{color:var(--color-text)}& a:hover{color:var(--color-accent)}& li:has(>a[aria-current]){margin-inline-start:calc(-.75rem - 2px);padding-inline-start:.75rem;border-inline-start:2px solid var(--color-accent)}& a[aria-current]{color:var(--color-accent)}}.mini-list{display:flex;flex-direction:column;gap:.875rem;margin:0;padding:0;list-style:none;font-size:var(--text-sm);& a{color:var(--color-text);font-weight:500}& time{display:block;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted)}}.pager{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.75rem;margin-block-start:var(--space-5);padding-block-start:var(--space-4);border-block-start:1px solid var(--color-border);& a{display:block;padding:.875rem var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);text-decoration:none}& a:hover{border-color:var(--color-accent);color:var(--color-accent)}& a>span{display:block;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-muted)}& a.newer{grid-column:-2;text-align:end}}.kicker{margin:0 0 .625rem;font-family:var(--font-mono);font-size:.8125rem;color:var(--color-accent)}.search-page{margin-block-start:0;max-inline-size:47.5rem;.page-title{margin-block-start:0}}.search-field{display:flex;gap:var(--space-2);margin-block-start:1.25rem;& input{flex:1;min-inline-size:0;block-size:3rem;padding-inline:var(--space-3);border:1px solid var(--color-accent);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:1.0625rem}.btn{block-size:3rem;padding-inline:1.375rem}}.filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block-start:.875rem;font-family:var(--font-mono);font-size:.8125rem;& a{display:inline-flex;align-items:center;block-size:2rem;padding-inline:.75rem;border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-muted);text-decoration:none}& a:hover{border-color:var(--color-accent);color:var(--color-accent)}& a[aria-current]{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}}.results-heading{margin-block:2.25rem 0;font-size:.9375rem;font-weight:500;color:var(--color-muted)}.results{margin:var(--space-2) 0 0;padding:0;list-style:none;& li{padding-block:1.25rem;border-block-start:1px solid var(--color-border)}.meta{margin:0;font-family:var(--font-mono);font-size:var(--text-xs)}& h3{margin-block:var(--space-1) 0;font-size:1.1875rem}.snippet{margin-block:.375rem 0;color:var(--color-muted)}.snippet code{display:block;font-family:var(--font-mono);font-size:var(--text-sm);overflow-wrap:anywhere}}.page{max-inline-size:45rem;.lede{font-size:1.25rem}.content{margin-block-start:var(--space-4);font-size:1.0625rem;line-height:1.75}}.not-found,.status-page{margin-block-start:0;padding-block:var(--space-4) 1.25rem;.status-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block-start:var(--space-4)}.request-id{margin-block-start:var(--space-3);font-size:var(--text-sm);color:var(--color-muted)}.code-big{margin:0;font-family:var(--font-mono);font-size:4.5rem;font-weight:600;line-height:1;color:var(--color-accent)}.search-box{margin-block-start:var(--space-4);block-size:2.875rem;max-inline-size:26.25rem}.search-box input{inline-size:100%}}@media(max-width:45rem){.banner{block-size:9.375rem}.avatar{inset-inline-start:var(--space-3);inset-block-end:-2.125rem;inline-size:4.5rem;block-size:4.5rem}.hero{padding-block-start:3rem;& h1{font-size:2rem}}.page-title{font-size:1.875rem}.post-list li{grid-template-columns:3.25rem minmax(0,1fr);gap:.75rem}.article-layout>aside{padding-block-start:0}:is(.not-found,.status-page) .code-big{font-size:3.5rem}.post .content{font-size:var(--text-base)}.post-list .tags{grid-column:2;justify-content:flex-start;padding-block-start:0}.header-tools{inline-size:100%;margin-inline-start:0}.search-box{flex:1;& input{inline-size:100%}}.site-footer>.wrap{flex-direction:column;align-items:flex-start}}.reading-switch{margin-block:1rem 0;& button{display:inline-flex;align-items:center;gap:.375rem;block-size:2rem;padding-inline:.625rem;border:1px solid var(--color-border);border-radius:var(--radius);background:none;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--text-xs);cursor:pointer}& button:hover,button[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent)}& button[aria-pressed=true]{background:var(--color-accent-soft)}}:root[data-reading=on]{.article-layout{display:block}.article-layout>:is(article,aside),main>.wrap>.page{max-inline-size:var(--content-width);margin-inline:auto}.article-layout>aside{padding-block-start:var(--space-5)}:is(.post,.page) .content{font-size:clamp(1.125rem,1rem + .4vw,1.25rem);line-height:1.85}.page .lede{font-size:1.375rem}}@media print{:root,:root[data-theme]{color-scheme:light}@page{margin:2cm 1.8cm}body{background:none;font-size:11pt}:is(.skip-link,.site-header,.crumbs,.article-layout>aside,.pager,.author-links,.code-block .bar button,.site-links,.reading-switch,.built-with,.banner-wrap){display:none}.wrap,.article-layout>article{max-inline-size:none;padding-inline:0}.article-layout{display:block}.site-footer{margin-block-start:1.5rem}.content a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em;overflow-wrap:anywhere;color:var(--color-muted)}.content a[href^=http]:has(img):after{content:none}pre.code,.code-block pre.code{overflow:visible;white-space:pre-wrap;overflow-wrap:anywhere}.code-block{overflow:visible}.content :is(h2,h3,h4){break-after:avoid}:is(img,figure,table,.code-block,blockquote){break-inside:avoid}img{max-inline-size:100%;block-size:auto}}}@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}
