/* Full map deliberately overrides the shared compact conversation sheets. */
#game dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog) {
  width: min(96vw, 1400px);
  height: 94dvh;
  max-width: calc(100vw - 20px);
  max-height: calc(100dvh - 20px);
  inset: 0;
  margin: auto;
  overflow: hidden;
  box-sizing: border-box;
  padding: 18px 20px 12px;
  border-color: #ad9970;
  background: radial-gradient(ellipse at top, #18262c, #091116);
  color: #f3e3bb;
}
#game dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)[open] {
  display: flex;
  flex-direction: column;
}
#game #map-dialog.is-town-map .gothic-crest {
  display: none;
}
#game #map-dialog.is-town-map .close {
  position: absolute;
  right: 14px;
  top: 10px;
}
#game #map-dialog.is-town-map h2 {
  font-family: Georgia, serif;
  font-size: 30px;
  margin: 0 40px 0 0;
}
#game #map-dialog.is-town-map #map-position {
  margin: 2px 0 8px;
}
#game #map-dialog.is-town-map .map-routes {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  gap: 0;
  padding: 0;
  border: 0;
  background: none;
}
.town-map-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  font:
    15px Georgia,
    serif;
}
.town-map-toolbar > div {
  display: flex;
  gap: 6px;
  flex: none;
}
.town-map-toolbar button {
  padding: 6px 14px;
}
.town-map-surface {
  position: relative;
  flex: 1;
  min-height: 120px;
  overflow: hidden;
  touch-action: none;
  user-select: none;
  background: #0a1517;
  border: 1px solid #978563;
  margin-top: 8px;
  border-radius: 4px;
  cursor: grab;
}
.town-map-surface:active {
  cursor: grabbing;
}
.town-map-plane {
  position: absolute;
  left: 0;
  top: 0;
  width: 1600px;
  height: 1520px;
  transform-origin: 0 0;
}
.town-map-plane > canvas,
.town-map-pins {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.town-map-plane > canvas {
  pointer-events: none;
  user-select: none;
}
.town-map-pins {
  pointer-events: none;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-pins
  button {
  pointer-events: auto;
  position: absolute;
  transform: translate(-50%, -50%) scale(var(--map-label-scale, 1));
  margin: 0;
  padding: 0;
  line-height: 1.1;
  box-shadow: none;
  cursor: pointer;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building {
  width: 150px;
  height: 38px;
  min-height: 0;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  color: #f3e3bb;
  font:
    16px Georgia,
    serif;
  display: flex;
  align-items: end;
  justify-content: center;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building
  span {
  width: max-content;
  max-width: 150px;
  flex-shrink: 0;
  padding: 4px 12px;
  border: 1px solid #9b8964;
  border-radius: 40% 12px;
  background: #071113eb;
  text-shadow: 0 1px 2px #000;
  transform: translateY(12px);
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building:hover,
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building:focus-visible {
  background: #f4d98915;
  border-color: #ffe5a4;
  outline: 2px solid #e3c17b;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building:disabled {
  opacity: 1;
  cursor: not-allowed;
}
.town-map-building[data-locked] span::before,
.town-map-landmark[data-locked] span::before {
  content: "🔒 ";
  font-size: 0.8em;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-landmark {
  min-height: 30px;
  max-width: 150px;
  border: 1px solid #8c7d58;
  border-radius: 8px;
  padding: 5px 9px;
  color: #f1dfb3;
  background: #081719e8;
  font:
    19px Georgia,
    serif;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-quest {
  border: 3px solid #e9c876;
  border-radius: 50%;
  font:
    900 30px Georgia,
    serif;
  color: #ffe39a;
  background: #102028;
  min-height: 38px;
  width: 38px;
  height: 38px;
  z-index: 3;
}
.town-map-street,
.town-map-player {
  position: absolute;
  transform: translate(-50%, -50%);
  white-space: nowrap;
}
.town-map-street {
  color: #fce6b7;
  background: #102020af;
  padding: 1px 8px;
  border-radius: 8px;
  font:
    bold 22px Georgia,
    serif;
  text-shadow: 0 1px 3px #000;
}
.town-map-street.vertical {
  transform: translate(-50%, -50%) rotate(-90deg);
}
.town-map-player {
  color: #d8f4ff;
  font:
    bold 22px Georgia,
    serif;
  text-shadow:
    0 2px 3px #000,
    0 0 5px #000;
  z-index: 4;
}
.town-map-north {
  position: absolute;
  top: 12px;
  left: 18px;
  color: #efd39e;
  font:
    26px Georgia,
    serif;
  text-align: center;
  text-shadow: 0 2px 4px #000;
  pointer-events: none;
}
.town-map-member-key,
.town-map-member {
  color: #c9a6ff;
}
.town-map-member {
  background: #15121edb;
  border: 1px solid #b9a0d6;
  border-radius: 12px;
  padding: 2px 7px;
}
#game #map-dialog.is-town-map .town-map-key {
  font-size: 13px;
  margin: 7px 0 0;
}
@media (max-width: 600px) {
  #game dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog) {
    width: 96vw;
    height: 94dvh;
    padding: 12px;
  }
  .town-map-toolbar {
    flex-wrap: wrap;
    font-size: 12px;
  }
  #game #map-dialog.is-town-map h2 {
    font-size: 24px;
  }
}

.town-map-status {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  padding: 12px 18px;
  background: #091116ee;
  color: #f3e3bb;
  border: 1px solid #ad9970;
}
#game dialog#map-dialog.is-town-map .town-map-pins button,
.town-map-player {
  transform: translate(-50%, -50%) scale(var(--map-label-scale, 1));
}
#game dialog#map-dialog.is-town-map .town-map-building {
  width: 150px;
  height: 38px;
  font-size: 16px;
}
#game dialog#map-dialog.is-town-map .town-map-landmark {
  font-size: 14px;
}
.town-map-street {
  font-size: 17px;
}

.town-map-landmark-icon {
  width: 20px;
  height: 20px;
  vertical-align: middle;
  margin-right: 4px;
}

/* Compact cartographic labels: screen-readable type instead of large plaques. */
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building,
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-landmark {
  width: 94px;
  max-width: 94px;
  height: auto;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: transparent;
  font:
    500 12px/1.25 system-ui,
    sans-serif;
  letter-spacing: 0.01em;
  color: #f5edd9;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-building
  span,
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-landmark
  span {
  display: block;
  width: auto;
  max-width: 94px;
  padding: 3px 5px;
  border: 1px solid #b7a07888;
  border-radius: 4px;
  background: #101c22eb;
  box-shadow: 0 1px 3px #0006;
  text-shadow: none;
  transform: none;
}
.town-map-landmark-icon {
  width: 14px;
  height: 14px;
  margin-right: 3px;
}
.town-map-player {
  font:
    600 12px/1.2 system-ui,
    sans-serif;
}
#game
  dialog#map-dialog.gothic-panel.is-town-map:not(#journal-dialog)
  .town-map-quest {
  width: 25px;
  height: 25px;
  min-height: 25px;
  border-width: 2px;
  font:
    700 17px/1 system-ui,
    sans-serif;
}
.town-map-street {
  display: none;
  font:
    500 12px/1.2 system-ui,
    sans-serif;
  letter-spacing: 0.03em;
  transform: translate(-50%, -50%) scale(var(--map-label-scale, 1));
}
.map-detail .town-map-street {
  display: block;
}
.town-map-street.vertical {
  transform: translate(-50%, -50%) rotate(-90deg)
    scale(var(--map-label-scale, 1));
}
