/* Inherits the game's canonical palette, typography, spacing and controls. */
.announcement-banner{position:fixed;z-index:var(--z-top);left:50%;bottom:calc(var(--s4) + var(--sb));transform:translateX(-50%);width:min(580px,calc(100vw - var(--s5)));padding:var(--s3);display:flex;align-items:center;gap:var(--s4);font-size:var(--text-body)}
.announcement-banner strong,.announcement-banner span{display:block}
.announcement-banner strong{font-size:1.25em}
.announcement-banner span{color:var(--muted)}
.announcement-banner-actions{display:flex;gap:var(--s2);flex-shrink:0}
.announcement-banner .btn,.announcement-dialog .btn{min-width:var(--target);min-height:var(--target);font:700 var(--text-body)/1.2 var(--prose);padding:var(--s2) var(--s3)}
.announcement-dialog{width:min(760px,calc(100vw - var(--s5)));max-height:calc(100dvh - var(--s5) - var(--st) - var(--sb));padding:0;background:var(--surface);color:var(--text);border:var(--line) solid var(--trim);font:var(--text-body)/1.5 var(--prose);box-shadow:0 var(--s4) var(--s6) var(--well);overflow:hidden}
.announcement-dialog[open]{display:flex;flex-direction:column}
.announcement-dialog::backdrop{background:color-mix(in srgb,var(--well) 80%,transparent)}
.announcement-heading{display:flex;gap:var(--s4);align-items:flex-start;justify-content:space-between;padding:var(--s4) var(--s5);border-bottom:var(--line) solid var(--trim);flex-shrink:0}
.announcement-heading h2{margin:0;font:700 clamp(1.75rem,4vw,2.25rem)/1.1 var(--display)}
.announcement-eyebrow{margin:0 0 var(--s1);color:var(--muted);font:var(--text-small)/1.5 var(--prose)}
.announcement-scroll{padding:var(--s4) var(--s5);overflow:auto;overscroll-behavior:contain;min-height:0}
.announcement-scroll>p{margin:0 0 var(--s4);max-width:65ch}
.announcement-dialog figure{margin:0 0 var(--s4)}
.announcement-dialog img{display:block;width:100%;height:auto;aspect-ratio:1600/956;object-fit:contain;background:var(--well)}
.announcement-dialog figcaption{margin-top:var(--s2);color:var(--muted);font-size:var(--text-small)}
.announcement-dialog .announcement-image-link{display:inline-flex;align-items:center;margin-top:var(--s2)}
.announcement-dialog h3{margin:0 0 var(--s2);font:700 1.5rem/1.2 var(--prose)}
#announcementText{margin:0;max-width:65ch;white-space:pre-line}
.announcement-footer{padding:var(--s3) var(--s5) var(--s4);border-top:var(--line) solid var(--trim);background:var(--well);flex-shrink:0}
.announcement-pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s3)}
.announcement-pagination p{margin:0;font:var(--text-small)/1.5 var(--mono);color:var(--muted)}
.announcement-actions{display:flex;justify-content:space-between;gap:var(--s3);flex-wrap:wrap}
.announcement-dialog .announcement-primary{background:var(--accent);color:var(--ink);border-color:var(--accent)}
.announcement-dialog .announcement-primary:hover{background:var(--paper);border-color:var(--paper)}
.announcement-dialog .btn:disabled{opacity:.55;cursor:default;transform:none}
.announcement-dialog .btn:focus-visible,.announcement-banner .btn:focus-visible{outline:calc(2*var(--line)) solid var(--lagoon);outline-offset:calc(2*var(--line))}
@media(max-width:759px){
  .announcement-banner{bottom:calc(var(--s4) + var(--target) + var(--sb));display:block}
  .announcement-banner-actions{margin-top:var(--s3)}
  .announcement-heading,.announcement-scroll,.announcement-footer{padding:var(--s3)}
  .announcement-actions>.btn{flex:1}
}
@media(prefers-reduced-motion:reduce){.announcement-dialog .btn,.announcement-banner .btn{transition:none;transform:none}}
