/* Orbit animation adapted from UI Ball/LDRS (MIT); see docs/LDRS-LICENSE.txt. */
.vis-orbit {
  --uib-size: 35px;
  --uib-color: #365dcc;
  --uib-speed: 1.5s;
  --uib-dot-size: calc(var(--uib-size) * .4);
  position: relative;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: var(--uib-size);
  height: var(--uib-dot-size);
}
.vis-orbit::before, .vis-orbit::after {
  content: '';
  position: absolute;
  width: var(--uib-dot-size);
  height: var(--uib-dot-size);
  border-radius: 50%;
  background: var(--uib-color);
  animation: vis-orbit var(--uib-speed) linear infinite;
}
.vis-orbit::after { animation-delay: calc(var(--uib-speed) / -2); }
.vis-loading {
  position: fixed;
  z-index: 1000;
  top: max(18px, env(safe-area-inset-top));
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 13px;
  max-width: calc(100vw - 32px);
  padding: 17px 21px;
  border: 1px solid #dce5f8;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 32px #233f911a;
  color: #344b73;
  font: 500 13px/1.5 var(--vis-font, VisucioEditorial, Arial, sans-serif);
  pointer-events: none;
}
.vis-loading[hidden], .vis-orbit[hidden] { display: none !important; }
.async-status.is-loading { display: flex; align-items: center; gap: 12px; }
.async-status .vis-orbit { --uib-size: 28px; }

/* Header actions already live in the full-screen menu on the six landing pages. */
@media screen and (max-width: 960px) {
  .vis-ui .header .header-actions > a { display: none; }
}
@media screen and (max-width: 760px) {
  :root { scroll-padding-top: 100px; }
  .vis-ui .header, .vis-ui .header.scrolled {
    height: 68px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 10px 13px;
  }
  .vis-ui .header .header-actions { display: flex; align-items: center; gap: 0; margin-left: auto; }
  .vis-ui .header .menu-trigger { position: static; width: 44px; height: 44px; }
  .vis-ui .hero { padding-top: 120px; }
  .vis-ui .v-hero, .vis-ui .venture-hero { padding-top: 108px; }
}

/* Blog and article header: the same compact mobile disclosure. */
.vb-header > .vb-nav-panel { flex: 1; justify-content: space-between; gap: 24px; }
.vb-account-actions { display: flex; align-items: center; gap: 20px; }
.vb-menu-toggle { display: none; }
@media screen and (max-width: 960px) {
  .vb-header { min-height: 68px; padding: 10px 13px; flex-wrap: nowrap; }
  .vb-menu-toggle {
    display: flex; flex: none; flex-direction: column; align-items: center; justify-content: center;
    gap: 6px; width: 44px; height: 44px; padding: 0; border: 1px solid #e6edf8;
    border-radius: 10px; background: #f2f6fd; color: #252b39; cursor: pointer;
  }
  .vb-menu-toggle span { width: 17px; height: 2px; background: currentColor; }
  .vb-menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(4px) rotate(45deg); }
  .vb-menu-toggle[aria-expanded="true"] span:last-child { transform: translateY(-4px) rotate(-45deg); }
  .vb-header > .vb-nav-panel {
    display: none; position: absolute; top: calc(100% + 8px); left: 0; right: 0;
    padding: 20px; border: 1px solid #e2e9f7; border-radius: 18px; background: #fff;
    box-shadow: 0 16px 40px #233f911a; max-height: calc(100dvh - 130px); overflow-y: auto;
  }
  .vb-header > .vb-nav-panel.is-open { display: flex; flex-direction: column; align-items: stretch; gap: 18px; }
  .vb-header .vb-nav-panel nav { display: flex; flex-direction: column; gap: 0; font-size: 15px; }
  .vb-header .vb-nav-panel nav a { padding: 10px 0; }
  .vb-account-actions { gap: 12px; padding-top: 16px; border-top: 1px solid #e2e9f7; }
  .vb-header .vb-account-actions > a { flex: 1; min-height: 44px; display: flex; align-items: center; justify-content: center; font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .vis-orbit::before, .vis-orbit::after { animation: none !important; }
  .vis-orbit::before { transform: translateX(-7px) scale(.7); opacity: .6; }
  .vis-orbit::after { transform: translateX(7px); }
}
@media print { .vis-loading, .vis-orbit, .vb-menu-toggle { display: none !important; } }

@keyframes vis-orbit {
  0% {
    transform: translateX(calc(var(--uib-size) * 0.25)) scale(0.73684);
    opacity: 0.65;
  }
  5% {
    transform: translateX(calc(var(--uib-size) * 0.235)) scale(0.684208);
    opacity: 0.58;
  }
  10% {
    transform: translateX(calc(var(--uib-size) * 0.182)) scale(0.631576);
    opacity: 0.51;
  }
  15% {
    transform: translateX(calc(var(--uib-size) * 0.129)) scale(0.578944);
    opacity: 0.44;
  }
  20% {
    transform: translateX(calc(var(--uib-size) * 0.076)) scale(0.526312);
    opacity: 0.37;
  }
  25% {
    transform: translateX(0%) scale(0.47368);
    opacity: 0.3;
  }
  30% {
    transform: translateX(calc(var(--uib-size) * -0.076)) scale(0.526312);
    opacity: 0.37;
  }
  35% {
    transform: translateX(calc(var(--uib-size) * -0.129)) scale(0.578944);
    opacity: 0.44;
  }
  40% {
    transform: translateX(calc(var(--uib-size) * -0.182)) scale(0.631576);
    opacity: 0.51;
  }
  45% {
    transform: translateX(calc(var(--uib-size) * -0.235)) scale(0.684208);
    opacity: 0.58;
  }
  50% {
    transform: translateX(calc(var(--uib-size) * -0.25)) scale(0.73684);
    opacity: 0.65;
  }
  55% {
    transform: translateX(calc(var(--uib-size) * -0.235)) scale(0.789472);
    opacity: 0.72;
  }
  60% {
    transform: translateX(calc(var(--uib-size) * -0.182)) scale(0.842104);
    opacity: 0.79;
  }
  65% {
    transform: translateX(calc(var(--uib-size) * -0.129)) scale(0.894736);
    opacity: 0.86;
  }
  70% {
    transform: translateX(calc(var(--uib-size) * -0.076)) scale(0.947368);
    opacity: 0.93;
  }
  75% {
    transform: translateX(0%) scale(1);
    opacity: 1;
  }
  80% {
    transform: translateX(calc(var(--uib-size) * 0.076)) scale(0.947368);
    opacity: 0.93;
  }
  85% {
    transform: translateX(calc(var(--uib-size) * 0.129)) scale(0.894736);
    opacity: 0.86;
  }
  90% {
    transform: translateX(calc(var(--uib-size) * 0.182)) scale(0.842104);
    opacity: 0.79;
  }
  95% {
    transform: translateX(calc(var(--uib-size) * 0.235)) scale(0.789472);
    opacity: 0.72;
  }
  100% {
    transform: translateX(calc(var(--uib-size) * 0.25)) scale(0.73684);
    opacity: 0.65;
  }
}
