/* Shared token layer (public/scripts/token-layer.js): circular portrait tokens over a map. */
.token-layer {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  --token-paper: #fbf7ee;
  --token-ink: #2b2420;
  --token-shadow: 0 1px 3px rgba(20, 14, 8, .45);
}

.token-layer-links {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.token-layer-leader {
  fill: none;
  stroke: var(--token-ink);
  stroke-opacity: .55;
  stroke-width: 1.25;
}

.token-layer-anchor {
  fill: var(--token-paper);
  stroke: var(--token-ink);
  stroke-width: 1.25;
}

.token-layer-token,
.token-layer-stack {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--token-size, 34px);
  height: var(--token-size, 34px);
  padding: 0;
  margin: 0;
  border: 0;
  background: none;
  font: inherit;
  pointer-events: auto;
  cursor: pointer;
  will-change: transform;
}

.token-layer-token[hidden],
.token-layer-stack[hidden] {
  display: none;
}

.token-layer.is-animating .token-layer-token,
.token-layer.is-animating .token-layer-stack {
  transition: transform .28s cubic-bezier(.2, .8, .3, 1.2);
}

.token-layer-face {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  overflow: hidden;
  border-radius: 50%;
  border: 2.5px solid var(--token-ring, #6b5a4a);
  background: var(--token-paper);
  box-shadow: var(--token-shadow), 0 0 0 1.5px var(--token-paper);
  color: var(--token-ring, #6b5a4a);
  font-size: calc(var(--token-size, 34px) * .36);
  font-weight: 700;
  letter-spacing: .02em;
  line-height: 1;
}

.token-layer-face img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.is-square > .token-layer-face {
  border-radius: 24%;
}

.is-square > .token-layer-face img {
  object-fit: contain;
  padding: 8%;
  box-sizing: border-box;
}

button.token-layer-token:hover,
button.token-layer-token:focus-visible {
  z-index: 2;
  outline: none;
}

button.token-layer-token:hover > .token-layer-face,
button.token-layer-token:focus-visible > .token-layer-face,
.token-layer-token.is-active > .token-layer-face {
  transform: scale(1.18);
  box-shadow: 0 2px 8px rgba(20, 14, 8, .5), 0 0 0 2.5px var(--token-paper), 0 0 0 4.5px var(--token-ring, #6b5a4a);
}

/* a stack: up to three fanned tokens and a count */
.token-layer-card {
  pointer-events: none;
  transform: translate(calc(var(--fan) * var(--token-size, 34px) * .2), calc(var(--fan) * var(--token-size, 34px) * -.08)) rotate(calc(var(--fan) * 7deg));
}

.token-layer-stack:hover .token-layer-card {
  transform: translate(calc(var(--fan) * var(--token-size, 34px) * .34), calc(var(--fan) * var(--token-size, 34px) * -.12)) rotate(calc(var(--fan) * 11deg));
  transition: transform .15s ease-out;
}

.token-layer-stack:focus-visible {
  outline: 2px solid var(--token-ink);
  outline-offset: 3px;
  border-radius: 50%;
}

.token-layer-count {
  position: absolute;
  right: calc(var(--token-size, 34px) * -.42);
  top: calc(var(--token-size, 34px) * -.28);
  min-width: 1.5em;
  padding: .1em .4em;
  box-sizing: border-box;
  border-radius: 999px;
  background: var(--token-ink);
  color: var(--token-paper);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  box-shadow: 0 0 0 1.5px var(--token-paper);
}
