@property --preferred-source-border-angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}

.preferred-source-button {
  position: fixed;
  z-index: 40;
  left: max(1rem, env(safe-area-inset-left));
  bottom: max(1rem, env(safe-area-inset-bottom));
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  max-width: calc(100vw - 6.5rem);
  min-height: 3.75rem;
  padding: .65rem .85rem;
  overflow: visible;
  isolation: isolate;
  border: 1px solid transparent;
  box-shadow: 0 0 12px rgb(0 255 255 / 20%), 0 0 22px rgb(200 0 255 / 15%);
  border-radius: 14px;
  background: #09252d;
  color: #ecfeff;
  font-family: inherit;
  text-align: left;
  text-decoration: none;
  -webkit-tap-highlight-color: transparent;
  transition: background-color 150ms ease-out;
}

.preferred-source-button::before {
  content: "";
  position: absolute;
  inset: -1px;
  z-index: 1;
  padding: 2px;
  border-radius: inherit;
  background: conic-gradient(from var(--preferred-source-border-angle), #8B00FF, #C800FF, #FF00FF, #00E5FF, #00FFFF, #FFFFFF, #8B00FF);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  animation: preferred-source-border-spin 2.5s linear infinite;
}

.preferred-source-button[data-motion-paused]::before {
  animation-play-state: paused;
}

.preferred-source-button:hover {
  background-color: #103b45;
}

.preferred-source-button:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 4px;
}

.preferred-source-button:active {
  background-color: #174953;
}

.preferred-source-icon,
.preferred-source-arrow {
  flex: none;
  color: #67e8f9;
}

.preferred-source-icon {
  fill: rgb(0 255 255 / 12%);
}

.preferred-source-copy {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: .125rem;
}

.preferred-source-title {
  font-size: .875rem;
  font-weight: 700;
  line-height: 1.4;
  white-space: nowrap;
}

.preferred-source-detail {
  color: #a5dbe1;
  font-size: .75rem;
  line-height: 1.4;
  white-space: nowrap;
}

.preferred-source-clearance {
  height: calc(5.5rem + env(safe-area-inset-bottom));
}

/* Leave dialogs and the mobile navigation unobstructed. */
body:has([role="dialog"][aria-modal="true"]) .preferred-source-button {
  display: none;
}

@keyframes preferred-source-border-spin {
  to { --preferred-source-border-angle: 360deg; }
}

@media (min-width: 640px) {
  .preferred-source-button {
    left: max(1.5rem, env(safe-area-inset-left));
    bottom: max(1.5rem, env(safe-area-inset-bottom));
    padding: .75rem 1rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .preferred-source-button { transition: none; }
  .preferred-source-button::before { animation: none; }
}

@media print {
  .preferred-source-button, .preferred-source-clearance { display: none; }
}
