/* N7 desktop image states. Uses N7 theme variables; never applies to avatars/icons. */
body.n7-image-perf-page{--n7-img-accent:var(--comiis-ahot,#155bd5);--n7-img-soft:var(--comiis-bgd,#f5f6f7);--n7-img-error:var(--comiis-red,#e45555)}
body.n7-image-perf-page .n7-perf-media{position:relative;overflow:hidden}
body.n7-image-perf-page .n7-perf-media.is-loading{background:var(--n7-img-soft)}
body.n7-image-perf-page .n7-perf-media.is-large.is-loading:not(.has-ratio){min-height:clamp(180px,30vw,360px)}
body.n7-image-perf-page .n7-perf-img{transition:opacity .16s ease;will-change:opacity}
body.n7-image-perf-page .n7-perf-img:not(.is-loaded){opacity:0}
body.n7-image-perf-page .n7-perf-img.is-loaded{opacity:1;will-change:auto}
body.n7-image-perf-page .n7-perf-media.is-loading::before{content:"";position:absolute;z-index:2;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,transparent,var(--n7-img-accent),transparent);background-size:45% 100%;animation:n7-img-progress 1.15s linear infinite;pointer-events:none}
body.n7-image-perf-page .n7-perf-media.is-loading::after{content:"";position:absolute;z-index:1;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.58) 48%,transparent 66%);background-size:220% 100%;animation:n7-img-shimmer 1.35s ease-in-out infinite;pointer-events:none}
body.n7-image-perf-page .n7-perf-media.is-small.is-loading::after{inset:50% auto auto 50%;width:18px;height:18px;margin:-10px 0 0 -10px;border:2px solid rgba(127,127,127,.24);border-top-color:var(--n7-img-accent);border-radius:50%;background:none;animation:n7-img-spin .75s linear infinite}
body.n7-image-perf-page .n7-perf-media.is-error{min-height:96px;background:color-mix(in srgb,var(--n7-img-error) 7%,#f5f6f7);cursor:pointer;outline:0}
body.n7-image-perf-page .n7-perf-media.is-error::after{content:"图片加载失败 · 点击重试";position:absolute;z-index:3;inset:0;display:flex;align-items:center;justify-content:center;padding:12px;color:var(--n7-img-error);font-size:13px;line-height:1.5;text-align:center;background:rgba(255,255,255,.92);pointer-events:none}
body.n7-image-perf-page .n7-perf-media.is-error:focus-visible{box-shadow:inset 0 0 0 2px var(--n7-img-accent)}
body.n7-image-perf-page .n7-perf-media.is-loaded::before,body.n7-image-perf-page .n7-perf-media.is-loaded::after{display:none}
@keyframes n7-img-progress{from{background-position:150% 0}to{background-position:-70% 0}}
@keyframes n7-img-shimmer{from{background-position:180% 0}to{background-position:-80% 0}}
@keyframes n7-img-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){body.n7-image-perf-page .n7-perf-img{transition:none}body.n7-image-perf-page .n7-perf-media.is-loading::before,body.n7-image-perf-page .n7-perf-media.is-loading::after{animation:none}}
