/* 页级样式：opensource
   本页专属的页级规则写在此处，不写进 assets/css/style.css 的页级段（那一段是存量，只减不增）。
   引用在本页 HTML 内，排在按页样式之后；版本串由内容派生，不必手改。
   本档内 @media 块须排在顶层声明之后，否则窄屏终值被源序压掉。 */

.page-os .ospage{max-width:920px;margin:0 auto;padding:var(--sp-2) var(--sp-1) 0;--foot-ink:#6f6a63;
  --gold:#b03a2e;--gold2:#8f2a20;--gold-brown:#8f2a20}

.page-os .os-hero{padding:var(--sp-5) var(--sp-2) var(--sp-4);border-top:3px solid #2b2724;position:relative}

.page-os .os-hero::before{content:'';position:absolute;top:5px;left:0;right:0;border-top:1px solid #2b2724;opacity:.5}

.page-os .os-eyebrow{font-size:12px;letter-spacing:.42em;color:#b03a2e;margin-bottom:var(--sp-2)}

.page-os .ospage h1{font-family:var(--font-serif);font-size:23px;font-weight:600;letter-spacing:.08em;margin:0 0 var(--sp-3);color:var(--ink)}

.page-os .os-lead{font-size:14px;line-height:2.05;color:#6f6a63;max-width:640px;margin:0 0 var(--sp-4)}

.page-os .os-stats{display:flex;border-top:1px solid #e8e3da}

.page-os .os-stat{flex:1;padding:var(--sp-3) var(--sp-2) var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-1)}

.page-os .os-stat+.os-stat{border-left:1px solid #e8e3da}

.page-os .os-stat b{font-family:var(--font-serif);font-size:22px;font-weight:600;color:var(--ink)}

.page-os .os-stat b i{font-style:normal;font-size:12px;color:var(--ink2);margin-left:var(--sp-1);letter-spacing:.1em}

.page-os .os-stat span{font-size:12px;color:var(--ink2);letter-spacing:.22em}

.page-os .os-sec{display:flex;align-items:baseline;gap:var(--sp-3);margin:var(--sp-5) 0 var(--sp-3)}

.page-os .os-sec b{font-family:var(--font-serif);font-size:19px;font-weight:600;letter-spacing:.14em;color:var(--ink)}

.page-os .os-sec span{font-size:12px;color:var(--ink2)}

.page-os .os-sec::after{content:'';flex:1;border-top:1px solid #e8e3da}

.page-os .os-bar{display:flex;height:12px;gap:var(--sp-1);margin:0 0 var(--sp-2)}

.page-os .os-bar span{height:100%;border-radius:0;transition:filter .15s}

.page-os .os-bar span:hover{filter:brightness(1.15)}

.page-os .os-legend{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-4);font-size:12px;color:var(--ink2);margin:0 0 var(--sp-1)}

.page-os .os-legend i{display:inline-block;width:8px;height:8px;border-radius:0;margin-right:var(--sp-2);vertical-align:0}

.page-os .os-tabs{display:flex;gap:var(--sp-4);margin:0 0 var(--sp-1);border-bottom:1px solid #e8e3da}

.page-os .os-tab{background:none;border:none;padding:0 2px 10px;font-family:inherit;font-size:14px;letter-spacing:.15em;color:var(--ink2);cursor:pointer;position:relative}

.page-os .os-tab:hover{color:var(--ink)}

.page-os .os-tab.on{color:#b03a2e}

.page-os .os-tab.on::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:#b03a2e}

@media (max-width:640px){
  .page-os .os-tabs{gap:var(--sp-2);flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .page-os .os-tab{flex:0 0 auto;white-space:nowrap}
}

.page-os .os-list{display:grid}

.page-os .os-card{display:grid;grid-template-columns:76px 1fr;gap:var(--sp-4);padding:var(--sp-4) var(--sp-2);border-bottom:1px solid #e8e3da;transition:background .15s}

.page-os .os-card:hover{background:#fbf9f3}

.page-os .os-side{text-align:right;padding-top:2px}

.page-os .os-num{font-family:var(--font-serif);font-size:24px;color:var(--ink);line-height:1;display:block;transition:color .15s}

.page-os .os-num i{font-style:normal;font-size:11px;color:var(--ink2);margin-left:var(--sp-1);letter-spacing:.08em}

.page-os .os-mini{display:block;height:3px;border-radius:0;background:#e9e4d8;margin-top:var(--sp-2);overflow:hidden}

.page-os .os-mini i{display:block;height:100%;background:#4a443c}

.page-os .os-card:hover .os-num{color:#b03a2e}

.page-os .os-top{display:flex;align-items:baseline;gap:var(--sp-2);flex-wrap:wrap}

.page-os .os-name{font-size:16px;font-weight:700;color:var(--ink);margin:0}

.page-os .os-tag{font-size:10.5px;letter-spacing:.2em;color:var(--ink2);white-space:nowrap}

.page-os .os-tag.in{color:#b03a2e}

.page-os .os-tag.ext{color:#55697a}

.page-os .os-lic{font-size:11px;color:var(--ink2);border:1px solid #e3ddcf;border-radius:0;padding:1px 7px;margin-left:auto;white-space:nowrap}

.page-os .os-row{font-size:13.5px;line-height:2;color:#6f6a63;margin:var(--sp-2) 0 0}

.page-os .os-note{font-size:12px;line-height:1.9;color:var(--ink2);margin-top:var(--sp-2)}

.page-os .os-link{color:var(--ink);text-decoration:none;border-bottom:1px solid #d8d2c6;transition:color .15s,border-color .15s}

.page-os .os-link:hover{color:#b03a2e;border-color:#b03a2e}

.page-os .os-link::after{content:' ↗';font-size:11px}

.page-os #footer .os-link::after{content:''}

.page-os .os-colophon{margin-top:var(--sp-5);border-top:3px double #2b2724;padding-top:var(--sp-3)}

.page-os .os-ct{font-size:12px;letter-spacing:.42em;color:#b03a2e;margin-bottom:var(--sp-2)}

.page-os .os-colophon p{margin:0 0 var(--sp-2);font-size:13px;line-height:2.1;color:#6f6a63}

.page-os .os-empty{grid-column:1/-1;text-align:center;color:var(--ink2);font-size:13px;padding:var(--sp-4)}

@media(max-width:640px){
  .page-os .os-hero{padding:var(--sp-4) var(--sp-1) var(--sp-3)}
  .page-os .ospage h1{font-size:23px}
  .page-os .os-card{grid-template-columns:1fr;gap:var(--sp-2)}
  .page-os .os-side{display:flex;align-items:baseline;gap:var(--sp-2);text-align:left}
  .page-os .os-mini{flex:1;margin-top:0;align-self:center}
  .page-os .os-lic{margin-left:0}
}

@media print{
  .page-os .os-tabs{display:none}
  .page-os .os-card{break-inside:avoid}
}

@media (prefers-color-scheme: dark){
  html .page-os .ospage {
    --foot-ink:#6f6a63;
    --gold:#b03a2e;
    --gold2:#8f2a20;
    --gold-brown:#8f2a20;
  }
}

/* page-font:begin */
@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/pages/opensource-0.woff2) format("woff2");unicode-range:U+4e01, U+4e0a, U+4e11, U+4e13-4e14, U+4e18-4e1a, U+4e1c, U+4e22, U+4e24, U+4e2a, U+4e2d, U+4e32, U+4e34, U+4e39, U+4e3e, U+4e49, U+4e58, U+4e5d, U+4e5f-4e60, U+4e66, U+4e71, U+4e7e, U+4e89, U+4e8b, U+4e8e-4e8f, U+4e92, U+4ea1, U+4ea4-4ea7, U+4eab-4eac, U+4eae, U+4eb2, U+4eba, U+4eca, U+4ecd-4ece, U+4ed6-4ed7, U+4ee3-4ee4, U+4ef2, U+4ef6, U+4efd, U+4eff, U+4f0f, U+4f11, U+4f18, U+4f20, U+4f24, U+4f2a, U+4f30, U+4f3c, U+4f4d, U+4f55, U+4f5c, U+4f7f, U+4f8b, U+4f9d, U+4fdd, U+4fee, U+4ff1, U+500d, U+5012, U+5019, U+501f, U+503c, U+503e, U+5047, U+504f, U+505a, U+505c, U+5065, U+50fb, U+513f, U+5141, U+5143-5145, U+514b, U+514d, U+5151, U+515c, U+5168, U+5173, U+5176-5177, U+517c, U+5185, U+518d, U+5192, U+5199, U+519b-519c, U+51a0, U+51a5, U+51ac, U+51b2-51b3, U+51b5, U+51b7, U+51c0, U+51c6, U+51cf, U+51e0-51e1, U+51ed, U+51f6, U+51fb, U+51fd, U+5203, U+5207, U+520a, U+5211, U+5217, U+5219, U+521d, U+5220, U+5224, U+522b, U+5236, U+523b, U+5256, U+526f, U+529b, U+529f-52a1, U+52a8, U+52ab, U+52bf, U+5317, U+5323, U+5339-533b, U+5343, U+5347-5348, U+534a, U+534f, U+5352, U+5357, U+5361, U+5366, U+536f, U+5373, U+5377, U+539f, U+53bb, U+53bf, U+53c9-53ca, U+53cc-53cd, U+53d1, U+53d8, U+53e0, U+53e3-53e6, U+53ea, U+53ef-53f0, U+53f2, U+53f7-53f8, U+5404, U+5409, U+5411, U+5426, U+542b, U+542f, U+543e, U+5448, U+544a, U+547c, U+548c, U+54c1, U+54c8, U+54cd, U+5510, U+552f, U+5531, U+5546, U+559c, U+560e, U+5668, U+56e0, U+56f4, U+56fa, U+56fd-56fe, U+5706, U+5708, U+5716, U+5723, U+5730, U+5740, U+5747, U+574a, U+574e, U+5750, U+5757, U+5764, U+578b, U+57ce, U+57df, U+57fa, U+5802, U+5806, U+586b, U+5883, U+5893, U+589e, U+58f0, U+58f3, U+5904, U+5907, U+590d, U+590f, U+5916, U+591a, U+591c, U+5929, U+592e, U+5931, U+5934, U+593a, U+5957, U+5973, U+597d, U+5982, U+59bb, U+59cb, U+59fb, U+5a01, U+5a04, U+5b50, U+5b58-5b59, U+5b5b-5b5c, U+5b5f, U+5b63, U+5b78, U+5b88-5b89, U+5b8b-5b8c, U+5b97-5b98, U+5b9d-5b9e, U+5ba1-5ba2, U+5bab, U+5bb3, U+5bb6, U+5bb9, U+5bbd-5bbe, U+5bc4-5bc6, U+5bd2-5bd3, U+5c04, U+5c06, U+5c0a, U+5c11, U+5c14, U+5c3a, U+5c3e, U+5c40, U+5c42, U+5c55, U+5c5e, U+5c71, U+5d0e, U+5d4c, U+5de5, U+5dee, U+5df1-5df3, U+5e02-5e03, U+5e08, U+5e0c, U+5e1d, U+5e26-5e27, U+5e38, U+5e45, U+5e61, U+5e72-5e73, U+5e76, U+5e79, U+5e7c, U+5e8f, U+5e94, U+5e99-5e9a, U+5e9c, U+5ea6-5ea7, U+5ead, U+5eb7-5eb8, U+5ef6, U+5efa, U+5f02-5f03, U+5f15, U+5f1f-5f20, U+5f31, U+5f39-5f3a, U+5f52-5f53, U+5f56, U+5f62, U+5f6d, U+5f71, U+5f80, U+5f84-5f85, U+5f8b, U+5f90, U+5f97, U+5faa, U+5fb7, U+5fbd, U+5fc3, U+5fcc, U+5fd7, U+5fe0, U+5ff5, U+6001, U+601d, U+6027, U+603b, U+6043, U+6052, U+606f, U+60c5, U+60f3, U+610f, U+614e, U+620a, U+620c, U+620f, U+6237, U+623f-6240, U+6247, U+624d, U+6251, U+6253, U+6258, U+6267, U+6269, U+626b, U+6276, U+627f-6280, U+628a, U+6291, U+6293, U+6298, U+62a4-62a5, U+62bd, U+62c6, U+62c9, U+62fc, U+6301-6302, U+6307, U+6355, U+635f, U+6362, U+6388, U+638c, U+63a7-63a8, U+63aa, U+63cf-63d0, U+63d2, U+641c, U+642c-642d, U+6447, U+64b0, U+64c5, U+64cd-64ce, U+652f, U+6536, U+6539, U+653e, U+6545, U+6548, U+6559, U+6563, U+6574, U+658b, U+6599, U+65a5, U+65ad, U+65af-65b0, U+65b9, U+65cf, U+65e0, U+65e7-65e8, U+65ec, U+65fa, U+660c, U+6620, U+6625, U+662f, U+663e, U+665a, U+666e-666f, U+667a, U+6691, U+6696, U+66b4, U+66dc, U+66f2, U+66f4, U+66ff-6700, U+6708, U+670d, U+671b, U+671d, U+671f, U+672b-672c, U+6740, U+6742-6743, U+6750, U+6761, U+6765, U+6784, U+6797, U+679a, U+67b6, U+67d3, U+67e5, U+67f1, U+6807-6808, U+680f, U+6811, U+6821, U+6837-6839, U+683c, U+6846, U+6848, U+684c, U+6865, U+68b0, U+68c0, U+68cb, U+690d, U+695a, U+6982, U+699c, U+69c3, U+69fd, U+6b21, U+6b4c, U+6b62-6b65, U+6b67, U+6b86, U+6b8a, U+6bb5, U+6bcd}
@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/pages/opensource-1.woff2) format("woff2");unicode-range:U+6bcf, U+6bd4, U+6c0f-6c10, U+6c42, U+6c47, U+6c49, U+6c60, U+6c89, U+6cbf, U+6cc4, U+6cc9, U+6ce8, U+6d17, U+6d1e, U+6d32, U+6d3b, U+6d3e, U+6d41, U+6d4f, U+6d66, U+6d6e, U+6d77, U+6d85, U+6d88-6d89, U+6dd8, U+6df7, U+6e05, U+6e0a, U+6e20, U+6e32, U+6e38, U+6e7f, U+6ed1, U+6ee1, U+6ee4, U+6ee8, U+6f14, U+6f22, U+706b, U+7070, U+707e, U+7081, U+70ed, U+715e, U+7167, U+718a, U+7199, U+71e5, U+7236, U+7247-7248, U+7252, U+7269, U+7279, U+72af, U+72b6, U+72ec, U+732e, U+7387, U+7389, U+738b, U+73af-73b0, U+73ca, U+73e0, U+73ed, U+7403, U+743c, U+7518, U+751a, U+7533, U+7535, U+7537, U+753b, U+754c, U+7559, U+7565, U+7591, U+7597, U+75c5, U+7678, U+767d-767e, U+7684, U+7686, U+76ca, U+76d6, U+76ee, U+76f2, U+76f4, U+7701, U+770b, U+771f, U+7740, U+77e5, U+77e9, U+77ed, U+7801, U+7834, U+7840, U+786e, U+788d, U+78c1, U+793a, U+793e, U+7956, U+7965, U+7978, U+7980, U+7984, U+79bb, U+79bd, U+79c0, U+79cb, U+79cd, U+79d1-79d2, U+79d8, U+79e6, U+79ef-79f0, U+79fb, U+7a0b, U+7a33, U+7a3f, U+7a81, U+7acb, U+7ad9, U+7ae0, U+7aef, U+7b14, U+7b26, U+7b2c, U+7b3a, U+7b49, U+7b56, U+7b6e, U+7b80, U+7b95, U+7ba1, U+7bad, U+7bc6-7bc7, U+7c7b, U+7c97, U+7cbe, U+7cfb, U+7d0b, U+7d20, U+7d22, U+7e41, U+7e82, U+7ea2, U+7ea6-7ea7, U+7eaa, U+7eac, U+7eaf, U+7eb2-7eb3, U+7eb9, U+7ebf, U+7ec4, U+7ec7, U+7ece, U+7ed1, U+7ed8-7ed9, U+7edc-7edd, U+7edf, U+7eed, U+7ef4, U+7efc, U+7f13, U+7f16, U+7f18, U+7f1d, U+7f29, U+7f3a, U+7f51, U+7f61, U+7f72, U+7f8e, U+8005, U+800c, U+8054, U+805a, U+80b2, U+80ce, U+80dc, U+80fd, U+8111, U+811a, U+814a, U+8179, U+81c6, U+81f3-81f4, U+820d, U+8272, U+8282, U+8292, U+82f1, U+8303, U+8305, U+8350, U+836f, U+83b7, U+8425, U+8428, U+843d, U+8499, U+865a, U+8861, U+8863, U+8865, U+8868, U+8870, U+8881, U+88ab, U+88c1, U+88c5, U+8912, U+8981, U+8986, U+89c1-89c2, U+89c4, U+89c6, U+89c8-89c9, U+89d2, U+8a00, U+8ba1-8ba2, U+8ba4, U+8bad-8bae, U+8bb0, U+8bb3, U+8bb8-8bba, U+8bbe-8bc2, U+8bc4, U+8bc6, U+8bca, U+8bcd, U+8bd1, U+8bd7, U+8bdd-8bde, U+8be2, U+8be5-8be6, U+8bed, U+8bef, U+8bf8, U+8bfb, U+8bfe, U+8c03, U+8c08, U+8c10, U+8c31, U+8c61, U+8d1f, U+8d21-8d25, U+8d28, U+8d35, U+8d39, U+8d3c, U+8d44, U+8d56, U+8d64, U+8d66, U+8d70, U+8d77, U+8d85, U+8d8a-8d8b, U+8db3, U+8ddd, U+8de8, U+8def, U+8e94, U+8eab, U+8f68, U+8f6c, U+8f6e, U+8f7b, U+8f7d, U+8f85, U+8f91, U+8f93, U+8f9b, U+8f9e-8f9f, U+8fa8, U+8fb0, U+8fb9, U+8fbe, U+8fc7, U+8fd1, U+8fd4, U+8fdb-8fdc, U+8fde, U+8fe5, U+8ff0, U+9000, U+9002, U+9006, U+9009, U+900f-9010, U+9012, U+9014, U+901a, U+901d, U+901f-9020, U+903b, U+9047, U+9075, U+907f, U+90a3, U+90b5, U+90bb, U+90dd, U+90e1, U+90fd, U+9149, U+91c7, U+91ca, U+91cc-91cf, U+91d1, U+9274, U+9488, U+94a5, U+94b1, U+94dc, U+94fe, U+9501, U+9519-951a, U+952e, U+955c, U+957f, U+95ed-95ee, U+95f0, U+95f4, U+95f8, U+9601, U+9605, U+9632, U+9635-9636, U+9645, U+9648, U+964d, U+9650, U+9662, U+9664, U+9669, U+9677, U+968f, U+96c6, U+96cd, U+96f6, U+9700, U+9732, U+9759, U+975e, U+9760, U+97e6, U+97f3, U+9879-987b, U+9886, U+9891, U+9898, U+989c-989d, U+98de-98df, U+9970, U+9976, U+9986, U+9a8c, U+9aa8, U+9ad3, U+9ad8, U+9b3c, U+9ebb, U+9ed1, U+9ed8, U+9f50, U+9f99}
/* page-font:end */
