/* Shared demo chrome only. Every style supplies its own design in style.css. */
.demo-ribbon { position: relative; z-index: 60; display: flex; justify-content: space-between; align-items: center; gap: 12px;
  padding: 7px 18px; background: #16161a; color: #e9e9ee; font: 500 13px/1.35 system-ui, -apple-system, "Segoe UI", sans-serif; }
.demo-ribbon a { color: #fff; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
@media (max-width: 600px) { .demo-ribbon { font-size: 12px; padding: 6px 12px; } .demo-ribbon span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } }
[hidden] { display: none !important; }
[data-demo-done] { margin-top: 14px; padding: 12px 14px; border-radius: 8px; background: #eef7f0; color: #14532d; border: 1px solid #b7dfc2;
  font: 500 15px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; }
dialog { max-width: min(520px, calc(100vw - 32px)); border: 0; padding: 0; }
dialog::backdrop { background: rgba(10, 10, 14, .55); }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.map-pin { cursor: pointer; transition: transform .15s; }
.map-pin.is-active { transform-box: fill-box; }

/* (v2) motion helpers: [data-reveal] fades up on scroll; .kenburns > img drifts slowly on the hero */
.js-reveal [data-reveal] { opacity: 0; transform: translateY(26px); transition: opacity .9s cubic-bezier(.2, .7, .2, 1), transform .9s cubic-bezier(.2, .7, .2, 1); }
.js-reveal [data-reveal].is-in { opacity: 1; transform: none; }
@keyframes demo-kenburns { from { transform: scale(1.07); } to { transform: scale(1); } }
.kenburns { overflow: hidden; }
.kenburns > img, .kenburns > picture > img { animation: demo-kenburns 16s ease-out both; transform-origin: 50% 40%; }
@media (prefers-reduced-motion: reduce) {
  .js-reveal [data-reveal] { opacity: 1; transform: none; transition: none; }
  .kenburns > img, .kenburns > picture > img { animation: none; }
}
