/* GitHub 入口：独立样式，不影响原有竹知了页面 */
.opensource-link {
  position: fixed;
  top: calc(180px + env(safe-area-inset-top, 0px));
  left: calc(14px + env(safe-area-inset-left, 0px));
  z-index: 30;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 10px 17px;
  border: 1px solid rgba(184, 149, 235, .46);
  border-radius: 11px;
  background: rgba(14, 13, 32, .86);
  box-shadow: 0 5px 18px rgba(0, 0, 0, .23), inset 0 1px 0 rgba(221, 201, 255, .055);
  color: #dfd3f0;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .055em;
  line-height: 1.25;
  text-decoration: none;
  white-space: nowrap;
  isolation: isolate;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  transition: background .25s ease, border-color .25s ease, color .25s ease;
}

/* 只让一小段低亮度紫色光线沿边框转动 */
.opensource-link::before {
  content: "";
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  padding: 2px;
  background: conic-gradient(from var(--github-angle, 0deg),
    transparent 0deg 270deg,
    rgba(150, 92, 224, .06) 286deg,
    rgba(182, 127, 244, .55) 319deg,
    rgba(150, 92, 224, .06) 345deg,
    transparent 360deg);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite: exclude;
  pointer-events: none;
  animation: github-border-spin 8s linear infinite;
}

.opensource-link:hover,
.opensource-link:focus-visible {
  background: rgba(27, 20, 51, .94);
  border-color: rgba(192, 153, 244, .72);
  color: #f4eaff;
}
.opensource-link:focus-visible { outline: 2px solid #aa80e8; outline-offset: 4px; }

@property --github-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}
@keyframes github-border-spin { to { --github-angle: 360deg; } }

@media (max-width: 600px) {
    .opensource-link {
        top: calc(180px + env(safe-area-inset-top, 0px));
        left: calc(14px + env(safe-area-inset-left, 0px));
    }
}
@media (prefers-reduced-motion: reduce) {
  .opensource-link::before { animation: none; }
}
