/* The premium menu is a full drawer at every width. The legacy client rail's
   collapsed-label rules do not apply to this shell. */
.vis-ui .premium-shell .client-sidebar .nav-button span,
.vis-ui .premium-shell .client-sidebar .profile-compact > div:nth-child(2),
.vis-ui .premium-shell .client-sidebar .logout-button {
  opacity: 1;
  visibility: inherit;
}
.vis-ui .premium-shell .client-sidebar {
  padding-top: calc(22px + env(safe-area-inset-top, 0px));
  padding-bottom: calc(22px + env(safe-area-inset-bottom, 0px));
}
.vis-ui .premium-shell .client-sidebar .nav-group-title {
  flex: 0 0 auto;
  margin: 0;
  padding: 16px 12px 6px;
}
.vis-ui .premium-shell .client-sidebar .premium-menu-heading,
.vis-ui .premium-shell .client-sidebar .sidebar-footer {
  flex: 0 0 auto;
}
html.drawer-open:has(.premium-shell) { overflow: hidden; }

/* Anchor the dock surface to the viewport. Device clearance belongs inside it,
   so an Android system inset cannot lift the entire bar above another gap. */
@media (max-width: 1024px) {
  .vis-ui .premium-shell .mobile-nav {
    bottom: 0;
    padding-bottom: max(6px, env(safe-area-inset-bottom, 0px));
  }
}
/* The ordinary mobile shell has a clear first row and a separate context row. */
@media (max-width: 600px) {
  .vis-ui .premium-shell { --core-header: 134px; }
  .vis-ui .premium-shell .client-header {
    grid-template-rows: 60px 44px;
    column-gap: 7px;
    padding: 10px 14px 19px;
  }
  .vis-ui .premium-shell .client-brand img { width: 118px; max-width: 118px; }
  .vis-ui .premium-shell .client-mobile-menu,
  .vis-ui .premium-shell .client-header-actions > .icon-button {
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
  }
  .vis-ui .premium-shell .client-header-actions { gap: 0; }
  .vis-ui .premium-shell .client-header-actions > .premium-profile-button {
    width: 44px;
    min-width: 44px;
    height: 44px;
    padding: 4px;
  }
  .vis-ui .premium-shell .client-header .icon-button svg { width: 22px; height: 22px; }
  .vis-ui .premium-shell .premium-profile-button .client-avatar { width: 36px; height: 36px; }
}
@media (max-width: 359px) {
  .vis-ui .premium-shell .client-header { padding-inline: 10px; column-gap: 4px; }
  .vis-ui .premium-shell .client-brand { gap: 0; }
  .vis-ui .premium-shell .client-brand img { width: 112px; max-width: 112px; }
}

/* The existing status text and real pending state remain; only the decorative
   orbit becomes a quiet three-bead row shared by normal and compact loaders. */
.vis-orb-loader { gap: 12px; min-height: 144px; padding: 24px 18px; }
.vis-orb-loader--compact { gap: 10px; min-height: 0; padding: 8px 0; }
.vis-orb-loader .vis-orb-loader__orbit {
  display: flex;
  align-items: center;
  gap: 5px;
  width: 25px;
  height: 5px;
  animation: none;
}
.vis-orb-loader .vis-orb-loader__orb:nth-child(n) {
  position: static;
  inset: auto;
  flex: 0 0 5px;
  width: 5px;
  height: 5px;
  background: var(--vis-action, #365dcc);
  box-shadow: none;
  animation: vis-loading-bead 1.5s ease-in-out infinite;
}
.vis-orb-loader .vis-orb-loader__orb:nth-child(2) { animation-delay: .18s; }
.vis-orb-loader .vis-orb-loader__orb:nth-child(3) { animation-delay: .36s; }
@keyframes vis-loading-bead { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .vis-orb-loader .vis-orb-loader__orb:nth-child(n) { animation: none; opacity: 1; }
}
