/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/4662e599-6cd4-4db9-97cb-f9a5205cf50e.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/55c3a330-cb34-4af2-88e8-518225fa7a9c.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/2357b4a5-3d58-4084-b1e0-4cf7d311bc5b.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/bc668288-5a88-47c0-9a46-a5e0ee43add8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/90a9367e-beb8-4240-bf87-9a994e15150d.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/219025e8-deac-4df5-9905-a2352c14c6db.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/4662e599-6cd4-4db9-97cb-f9a5205cf50e.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/55c3a330-cb34-4af2-88e8-518225fa7a9c.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/2357b4a5-3d58-4084-b1e0-4cf7d311bc5b.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/bc668288-5a88-47c0-9a46-a5e0ee43add8.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/90a9367e-beb8-4240-bf87-9a994e15150d.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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/219025e8-deac-4df5-9905-a2352c14c6db.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: 'Manrope';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("/blog/assets/fonts/579220f6-535c-44b4-b241-4a170dadced6.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: 'Manrope';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("/blog/assets/fonts/efa257ee-b14a-4c88-8ec1-96001941402e.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("/blog/assets/fonts/d12d260d-df0b-43da-8246-ac1237660a30.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("/blog/assets/fonts/1d11e8a3-c9eb-4366-95dd-f42d852c27f2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("/blog/assets/fonts/d7bc110e-7e56-43d1-8e55-aa812c6e01f9.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: 'Manrope';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("/blog/assets/fonts/e088d297-3e2c-443b-99f1-1773b8dcf254.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: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/579220f6-535c-44b4-b241-4a170dadced6.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: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/efa257ee-b14a-4c88-8ec1-96001941402e.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/d12d260d-df0b-43da-8246-ac1237660a30.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/1d11e8a3-c9eb-4366-95dd-f42d852c27f2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/d7bc110e-7e56-43d1-8e55-aa812c6e01f9.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: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/e088d297-3e2c-443b-99f1-1773b8dcf254.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: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/579220f6-535c-44b4-b241-4a170dadced6.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: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/efa257ee-b14a-4c88-8ec1-96001941402e.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/d12d260d-df0b-43da-8246-ac1237660a30.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/1d11e8a3-c9eb-4366-95dd-f42d852c27f2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/d7bc110e-7e56-43d1-8e55-aa812c6e01f9.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: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/e088d297-3e2c-443b-99f1-1773b8dcf254.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: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/579220f6-535c-44b4-b241-4a170dadced6.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: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/efa257ee-b14a-4c88-8ec1-96001941402e.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/d12d260d-df0b-43da-8246-ac1237660a30.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/1d11e8a3-c9eb-4366-95dd-f42d852c27f2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/d7bc110e-7e56-43d1-8e55-aa812c6e01f9.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: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/e088d297-3e2c-443b-99f1-1773b8dcf254.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: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/579220f6-535c-44b4-b241-4a170dadced6.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: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/efa257ee-b14a-4c88-8ec1-96001941402e.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/d12d260d-df0b-43da-8246-ac1237660a30.woff2") format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/1d11e8a3-c9eb-4366-95dd-f42d852c27f2.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/d7bc110e-7e56-43d1-8e55-aa812c6e01f9.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: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/e088d297-3e2c-443b-99f1-1773b8dcf254.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;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/6f75a27c-b50f-48d0-b020-e43fd4ff9755.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/66d37fa2-38de-40c8-905b-b4ed4e8de27c.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: 'Space Grotesk';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/blog/assets/fonts/cd62414e-f827-4a9e-9096-c4e987c5e31d.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;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/6f75a27c-b50f-48d0-b020-e43fd4ff9755.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/66d37fa2-38de-40c8-905b-b4ed4e8de27c.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: 'Space Grotesk';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/blog/assets/fonts/cd62414e-f827-4a9e-9096-c4e987c5e31d.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;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/6f75a27c-b50f-48d0-b020-e43fd4ff9755.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/66d37fa2-38de-40c8-905b-b4ed4e8de27c.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: 'Space Grotesk';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/blog/assets/fonts/cd62414e-f827-4a9e-9096-c4e987c5e31d.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;
}
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/6f75a27c-b50f-48d0-b020-e43fd4ff9755.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/66d37fa2-38de-40c8-905b-b4ed4e8de27c.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: 'Space Grotesk';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/blog/assets/fonts/cd62414e-f827-4a9e-9096-c4e987c5e31d.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;
}

  /* ===========================================================================
     Feature 005 — "Field Almanac" shared fingerprint TOKEN LAYER (constitution
     v1.5.0, Principle III bounded exception). Names the design's EXISTING palette
     hexes only — no new hue, no new colour system. The IDENTICAL token block is
     declared on the portfolio (#ek-root) so both surfaces share one fingerprint.
     Scoped to #blog-root; portfolio/chrome unaffected.
     =========================================================================== */
  #blog-root{
    /* surfaces (elevation via lightness + pressed-ink inset, never glow) */
    --paper:#07090A; --paper-2:#0C1512; --ink:#EDF2EF; --muted:#9FB0AA; --muted-2:#828D86;
    /* green = live/interaction STATE only (≤~3% viewport budget) */
    --signal:#34E6A0; --green-deep:#18A06A; --green-deep-2:#1AA56E; --mint:#7DF0C2;
    /* sand = warm metadata / tint layer */
    --sand:#E7D2A6; --sand-deep:#CBB07A;
    /* semantic = syntax tokens + the 5 callout kinds ONLY (never chrome) */
    --sem-blue:#46a8e0; --sem-yellow:#ffd166; --sem-purple:#b388ff; --sem-coral:#ff8a80;
    /* hairline rule (warm-tinted so greys stop reading cool-synthetic) */
    --rule:rgba(231,210,166,0.14); --rule-strong:rgba(231,210,166,0.24);
    /* type */
    --font-display:'Space Grotesk',sans-serif; --font-body:'Manrope',system-ui,sans-serif; --font-mono:'JetBrains Mono',monospace;
    --text-h1:clamp(2.75rem,4vw + 1rem,4.25rem); --text-h2:2rem; --text-h3:1.375rem;
    --text-body:clamp(1.0625rem,1.6vw,1.125rem); --text-meta:0.8125rem;
    /* space (4px base, ~1.25 modular) */
    --space-3xs:4px; --space-2xs:8px; --space-xs:12px; --space-sm:16px; --space-md:24px;
    --space-lg:32px; --space-xl:48px; --space-2xl:72px; --space-3xl:112px; --space-4xl:160px;
    /* motion */
    --ease-out:cubic-bezier(.16,1,.3,1); --ease-in:cubic-bezier(.4,0,1,1); --ease-in-out:cubic-bezier(.65,0,.35,1);
    --dur-1:120ms; --dur-2:220ms; --dur-3:420ms;
  }
  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; }
  body{ margin:0; background:#07090A; }
  ::selection{ background:rgba(52,230,160,0.28); color:#EDF2EF; }
  #blog-root *::-webkit-scrollbar{ width:10px; height:10px; }
  #blog-root *::-webkit-scrollbar-thumb{ background:#1F2B27; border-radius:8px; }
  /* Visible keyboard focus (WCAG 2.4.7): links use inline `all:unset`, which also clears the
     outline, so restore it with !important on :focus-visible (loses to inline otherwise). */
  #blog-root a:focus-visible{ outline:2px solid #34E6A0 !important; outline-offset:2px !important; }
  @keyframes composeIn{ from{ opacity:0; transform:translateY(26px) scale(.965);} to{ opacity:1; transform:none;} }
  @keyframes meshDrift{ 0%{ transform:translate(-4%,-2%) scale(1.05);} 50%{ transform:translate(4%,3%) scale(1.12);} 100%{ transform:translate(-4%,-2%) scale(1.05);} }
  @keyframes meshDrift2{ 0%{ transform:translate(3%,2%) scale(1.1);} 50%{ transform:translate(-5%,-3%) scale(1.04);} 100%{ transform:translate(3%,2%) scale(1.1);} }
  @keyframes rippleExp{ to{ transform:scale(3.4); opacity:0; } }
  @keyframes caretBlink{ 50%{ opacity:0; } }
  @keyframes scrollBob{ 0%,100%{ transform:translateY(0); opacity:.5;} 50%{ transform:translateY(7px); opacity:1;} }
  @keyframes botBob{ 0%,100%{ transform:translateY(0) rotate(0deg);} 50%{ transform:translateY(-5px) rotate(-3deg);} }
  @keyframes botEye{ 0%,42%,100%{ transform:scaleY(1);} 46%,50%{ transform:scaleY(.1);} }
  @keyframes antTwitch{ 0%,100%{ transform:rotate(0);} 50%{ transform:rotate(8deg);} }
  @keyframes spinSlow{ to{ transform:rotate(360deg);} }
  @keyframes pulseRing{ 0%{ transform:scale(.85); opacity:.6;} 100%{ transform:scale(1.7); opacity:0;} }
  @keyframes floatChip{ 0%,100%{ transform:translateY(0) rotate(0);} 50%{ transform:translateY(-14px) rotate(8deg);} }
  @keyframes wiggle{ 0%,100%{ transform:rotate(0);} 25%{ transform:rotate(-13deg);} 75%{ transform:rotate(13deg);} }
  @keyframes wave{ 0%,100%{ transform:rotate(10deg);} 50%{ transform:rotate(-30deg);} }
  @keyframes kissFloat{ 0%{ opacity:0; transform:translate(0,0) scale(0.4) rotate(0);} 18%{ opacity:1; transform:translate(calc(var(--kx) * 0.4), calc(var(--ky) * 0.4)) scale(1.15) rotate(calc(var(--kr) * 0.5));} 100%{ opacity:0; transform:translate(var(--kx), var(--ky)) scale(0.7) rotate(var(--kr));} }
  @keyframes handShake{ 0%,100%{ transform:rotate(8deg) scaleX(2.4) translateY(0);} 50%{ transform:rotate(8deg) scaleX(2.4) translateY(-3px);} }
  @keyframes confettiFall{ 0%{ opacity:0; transform:translateY(-20px) rotate(0);} 10%{ opacity:1;} 100%{ opacity:0; transform:translateY(100vh) rotate(var(--cr));} }
  @keyframes partyHue{ 0%{ filter:hue-rotate(0deg) saturate(1);} 50%{ filter:hue-rotate(160deg) saturate(1.45);} 100%{ filter:hue-rotate(360deg) saturate(1);} }
  @media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } *{ animation-duration:.001ms !important; animation-delay:0s !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; transition-delay:0s !important; } }
  @media (max-width: 820px){ [data-topcats]{ display:none !important; } }
  @media (max-width: 760px){ [data-herocue]{ display:none !important; } }

  /* ===========================================================================
     Feature 004 — sanctioned body-content semantic styling (Constitution v1.4.0,
     Principle III bounded exception). New classes ONLY, scoped to #blog-root,
     colors drawn from the design bundle's existing palette; no new web font, no
     new color system. Page chrome/layout/portfolio unaffected.
     =========================================================================== */
  /* syntax-highlighting tokens (mono code; default plain text stays #9FE9C8 from <pre>) */
  #blog-root .tok-comment{ color:#8A9A92; font-style:italic; } /* 005: lifted from #66756F for ≥4.5:1 contrast */
  #blog-root .tok-keyword{ color:#34E6A0; }
  #blog-root .tok-string{ color:#E7D2A6; }
  #blog-root .tok-number{ color:#b388ff; }
  #blog-root .tok-function{ color:#7DF0C2; }
  #blog-root .tok-type{ color:#ffd166; }
  #blog-root .tok-builtin{ color:#46a8e0; }
  #blog-root .tok-operator{ color:#9FB0AA; }
  #blog-root .tok-tag{ color:#34E6A0; }
  #blog-root .tok-attr{ color:#ffd166; }
  #blog-root .tok-meta{ color:#9FB0AA; }
  /* line-emphasis (emitted only when a code block requests {n} lines) */
  #blog-root pre .cl{ display:block; min-height:1.7em; }
  #blog-root pre .cl--hl{ background:rgba(52,230,160,0.10); box-shadow:inset 3px 0 0 #34E6A0; margin:0 -20px; padding:0 20px; }
  /* callouts / admonitions */
  #blog-root .callout{ margin:30px 0 0; padding:14px 18px 16px; border:1px solid rgba(255,255,255,0.08); border-left-width:3px; border-radius:14px; background:rgba(255,255,255,0.02); }
  #blog-root .callout__head{ display:flex; align-items:center; gap:9px; margin-bottom:6px; font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:14px; letter-spacing:.01em; }
  #blog-root .callout__icon{ font-size:14px; line-height:1; }
  #blog-root .callout__body{ color:#C2CDC8; font-size:clamp(15px,1.9vw,17px); line-height:1.7; }
  #blog-root .callout--note{ border-left-color:#46a8e0; }     #blog-root .callout--note .callout__head{ color:#8fd0f2; }
  #blog-root .callout--tip{ border-left-color:#34E6A0; }      #blog-root .callout--tip .callout__head{ color:#7DF0C2; }
  #blog-root .callout--warning{ border-left-color:#ffd166; }  #blog-root .callout--warning .callout__head{ color:#ffd166; }
  #blog-root .callout--important{ border-left-color:#b388ff; }#blog-root .callout--important .callout__head{ color:#c6a6ff; }
  #blog-root .callout--caution{ border-left-color:#ff8a80; }  #blog-root .callout--caution .callout__head{ color:#ff8a80; }
  /* footnotes */
  #blog-root .footnotes{ margin:48px 0 0; }
  #blog-root .footnotes__rule{ border:0; border-top:1px solid rgba(255,255,255,0.08); margin:0 0 14px; }
  #blog-root .footnotes__list{ margin:0; padding-left:22px; color:#9FB0AA; font-size:14px; line-height:1.7; }
  #blog-root .footnotes__item{ margin:0 0 6px; }
  #blog-root .fnref{ font-size:.72em; line-height:0; }
  #blog-root .fnref a{ color:#34E6A0; text-decoration:none; padding:0 2px; }
  #blog-root .fn-back{ color:#34E6A0; text-decoration:none; margin-left:6px; }
  /* refined blockquote (decorative quote mark = SAND metadata, not green) + table */
  #blog-root .pquote{ position:relative; }
  #blog-root .pquote::before{ content:"\201C"; position:absolute; left:-6px; top:-14px; font-family:var(--font-display); font-size:56px; line-height:1; color:var(--sand-deep); opacity:.30; pointer-events:none; } /* 005: sand mark hanging into the gutter */
  #blog-root .mdtable{ font-variant-numeric:tabular-nums; } /* 005: align numeric columns */
  #blog-root .mdtable tbody tr:hover{ background:rgba(231,210,166,0.05); } /* 005: warm zebra-hover, not cool */

  /* ===========================================================================
     Feature 005 — "Field Almanac" fingerprint classes (all under #blog-root,
     token-driven). Editorial-index rows, typographic code frame, hairline
     dividers, gutter rail, pressed-ink surfaces, section-level reveal. These
     shed: uniform card grid, fake window chrome, glow-on-static, eyebrow-
     everywhere, reveal-on-everything. Robots/behaviour untouched.
     =========================================================================== */
  /* hairline divider + one green square anchor (replaces mono-cap eyebrows) */
  #blog-root .fa-rule{ display:flex; align-items:center; gap:var(--space-sm); margin:var(--space-md) 0; }
  #blog-root .fa-rule::before{ content:""; width:8px; height:8px; flex:none; background:var(--signal); box-shadow:0 0 0 1px rgba(52,230,160,.3); }
  #blog-root .fa-rule::after{ content:""; flex:1; height:1px; background:var(--rule-strong); }
  #blog-root .fa-kicker{ font-family:var(--font-mono); font-size:var(--text-meta); letter-spacing:.02em; color:var(--sand-deep); } /* motivated CLI/meta kicker; sand, not green */
  /* editorial index (replaces the uniform equal-weight card grid) */
  #blog-root .ei{ display:flex; flex-direction:column; border-top:1px solid var(--rule); }
  #blog-root .ei__row{ all:unset; box-sizing:border-box; cursor:pointer; display:grid; grid-template-columns:1fr auto; gap:var(--space-2xs) var(--space-md); align-items:baseline; padding:var(--space-md) var(--space-2xs); border-bottom:1px solid var(--rule); transition:background var(--dur-2) var(--ease-out); }
  #blog-root .ei__row:hover{ background:var(--paper-2); }
  #blog-root .ei__row:focus-visible{ outline:2px solid var(--signal) !important; outline-offset:-2px; }
  #blog-root .ei__title{ font-family:var(--font-display); font-weight:600; font-size:1.125rem; letter-spacing:-.015em; color:var(--ink); grid-column:1; }
  #blog-root .ei__row:hover .ei__title{ color:var(--mint); }
  #blog-root .ei__dek{ grid-column:1; color:var(--muted); font-size:.95rem; line-height:1.5; }
  #blog-root .ei__meta{ grid-column:2; grid-row:1; font-family:var(--font-mono); font-size:var(--text-meta); font-variant-numeric:tabular-nums; color:var(--sand-deep); white-space:nowrap; }
  #blog-root .ei__lead .ei__title{ font-size:clamp(1.4rem,3vw,2rem); }
  #blog-root .ei__lead{ padding-block:var(--space-lg); }
  /* typographic code frame (replaces fake macOS window chrome) */
  #blog-root .cf{ margin:var(--space-md) 0 0; border:1px solid var(--rule-strong); border-radius:12px; overflow:hidden; background:var(--paper-2); box-shadow:inset 0 1px 0 rgba(231,210,166,.06); }
  #blog-root .cf__bar{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-sm); padding:var(--space-2xs) var(--space-sm); border-bottom:1px solid var(--rule); font-family:var(--font-mono); font-size:var(--text-meta); }
  #blog-root .cf__name{ color:var(--sand); }
  #blog-root .cf__lang{ color:var(--muted-2); text-transform:lowercase; }
  #blog-root .cf > pre{ margin:0; border:0; border-radius:0; background:transparent; }
  /* pressed-ink surface (tactile elevation on dark stock — inset, not glow) */
  #blog-root .press{ background:var(--paper-2); border:1px solid var(--rule); border-radius:14px; box-shadow:inset 0 1px 0 rgba(231,210,166,.06); }
  /* gutter rail (body-level micro-meta lives here, not eyebrows) */
  #blog-root .rail{ position:relative; }
  #blog-root .rail__mark{ font-family:var(--font-mono); font-size:var(--text-meta); color:var(--sand-deep); font-variant-numeric:tabular-nums; }
  /* section-level reveal (one draw per section, not per element) */
  #blog-root [data-fa-reveal]{ opacity:0; transform:translateY(18px); transition:opacity var(--dur-3) var(--ease-out), transform var(--dur-3) var(--ease-out); }
  #blog-root [data-fa-reveal].is-in{ opacity:1; transform:none; }
  @media (prefers-reduced-motion: reduce){ #blog-root [data-fa-reveal]{ opacity:1 !important; transform:none !important; } }