/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/06d7accb-031f-4ab7-a8de-0251c4cf3282.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/246de15d-9957-443f-a1ca-e745caf7a04a.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/edecebb3-92ca-4805-9fbf-5fae3be0eb70.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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/b8b3d40f-7f78-4910-b620-573932ce48bb.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/e86adf3f-9fd3-4fd2-bc85-a6a45887e86e.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/34a1719f-5eca-45ee-a809-571f885b9563.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/a5823cb0-7534-4aed-b994-487f3753853d.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/076f508f-5209-48f3-9bd1-b89005a362c6.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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("fonts/b8092f83-03f0-4c26-8dfb-97cc2a61e0f2.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/a9873780-648e-4eff-b30d-25aaecb4fe5a.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: 600;
  font-display: swap;
  src: url("fonts/d5cb73a4-f19d-4d8e-af95-687d4a588679.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: 600;
  font-display: swap;
  src: url("fonts/9095676f-f60f-47bc-a532-cb4c5cccb208.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/3e4b8d6e-11c2-404e-8113-86e92e8e1283.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: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("fonts/21c47533-c6ff-44bf-aa79-4852a970ba20.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: 600;
  font-display: swap;
  src: url("fonts/3b2964d5-bbde-4b44-a797-c37dc4590a84.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("fonts/2735834d-af35-4aee-bd06-1515ea3b7f20.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("fonts/2d9da705-7782-4609-9dc9-407b22be0856.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("fonts/96de0b33-51c8-48a5-8aa4-0d8fb6e06792.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("fonts/5fb93976-4dff-43f0-8a75-a4027c91945a.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("fonts/938d1f83-46bf-4554-ae53-3d33a8212952.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("fonts/d4b83eaf-fd62-4477-b579-bbb24a421916.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("fonts/2735834d-af35-4aee-bd06-1515ea3b7f20.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("fonts/2d9da705-7782-4609-9dc9-407b22be0856.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("fonts/96de0b33-51c8-48a5-8aa4-0d8fb6e06792.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("fonts/5fb93976-4dff-43f0-8a75-a4027c91945a.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("fonts/938d1f83-46bf-4554-ae53-3d33a8212952.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("fonts/d4b83eaf-fd62-4477-b579-bbb24a421916.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("fonts/2735834d-af35-4aee-bd06-1515ea3b7f20.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("fonts/2d9da705-7782-4609-9dc9-407b22be0856.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("fonts/96de0b33-51c8-48a5-8aa4-0d8fb6e06792.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("fonts/5fb93976-4dff-43f0-8a75-a4027c91945a.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("fonts/938d1f83-46bf-4554-ae53-3d33a8212952.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("fonts/d4b83eaf-fd62-4477-b579-bbb24a421916.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("fonts/2735834d-af35-4aee-bd06-1515ea3b7f20.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("fonts/2d9da705-7782-4609-9dc9-407b22be0856.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("fonts/96de0b33-51c8-48a5-8aa4-0d8fb6e06792.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("fonts/5fb93976-4dff-43f0-8a75-a4027c91945a.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("fonts/938d1f83-46bf-4554-ae53-3d33a8212952.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("fonts/d4b83eaf-fd62-4477-b579-bbb24a421916.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("fonts/3e729731-ca18-4aa8-9ca1-bd0ea0ce7831.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("fonts/da5f571e-6328-44b1-9e4e-af87dc059730.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("fonts/2ed48ca5-6a2f-4194-82bb-5814f04ca344.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("fonts/3e729731-ca18-4aa8-9ca1-bd0ea0ce7831.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("fonts/da5f571e-6328-44b1-9e4e-af87dc059730.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("fonts/2ed48ca5-6a2f-4194-82bb-5814f04ca344.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("fonts/3e729731-ca18-4aa8-9ca1-bd0ea0ce7831.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("fonts/da5f571e-6328-44b1-9e4e-af87dc059730.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("fonts/2ed48ca5-6a2f-4194-82bb-5814f04ca344.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:#f4f2ed;
  --surface:#ffffff;
  --surface-2:#faf9f6;
  --ink:#1a1814;
  --ink-2:#56534b;
  --ink-3:#8b887e;
  --line:#e6e3db;
  --line-2:#f0eee8;
  --accent:oklch(0.62 0.145 42);
  --accent-ink:oklch(0.50 0.135 40);
  --accent-soft:color-mix(in srgb, var(--accent) 11%, var(--surface));
  --accent-line:color-mix(in srgb, var(--accent) 26%, var(--surface));
  --inkblock:#191814;
  --positive:oklch(0.55 0.13 152);
  --positive-soft:oklch(0.95 0.04 152);
  --star:oklch(0.72 0.15 75);
  --cn:oklch(0.68 0.16 55);
  --danger:oklch(0.55 0.17 25);
  --radius:12px;
  --radius-sm:8px;
  --shadow:0 1px 2px rgba(26,24,20,.05), 0 2px 8px rgba(26,24,20,.04);
  --maxw:1440px;
  --font-display:"Space Grotesk","PingFang SC","Microsoft YaHei",sans-serif;
  --font-ui:"Manrope","PingFang SC","Microsoft YaHei",-apple-system,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--font-ui);background:var(--paper);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased;line-height:1.5}
.app{background:var(--paper);min-height:100vh;color:var(--ink)}
.app.dark{
  --paper:#15140f; --surface:#1f1d17; --surface-2:#1a1813;
  --ink:#f3f1ea; --ink-2:#b8b4a8; --ink-3:#86837a;
  --line:#332f26; --line-2:#26241d;
  --positive:oklch(0.72 0.13 152);
  --positive-soft:color-mix(in srgb, var(--positive) 18%, var(--surface));
  --accent-soft:color-mix(in srgb, var(--accent) 22%, var(--surface));
  --accent-line:color-mix(in srgb, var(--accent) 42%, var(--surface));
  --inkblock:#0e0d09;
}
.app.dark .badge.cn{background:color-mix(in srgb, var(--cn) 22%, var(--surface))}
.app.dark .logomark{filter:brightness(.92)}
button{font-family:inherit;cursor:pointer}
a{color:inherit;text-decoration:none}
.num{font-family:var(--font-mono);font-feature-settings:"tnum" 1;letter-spacing:-.02em}

/* ===== header ===== */
.site-head{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.util-bar{background:var(--inkblock);color:#fff}
.util-inner{max-width:var(--maxw);margin:0 auto;padding:0 22px;height:34px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.util-bar .upd{color:rgba(255,255,255,.62)}
.util-bar .upd .dot{box-shadow:0 0 0 3px rgba(255,255,255,.12)}
.meta-nav{display:flex;align-items:center;gap:4px}
.meta-link{border:0;background:none;color:rgba(255,255,255,.72);font-size:12.5px;font-weight:600;padding:5px 10px;border-radius:7px;font-family:inherit;white-space:nowrap}
.meta-link:hover{color:#fff;background:rgba(255,255,255,.08)}
.meta-link.on{color:#fff;background:rgba(255,255,255,.14)}
.head-inner{max-width:var(--maxw);margin:0 auto;padding:0 22px;height:58px;display:flex;align-items:center;gap:22px}
.brand{display:flex;align-items:baseline;gap:10px;flex-shrink:0}
.brand-mark{font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:-.04em;color:var(--ink)}
.brand-sub{font-size:11.5px;color:var(--ink-3);font-weight:500;letter-spacing:.02em}
.head-search{flex:1;max-width:560px;display:flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:0 12px;height:38px;color:var(--ink-3);transition:border-color .15s,box-shadow .15s}
.head-search:focus-within{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
.head-search input{flex:1;border:0;background:none;outline:none;font-family:inherit;font-size:13.5px;color:var(--ink)}
.head-search kbd{font-family:var(--font-mono);font-size:11px;color:var(--ink-3);border:1px solid var(--line);border-radius:5px;padding:1px 6px;background:var(--surface)}
.head-right{display:flex;align-items:center;gap:16px;flex-shrink:0}
.upd{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.upd .dot{width:7px;height:7px;border-radius:50%;background:var(--positive);box-shadow:0 0 0 3px var(--positive-soft)}
.lang-toggle{display:flex;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:2px;margin-left:8px}
.lang-toggle button{border:0;background:none;font-size:12px;font-weight:600;color:rgba(255,255,255,.7);padding:3px 9px;border-radius:6px;font-family:inherit}
.lang-toggle button.on{background:#fff;color:var(--ink)}

/* ===== category nav ===== */
.cat-nav{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:92px;z-index:40}
.cat-nav-inner{max-width:var(--maxw);margin:0 auto;padding:0 22px;display:flex;gap:4px;overflow-x:auto;scrollbar-width:thin}
.cat-nav-inner::-webkit-scrollbar{height:0}
.cat-pill{flex-shrink:0;display:flex;align-items:center;gap:7px;border:0;background:none;color:var(--ink-2);font-size:13px;font-weight:600;padding:13px 12px;border-bottom:2px solid transparent;white-space:nowrap;transition:color .12s}
.cat-pill em{font-family:var(--font-mono);font-style:normal;font-size:10.5px;color:var(--ink-3);font-weight:500}
.cat-pill:hover{color:var(--ink)}
.cat-pill.on{color:var(--accent-ink);border-bottom-color:var(--accent)}
.cat-pill.on em{color:var(--accent)}
.cat-pill.tool{color:var(--accent-ink)}

.page{max-width:var(--maxw);margin:0 auto;padding:22px}

/* ===== category hero ===== */
.cat-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:16px;flex-wrap:wrap}
.cat-hero h1{font-family:var(--font-display);font-size:30px;font-weight:700;letter-spacing:-.03em;margin:0;display:flex;align-items:baseline;gap:12px}
.ch-count{font-family:var(--font-mono);font-size:16px;color:var(--accent);font-weight:600}
.ch-desc{margin:7px 0 0;color:var(--ink-2);font-size:13.5px;max-width:560px}
.ch-stats{display:flex;gap:10px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 16px;text-align:center}
.stat b{display:block;font-family:var(--font-mono);font-size:17px;font-weight:600;color:var(--ink)}
.stat span{font-size:10.5px;color:var(--ink-3)}

.fav-bar{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.fav-toggle{display:flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 13px;font-size:12.5px;font-weight:600;color:var(--ink-2);white-space:nowrap}
.fav-toggle.on{background:var(--star);border-color:var(--star);color:#fff}
.fav-hint{font-size:12px;color:var(--ink-3)}

/* ===== listing layout ===== */
.listing{display:grid;grid-template-columns:248px 1fr;gap:18px;align-items:start}
@media(max-width:980px){.listing{grid-template-columns:1fr}}

/* ----- filter rail ----- */
.rail{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:6px 16px 16px;position:sticky;top:140px}
.rail-head{display:flex;justify-content:space-between;align-items:center;padding:12px 0 10px;border-bottom:1px solid var(--line-2);margin-bottom:10px}
.rail-title{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-weight:600;font-size:14px}
.rail-reset{border:0;background:none;color:var(--accent);font-size:12px;font-weight:600}
.f-block{padding:11px 0;border-bottom:1px solid var(--line-2)}
.f-block:last-of-type{border-bottom:0}
.f-label{font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}
.f-chips{display:flex;flex-wrap:wrap;gap:6px}
.f-chips.col{flex-direction:column}
.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-size:12px;font-weight:500;padding:5px 11px;border-radius:8px;display:inline-flex;align-items:center;gap:6px;transition:all .12s;line-height:1.2;white-space:nowrap}
.chip:hover{border-color:var(--accent-line);color:var(--ink)}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.chip.wide{width:100%;justify-content:flex-start}
.chip em{font-family:var(--font-mono);font-style:normal;font-size:10.5px;margin-left:auto;opacity:.7}
.f-select{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;font-size:12.5px;color:var(--ink-2)}
.f-select:last-child{margin-bottom:0}
.f-select select{font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:5px 8px;background:var(--surface);color:var(--ink);min-width:96px}
.f-price{display:flex;align-items:center;gap:8px}
.f-price input{width:100%;font-family:var(--font-mono);font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:6px 9px;background:var(--surface);color:var(--ink);outline:none}
.f-price input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
.f-price span{color:var(--ink-3)}
.rail-foot{margin-top:14px;padding-top:12px;border-top:1px solid var(--line-2);font-size:12px;color:var(--ink-3);text-align:center}

/* ----- results ----- */
.results{min-width:0}
.results-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px}
.res-count{font-size:13px;color:var(--ink-2)}
.res-count b{font-family:var(--font-mono);color:var(--ink)}
.res-sort{font-size:12.5px;color:var(--ink-3);display:flex;align-items:center;gap:8px}
.res-sort select{font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:5px 9px;background:var(--surface);color:var(--ink)}
.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}
.results-table{width:100%;border-collapse:collapse}
.results-table thead th{background:var(--surface-2);border-bottom:1px solid var(--line);padding:10px 7px;font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;text-align:right;white-space:nowrap}
.results-table thead th.left{text-align:left}
.td-fav{text-align:center;width:34px}
.results-table thead th.th-provider{width:auto}
.th-sort{border:0;background:none;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;display:inline-flex;align-items:center;gap:3px;margin-left:auto}
.th-sort .caret{opacity:.35;display:inline-flex}
.th-sort .caret.active{opacity:1;color:var(--accent)}
.results-table tbody td{padding:11px 7px;border-bottom:1px solid var(--line-2);font-size:13px;text-align:right;vertical-align:middle;color:var(--ink)}
.results-table tbody tr{cursor:pointer;transition:background .1s}
.results-table tbody tr:hover{background:var(--accent-soft)}
.results-table tbody tr:last-child td{border-bottom:0}
.results-table tbody td:first-child,.results-table thead th:first-child{padding-left:12px}
.results-table tbody td:last-child,.results-table thead th:last-child{padding-right:12px}
.fav{border:0;background:none;color:var(--ink-3);display:inline-flex;padding:3px;border-radius:6px}
.fav:hover{color:var(--star)}
.fav.on{color:var(--star)}
.td-provider.left{text-align:left;min-width:200px}
.prov-row{display:flex;align-items:center;gap:11px}
.logomark{font-family:var(--font-display);font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.prov-name{font-weight:700;font-size:13.5px;display:flex;align-items:center;gap:7px}
.prov-rv{font-size:10px;font-weight:700;color:var(--positive);background:var(--positive-soft);padding:1px 6px;border-radius:5px}
.prov-desc{font-size:11.5px;color:var(--ink-3);margin-top:2px}
.net-tag{font-family:var(--font-mono);font-size:10.5px;font-weight:500;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-line);padding:2px 7px;border-radius:6px;white-space:nowrap}
.td-net{text-align:left}
.td-country{text-align:right;font-size:12.5px}
.td-country .city{display:block;font-size:10.5px;color:var(--ink-3)}
.td-price{white-space:nowrap}
.price{font-family:var(--font-mono);font-weight:600;color:var(--positive);font-size:14px}
.price-u{font-size:10px;color:var(--ink-3);margin-left:2px}
.rating{font-weight:600;font-size:13.5px}
.td-cn{text-align:right}
.cn-stars{display:inline-flex;gap:1px;vertical-align:middle}
.td-cta{text-align:right}
.visit{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:var(--accent);border:1px solid var(--accent-line);background:var(--accent-soft);padding:5px 11px;border-radius:8px;white-space:nowrap}
.visit:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.src{font-size:10px;font-weight:600;padding:1px 7px;border-radius:5px}
.src-review{color:var(--positive);background:var(--positive-soft)}
.src-manual{color:var(--accent-ink);background:var(--accent-soft)}
.src-crawl{color:var(--ink-3);background:var(--surface-2);border:1px solid var(--line)}
.empty{padding:48px;text-align:center;color:var(--ink-3);font-size:14px}
/* ===== global search ===== */
.head-search .sicon{display:flex;cursor:pointer;color:var(--ink-3)}
.head-search .sicon:hover{color:var(--accent)}
.search-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.search-card{display:flex;align-items:flex-start;gap:12px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;cursor:pointer;transition:border-color .12s,transform .12s}
.search-card:hover{border-color:var(--accent-line);transform:translateY(-1px)}
.search-card .sc-main{flex:1;min-width:0}
.search-card .sc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.search-card .sc-name{font-weight:700;font-size:14px}
.search-card .sc-cat{font-size:10.5px;font-weight:600;color:var(--accent-ink);background:var(--accent-soft);padding:1px 7px;border-radius:6px}
.search-card .sc-desc{font-size:12px;color:var(--ink-3);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-card .sc-meta{display:flex;align-items:center;gap:10px;margin-top:7px;font-size:12px}
.search-card .sc-price{font-family:var(--font-mono);font-weight:600;color:var(--positive)}
.search-card .sc-rating{font-family:var(--font-mono);font-weight:600;color:var(--ink-2)}
.search-group-label{font-family:var(--font-display);font-size:13px;font-weight:600;color:var(--ink-3);margin:18px 0 10px;text-transform:uppercase;letter-spacing:.05em}
/* active filters bar */
.active-filters{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:10px}
.af-label{font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}
.af-chip{display:inline-flex;align-items:center;gap:5px;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-ink);font-size:12px;font-weight:600;padding:4px 9px;border-radius:8px}
.af-chip:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.af-clear{border:0;background:none;color:var(--ink-3);font-size:12px;font-weight:600;text-decoration:underline;padding:4px}
.af-clear:hover{color:var(--danger)}
/* compare tray */
.compare-tray{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:60;display:flex;align-items:center;gap:14px;background:var(--inkblock);color:#fff;border-radius:14px;padding:11px 14px 11px 18px;box-shadow:0 10px 34px rgba(0,0,0,.3);max-width:calc(100vw - 28px)}
.compare-tray .ct-label{font-size:13px;font-weight:600;white-space:nowrap;color:rgba(255,255,255,.8)}
.compare-tray .ct-label b{color:#fff;font-family:var(--font-mono)}
.ct-items{display:flex;gap:7px;overflow-x:auto}
.ct-item{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.1);border-radius:8px;padding:4px 6px 4px 4px;font-size:12px;font-weight:600;white-space:nowrap}
.ct-item button{border:0;background:none;color:rgba(255,255,255,.6);display:flex;padding:0}
.ct-item button:hover{color:#fff}
.ct-go{border:0;background:var(--accent);color:#fff;font-weight:700;font-size:13px;padding:8px 16px;border-radius:9px;white-space:nowrap}
.ct-go:hover{background:#fff;color:var(--ink)}
.ct-clear{border:0;background:none;color:rgba(255,255,255,.55);display:flex;padding:4px}
.ct-clear:hover{color:#fff}
@media(max-width:640px){.compare-tray{flex-wrap:wrap;left:8px;right:8px;transform:none;max-width:none}.ct-items{order:3;flex-basis:100%}}
.cell-tags{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-start}
.td-net .cell-tags{justify-content:flex-start}
.empty-cat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:48px 32px;text-align:center;max-width:560px;margin:8px auto}
.empty-cat-icon{width:56px;height:56px;border-radius:14px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}
.empty-cat h3{font-family:var(--font-display);font-size:18px;margin:0 0 8px}
.empty-cat p{color:var(--ink-2);font-size:13.5px;line-height:1.6;margin:0 auto 18px;max-width:420px}
.empty-cat-links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.empty-cat-links .visit{cursor:pointer}

/* ===== detail ===== */
.detail{}
.crumb{display:flex;align-items:center;gap:14px;margin-bottom:16px;font-size:12.5px;color:var(--ink-3)}
.crumb button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.crumb button:hover{border-color:var(--accent-line);color:var(--accent)}
.crumb-path b{color:var(--ink)}
.detail-grid{display:grid;grid-template-columns:1fr 320px;gap:18px;align-items:start}
@media(max-width:900px){.detail-grid{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:16px}
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.card-head h2{font-family:var(--font-display);font-size:16px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px}
.hero-top{display:flex;align-items:flex-start;gap:16px}
.hero-titles{flex:1;min-width:0}
.hero-badges{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.badge{font-size:11px;font-weight:600;padding:3px 9px;border-radius:7px}
.badge.cat{color:var(--accent-ink);background:var(--accent-soft)}
.badge.sub{color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line)}
.badge.hq{color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line)}
.badge.cn{color:var(--cn);background:oklch(0.96 0.04 55)}
.hero h1{font-family:var(--font-display);font-size:28px;font-weight:700;letter-spacing:-.03em;margin:0}
.plan{color:var(--ink-2);font-size:14px;margin:4px 0 0}
.fav.lg{border:1px solid var(--line);border-radius:9px;padding:8px;height:fit-content}
.fav.lg.on{border-color:var(--star);background:oklch(0.97 0.04 75)}
.rating-line{display:flex;align-items:center;gap:8px;margin:16px 0;padding:14px 0;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.starrow{display:inline-flex;gap:2px}
.rating-line b{font-family:var(--font-mono);font-size:20px;font-weight:600}
.rating-line span{color:var(--ink-3);font-size:13px}
.rating-line .rev-count{color:var(--ink-3)}
.cn-inline{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2)}
.kv-grid{display:grid;grid-template-columns:96px 1fr;gap:11px 16px;font-size:13.5px}
.kv-k{color:var(--ink-3);font-weight:500}
.kv-v{color:var(--ink);font-weight:500}
.about-p{color:var(--ink-2);font-size:14px;line-height:1.7;margin:0}

/* review */
.review .rv-meta{margin-left:auto;font-size:11px;color:var(--star);background:oklch(0.97 0.04 75);padding:3px 9px;border-radius:6px}
.rv-block{margin-bottom:18px}
.rv-block h3{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--accent-ink);margin:0 0 7px}
.rv-block p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.8}
.proscons{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:560px){.proscons{grid-template-columns:1fr}}
.proscons ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.proscons li{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--ink-2);line-height:1.5}
.pros li svg{color:var(--positive);flex-shrink:0;margin-top:2px}
.cons li svg{color:var(--danger);flex-shrink:0;margin-top:2px}
.rv-disc{margin:6px 0 0;font-size:11.5px;color:var(--ink-3);border-top:1px dashed var(--line);padding-top:12px}

/* faq */
.faq{display:flex;flex-direction:column}
.faq-item{border-bottom:1px solid var(--line-2)}
.faq-item:last-child{border-bottom:0}
.faq-q{width:100%;border:0;background:none;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;font-size:14px;font-weight:600;color:var(--ink);text-align:left}
.faq-item.open{}
.faq-a{padding:0 0 16px;color:var(--ink-2);font-size:13.5px;line-height:1.7}

/* sidebar */
.detail-side{position:sticky;top:140px}
.cta-card{padding:20px}
.price-big{font-family:var(--font-mono);font-size:30px;font-weight:600;color:var(--positive)}
.price-big .pm{font-size:14px;color:var(--ink-3);font-family:var(--font-ui)}
.price-year{font-size:12px;color:var(--ink-3);margin-top:3px}
.cta-go{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:#fff;font-weight:700;font-size:14.5px;padding:13px;border-radius:10px;margin-top:16px;transition:background .15s}
.cta-go:hover{background:var(--accent-ink)}
.cta-note{text-align:center;font-size:11px;color:var(--ink-3);margin-top:8px}
.cta-compare{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-weight:600;font-size:13px;padding:10px;border-radius:9px}
.cta-compare:hover{border-color:var(--accent-line);color:var(--accent)}
.cta-compare.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.sim-list{list-style:none;margin:0;padding:0}
.sim-list li{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line-2);cursor:pointer}
.sim-list li:last-child{border-bottom:0}
.sim-list li:hover .sim-name{color:var(--accent)}
.sim-main{flex:1;min-width:0}
.sim-name{font-weight:600;font-size:13px}
.sim-meta{font-size:11px;color:var(--ink-3);margin-top:2px}
.sim-price{font-weight:600;color:var(--positive);font-size:12.5px}

/* ghost link in fav bar */
.ghost-link{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:7px 12px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.ghost-link:hover{border-color:var(--accent-line);color:var(--accent)}

/* ===== shared sub-page head ===== */
.page-head{margin-bottom:20px}
.page-head .eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.page-head h1{font-family:var(--font-display);font-size:32px;font-weight:700;letter-spacing:-.03em;margin:6px 0 0}
.page-head p{color:var(--ink-2);font-size:14.5px;margin:8px 0 0;max-width:680px;line-height:1.65}

/* ===== config engine ===== */
.engine{display:grid;grid-template-columns:320px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.engine{grid-template-columns:1fr}}
.req-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;position:sticky;top:140px}
.req-card h2{font-family:var(--font-display);font-size:15px;margin:0 0 4px}
.req-card .req-sub{font-size:12px;color:var(--ink-3);margin:0 0 14px}
.preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:16px}
.preset{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:9px 10px;text-align:left;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.preset:hover{border-color:var(--accent-line)}
.preset.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}
.preset span{display:block;font-size:10.5px;font-weight:500;color:var(--ink-3);margin-top:2px}
.req-row{margin-bottom:15px}
.req-row .req-label{display:flex;justify-content:space-between;font-size:12.5px;font-weight:600;margin-bottom:7px;white-space:nowrap;gap:10px}
.req-row .req-val{font-family:var(--font-mono);color:var(--accent-ink)}
.slider{width:100%;-webkit-appearance:none;appearance:none;height:5px;border-radius:3px;background:var(--line);outline:none}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:17px;height:17px;border-radius:50%;background:var(--accent);cursor:pointer;border:3px solid var(--surface);box-shadow:0 0 0 1px var(--accent)}
.slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer;border:3px solid var(--surface)}
.match-summary{display:flex;align-items:baseline;gap:8px;margin-bottom:12px;font-size:13px;color:var(--ink-2)}
.match-summary b{font-family:var(--font-mono);font-size:18px;color:var(--ink)}
.match-list{display:flex;flex-direction:column;gap:10px}
.match-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;cursor:pointer;transition:border-color .12s}
.match-row:hover{border-color:var(--accent-line)}
.match-rank{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--ink-3);width:26px;text-align:center}
.match-main{min-width:0}
.match-name{font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px}
.match-specs{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-3);margin-top:3px}
.match-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.mtag{font-size:10.5px;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--positive-soft);color:var(--positive)}
.mtag.warn{background:oklch(0.96 0.04 75);color:var(--star)}
.match-right{text-align:right;min-width:110px}
.match-score{display:flex;align-items:center;gap:8px;justify-content:flex-end}
.score-bar{width:64px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.score-bar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.score-pct{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--accent-ink)}
.match-price{font-family:var(--font-mono);font-weight:600;color:var(--positive);font-size:15px;margin-top:6px}

/* ===== vps engine — master plans table (vps_engine.php) ===== */
.vpe-tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.vpe-tab{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:9px 15px;font-size:13px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:7px}
.vpe-tab:hover{border-color:var(--accent-line)}
.vpe-tab.on{background:var(--inkblock);color:#fff;border-color:var(--inkblock)}
.vpe-tab em{font-family:var(--font-mono);font-style:normal;font-size:11px;opacity:.7}

.vpe-toolbar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:2px 18px;margin-bottom:14px}
.vpe-trow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.vpe-trow:last-child{border-bottom:0}
.vpe-tlabel{font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;width:58px;flex-shrink:0}
.vpe-kw{flex:1;min-width:200px;max-width:380px;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-family:inherit;font-size:13px;background:var(--surface-2);color:var(--ink);outline:none}
.vpe-kw::placeholder{color:var(--ink-3)}
.vpe-kw:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}
.vpe-reset{border:0;background:none;color:var(--accent);font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:5px}
.vpe-spacer{flex:1;min-width:8px}
.vpe-curwrap{display:flex;align-items:center;gap:9px}
.vpe-curlabel{font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}
.vpe-cur{display:flex;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:2px}
.vpe-cur button{border:0;background:none;font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--ink-3);padding:5px 11px;border-radius:6px;display:flex;align-items:center;gap:4px}
.vpe-cur button.on{background:var(--accent);color:#fff}
.vpe-sel{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.vpe-sel select{font-family:inherit;font-size:12.5px;border:1px solid var(--line);border-radius:7px;padding:5px 9px;background:var(--surface);color:var(--ink)}
.vpe-dtype{display:flex;gap:6px;margin-left:4px}

.vpe-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px;flex-wrap:wrap;gap:8px}
.vpe-meta .vm-count{font-size:13px;color:var(--ink-2)}
.vpe-meta .vm-count b{font-family:var(--font-mono);color:var(--ink)}
.vpe-meta .vm-note{font-size:12px;color:var(--ink-3)}

.vpe-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}
.vpe-table{width:100%;border-collapse:collapse;min-width:1000px}
.vpe-table thead th{background:var(--surface-2);border-bottom:1px solid var(--line);padding:11px 10px;font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;text-align:left;white-space:nowrap}
.vpe-table thead th.r{text-align:right}
.vpe-table tbody td{padding:12px 10px;border-bottom:1px solid var(--line-2);font-size:13px;vertical-align:middle;color:var(--ink)}
.vpe-table tbody tr{cursor:pointer;transition:background .1s}
.vpe-table tbody tr:hover{background:var(--accent-soft)}
.vpe-table tbody tr:last-child td{border-bottom:0}
.vpe-table td:first-child,.vpe-table th:first-child{padding-left:16px}
.vpe-table td:last-child,.vpe-table th:last-child{padding-right:16px}
.vpe-plan{font-weight:700;font-size:13.5px;color:var(--ink);display:flex;align-items:center;gap:7px}
.vpe-plan .vpe-net{margin-left:0}
.vpe-plan small{display:block;font-weight:500;font-size:11px;color:var(--ink-3);margin-top:3px;font-family:var(--font-mono)}
.vpe-prov{display:flex;align-items:center;gap:9px}
.vpe-prov .vp-n{font-weight:600;font-size:12.5px;line-height:1.2}
.vpe-prov .vp-d{font-size:10.5px;color:var(--ink-3);font-family:var(--font-mono);margin-top:1px}
.vpe-num{font-family:var(--font-mono);font-size:12.5px;white-space:nowrap;color:var(--ink-2)}
.vpe-loc{font-size:12.5px;white-space:nowrap}
.vpe-loc small{display:block;font-size:10.5px;color:var(--ink-3)}
.vpe-mo{font-family:var(--font-mono);font-weight:600;color:var(--positive);font-size:14px;text-align:right;white-space:nowrap}
.vpe-yr{font-family:var(--font-mono);font-size:12px;color:var(--ink-2);text-align:right;white-space:nowrap}
.vpe-feat{font-size:11.5px;color:var(--ink-3);max-width:170px;line-height:1.5}
.vpe-order{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:#fff;background:var(--accent);padding:6px 13px;border-radius:8px;white-space:nowrap}
.vpe-order:hover{background:var(--accent-ink)}
.vpe-net{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-line);padding:2px 6px;border-radius:5px;white-space:nowrap}
.vpe-empty{padding:48px;text-align:center;color:var(--ink-3);font-size:14px}

.vpe-pager{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:16px;flex-wrap:wrap}
.vpe-pager button{border:1px solid var(--line);background:var(--surface);border-radius:8px;min-width:34px;height:34px;padding:0 11px;font-family:var(--font-mono);font-size:12.5px;font-weight:600;color:var(--ink-2)}
.vpe-pager button:hover:not(:disabled){border-color:var(--accent-line);color:var(--accent)}
.vpe-pager button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.vpe-pager button:disabled{opacity:.38;cursor:default}
.vpe-pager .vpe-ellip{color:var(--ink-3);padding:0 2px}
@media(max-width:640px){
  .vpe-trow{gap:8px}
  .vpe-tlabel{width:100%}
  .vpe-curwrap{margin-top:4px}
}

/* ===== compare ===== */
.cmp-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.cmp-table{border-collapse:collapse;width:100%;min-width:680px}
.cmp-table th,.cmp-table td{border-bottom:1px solid var(--line-2);padding:12px 14px;text-align:left;font-size:13px;vertical-align:middle}
.cmp-table tr:last-child td{border-bottom:0}
.cmp-attr{color:var(--ink-3);font-weight:600;font-size:12px;background:var(--surface-2);width:140px;white-space:nowrap}
.cmp-col-head{vertical-align:top;min-width:180px}
.cmp-prov{display:flex;align-items:center;gap:10px}
.cmp-prov .cmp-name{font-weight:700;font-size:14px}
.cmp-prov .cmp-plan{font-size:11px;color:var(--ink-3)}
.cmp-remove{border:0;background:none;color:var(--ink-3);padding:2px;border-radius:5px;margin-left:auto}
.cmp-remove:hover{color:var(--danger);background:var(--surface-2)}
.cmp-go{display:inline-flex;align-items:center;gap:5px;margin-top:9px;font-size:11.5px;font-weight:600;color:var(--accent);border:1px solid var(--accent-line);background:var(--accent-soft);padding:5px 10px;border-radius:7px}
.cmp-go:hover{background:var(--accent);color:#fff}
.cmp-val{font-family:var(--font-mono);font-weight:500}
.cmp-val.best{color:var(--positive);font-weight:700}
.cmp-best-tag{font-family:var(--font-ui);font-size:9.5px;font-weight:700;color:#fff;background:var(--positive);padding:1px 6px;border-radius:5px;margin-left:6px;vertical-align:middle}
.cmp-add-col{min-width:170px;vertical-align:top}
.cmp-add{width:100%;border:1.5px dashed var(--line);background:var(--surface-2);border-radius:9px;padding:16px 12px;color:var(--ink-3);font-weight:600;font-size:13px}
.cmp-add:hover{border-color:var(--accent-line);color:var(--accent)}
.cmp-picker{position:relative}
.cmp-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px;min-width:220px;max-height:300px;overflow:auto}
.cmp-menu button{display:flex;align-items:center;gap:9px;width:100%;border:0;background:none;padding:8px;border-radius:7px;text-align:left;font-size:13px;font-weight:600}
.cmp-menu button:hover{background:var(--accent-soft)}

/* ===== rankings ===== */
.rank-tabs{display:flex;gap:6px;margin-bottom:18px}
.rank-tab{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:9px 16px;font-size:13px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:7px}
.rank-tab.on{background:var(--inkblock);color:#fff;border-color:var(--inkblock)}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:14px;align-items:end;margin-bottom:18px}
@media(max-width:760px){.podium{grid-template-columns:1fr}}
.pod-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 18px;text-align:center;position:relative}
.pod-card.p1{border-color:var(--star);box-shadow:0 6px 20px oklch(0.72 0.15 75 / .18)}
.pod-medal{font-family:var(--font-display);font-weight:700;font-size:13px;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;color:#fff}
.pod-card.p1 .pod-medal{background:var(--star)}
.pod-card.p2 .pod-medal{background:#9aa0aa}
.pod-card.p3 .pod-medal{background:#c08552}
.pod-card .pod-logo{margin:0 auto 10px}
.pod-name{font-weight:700;font-size:16px;font-family:var(--font-display)}
.pod-metric{font-family:var(--font-mono);font-size:22px;font-weight:600;color:var(--accent-ink);margin:8px 0 2px}
.pod-metric small{font-size:11px;color:var(--ink-3);font-family:var(--font-ui)}
.pod-sub{font-size:11.5px;color:var(--ink-3)}
.pod-go{display:inline-block;margin-top:12px;font-size:12px;font-weight:600;color:var(--accent)}
.rank-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.rank-item{display:grid;grid-template-columns:40px auto 1fr auto auto;gap:14px;align-items:center;padding:13px 18px;border-bottom:1px solid var(--line-2);cursor:pointer}
.rank-item:last-child{border-bottom:0}
.rank-item:hover{background:var(--accent-soft)}
.rank-no{font-family:var(--font-mono);font-size:15px;font-weight:600;color:var(--ink-3)}
.rank-nm{font-weight:700;font-size:14px}
.rank-nm small{display:block;font-weight:500;font-size:11.5px;color:var(--ink-3);font-family:var(--font-ui)}
.rank-metric{font-family:var(--font-mono);font-weight:600;color:var(--accent-ink);font-size:14px;white-space:nowrap}
.rank-price{font-family:var(--font-mono);font-weight:600;color:var(--positive);font-size:13px;white-space:nowrap}

/* ===== rating methodology ===== */
.method-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:18px}
.dim-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.dim-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.dim-top h3{font-family:var(--font-display);font-size:15px;margin:0}
.dim-w{font-family:var(--font-mono);font-size:18px;font-weight:600;color:var(--accent-ink)}
.dim-bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin:8px 0 10px}
.dim-bar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.dim-card p{font-size:12.5px;color:var(--ink-2);line-height:1.6;margin:0}
.grade-row{display:flex;align-items:center;gap:14px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.grade-row:last-child{border-bottom:0}
.grade-badge{font-family:var(--font-mono);font-weight:600;font-size:14px;color:#fff;padding:4px 12px;border-radius:8px;min-width:78px;text-align:center;white-space:nowrap}
.grade-row .g-desc{font-size:13px;color:var(--ink-2)}
.grade-row .g-desc b{color:var(--ink)}

/* ===== about ===== */
.about-hero{background:var(--inkblock);color:#fff;border-radius:var(--radius);padding:44px 40px;margin-bottom:18px}
.about-hero h1{font-family:var(--font-display);font-size:34px;letter-spacing:-.03em;margin:0 0 12px}
.about-hero p{font-size:15.5px;line-height:1.75;color:rgba(255,255,255,.78);max-width:680px;margin:0}
.about-hero .accent-word{color:oklch(0.78 0.13 264)}
.about-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
@media(max-width:680px){.about-stats{grid-template-columns:1fr 1fr}}
.about-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-align:center}
.about-stat b{display:block;font-family:var(--font-mono);font-size:26px;font-weight:600;color:var(--ink)}
.about-stat span{font-size:12px;color:var(--ink-3)}
.about-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:680px){.about-cols{grid-template-columns:1fr}}
.about-card h2{font-family:var(--font-display);font-size:16px;margin:0 0 12px}
.about-card p{font-size:13.5px;color:var(--ink-2);line-height:1.7;margin:0 0 10px}
.src-chips{display:flex;flex-wrap:wrap;gap:7px}
.src-chips span{font-size:12px;font-weight:600;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);padding:5px 11px;border-radius:8px}

/* footer */
.site-foot{max-width:var(--maxw);margin:30px auto 0;padding:24px 22px;font-size:12px;color:var(--ink-3);border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}
.foot-links{display:flex;gap:6px}
.foot-links button{border:0;background:none;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--ink-2);padding:4px 8px;border-radius:6px}
.foot-links button:hover{color:var(--accent);background:var(--accent-soft)}

@media(max-width:980px){
  .results-table thead th,.rail,.detail-side{position:static}
}
.app.dense .results-table tbody td{padding-top:6px;padding-bottom:6px}
.app.dense .results-table thead th{padding-top:7px;padding-bottom:7px}
.app.dense .prov-desc{display:none}
.app.dense .logomark{display:none}
.app.dense .f-block{padding:8px 0}
.app.dense .card{padding:16px}

/* ===== mobile refinement ===== */
.rail-mtoggle{display:none}
@media(max-width:980px){
  .head-inner{padding:0 14px;gap:12px;height:54px}
  .util-inner{padding:0 14px}
  .brand-sub{display:none}
  .page{padding:14px}
  .listing,.engine{grid-template-columns:1fr;gap:14px}
  .rail,.detail-side,.req-card{position:static}
  .rail-mtoggle{display:inline-flex;align-items:center;gap:4px;margin-left:auto;border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:5px 11px;font-size:12px;font-weight:600;color:var(--ink-2)}
  .rail-reset{margin-left:12px}
  .rail .f-block,.rail .rail-foot{display:none}
  .rail.m-open .f-block{display:block}
  .rail.m-open .rail-foot{display:block}
}
@media(max-width:760px){
  .util-inner{overflow-x:auto;justify-content:flex-start;gap:10px}
  .util-bar .upd{display:none}
  .meta-nav{flex:1}
  .cat-hero{align-items:flex-start}
  .ch-stats{display:none}
}
@media(max-width:640px){
  .head-inner{flex-wrap:wrap;height:auto;padding:10px 14px;gap:10px}
  .brand{order:1}
  .lang-toggle{order:2}
  .head-search{order:3;flex-basis:100%;max-width:none}
  .cat-hero h1{font-size:24px}
  .page-head h1{font-size:25px}
  .about-hero{padding:28px 22px}
  .about-hero h1{font-size:26px}
  .about-stats{grid-template-columns:1fr 1fr}
  .fav-bar{flex-wrap:wrap;gap:8px}
  .fav-hint{flex-basis:100%}
  .results-bar{flex-wrap:wrap;gap:8px}
  .rank-item{grid-template-columns:30px auto 1fr auto;gap:10px;padding:11px 14px}
  .rank-item .rank-price{display:none}
  .method-grid{grid-template-columns:1fr 1fr}

  /* table → cards */
  .table-wrap{border:0;background:transparent;overflow:visible}
  .results-table{min-width:0}
  .results-table thead{display:none}
  .results-table tbody tr{display:block;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;padding:6px 14px 12px}
  .results-table tbody tr:hover{background:var(--surface)}
  .results-table tbody td{display:flex;justify-content:space-between;align-items:center;text-align:right;padding:8px 0;border-bottom:1px solid var(--line-2);white-space:normal}
  .results-table tbody td:last-child{border-bottom:0}
  .results-table tbody td::before{content:attr(data-label);color:var(--ink-3);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;text-align:left;white-space:nowrap;margin-right:12px}
  .results-table tbody td[data-label=""]::before{display:none}
  .results-table tbody td.td-provider{display:block;border-bottom:1px solid var(--line-2);padding:4px 44px 10px 0}
  .results-table tbody td.td-fav{position:absolute;top:10px;right:8px;padding:0;border:0;width:auto}
  .results-table tbody td.td-cta{padding-top:11px}
  .results-table tbody td.td-cta .visit{width:100%;justify-content:center;padding:9px}
  .cell-tags{justify-content:flex-end}
  .td-country .city{display:inline;margin-left:6px}
}