/*
 * Shared appearance for the "Join Discord" call-to-action used on
 * index.html (fixed in the lower-left of the front overlay) and
 * contact.html (inline inside the contact box). Positioning lives in
 * each consuming page so this rule never has to know which corner of
 * which page it lands in -- only how the button looks and behaves.
 *
 * Visual idiom is the "raised key cap" used by damnbruh.com: a flat
 * dark shadow under the button gives the illusion of depth; on hover
 * the button translates down 2px and the shadow shrinks to 2px so it
 * appears pressed into the page; :active pushes one more pixel.
 * `transition: all` plus `will-change: transform` keep the press
 * feeling instantaneous without repainting the shadow each frame.
 *
 * Colours are the Discord brand palette (primary 5865F2, hover 4752C4,
 * active 3C45A5). Font stack mirrors Discord's own `gg sans` cascade
 * with safe web fallbacks so the button reads as a first-party Discord
 * surface even before the custom font loads.
 */
.discord-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 40px;
  padding: 0 16px;
  border: 0;
  border-radius: 8px;
  cursor: pointer;
  user-select: none;
  background: #5865F2;
  color: #fff;
  font-family: 'gg sans', 'Noto Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-decoration: none;
  box-shadow: 0 4px 0 #3C45A5;
  transition: all 100ms ease-in-out;
  will-change: transform;
}
.discord-btn:hover {
  background: #4752C4;
  transform: translateY(2px);
  box-shadow: 0 2px 0 #3C45A5;
}
.discord-btn:active {
  background: #3C45A5;
  transform: translateY(3px);
  box-shadow: 0 1px 0 #3C45A5;
}
.discord-btn svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}
