.game-announcement{position:fixed;top:0;left:0;right:0;height:calc(34px + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px);z-index:1000;background:#000;color:#fff;overflow:hidden;font:600 14px/34px Tahoma,sans-serif;pointer-events:auto}.game-announcement[hidden]{display:none}.announcement-track{display:inline-block;min-width:100%;white-space:nowrap;padding-left:100%;animation:announcement-scroll 25s linear infinite}.game-announcement:hover .announcement-track,.game-announcement:focus-within .announcement-track{animation-play-state:paused}@keyframes announcement-scroll{to{transform:translateX(-100%)}}.hud{top:calc(var(--ui-top,0px) + var(--announcement-height,0px));bottom:auto;height:calc(var(--ui-height,100dvh) - var(--announcement-height,0px))}#libraryModal [hidden]{display:none!important}#libraryArticleBody>p{white-space:pre-wrap;overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){.announcement-track{animation:none;padding-left:12px;white-space:normal;line-height:1.5}.game-announcement{overflow:auto}}

.article-image-frame{position:relative;min-height:160px;aspect-ratio:600/280;overflow:hidden;border-radius:14px;background:#f0e5d4;margin-bottom:16px;display:grid;place-items:center}
.article-image-frame.is-loading{background:linear-gradient(100deg,#eee3d3 25%,#fff8ee 45%,#eee3d3 65%);background-size:250% 100%;animation:article-shimmer 1.5s ease-in-out infinite}
#libraryArticleBody .article-image-frame img{display:block;width:100%;height:100%;object-fit:contain;margin:0}
#libraryArticleBody .article-image-frame [hidden]{display:none!important}
.article-image-status{padding:18px;color:#816f56;font-size:14px;text-align:center}
@keyframes article-shimmer{from{background-position:100% 0}to{background-position:-100% 0}}
@media(prefers-reduced-motion:reduce){.article-image-frame.is-loading{animation:none}}
