@font-face {
  font-family: "BHE Chinese";
  src: url("assets/chinese-light.woff2") format("woff2"), url("assets/chinese-light.ttc") format("collection");
  font-style: normal;
  font-weight: 300;
  font-display: swap;
}
/* 内嵌原 CDU 字体，跨页首帧不再先显示系统备用字体。 */
@font-face {
  font-family: "BHE CDU";
  src: url("data:font/woff2;base64,d09GMgABAAAAABswABEAAAAAavwAABrOAAEAQgAAAAAAAAAAAAAAAAAAAAAAAAAAFHgGYBaLYACHGAgECYVmEQgKgZIY+XUSlVABNgIkA4NQC4FqAAQgBYcIB4NrDAgby1wF3PEeB0DlQ0Yi7MHeBID/D8cdKx8CpKzMhrs0A1cKQ5VWLc6Y0aJovVTkQD61Ru1AwigQCQlTFQ6iftGjUBMl79K8O+6vZVHT6aNIL+79c9QOOuhU/jIUFHXG42CEJLPwfO33O7vvI+IXdWui00kkSiKS1TtUPGk28/nXjfdGibyI8hIiL0AwCXxVbUcblk4d1q5iHMapo+jWn1+b75C2uKZ/agmzM8XMJ0ZaiAuRSKTlDdGclWDJsjPZ2Z0g1paah0CpeLz1kAAppgsVDzVP4Zwiqdk2i0pqilQMu3tpnZxpoAdBdK8/t3miqR043DGhmMcoWEm/VtC2VmzrFvOhVlIT8efNB/TW8d/gFMAhgz/q+r0kX+C9Hlo5mTGziuLBZFh7a7qm7dkotq2wLMDDYi97zbH4jrWISa2GEC2R66Qs/zf3nzbzswwWI9Se1btFlLU1ZnIzmQw+pAWk/LyFfEBVBlvdBWZVItdTKcpCARtRZyqEr/KlSo+bBRrA8tPB8/9TFVY3Pqrl7n9+F3cRHIQWBtDkRZbzv/SiDHUqm3VOlGw5Y8FuFlhCCjCZgEwcqwsbabubbijX9FMQH0Ozw4zrmGoEAUHNj3ZPB+bK445yskI8BWsTZ+AclxAjIWrhL3fQr8glYDG+E/UmyRfQXow6T2BAQVuA5LBRAA1sfviAkDz6BAEKIDuSy3ABCAQHmyOFiP+UoagNq5pKo9Cpl9Dmn8GksxA2I4fL5LH4bAGncOvc+YTyRPxiDYFEKFUvk6OYSCGuuS2N6deWKKV1dGV6cn3MQNHQSNNY6060p8/UTGmuo9JtYalng76NBm2y2XC3GI3TVmPbTNpuh6mdZnaZt9selb0W9lm2fw/YMP84aKNDqNBFY+ixDDjGeAITkZnEcmXWfFC42XjYeTny8XMKcAnCCwkjNoLMd1FUMXG0BEYSK4UrLYOXJcgRy2+BlG+KZCVKZRVuVR413uoafJr8WgKv/V91BHWF9IT1RRoYihqJGYs3MZUwk7xzqXyxsJTsRYpXqb15l+ZDuk8ZvmT2vT/YeZszMheFFxWNjy7AEMbEEmGLAZIH/hNICpZB5HFwFXhKfBWBOiGRhlh7Jbo5kpLpyQ0UxpRUJmozjSUtnXX1tvyZwSEjk53ZkcWJ1TkU5gJ3Rbg92/+J3Z3Dg9MzF7cXjzevTz5+XwGAIPCGQPmjsAhYFCKGU1wCVxJPCr+0DMFmCfMHOaLyCsSKJEqklVXIVMnVKNQpX+N/r0mlRa1NU0eXVo9On76BIYMRozHTm3yHKbMZizmrBbSlFcwaboNoa8e2e/bsdeDo6MTpzOXC3dWNx53Xg6+nF/++BXLpI+gr1M9f2Lwlktr+JYgxxSEEwJeBA3XlUf4EiFMzPIICgBLAmAaKRMZIoTnt8+MvgAgUJFiIUJ3C/CJ83IBx9Xny/8dQqDQ6wmCy2Jw4c+HKjTsPnrx481HKhQQAhAkXIVKUaDFixYmXIFGSZClSpUmXIVOWbDly5ckXHvBGJuV+cd1TeMQBXvfQ44vWS+MvQAxhQrSEipcpX5GwmLE/JSrZW1I2Y/vR4SK/PFPWdND/fxChwiXIUsglIoVh4gfvLr56pwLwvwH8B/EfzZRZSWnKCe7md763r262W2cXBxeJKCOQAPJUgOeO1F+0UGsKtqNaNgM7sQDQzq8uuYfa5Xq78usNEIfoKkz4PG1gA/sNynoTCMI5fkIjhLMh7EBJWYklTmiEy6wRwklwdE6usyEH1+oRanf0MBPKZblHRnKRGmWmUis1I3a7uIW0VSh+yLeIOLJsacMxuHJ3Z0ByhVGTafqEFdxomRo8gSWNsqiYWbbxT40599lCOUxh5LLg8ujK5X6fyt0lpoDggh1YbxuSxjYffCXUGfXg1ublGevLNxLFPSamxJRYxGJ2mwTTZZUzbljwt5+tKY3clinviVa4vt0tJ+g4N9kIqgurR6g22O7DYbYborFgis/YlT23OXxCI4jZQk+0SpnpWlxpgqfab0IiYJIIjvbbLJ95261bYSOnxv67upcxvcUA3EyPaL4f8iv4pou929P9Neze9O/NODzupclXOR4VypDXUijZvAItjfywVDaKBUkerpsuisS8xkv8aO7KoQa+jr8mcpFUjOWlXxZUieSm25G31rOs7CfZRJKyan9UVSOFdmwyVJjQkmW0ab7oul4BnyzehlIlVxi7MperyUzzI2ruM+L9ommWghscEYwYYwiuUZrbmcS+6AiPipQdVkx0nagmKqyghNzUWBiKPg8IG6zMB/vMJd9GRbVk3RWRAFQ8wvhaThYLyOdolLg4VCOrgkCJer8/Q8TFWB9mQqxCfJkAFBUn0ooZ1IB+HBr9hKVglumd5LWWB4yhlQOKKChehSN7NiiZqe9xPWvImgpSdpWpudBFKXycCF/FPk2qQJ+6z3ZWfiqSGDpb9CMDoldl/VOduKyJ9GG8CPFaGZvZMMHVKMtaDBaRrMcPnteq9GLh1bTsVp+6IhQd/UzN3wJU8Nn1yinq9i4CPWPRpQFNpK7W0yBrw8eChVilhkB1AAu1AQr18gaZFaVVl2lr1sRKsqE6p+e5GfdeSRlqPTolISMI0KqnFYIgKnapGGwiPnMnja/BumgxshZItfPEZzt3VtFC0B9a3+8mSXtvRXygYVv9uT11zZKlZVibf8szGxMRWxQJc8LdeN1NylFzATujyp3ksRBFcDNr2UDmOfCCc6nLVw4RAyDEyQotpl3FuzSZOlh12Eeo3mZJZqh2ft9sSLpkaWZIDCngh57dzHw+3jtlunK5eAIDHAbrSpbWxdkpYsHFyy4p76n7ZtBuD6AHdce8qxKklK1ffl/2rdIq/pYT65qkK7xz1Z/22HxOXUsSAXYMDRH8KHz8+UEhWebwZwJ9Jaa24vS40XA/mORzW0noqz64p6QUiy6CC/9zEMjrfp2OUqyjiO2mKtb0uMCv7evb7k3xgFBk0oPYfmL7U8WG5njro7LvFxzXva419nlo8m1HYB6SB9y6Zv9XtE9Z5DAbzY/54YPl+fE6hz6HJST8dk8Sda51DKLBL+IwcZKBbrTY/MN+SlFFwUylQthFVNSVoP0OIiif7yxkwxztqX0dsKMqL4eOz77hBkbdqFxoO/j4BQ1Ho8Ubi71aQcH6szrCZcefqewWb63NwS3i9Du4x68TPEwnbLjJRx4rO9s5DqgKgwnEtA85LIOuCkJdK62HUqakwm9GqVqeBJ1+wWNu52uCR8Vp1hnX2FO8PFFzBs6k82xtTGwW0WjaCH1QY4KSKPPNm6ORm1BrIGtKhiqCA2ZJtVmflDZY7GD5fQmKznFSvMklgZbxcpoSGX5LZiGcmPItHNK3iwaoS0HUtcoqLv9Tc/DWn3NzpXvI3anl+S0dw2e09TwXws35rXMaWfeNV/3EJpX63e71jhFuhes0Qm77d7/ZQ0O1B52snp1effzTeG5Ur2//x0/Mf994bYyMOrjicetnwNZyDAsXTtmrlI1Uhuw1zOIArmAhdsQrL5IB5146pYuZ/jhlPfkWGREyokl5UmREtBG1AG7IZoUsLi9OEaJIW4QiS/DANb4DqWnO6WfpT/4W5qxbR8ZFDcsf8IFvSDXYF8CpfxR/mO6gF0O2AgPOMBPwM8Hmoa0SiapQCY/O8ZlYeoa46qBXvgquEhZ0dFW6HbTTRsXwhQc67M+Pyhv1Mmi1n6siytOwMGljIjH7Xo6tUe1EUd/UddyT2rxyIX7w/v5je2q8GFlLaFTccWPNl8+qNbqtlyP/LaboEQskLTwbBp2qGk5qMz4HR6xeta+MYcqYWq3GaR2BRXpRLpZftePaQiL9uVewg6uVluZK/LamojRh5oevz61zk1Yka+h+dAd4UsJjqdpS0sUMp56df8Ds2GV7w8M6EH+MFlJ8tN6OdJQ9OsKKum/WdhkWBbXOnTV67szWUe1zbTRtbaEo/tDCevIYWR+n7GeWYOc9hAPHAPcuOfESybFNIqONRjyPJC0hWCnbp5CNVITsiyp42c+YJFd0Sh5N3nNqK2B6LkHmCvcopF3L71MXdH3iglxeAi7YrAw5V1Q3acYlwMWpHQzcehJDLmLO9rnyGQNo8CoVjxJwt0ltoQpLdS1njNndQ2YZahQ7W8PBcSftKrW/al29aj9KQ3QaGqcf9Y36G9rZpIchf+zLv2REruBWjV5Ezlp4cMO+GaufWF9zC7iKmPKyxf5gVvCXML8S85Ux7uus/tqFRvOuWrXvCk1fYWIVycNMozvAq/Pr3Jml9TNYIHUWAvzo4DU9vEcYFDqlgC18UficBbi/EBIiTWnC1rIK6XU/kD18c9LtAAeWZPCvv+OffRdNyJBghwseR/7tb24/YsC4BT7np3hCdpSVsBlmyHUNJ9BRQFsSN3b0M4ul7bQj8jgGBzYeIYiMPs99JwvhMViYoHES0sX5m457wuxZ0we/UPfuuxft9WRO4T7NqhHbDqdLgCTdME8s1hp1C5VdYrdk2cWbZGetieAF7X19TyFeo+FRncC2V77TOHezBF/dCpneBC0HrJBboe3GSZJSjZpHtXTmxEa5YQkdJmR3OJrpWOxM0taTZwGXrNmYQniMCo3qI+QGRdScXG1ouN6Dcl/qwzMsN791BfAgfotCJ3kQ2RuTUWNk/SccuxPLF4/Y7up7BI9zdw8f/jL0tDQC8Tzq3K9LU2fzB79RpYCL1zbFHT/++oFhzq558h2C6e3BLOv3nrLzKMIwjn/Cys1N8A7i1ZpmdIpxrNBy0NTwu53KTm+/GHLLZ7X8CBdhR7zCp4Sii/S6ofGrNxdTH7Fl93WC6T9LVaG75snNU5ombZHl/yH48c73PT9NBLckPinHgGp7zVOx2JmsvaiAd+GjNBZZhxub6FjGEaPhYDHgYjS9OBbxxkGGgd8UcjRfKQBhtmkK+Y75csnrqLxpGdO0oYddQXE/q1Gpd54FBuwjBnARM/cpZKs3X5LckbSo1aWSbNwtzqpWwCVoHdJFCawupBPM2Ha5vcdrg9m2Z86Q7a+bvH/hTNJ9Xe0zqpjHv9hvyKwL+/4H3zExTQ6HHcUy/cmai+Rv3W56Um7fn+sERaX/wNgpXdQ3f+fpLG3YEG1o1qmd8zIGGOHS0Qo+Et2U2vqShWPix8xZQEo9sxQd49k4EpMsjGtbxufcD5Bep1U90cDLP0Jn9kp643P+G9cSwKR8eVrqWT8qcgUwO9wjZqD23GIpIlXAbLGQanjQkgNUwHaaM9Ey8dBE89wFFqA6wCwDPVUkz2zgExv3tGEBxdupTsrOU98jFXKlu5/dTawSEIaM6NVnr0QR4hV12tHmjAHjtFsB/f3/S8Lc7hwM2HqVAdzP9b04RvqRzjgkYfAKljYDVODQYTNQg5xvt2NkLs1fPfFus/i53D18RvznlHjjPZ/T/BPQYljDqtjENfMmmV/uZ9yTX4/SyGpHFJ+WbeToxPTs2lKI7FaE7KdtE6XIhm9sshXslZ02cC3b0sd2+tXLPTpqdSq1+zCps+tN7/jHZSVG6ea37U3X6UolFH+URnxUMo7ehpXbLjJnGC8F3oaOdU3fi6g+W/NVyAbTP4xJQzVu25H6bhtttN9AEEtOlc9e0/z89qZ6jK/u5y8SpQ9Tu/lnLeQ3beDUq6ACLRLvUNKvpITaDVUyo2kYsKjUh4AcHrSRi0g5MKvVZrBQJhyzOtD4cj/kov+3MIskx6bp7GjkvOmyyKR8urPCwrEh8hIUe2iU4z1wF8XBNZRlUG0qISNSXQzMFA8hDC5p4vHGsG0Ppx2z52n0qaSNYQv3HaMT2aZiQ4GcMF+1u7lafar8KEU32yi6pLElOlZk725rggxJzO1qsyPqaGOL6q2YsnbsuBtPbMdOU1Y7guTHT6R0ZGtljEkJpVdGRh8PKnLNRCaBjkRfPn5RfFL8gEY7TTx65iqaVv2WQ6Asb/vCgzKeavuea8mEatLdUpNjDJ0Uog7gh3JJ2/ENnLBSvIW0eC9sZaovnDIj/jOKSPGLzMRBJfsUZ8JYTjGG5uVMyplYatXFm6BaYVkymVfIQahB3Lf8RHuRBW9ux10nrVa7XoRC9ljTHzepv348y1mF4nds78Ynzh253n/GmXgaWVsoZD1R7GAYx/btPEW1lEoQ/y9eJKTNNL2ZjqLTaTqDJnUeiLreXH4jn6qnh7m7L4n+tfHUfdlhS3+u/yiNxb3YHAeYqyyUfvxfyRT31joYyF7FkonA4c6vyj9zxrvV68zZvW8e6MaRZIBuf+3FxfvD4I4cLLfWIBHegr4JYOurixaezddyJLcvL1llJY8VuyEe9NgLW0YpI2khWGQV6ahTZKYY7ehIWGoBubQE8Qkqq7F01IvjBLXPbvxEKVVW0emVKj2ZqzAiFSQviGjUONEoRrxCkJEUezdaPrPWjUnC0CKxqwzdGSBG8wlHDvdg3TfURu18znVV5ZqKMJ2gqpGLhOiIZTchuw8R7IZR/Xw0LW7IcYRUJFchJ8n+38SImmDCgpqti+L6nElaUuwNJtBa3C1XQ4h3sKJkhkJwSuBLroOKzIyU9qBH44gmXKQ00GnCnfcWd4vWUkKSAocCBaWD594RYBIgkdQyKzHVWZJmIamyVibBlVbtieqx5kqxHuAR3RBmwchSQVFHfpaMoryBQu2IiGJDqKgsnRvj+nnNdoGU1LQ+SCobuw00CHyPA09pD6hOdH53raWLbgcUlJpnR0JCL9mLJVCm+nEzYUtxW+PlNXPzGigxsXJF9kKRlQy7mmmyMNroxmlDSHEzNU0jg32ripu6zf/8mqFBbR1KwmrZ2NiEhzNiRGQKWk2biKRhSiBH0baNQF080lTJYs1SogCVG+B2HSHnEzlaiK5+Zj51qUrR1Wit7dnMAsFv1kNWdfpp29pNFJub54pzxAZCOVomI4ZCy03U1xNc6FBBqpVdXR+0zgwxsjKfotnxuIr+XBB+YgXhwCbMc7puPR+EGHkIms0Qu9PobX2Fc4CeGENjwyPek2vm8fGVdK6kVZ9peiO9RKjZGNMOuCbXjlYSr4PX5Sjhrby+uKERNkhJsaJZf7VdayVLY3G3+CZDP6zaVhQbatq+cbM01m/1ARMGSRO2aSMbPd/u7I71XFuYoU3lyrAh+n2Q0aZobC2fwrDAByzIyJzOVXc3DAzNBEmETH0RPFokl9iVuK1QgqGKfU2dA1VdX7WMIYqu2ROyluPH9kCn8DtORMv3jyX12y5iE6EZaw+uMHfwS0Oj+k/KLHF2ACWo0lE7CsJZqmK3OmRZWOgbTThfP2DMzmwAj4p+c+Wcsae6cepZ3Tg9c+dAQOAIh1SDmQiBb06zUNDYBtR5KBPd3pZtxeE+S0D0SCR8Y88/bEThvLEy9VIZRrKCJgaSxyAQwgKuIzyD1qFI1C4QEirKkAJzWEhSrbEuNSZ91pB6JyTYUHjrUFuQcJim4UzKiINonLdRp7Rz+kCSduKv7anhtcRnnq8eE772CMxuuDP4Vu232RXSsy5N5q8apGK6YejCvuZQR6KLEB8vNld5t5cTDh8p5EcpQdy5bP0yIdfyG/XqHZoxuLt1dy9bD3mcP+Wg8yU1XnW+rtG/syIO3o9yDVMJc4oswp6xIUnVUiGBXTRrwsEQjFYltJWd4pTbng33irhJKr9WEnC988bCnfweRv64ZmT/RMz5Cy/D12IZRmH2Caavz7UHJmgezrHYKVJLgLGw7Aw9hambqa19cDbPpnKLv4nnT+yxnGvWojyYj1lH4gSeOogIgR47w1Crq5AZGxioF0IofVXb04wtWUAgFU7aXJ0rsydKrc/usN1McJhjUmGxQGELgu7My/aWPW4/B7A5iOMPDTYT++izxFrBvkJuBaKrbw1Q9mmuWGGUoug3U4zZSF+3Htc9eLo/jwMgPXTuSgIlQUNDhPa4ihNGamnQv7IbCl+lp6fV3X3ojqRP7Unw8au071XezHN6lhOXp08fk4nks2QpwAbdkE683m/TpA0oZoOesHsxhy73IVjCtjbL0FqrxToJYx2LEVZsDjezJdwS7gr2xqemO7opjlVt9pgi4LeNe+Hh8Bsc+1qej2R8pD2aYL4FkH0ySf5a8ycFMliADJPW34Sef3hgHEJ7gFvdefb4ijbtE/K3RIbjGqD+aT9dk1+sIeUsG8cA2jcWug7QVy5XFiCra9TCsoMBjG8sHCTAWrtsWoH9Bex12GIV9hdwNmCLNdhfwNuELdah64BgCw4SQHcumzah64DGAr0PpHvuoeXT7DqA7UOvAsVhsACVTfs4XxQoj+thiynsLzA4gzXinGWHrgMmF+EgAdX1ZdM5dB2w8RZ6Fdj6WHa24ZI7XxTY9zaBLR5C16VQoHoJATikuv1RsHd1JXX8s938hxK5fgCcrz7eBNx/19oDnbwUJ6IPYIUHQIH+SQ3/yBm4yp4QEgI2V21PAOHWnOlx/OcDP3WeDLivA1c3B+Z5ADSbDX5KMiCQt608fE6blrT5gV2h8e8AwMXzsbGQUW62YssAS6s5bBkC9dyEjiOWGdccN0fHBcsS8bVlbbMl7owdXzBwlUxgyn/a4rCywuKZpbUEg2LhIjpWW5J2ecpl7finpaDh/RzN6/gKIhfuXQ/5RJtnLS1tYFf/jmW5b5raRmTDFx59WwZSyYbLNu3DjRPeF7n74RIK2Sec9prTIX3EjD2wvPvuE2CT83oDl1o8/CS4/N4VuDQ0jbSVFBR1IRGGXRNJEiRKJYaMIPVKOkrqkBolXV1VOQ9EoaoqREt2cniOoxzvr3PNetCChCvRSZSuGM7nXrOaFJW8W27xXrRyStuzOAkvl8/WIMTNg2p01o828su2BLJxpdRDibKuF5110sHPS49J7cWj/hNCvF3ngAriCW+ms9ob/fyX81WCQKLQGCwOTyCSyBRuHl4+fgFBIWERUTGgauTKZ2mnAjscDqAq8BAgksH0paFMfhAsgDlJyp/Ycdcym2qoiCFDgQoNOgyYsIS0wFpbKJtiC7FQKsDsk7rTxNdYbisbk9fkEKn169eY3wC4FKWKm9Z67o4nkALwtsH7gHGa9xWnxbWl1qwnG6vT0tmuGSR8W+b0KsDbOfdltGI34w3usDnOm3f3ckSuao+KXfMQJfowBVTCh0IJTl+HZErirZ3DocIKnv/ESkQDAAAA") format("woff2"), url("assets/cdu.woff2") format("woff2"), url("assets/cdu.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: block;
}
:root {
  --u: calc(100vw / 2559);
  --header-height: max(58px, calc(105 * var(--u)));
  --ink: #080808;
  --paper: #fff;
  --panel: #f2f2f7;
  --line: max(1px, calc(2 * var(--u)));
  --motion: 420ms;
  color-scheme: light;
}
* { box-sizing: border-box; }
html { background: var(--paper); scrollbar-gutter: stable; }
html.is-loading, html.is-revealing { overflow: hidden; }
html.is-navigating { overflow: hidden; }
/* 全屏覆盖时取消浏览器保留区，并用相同留白保持原页面及菜单宽度。 */
html.viewport-cover.cover-header:is(.is-loading, .is-revealing),
html[data-page="oc"].viewport-cover.is-navigating {
  scrollbar-gutter: auto;
  width: calc(100% - var(--cover-gutter, 0px));
}
.viewport-cover.cover-header:is(.is-loading, .is-revealing) .site-header,
html[data-page="oc"].viewport-cover.is-navigating .site-header {
  width: calc(100% - var(--cover-gutter, 0px));
}
body { margin: 0; padding-top: var(--header-height); color: var(--ink); background: var(--paper); font-family: "BHE Chinese", "Microsoft YaHei", sans-serif; font-weight: 300; }
h1, h2, p { margin: 0; font-weight: inherit; }
a { color: inherit; text-decoration: none; }
img { display: block; }
a:focus-visible { outline: 2px solid #3983b9; outline-offset: 6px; }
.skip-link { position: fixed; left: 16px; top: 12px; z-index: 101; padding: 10px 16px; background: white; border: 1px solid; transform: translateY(-180%); }
.skip-link:focus { transform: translateY(0); }
.site-header { position: fixed; inset: 0 0 auto; z-index: 100; height: var(--header-height); background: var(--paper); display: flex; align-items: center; justify-content: space-between; padding: 0 calc(251 * var(--u)) 0 calc(83 * var(--u)); border-bottom: max(2px, calc(4 * var(--u))) solid transparent; }
.site-header::after { content: ""; position: absolute; left: 0; right: 0; top: 100%; height: 0; border-bottom: max(2px, calc(4 * var(--u))) solid var(--ink); transform-origin: left center; }
.header-content { width: 100%; height: 100%; display: flex; align-items: center; justify-content: space-between; }
.loading-screen { display: none; position: fixed; inset: 0; z-index: 200; place-items: center; background: var(--paper); pointer-events: auto; }
.loader-ring { width: 64px; height: 64px; transform: rotate(-90deg); }
.loader-stroke { stroke: var(--ink); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 18 82; stroke-dashoffset: 0; }
.page-reveal-cover { display: none; position: fixed; inset: var(--header-height) 0 0; z-index: 90; background: var(--paper); pointer-events: auto; }
.is-loading .loading-screen { display: grid; }
.is-loading .page-reveal-cover, .is-revealing .page-reveal-cover { display: block; }
.is-loading .site-header::after { transform: scaleX(0); }
.is-loading .header-content { clip-path: inset(0 100% 0 0); }
.is-revealing .site-header::after { animation: header-rule-in 500ms cubic-bezier(.2,.65,.25,1) both; }
/* 整个页头内容共用一道遮罩：经过 LOGO、快速穿过留白，再到右侧菜单。 */
.is-revealing .header-content { animation: header-content-in 1500ms 500ms linear both; }
.is-revealing .page-reveal-cover { animation: body-reveal 2000ms cubic-bezier(.2,.65,.25,1) both; }
@keyframes header-rule-in { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes header-content-in {
  0% { clip-path: inset(0 100% 0 0); animation-timing-function: ease-in-out; }
  40% { clip-path: inset(0 var(--header-after-logo, 85%) 0 0); animation-timing-function: linear; }
  45% { clip-path: inset(0 var(--header-before-nav, 25%) 0 0); animation-timing-function: cubic-bezier(.2,.65,.25,1); }
  100% { clip-path: inset(0); }
}
@keyframes body-reveal { from { clip-path: inset(0); } to { clip-path: inset(0 0 100% 0); } }
/* 页面之间的切换只覆盖菜单下方，菜单与底边线始终保持。 */
.keep-header .loading-screen { inset: var(--header-height) 0 0; z-index: 95; }
.keep-header .loader-ring { position: fixed; left: calc(50% - 32px); top: calc(50vh - 32px); }
.is-loading.keep-header .header-content, .is-revealing.keep-header .header-content { clip-path: none; animation: none; }
.is-loading.keep-header .site-header::after, .is-revealing.keep-header .site-header::after { transform: none; animation: none; }
.is-revealing[data-page="aoc"] .page-reveal-cover { animation-name: aoc-body-reveal; }
@keyframes aoc-body-reveal { from { clip-path: inset(0); } to { clip-path: inset(0 0 0 100%); } }
.route-cover { position: fixed; inset: var(--header-height) 0 0; z-index: 95; background: var(--paper); overflow: hidden; pointer-events: auto; }
.route-cover-sweep { background: transparent; }
.route-cover-menu { inset: 0; z-index: 210; background: #fff; }
.route-cover-menu.route-cover-sweep { background: transparent; }
/* OC 及其返回首页的白底包含顶栏；顶栏随整页向上揭示，不重播菜单动画。 */
.cover-header .loading-screen { inset: 0; z-index: 220; background: #fff; }
.cover-header .loader-stroke { stroke: #080808; }
.cover-header .page-reveal-cover { inset: 0; z-index: 210; background: #fff; }
.is-loading.cover-header .header-content,
.is-revealing.cover-header .header-content { clip-path: none; animation: none; }
.is-loading.cover-header .site-header::after,
.is-revealing.cover-header .site-header::after { transform: none; animation: none; }
.route-cover svg { display: block; width: 100%; height: 100%; overflow: hidden; }
.route-extension { position: fixed; z-index: 94; height: var(--line); background: var(--ink); pointer-events: none; }
.is-navigating .site-header { pointer-events: none; }
.logo-window { position: relative; display: block; overflow: hidden; flex-shrink: 0; }
.logo-window img { position: absolute; max-width: none; height: auto; }
.crane-logo { width: calc(257 * var(--u)); min-width: 148px; aspect-ratio: 1186 / 286; }
.crane-logo img { width: 151.77066%; left: -28.66779%; top: -19.93007%; }
.main-nav { display: flex; align-items: center; gap: calc(92 * var(--u)); padding-top: calc(2 * var(--u)); }
.nav-link { font-family: "BHE CDU", monospace; font-weight: 400; font-size: max(24px, calc(36 * var(--u))); letter-spacing: calc(1 * var(--u)); line-height: 1.45; white-space: nowrap; }
.text-link { position: relative; display: inline-block; width: fit-content; }
.text-link::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: var(--line); background: var(--ink); transform: scaleX(0); transform-origin: left center; transition: transform var(--motion) ease; }
.text-link:hover::after, .text-link:focus-visible::after { transform: scaleX(1); }
.section-band { border-top: var(--line) solid var(--ink); }
.hero { --hero-u: min(var(--u), calc((100vh - var(--header-height)) / 1329)); position: relative; height: calc(100vh - var(--header-height)); overflow: hidden; }
@supports (height: 100dvh) {
  .hero { --hero-u: min(var(--u), calc((100dvh - var(--header-height)) / 1329)); height: calc(100dvh - var(--header-height)); }
}
.canvas-image { position: absolute; width: 100%; height: auto; max-width: none; pointer-events: none; user-select: none; }
.hero-image { width: calc(2559 * var(--hero-u)); left: 50%; top: 50%; transform: translate(-50%, calc(-769.5 * var(--hero-u))); }
.welcome-copy { position: absolute; left: calc(73 * var(--u)); top: 50%; transform: translateY(-50%); width: max-content; }
.welcome-chinese { font-size: calc(96 * var(--hero-u)); line-height: calc(120 * var(--hero-u)); }
.welcome-row { display: block; width: max-content; white-space: nowrap; }
.welcome-rule { width: calc(800 * var(--hero-u)); height: var(--line); margin-top: calc(20 * var(--hero-u)); margin-left: calc(-24 * var(--hero-u)); background: var(--ink); transform: scaleX(1); transform-origin: left center; }
.is-loading .welcome-rule { transform: scaleX(0); }
.welcome-rule.is-ready { animation: welcome-line 1000ms 650ms cubic-bezier(.2,.7,.2,1) both; }
.welcome-english { margin-top: calc(28 * var(--hero-u)); margin-left: calc(8 * var(--hero-u)); font-family: "BHE CDU", monospace; font-weight: 400; font-size: calc(90 * var(--hero-u)); line-height: calc(104 * var(--hero-u)); letter-spacing: calc(2 * var(--hero-u)); }
@keyframes welcome-line { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.tips { position: relative; height: calc(670 * var(--u)); display: grid; grid-template-columns: 18.4838% 1fr; }
.tips-rail { position: relative; border-right: var(--line) solid var(--ink); }
.tips-badge { position: absolute; right: -1px; top: calc(96 * var(--u)); width: calc(173 * var(--u)); height: calc(496 * var(--u)); overflow: hidden; border: var(--line) solid var(--ink); border-radius: calc(10 * var(--u)); display: flex; flex-direction: column; font-family: "BHE CDU", monospace; }
.tips-number { height: calc(73 * var(--u)); flex-shrink: 0; display: grid; place-items: center; background: #000; color: #fff; font-size: calc(76 * var(--u)); }
.tips-number[aria-hidden="true"] { visibility: hidden; }
/* 数字 1 的右边距较大，旋转后按实际墨迹中心修正位置。 */
.tips-number > span { transform-origin: center; transform: translate(-.0615em, -.2045em) rotate(-90deg); }
.tips-word { position: relative; flex: 1; display: grid; place-items: center; font-size: calc(90 * var(--u)); letter-spacing: calc(1 * var(--u)); }
.tips-word > span { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%) rotate(-90deg); white-space: nowrap; }
.tips-content { display: grid; place-items: center; padding: calc(40 * var(--u)); font-size: max(24px, calc(72 * var(--u))); line-height: 1.6; text-align: center; }
.feature { --art-height: 826; position: relative; box-sizing: content-box; height: calc(var(--art-height) * var(--u)); overflow: hidden; }
.feature-oc { --art-height: 827; }
.feature-left { background: var(--panel); }
.feature-right { background: var(--paper); }
.feature-image { left: 0; top: calc(-353 * var(--u)); }
.feature-copy { position: absolute; z-index: 1; display: block; }
.feature-copy h2 { font-size: calc(60 * var(--u)); line-height: calc(88 * var(--u)); }
.feature-copy h2 > span { display: block; }
.feature-copy p { font-size: max(13px, calc(22.4 * var(--u))); line-height: 1.6; white-space: nowrap; }
.feature-rule { display: block; width: 100%; height: var(--line); background: var(--ink); transform: scaleX(0); transform-origin: left center; transition: transform var(--motion) ease; }
.feature-copy:hover .feature-rule, .feature-copy:focus-visible .feature-rule { transform: scaleX(1); }
.vamsys-copy { left: calc(16 * var(--u)); top: calc(199 * var(--u)); width: calc(839 * var(--u)); }
.vamsys-copy h2 { margin-left: calc(24 * var(--u)); }
.vamsys-copy .feature-rule { margin-top: calc(28 * var(--u)); }
.feature-left .feature-copy p { margin: calc(17 * var(--u)) 0 0 calc(24 * var(--u)); }
.aoc-copy { right: 0; top: calc(373 * var(--u)); width: calc(828 * var(--u)); text-align: right; }
.aoc-copy h2 { line-height: calc(88 * var(--u)); margin-right: calc(40 * var(--u)); }
.aoc-copy .feature-rule { margin-top: calc(-2 * var(--u)); transform-origin: right center; }
.aoc-copy p { margin: calc(17 * var(--u)) calc(40 * var(--u)) 0 0; }
.oc-copy { left: calc(16 * var(--u)); top: calc(397 * var(--u)); width: calc(839 * var(--u)); }
.oc-copy h2 { margin-left: calc(19 * var(--u)); line-height: calc(88 * var(--u)); }
.oc-copy .feature-rule { margin-top: calc(6 * var(--u)); }
.follow { position: relative; height: calc(830 * var(--u)); min-height: 240px; text-align: center; padding-top: calc(58 * var(--u)); }
.follow-content { position: absolute; inset: 0; display: flex; flex-wrap: wrap; align-items: center; align-content: center; justify-content: center; column-gap: calc(150 * var(--u)); row-gap: calc(40 * var(--u)); padding: 0 calc(71 * var(--u)); }
.follow-link { font-size: max(16px, calc(38 * var(--u))); line-height: 1.5; white-space: nowrap; }
.section-title { font-size: calc(60 * var(--u)); line-height: 1.45; }
.title-rule { display: inline-block; width: max-content; position: relative; }
.title-rule::after { content: ""; display: block; width: 100%; height: var(--line); margin-top: calc(8 * var(--u)); background: var(--ink); }
.partners { position: relative; height: calc(584 * var(--u)); padding: calc(58 * var(--u)) calc(71 * var(--u)) 0; }
.partners-content { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: calc(200 * var(--u)); padding: 0 calc(71 * var(--u)); }
.partner-link { position: relative; display: block; flex: 0 0 auto; }
.partner-link img { width: 100%; height: auto; }
.partner-vatsim { width: calc(370 * var(--u)); }
.partner-hangzhou { width: calc(555 * var(--u)); }
/* 仅通过窗口收起 AeroFur 原图的白色留边，保持原文件及图形比例。 */
.partner-aerofur { width: calc(440 * var(--u)); aspect-ratio: 1614 / 465; overflow: hidden; }
.partner-aerofur img { position: absolute; width: 118.959108%; left: -5.947955%; top: -64.086022%; }
.site-footer { padding: calc(22 * var(--u)) calc(73 * var(--u)) 0; font-size: 12px; letter-spacing: .6px; }
.footer-information { padding: 0 calc(10 * var(--u)) calc(12 * var(--u)); border-bottom: var(--line) solid var(--ink); line-height: 1.4; }
.footer-lower { display: flex; justify-content: space-between; align-items: center; padding: calc(12 * var(--u)) 0 calc(12 * var(--u)) calc(10 * var(--u)); }
.footer-nav { display: flex; align-items: flex-start; flex-direction: column; gap: 5px; line-height: 1.6; letter-spacing: 1px; }
.parent-logo { width: calc(304 * var(--u)); aspect-ratio: 1604 / 466; }
.parent-logo img { width: 120.82294%; left: -11.53367%; top: -25.1073%; }
.fallback-chinese body { font-family: "Microsoft YaHei", sans-serif; }
.fallback-cdu .nav-link, .fallback-cdu .welcome-english, .fallback-cdu .tips-badge { font-family: Consolas, monospace; }
@media (prefers-reduced-motion: reduce) {
  .welcome-rule { transform: scaleX(1); }
  .welcome-rule.is-ready { animation: none; }
  .text-link::after, .feature-rule { transition: none; }
  .is-revealing .site-header::after, .is-revealing .header-content, .is-revealing .page-reveal-cover { animation-duration: 0s; animation-delay: 0s; }
}
