/* 顶部下载按钮每3秒轻扫一次高亮，不影响点击和原有图标。 */
.header-inner > .download-button, .download-shimmer { position: relative; overflow: hidden; }
.header-inner > .download-button::after, .download-shimmer::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(110deg, transparent 30%, rgb(255 255 255 / 22%) 50%, transparent 70%); transform: translateX(-100%); animation: download-button-shine 3s ease-in-out infinite; }
@keyframes download-button-shine { 0%, 56% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
@media (prefers-reduced-motion: reduce) { .header-inner > .download-button::after, .download-shimmer::after { animation: none; } }

/* 弹窗与箭头同属顶层，遮罩完整覆盖网页；浏览器工具栏由浏览器管理。 */
#download-dialog { position: fixed; inset: 0; margin: auto; width: min(400px, calc(100% - 40px)); padding: 0; border: 0; border-radius: 3px; overflow: visible; background: transparent; color: #333; }
#download-dialog::backdrop { background: rgb(0 0 0 / 40%); }
.download-dialog-card { position: relative; z-index: 1; margin: 0; padding: 20px 24px; border-radius: 3px; background: #fff; text-align: center; }
.download-dialog-card > img { display: block; margin: 0 auto 18px; }
#download-dialog h2 { display: block; margin: 0 0 12px; font-size: 22px; font-weight: 600; line-height: 1.5; }
#download-dialog p { margin: 0; font-size: 14px; line-height: 1.9; color: #666; }
#download-dialog .download-dialog-tip { margin: 16px 0; font-size: 12px; color: #999; }
.download-dialog-close { position: absolute; top: 4px; right: 6px; width: 30px; height: 30px; padding: 0; border: 0; background: transparent; color: #999; font-size: 24px; }
.download-dialog-confirm { width: 130px; height: 36px; border: 0; border-radius: 3px; background: linear-gradient(100deg, #199ef5, #4173ff); color: #fff; font-size: 14px; }
#download-dialog .download-guide { position: fixed; top: 18px; right: 42px; width: max(0px, calc(50vw - 60px)); height: max(0px, calc(50vh - 160px)); fill: none; stroke: #fff; stroke-width: 2; pointer-events: none; overflow: visible; }
.download-guide > path:first-child { stroke-dasharray: 8 5; }
/* 整条引导线从短到长显露一次，完成后保持；重新打开弹层时重新播放。 */
#download-dialog[open] .download-guide { animation: download-guide-reveal 1.2s ease-out both; }
.download-guide .guide-head { fill: #fff; stroke: none; }
@keyframes download-guide-reveal { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 -4px -4px -4px); } }
@media (max-width: 700px), (max-height: 500px) { #download-dialog .download-guide { display: none; } }
@media (prefers-reduced-motion: reduce) { #download-dialog[open] .download-guide { animation: none; } }
