/* 壳层小样式合并：减少首屏阻塞 CSS 请求。 */
/* 桌面端固定滚动条占位，避免短列表和长列表切换时内容区横向跳动。
   部分浏览器的自定义滚动条不遵守 scrollbar-gutter:stable。 */
@media(min-width:768px){html{overflow-y:scroll}}
/* Reserve a viewport for the async feed so its arrival cannot push a visible
   mobile footer off screen. Keep the reservation for empty/error states too. */
.home-feed-tabs .tab-panels{min-height:100vh;min-height:100svh}
.m-footer-copy{margin-top:32px}.m-footer-github-icon{box-sizing:border-box;width:49px;height:49px;padding:10px;border-radius:50%;background:#696969;color:#171516}
.app-nav-group{min-width:0}.app-nav-managed-icon{display:inline-flex;align-items:center;justify-content:center;overflow:hidden}.app-nav-managed-icon img{display:block;width:100%;height:100%;object-fit:contain}.app-nav-children{margin:2px 0 5px 29px;padding-left:10px;border-left:1px solid rgba(255,255,255,.08)}.app-nav-child .app-nav-link{min-height:34px;padding-top:7px;padding-bottom:7px}.app-nav-child .app-nav-label{font-size:13px;color:rgba(255,255,255,.72)}.app-nav-child .app-nav-managed-icon,.app-nav-child .app-nav-link svg{width:15px;height:15px}@media (max-width:767px){.dx-drawer .app-nav-group{width:100%}.dx-drawer .app-nav-children{margin:1px 0 4px 29px;padding-left:8px}.dx-drawer .app-nav-child .app-nav-link{height:36px;padding-left:14px;gap:14px}.dx-drawer .app-nav-child .app-nav-label{font-size:14px;color:rgba(255,255,255,.72)}.dx-drawer .app-nav-managed-icon{display:inline-flex}}
.dx-dialog .modal-dialog{width:420px;max-width:calc(100vw - 32px);margin:0 auto}.dx-dialog-card{position:relative;background-color:var(--color-card);border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:32px 28px 24px;box-shadow:inset 0 1px 0 0 rgba(255,255,255,.05)}.dx-dialog .dx-login-close{position:absolute;top:16px;right:16px;z-index:1;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid rgba(255,255,255,.08);border-radius:50%;background-color:rgba(255,255,255,.06);color:rgba(255,255,255,.7);transition:color .2s,background-color .2s}.dx-dialog .dx-login-close:hover{color:#fff;background-color:rgba(255,255,255,.12)}.dx-dialog .dx-input{padding-left:16px}
.dx-site-search{position:fixed;inset:0;z-index:260;display:none}.dx-site-search.is-open{display:block}.dx-site-search-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(0,0,0,.72);cursor:default}.dx-site-search-panel{position:absolute;top:0;right:0;width:min(440px,100%);height:100%;padding:24px;background:#171516;border-left:1px solid rgba(255,255,255,.08);box-shadow:-20px 0 60px rgba(0,0,0,.28);overflow-y:auto}.dx-site-search-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.dx-site-search-title{color:#fff;font-size:22px;font-weight:600;line-height:32px}.dx-site-search-close{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;background:transparent;color:#aaa;cursor:pointer}.dx-site-search-close svg{width:20px;height:20px}.dx-site-search-form{display:flex;align-items:center;gap:10px;height:48px;margin-top:22px;padding-left:14px;border:1px solid rgba(255,255,255,.12);background:#211f20}.dx-site-search-form:focus-within{border-color:#fd3e88}.dx-site-search-icon{width:18px;height:18px;color:#8c8789;flex:0 0 auto}.dx-site-search-form input{min-width:0;flex:1;height:100%;padding:0;border:0;outline:0;background:transparent;color:#fff;font-size:15px}.dx-site-search-submit{height:100%;min-width:72px;padding:0 16px;border:0;background:#fd3e88;color:#fff;font-size:14px;font-weight:500;cursor:pointer}.dx-site-search-hot{margin-top:28px}.dx-site-search-label{margin-bottom:14px;color:#fff;font-size:14px;font-weight:600}.dx-site-search-tags{display:flex;flex-wrap:wrap;gap:10px}.dx-site-search-tags a{display:inline-flex;align-items:center;min-height:34px;padding:7px 12px;border-radius:4px;background:#252223;color:#c5c0c2;font-size:13px;line-height:20px}.dx-site-search-tags a:hover,.dx-site-search-tags a:focus-visible{background:#302b2d;color:#fd3e88;outline:0}body.dx-site-search-open{overflow:hidden}@media(max-width:768px){.dx-site-search-panel{width:100%;padding:18px 16px;border-left:0}.dx-site-search-title{font-size:19px}.dx-site-search-form{height:46px;margin-top:18px}.dx-site-search-hot{margin-top:24px}}
.dx-backtop{background-color:var(--color-primary);color:#fff;box-shadow:0 4px 14px rgba(253,62,136,.42)}.dx-backtop svg{color:#fff}.dx-backtop:hover{background-color:var(--color-primary);filter:brightness(1.06)}
/* 缺省图是横向 logo，宫格/封面里用 cover/fill 会裁切；真实封面替换 src 后不再命中。 */
img[src*="/images/loading.png"]{object-fit:contain!important;object-position:center;box-sizing:border-box;padding:10%;background-color:var(--color-image-placeholder)}
