:root{--card-bg:rgba(255, 255, 255, 0.85);--primary-color:#0d6efd;--text-color:#333;--text-secondary:#666;--shadow-sm:0 2px 8px rgba(0, 0, 0, 0.08);--shadow-md:0 4px 24px rgba(0, 0, 0, 0.15);--shadow-lg:0 8px 32px rgba(0, 0, 0, 0.18);--transition:all 0.2s cubic-bezier(0.4, 0, 0.2, 1)}
body,html{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden;background:0 0;display: flex;align-items: center;justify-content: center;}
/* 主页、友链卡片部分 */
.profile-card,.friend-card{background:var(--card-bg);border-radius:24px;box-shadow:var(--shadow-lg);max-width:500px;margin:0 auto;padding:2.5rem 2rem;position:static;top:50%;left:50%;transform:none;z-index:10;text-align:center;backdrop-filter:blur(4px)}
/* 主页部分 */
.profile-avatar{width:120px;height:120px;object-fit:cover;border-radius:50%;border:4px solid #fff;box-shadow:var(--shadow-sm);margin-bottom:1rem}
.profile-name{font-size:2rem;font-weight:700;margin-bottom:.5rem;color:var(--text-color)}
.profile-desc{color:var(--text-secondary);margin-bottom:1.5rem}
.profile-social a{margin:0 .5rem;font-size:1.5rem;color:var(--primary-color);transition:var(--transition)}
.profile-social a:hover{opacity:.8}
/* 友链部分 */
.friends-list{display:flex;flex-direction:column;gap:1.2rem;margin-top:2rem}
.friend-link-card{display:flex;align-items:center;background:#fff;border-radius:1rem;box-shadow:var(--shadow-sm);padding:1rem 1.5rem;transition:var(--transition)}
.friend-link-card:hover{box-shadow:var(--shadow-md)}
.friend-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;margin-right:1.2rem;border:2px solid #eee;background:#f8f8f8}
.friend-info{flex:1}
.friend-name{font-size:1.15rem;font-weight:700;color:var(--primary-color);text-decoration:none}
.friend-name:hover{text-decoration:underline}
.friend-desc{color:var(--text-secondary);font-size:.98rem;margin-top:.2rem}
/* 项目索引部分 */
.projects-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:1.25rem}
.project-link-card{transition:var(--transition);padding:0}
.project-link-card .friend-info .friend-desc{font-size:.75rem;word-break:break-all;opacity:.75}
.project-link-card .friend-name{display:inline-flex;align-items:center;gap:4px}
.project-link-card .friend-name::after{content:"⇢";font-size:.9rem;opacity:.6;transition:transform .2s ease}
.project-link-card:hover .friend-name::after{transform:translateX(3px);opacity:.9}
.project-link-card:hover{box-shadow:var(--shadow-md)}
/* 脚页部分 */
.footer-float-group{position:fixed;right:18px;bottom:14px;display:flex;gap:12px;z-index:999}
.footer-float{background:rgba(255,255,255,.92);box-shadow:var(--shadow-sm);padding:6px 16px;font-size:13px;color:var(--text-secondary);display:flex;align-items:center;text-decoration:none;transition:var(--transition);border-radius:16px}
.footer-float:hover{background:rgba(255,255,255,.97);box-shadow:var(--shadow-md)}
/* 移动端适配 */
@media (max-width:500px){.friend-card,.profile-card{max-width:100vw;width:100vw;padding:1.5rem .5rem;border-radius:24px}
.footer-float-group{flex-direction:column;align-items:flex-end;gap:8px}
.footer-float{width:max-content;text-align:right}
}
@media (max-width:500px){body,html{height:auto;min-height:100vh;overflow-y:auto}
body{align-items:flex-start;padding-top:40px}
main-router{display:block;width:100%;padding-bottom:110px;padding-bottom:calc(110px + env(safe-area-inset-bottom));padding-top:10px}
}
/* maimaiDX CiRCLE 背景部分 */
.maiDecorationBg{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-100;background:radial-gradient(circle at center,#ffb7cd 0,#ffb7cd 40%,#ff4799 100%);pointer-events:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}
.maiDecorationBg .pattern-layer{position:fixed;top:50%;left:50%;translate:-50% -50%;width:100%;aspect-ratio:1;z-index:-99;background-image:url(maiDecorationBg/bg_pattern.png);background-position:50%;background-size:contain;mix-blend-mode:overlay;animation:rotate 500s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .pattern-layer{width:auto;height:100%}
}
.maiDecorationBg .background-layer{position:relative;width:100%;height:100%}
.maiDecorationBg .corner{position:fixed;pointer-events:none;background-repeat:no-repeat;background-size:contain;z-index:200}
.maiDecorationBg .corner.top-left{top:0;left:0;background-image:url(maiDecorationBg/pc/top_left.png);width:853px;height:150px}
@media screen and (max-width:600px){.maiDecorationBg .corner.top-left{background-size:100%;width:100%;height:100px}
}
.maiDecorationBg .corner.top-right{top:0;right:0;background-image:url(maiDecorationBg/pc/top_right.png);width:316px;height:382px}
@media screen and (max-width:600px){.maiDecorationBg .corner.top-right{width:162px;height:240px}
}
.maiDecorationBg .corner.bottom-left{bottom:0;left:0;background-image:url(maiDecorationBg/pc/bottom_left.png);width:231px;height:429px}
@media screen and (max-width:600px){.maiDecorationBg .corner.bottom-left{width:118px;height:218px}
}
.maiDecorationBg .corner.bottom-right{bottom:0;right:0;background-image:url(maiDecorationBg/pc/bottom_right.png);width:683px;height:168px}
@media screen and (max-width:600px){.maiDecorationBg .corner.bottom-right{background-size:100%;width:100%;height:100px}
}
.maiDecorationBg .tile{position:absolute;background-repeat:no-repeat;background-size:contain}
.maiDecorationBg .tile.tile-green{background-image:url(maiDecorationBg/tile_green.png);width:216px;height:692px;top:167px;right:42px;opacity:0;animation:riseAndFade 12s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .tile.tile-green{width:80px;height:300px;top:120px;right:20px}
}
.maiDecorationBg .tile.tile-purple-left{background-image:url(maiDecorationBg/tile_purple_left.png);left:30px;top:28px;width:192px;height:593px;opacity:0;animation:riseAndFade 15s linear infinite 3s}
@media screen and (max-width:600px){.maiDecorationBg .tile.tile-purple-left{width:70px;height:250px;left:15px;top:80px}
}
.maiDecorationBg .tile.tile-purple-right{background-image:url(maiDecorationBg/tile_purple_right.png);right:300px;top:0;width:140px;height:340px;opacity:0;animation:riseAndFade 10s linear infinite 1.5s}
@media screen and (max-width:600px){.maiDecorationBg .tile.tile-purple-right{width:50px;height:150px;right:80px;top:50px}
}
.maiDecorationBg .star{position:absolute;background-repeat:no-repeat;background-size:contain}
.maiDecorationBg .star.star-pink-left{background-image:url(maiDecorationBg/star_pink.png);width:90px;height:306px;top:562px;left:268px;scale:1 -1;opacity:0;animation:riseAndFade 6s linear reverse infinite 4s}
@media screen and (max-width:600px){.maiDecorationBg .star.star-pink-left{width:26px;height:100px;top:400px;left:12px;scale:1}
}
.maiDecorationBg .star.star-pink-right{background-image:url(maiDecorationBg/star_pink.png);width:52px;height:174px;top:402px;right:300px;opacity:0;animation:riseAndFade 8s linear reverse infinite 4s}
@media screen and (max-width:600px){.maiDecorationBg .star.star-pink-right{width:50px;height:150px;top:64px;right:130px;scale:1 -1}
}
.maiDecorationBg .star.star-yellow-left{background-image:url(maiDecorationBg/star_yellow.png);width:64px;height:213px;top:168px;left:332px;opacity:0;animation:riseAndFade 7s linear infinite .5s}
@media screen and (max-width:600px){.maiDecorationBg .star.star-yellow-left{width:37px;height:110px;top:350px;left:118px}
}
.maiDecorationBg .star.star-yellow-right{background-image:url(maiDecorationBg/star_yellow.png);width:64px;height:213px;top:618px;right:524px;opacity:0;animation:riseAndFade 10s linear infinite 5s}
@media screen and (max-width:600px){.maiDecorationBg .star.star-yellow-right{width:30px;height:100px;top:250px;right:0}
}
.maiDecorationBg .circle{position:absolute;background-repeat:no-repeat;background-size:contain;top:50%;left:50%;translate:-50% -50%}
.maiDecorationBg .circle.circle-colorful{background-image:url(maiDecorationBg/circle_colorful.png);width:953px;height:947px;animation:rotateReverse 100s cubic-bezier(.01,.99,.28,.99) infinite}
@media screen and (max-width:600px){.maiDecorationBg .circle.circle-colorful{width:466px;height:466px}
}
.maiDecorationBg .circle.circle-yellow{background-image:url(maiDecorationBg/circle_yellow.png);width:1026px;height:898px;animation:tilt 80s linear alternate infinite}
@media screen and (max-width:600px){.maiDecorationBg .circle.circle-yellow{width:576px;height:516px;rotate:-30deg}
}
.maiDecorationBg .circle.circle-white{background-image:url(maiDecorationBg/circle_white.png);width:788px;height:762px;animation:rotateReverse 110s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .circle.circle-white{width:354px;height:354px}
}
.maiDecorationBg .rotation-wrapper{position:relative;width:100%;height:100%;animation:rotate 70s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .rotation-wrapper{z-index:210}
}
.maiDecorationBg .threeDemention{position:absolute;background-repeat:no-repeat;background-size:contain}
.maiDecorationBg .threeDemention.threeDemention-cube-small{background-image:url(maiDecorationBg/3d_cube.png);width:88px;height:88px;top:130px;left:80px;animation:rotate 18s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-cube-small{width:35px;height:35px;top:100px;left:30px}
}
.maiDecorationBg .threeDemention.threeDemention-cube{background-image:url(maiDecorationBg/3d_cube.png);width:113px;height:102px;top:400px;right:100px;animation:rotateReverse 25s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-cube{width:45px;height:40px;top:250px;right:40px}
}
.maiDecorationBg .threeDemention.threeDemention-star{background-image:url(maiDecorationBg/3d_star.png);width:85px;height:87px;top:714px;left:540px;animation:rotateReverse 22s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-star{width:35px;height:35px;top:500px;left:200px}
}
.maiDecorationBg .threeDemention.threeDemention-star-small{background-image:url(maiDecorationBg/3d_star_small.png);width:34px;height:40px;top:192px;right:506px;animation:rotate 15s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-star-small{width:15px;height:18px;top:140px;right:180px}
}
.maiDecorationBg .threeDemention.threeDemention-stars{background-image:url(maiDecorationBg/3d_stars.png);width:93px;height:78px;top:700px;right:260px;animation:rotate 28s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-stars{width:40px;height:35px;top:480px;right:90px}
}
.maiDecorationBg .threeDemention.threeDemention-glove-blue{background-image:url(maiDecorationBg/3d_glove_blue.png);width:69px;height:75px;top:34px;left:702px;animation:rotateReverse 20s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-glove-blue{width:30px;height:32px;top:60px;left:250px}
}
.maiDecorationBg .threeDemention.threeDemention-glove-pink{background-image:url(maiDecorationBg/3d_glove_pink.png);width:108px;height:128px;top:34px;left:568px;animation:rotateReverse 16s linear infinite}
@media screen and (max-width:600px){.maiDecorationBg .threeDemention.threeDemention-glove-pink{width:56px;height:66px;top:40px;left:200px}
}
@keyframes rotate{0%{transform:rotate(0)}
to{transform:rotate(1turn)}
}
@keyframes rotateReverse{0%{transform:rotate(0)}
to{transform:rotate(-1turn)}
}
@keyframes tilt{0%{transform:rotate(0)}
to{transform:rotate(90deg)}
}
@keyframes riseAndFade{0%{transform:translateY(150%);opacity:0}
10%{opacity:1}
90%{opacity:1}
to{transform:translateY(-150%);opacity:0}
}
@keyframes floating{0%{transform:translateY(0)}
to{transform:translateY(2%)}
}
@keyframes charaicon{0%{transform:translateY(0)}
to{transform:translateY(-20px)}
}

/* Bootstrap 5 */
:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}
*,::after,::before{box-sizing:border-box}
@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}
}
body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
.h1,.h3,h1,h3{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}
.h1,h1{font-size:calc(1.375rem + 1.5vw)}
@media (min-width:1200px){.h1,h1{font-size:2.5rem}
}
.h3,h3{font-size:calc(1.3rem + .6vw)}
@media (min-width:1200px){.h3,h3{font-size:1.75rem}
}
a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}
a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}
a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}
img{vertical-align:middle}
::-moz-focus-inner{padding:0;border-style:none}
::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}
::-webkit-inner-spin-button{height:auto}
::-webkit-search-decoration{-webkit-appearance:none}
::-webkit-color-swatch-wrapper{padding:0}
::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}
::file-selector-button{font:inherit;-webkit-appearance:button;appearance:button}
.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}
@media (min-width:576px){.container{max-width:540px}
}
@media (min-width:768px){.container{max-width:720px}
}
@media (min-width:992px){.container{max-width:960px}
}
@media (min-width:1200px){.container{max-width:1140px}
}
@media (min-width:1400px){.container{max-width:1320px}
}
:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}
.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}
@media (prefers-reduced-motion:reduce){.btn{transition:none}
}
.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}
.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}
.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}
.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}
.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}
.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}
.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}
.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}
@keyframes progress-bar-stripes{0%{background-position-x:1rem}
}
@keyframes spinner-border{to{transform:rotate(360deg)}
}
@keyframes spinner-grow{0%{transform:scale(0)}
50%{opacity:1;transform:none}
}
@keyframes placeholder-glow{50%{opacity:.2}
}
@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0;mask-position:-200% 0}
}
.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}
.mt-4{margin-top:1.5rem!important}
/* Font Awesome 图标库 */
.fab,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}
.fas{font-family:"Font Awesome 6 Free"}
.fab{font-family:"Font Awesome 6 Brands"}
@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}
45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}
}
@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}
45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}
}
@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}
10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}
30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}
50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}
57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}
64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}
to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}
}
@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}
10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}
30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}
50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}
57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}
64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}
to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}
}
@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}
}
@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}
}
@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}
50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}
}
@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}
50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}
}
@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}
}
@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}
}
@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}
4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}
24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}
12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}
16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}
20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}
32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}
36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}
40%,to{-webkit-transform:rotate(0);transform:rotate(0)}
}
@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}
4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}
24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}
12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}
16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}
20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}
32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}
36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}
40%,to{-webkit-transform:rotate(0);transform:rotate(0)}
}
@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}
to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}
}
@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}
to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}
}
.fa-envelope:before{content:"\f0e0"}
:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}
@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:swap;src:url(webfonts/fa-brands-400.woff2) format("woff2"),url(webfonts/fa-brands-400.ttf) format("truetype")}
.fab{font-weight:400}
.fa-qq:before{content:"\f1d6"}
.fa-bilibili:before{content:"\e3d9"}
.fa-github:before{content:"\f09b"}
:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}
@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:swap;src:url(webfonts/fa-regular-400.woff2) format("woff2"),url(webfonts/fa-regular-400.ttf) format("truetype")}
:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}
@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:swap;src:url(webfonts/fa-solid-900.woff2) format("woff2"),url(webfonts/fa-solid-900.ttf) format("truetype")}
.fas{font-weight:900}
@font-face{font-family:"Font Awesome 5 Brands";font-display:swap;font-weight:400;src:url(webfonts/fa-brands-400.woff2) format("woff2"),url(webfonts/fa-brands-400.ttf) format("truetype")}
@font-face{font-family:"Font Awesome 5 Free";font-display:swap;font-weight:900;src:url(webfonts/fa-solid-900.woff2) format("woff2"),url(webfonts/fa-solid-900.ttf) format("truetype")}
@font-face{font-family:"Font Awesome 5 Free";font-display:swap;font-weight:400;src:url(webfonts/fa-regular-400.woff2) format("woff2"),url(webfonts/fa-regular-400.ttf) format("truetype")}
@font-face{font-family:FontAwesome;font-display:swap;src:url(webfonts/fa-solid-900.woff2) format("woff2"),url(webfonts/fa-solid-900.ttf) format("truetype")}
@font-face{font-family:FontAwesome;font-display:swap;src:url(webfonts/fa-brands-400.woff2) format("woff2"),url(webfonts/fa-brands-400.ttf) format("truetype")}
@font-face{font-family:FontAwesome;font-display:swap;src:url(webfonts/fa-regular-400.woff2) format("woff2"),url(webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}
@font-face{font-family:FontAwesome;font-display:swap;src:url(webfonts/fa-v4compatibility.woff2) format("woff2"),url(webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}