/* Shared announcement popup — one component for public and customer surfaces. */
html.gv-announcement-open,
html.gv-announcement-open body {
  overflow: hidden !important;
  overscroll-behavior: none;
}

.gv-announcement-overlay[hidden] { display:none !important; }
.gv-announcement-overlay {
  position:fixed;
  inset:0;
  z-index:2147482000;
  display:grid;
  place-items:center;
  padding:clamp(16px,4vw,32px);
  isolation:isolate;
}
.gv-announcement-backdrop {
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.32);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.gv-announcement-card {
  position:relative;
  z-index:1;
  width:min(560px,100%);
  max-height:min(720px,calc(100dvh - 32px));
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border:1px solid var(--gv-border,#e5e5e5);
  border-radius: var(--gv-radius-card);
  background:var(--gv-surface,#fff);
  color:var(--gv-text,#171717);
  box-shadow:none;
  outline:none;
}
.gv-announcement-head {
  min-height:64px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding: 16px 16px;
  border-bottom:1px solid var(--gv-border,#e5e5e5);
}
.gv-announcement-brand {
  min-width:0;
  display:flex;
  align-items:center;
  gap: 12px;
}
.gv-announcement-logo {
  width:34px;
  height:34px;
  flex:0 0 34px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid var(--gv-border,#e5e5e5);
  border-radius:8px;
  background:var(--gv-surface-subtle,#fafafa);
}
.gv-announcement-logo img { width:100%;height:100%;object-fit:contain;display:block; }
.gv-announcement-logo.is-fallback { font-size:16px;font-weight:600; }
.gv-announcement-brand-copy { min-width:0;display:grid;gap: 4px;line-height:1.3; }
.gv-announcement-brand-copy small {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--gv-text-muted,#666);
  font-size:12px;
  font-weight:500;
}
.gv-announcement-brand-copy b { font-size:14px;font-weight:600; }
.gv-announcement-close {
  width:34px;
  height:34px;
  min-width:34px;
  padding:0;
  display:grid;
  place-items:center;
  border:1px solid transparent;
  border-radius:8px;
  background:transparent;
  color:inherit;
  cursor:pointer;
}
.gv-announcement-close:hover { background:var(--gv-surface-muted,#f5f5f5); }
.gv-announcement-close:focus-visible {
  outline:none;
  box-shadow:var(--gv-focus-ring,0 0 0 2px #fff,0 0 0 4px #111);
}
.gv-announcement-body {
  min-height:0;
  overflow:auto;
  padding: 24px 24px 24px;
  scrollbar-gutter:stable;
}
.gv-announcement-body h2 {
  margin: 0 0 12px;
  color:inherit;
  font-size:clamp(20px,3vw,24px);
  line-height:1.25;
  letter-spacing:-.02em;
  overflow-wrap:anywhere;
}
.gv-announcement-content {
  color:var(--gv-text-muted,#666);
  font-size:14px;
  line-height:1.7;
  overflow-wrap:anywhere;
}
.gv-announcement-content > :first-child { margin-top:0; }
.gv-announcement-content > :last-child { margin-bottom:0; }
html[dir="rtl"] .gv-announcement-head,
html[dir="rtl"] .gv-announcement-body { text-align:right; }

@media (max-width:640px) {
  /* Keep the mobile notice as the same centered dialog used on desktop.
     The card grows naturally with its content until the viewport limit,
     then only the body scrolls. */
  .gv-announcement-overlay {
    padding:12px;
    place-items:center;
  }
  .gv-announcement-card {
    width:100%;

    max-height:calc(100dvh - 24px);
    border-radius: var(--gv-radius-card);
  }
  .gv-announcement-head { min-height:58px;padding: 12px 12px; }
  .gv-announcement-body { padding: 20px 16px 20px; }
  .gv-announcement-content { font-size:14px; }
}

@media (prefers-reduced-motion:no-preference) {
  .gv-announcement-card { animation:gv-announcement-in .18s ease-out both; }
  .gv-announcement-backdrop { animation:gv-announcement-fade .16s ease-out both; }
}
@keyframes gv-announcement-in { from { opacity:0;transform:translateY(8px) scale(.99); } to { opacity:1;transform:none; } }
@keyframes gv-announcement-fade { from { opacity:0; } to { opacity:1; } }
