
trix-editor {
  border: 1px solid #bbb;
  border-radius: 3px;
  margin: 0;
  padding: 0.4em 0.6em;
  min-height: 5em;
  outline: none;
}

trix-toolbar * {
  box-sizing: border-box;
}
trix-toolbar .trix-button-row {
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  overflow-x: auto;
}
trix-toolbar .trix-button-group {
  display: flex;
  margin-bottom: 10px;
  border: 1px solid #bbb;
  border-top-color: #ccc;
  border-bottom-color: #888;
  border-radius: 3px;
}
trix-toolbar .trix-button-group:not(:first-child) {
  margin-left: 1.5vw;
}
@media (max-width: 768px) {
  trix-toolbar .trix-button-group:not(:first-child) {
    margin-left: 0;
  }
}
trix-toolbar .trix-button-group-spacer {
  flex-grow: 1;
}
@media (max-width: 768px) {
  trix-toolbar .trix-button-group-spacer {
    display: none;
  }
}
trix-toolbar .trix-button {
  position: relative;
  float: left;
  color: rgba(0, 0, 0, 0.6);
  font-size: 0.75em;
  font-weight: 600;
  white-space: nowrap;
  padding: 0 0.5em;
  margin: 0;
  outline: none;
  border: none;
  border-bottom: 1px solid #ddd;
  border-radius: 0;
  background: transparent;
}
trix-toolbar .trix-button:not(:first-child) {
  border-left: 1px solid #ccc;
}
trix-toolbar .trix-button.trix-active {
  background: #cbeefa;
  color: rgb(0, 0, 0);
}
trix-toolbar .trix-button:not(:disabled) {
  cursor: pointer;
}
trix-toolbar .trix-button:disabled {
  color: rgba(0, 0, 0, 0.125);
}
@media (max-width: 768px) {
  trix-toolbar .trix-button {
    letter-spacing: -0.01em;
    padding: 0 0.3em;
  }
}
trix-toolbar .trix-button--icon {
  font-size: inherit;
  width: 2.6em;
  height: 1.6em;
  max-width: calc(0.8em + 4vw);
  text-indent: -9999px;
}
@media (max-width: 768px) {
  trix-toolbar .trix-button--icon {
    height: 2em;
    max-width: calc(0.8em + 3.5vw);
  }
}
trix-toolbar .trix-button--icon::before {
  display: inline-block;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  opacity: 0.6;
  content: "";
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}
@media (max-width: 768px) {
  trix-toolbar .trix-button--icon::before {
    right: 6%;
    left: 6%;
  }
}
trix-toolbar .trix-button--icon.trix-active::before {
  opacity: 1;
}
trix-toolbar .trix-button--icon:disabled::before {
  opacity: 0.125;
}
trix-toolbar .trix-button--icon-attach::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.5%2018V7.5c0-2.25%203-2.25%203%200V18c0%204.125-6%204.125-6%200V7.5c0-6.375%209-6.375%209%200V18%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-miterlimit%3D%2210%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");
  top: 8%;
  bottom: 4%;
}
trix-toolbar .trix-button--icon-bold::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6.522%2019.242a.5.5%200%200%201-.5-.5V5.35a.5.5%200%200%201%20.5-.5h5.783c1.347%200%202.46.345%203.24.982.783.64%201.216%201.562%201.216%202.683%200%201.13-.587%202.129-1.476%202.71a.35.35%200%200%200%20.049.613c1.259.56%202.101%201.742%202.101%203.22%200%201.282-.483%202.334-1.363%203.063-.876.726-2.132%201.12-3.66%201.12h-5.89ZM9.27%207.347v3.362h1.97c.766%200%201.347-.17%201.733-.464.38-.291.587-.716.587-1.27%200-.53-.183-.928-.513-1.198-.334-.273-.838-.43-1.505-.43H9.27Zm0%205.606v3.791h2.389c.832%200%201.448-.177%201.853-.497.399-.315.614-.786.614-1.423%200-.62-.22-1.077-.63-1.385-.418-.313-1.053-.486-1.905-.486H9.27Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-italic::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M9%205h6.5v2h-2.23l-2.31%2010H13v2H6v-2h2.461l2.306-10H9V5Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-link::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M18.948%205.258a4.337%204.337%200%200%200-6.108%200L11.217%206.87a.993.993%200%200%200%200%201.41c.392.39%201.027.39%201.418%200l1.623-1.613a2.323%202.323%200%200%201%203.271%200%202.29%202.29%200%200%201%200%203.251l-2.393%202.38a3.021%203.021%200%200%201-4.255%200l-.05-.049a1.007%201.007%200%200%200-1.418%200%20.993.993%200%200%200%200%201.41l.05.049a5.036%205.036%200%200%200%207.091%200l2.394-2.38a4.275%204.275%200%200%200%200-6.072Zm-13.683%2013.6a4.337%204.337%200%200%200%206.108%200l1.262-1.255a.993.993%200%200%200%200-1.41%201.007%201.007%200%200%200-1.418%200L9.954%2017.45a2.323%202.323%200%200%201-3.27%200%202.29%202.29%200%200%201%200-3.251l2.344-2.331a2.579%202.579%200%200%201%203.631%200c.392.39%201.027.39%201.419%200a.993.993%200%200%200%200-1.41%204.593%204.593%200%200%200-6.468%200l-2.345%202.33a4.275%204.275%200%200%200%200%206.072Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-strike::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6%2014.986c.088%202.647%202.246%204.258%205.635%204.258%203.496%200%205.713-1.728%205.713-4.463%200-.275-.02-.536-.062-.781h-3.461c.398.293.573.654.573%201.123%200%201.035-1.074%201.787-2.646%201.787-1.563%200-2.773-.762-2.91-1.924H6ZM6.432%2010h3.763c-.632-.314-.914-.715-.914-1.273%200-1.045.977-1.739%202.432-1.739%201.475%200%202.52.723%202.617%201.914h2.764c-.05-2.548-2.11-4.238-5.39-4.238-3.145%200-5.392%201.719-5.392%204.316%200%20.363.04.703.12%201.02ZM4%2011a1%201%200%201%200%200%202h15a1%201%200%201%200%200-2H4Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-quote::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M4.581%208.471c.44-.5%201.056-.834%201.758-.995C8.074%207.17%209.201%207.822%2010%208.752c1.354%201.578%201.33%203.555.394%205.277-.941%201.731-2.788%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.121-.49.16-.764.294-.286.567-.566.791-.835.222-.266.413-.54.524-.815.113-.28.156-.597.026-.908-.128-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.674-2.7c0-.905.283-1.59.72-2.088Zm9.419%200c.44-.5%201.055-.834%201.758-.995%201.734-.306%202.862.346%203.66%201.276%201.355%201.578%201.33%203.555.395%205.277-.941%201.731-2.789%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.122-.49.16-.764.294-.286.567-.566.791-.835.222-.266.412-.54.523-.815.114-.28.157-.597.026-.908-.127-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.672-2.701c0-.905.283-1.59.72-2.088Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-heading-1::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21.5%207.5v-3h-12v3H14v13h3v-13h4.5ZM9%2013.5h3.5v-3h-10v3H6v7h3v-7Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-code::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.293%2011.293a1%201%200%200%200%200%201.414l4%204a1%201%200%201%200%201.414-1.414L5.414%2012l3.293-3.293a1%201%200%200%200-1.414-1.414l-4%204Zm13.414%205.414%204-4a1%201%200%200%200%200-1.414l-4-4a1%201%200%201%200-1.414%201.414L18.586%2012l-3.293%203.293a1%201%200%200%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-bullet-list::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%207.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203ZM8%206a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-2.5-5a1.5%201.5%200%201%201-3%200%201.5%201.5%200%200%201%203%200ZM5%2019.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-number-list::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%204h2v4H4V5H3V4Zm5%202a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-3.5-7H6v1l-1.5%202H6v1H3v-1l1.667-2H3v-1h2.5ZM3%2017v-1h3v4H3v-1h2v-.5H4v-1h1V17H3Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-undo::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%2014a1%201%200%200%200%201%201h6a1%201%200%201%200%200-2H6.257c2.247-2.764%205.151-3.668%207.579-3.264%202.589.432%204.739%202.356%205.174%205.405a1%201%200%200%200%201.98-.283c-.564-3.95-3.415-6.526-6.825-7.095C11.084%207.25%207.63%208.377%205%2011.39V8a1%201%200%200%200-2%200v6Zm2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-redo::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2014a1%201%200%200%201-1%201h-6a1%201%200%201%201%200-2h3.743c-2.247-2.764-5.151-3.668-7.579-3.264-2.589.432-4.739%202.356-5.174%205.405a1%201%200%200%201-1.98-.283c.564-3.95%203.415-6.526%206.826-7.095%203.08-.513%206.534.614%209.164%203.626V8a1%201%200%201%201%202%200v6Zm-2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-decrease-nesting-level::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-3.707-5.707a1%201%200%200%200%200%201.414l2%202a1%201%200%201%200%201.414-1.414L4.414%2012l1.293-1.293a1%201%200%200%200-1.414-1.414l-2%202Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-button--icon-increase-nesting-level::before {
  background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-2.293-2.293%202-2a1%201%200%200%200%200-1.414l-2-2a1%201%200%201%200-1.414%201.414L3.586%2012l-1.293%201.293a1%201%200%201%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
}
trix-toolbar .trix-dialogs {
  position: relative;
}
trix-toolbar .trix-dialog {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  font-size: 0.75em;
  padding: 15px 10px;
  background: #fff;
  box-shadow: 0 0.3em 1em #ccc;
  border-top: 2px solid #888;
  border-radius: 5px;
  z-index: 5;
}
trix-toolbar .trix-input--dialog {
  font-size: inherit;
  font-weight: normal;
  padding: 0.5em 0.8em;
  margin: 0 10px 0 0;
  border-radius: 3px;
  border: 1px solid #bbb;
  background-color: #fff;
  box-shadow: none;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none;
}
trix-toolbar .trix-input--dialog.validate:invalid {
  box-shadow: #F00 0px 0px 1.5px 1px;
}
trix-toolbar .trix-button--dialog {
  font-size: inherit;
  padding: 0.5em;
  border-bottom: none;
}
trix-toolbar .trix-dialog--link {
  max-width: 600px;
}
trix-toolbar .trix-dialog__link-fields {
  display: flex;
  align-items: baseline;
}
trix-toolbar .trix-dialog__link-fields .trix-input {
  flex: 1;
}
trix-toolbar .trix-dialog__link-fields .trix-button-group {
  flex: 0 0 content;
  margin: 0;
}

trix-editor [data-trix-mutable]:not(.attachment__caption-editor) {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

trix-editor [data-trix-mutable] ::-moz-selection, trix-editor [data-trix-mutable]::-moz-selection,
trix-editor [data-trix-cursor-target]::-moz-selection {
  background: none;
}
trix-editor [data-trix-mutable] ::selection, trix-editor [data-trix-mutable]::selection,
trix-editor [data-trix-cursor-target]::selection {
  background: none;
}

trix-editor [data-trix-mutable].attachment__caption-editor:focus::-moz-selection {
  background: highlight;
}
trix-editor [data-trix-mutable].attachment__caption-editor:focus::selection {
  background: highlight;
}

trix-editor [data-trix-mutable].attachment.attachment--file {
  box-shadow: 0 0 0 2px highlight;
  border-color: transparent;
}
trix-editor [data-trix-mutable].attachment img {
  box-shadow: 0 0 0 2px highlight;
}
trix-editor .attachment {
  position: relative;
}
trix-editor .attachment:hover {
  cursor: default;
}
trix-editor .attachment--preview .attachment__caption:hover {
  cursor: text;
}
trix-editor .attachment__progress {
  position: absolute;
  z-index: 1;
  height: 20px;
  top: calc(50% - 10px);
  left: 5%;
  width: 90%;
  opacity: 0.9;
  transition: opacity 200ms ease-in;
}
trix-editor .attachment__progress[value="100"] {
  opacity: 0;
}
trix-editor .attachment__caption-editor {
  display: inline-block;
  width: 100%;
  margin: 0;
  padding: 0;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
  color: inherit;
  text-align: center;
  vertical-align: top;
  border: none;
  outline: none;
  -webkit-appearance: none;
  -moz-appearance: none;
}
trix-editor .attachment__toolbar {
  position: absolute;
  z-index: 1;
  top: -0.9em;
  left: 0;
  width: 100%;
  text-align: center;
}
trix-editor .trix-button-group {
  display: inline-flex;
}
trix-editor .trix-button {
  position: relative;
  float: left;
  color: #666;
  white-space: nowrap;
  font-size: 80%;
  padding: 0 0.8em;
  margin: 0;
  outline: none;
  border: none;
  border-radius: 0;
  background: transparent;
}
trix-editor .trix-button:not(:first-child) {
  border-left: 1px solid #ccc;
}
trix-editor .trix-button.trix-active {
  background: #cbeefa;
}
trix-editor .trix-button:not(:disabled) {
  cursor: pointer;
}
trix-editor .trix-button--remove {
  text-indent: -9999px;
  display: inline-block;
  padding: 0;
  outline: none;
  width: 1.8em;
  height: 1.8em;
  line-height: 1.8em;
  border-radius: 50%;
  background-color: #fff;
  border: 2px solid highlight;
  box-shadow: 1px 1px 6px rgba(0, 0, 0, 0.25);
}
trix-editor .trix-button--remove::before {
  display: inline-block;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  opacity: 0.7;
  content: "";
  background-image: url("data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.41%2017.59%205%2012%2010.59%206.41%205%205%206.41%2010.59%2012%205%2017.59%206.41%2019%2012%2013.41%2017.59%2019%2019%2017.59%2013.41%2012z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E");
  background-position: center;
  background-repeat: no-repeat;
  background-size: 90%;
}
trix-editor .trix-button--remove:hover {
  border-color: #333;
}
trix-editor .trix-button--remove:hover::before {
  opacity: 1;
}
trix-editor .attachment__metadata-container {
  position: relative;
}
trix-editor .attachment__metadata {
  position: absolute;
  left: 50%;
  top: 2em;
  transform: translate(-50%, 0);
  max-width: 90%;
  padding: 0.1em 0.6em;
  font-size: 0.8em;
  color: #fff;
  background-color: rgba(0, 0, 0, 0.7);
  border-radius: 3px;
}
trix-editor .attachment__metadata .attachment__name {
  display: inline-block;
  max-width: 100%;
  vertical-align: bottom;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
trix-editor .attachment__metadata .attachment__size {
  margin-left: 0.2em;
  white-space: nowrap;
}

.trix-content {
  line-height: 1.5;
  overflow-wrap: break-word;
  word-break: break-word;
}
.trix-content * {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
.trix-content h1 {
  font-size: 1.2em;
  line-height: 1.2;
}
.trix-content blockquote {
  border: 0 solid #ccc;
  border-left-width: 0.3em;
  margin-left: 0.3em;
  padding-left: 0.6em;
}
.trix-content [dir=rtl] blockquote,
.trix-content blockquote[dir=rtl] {
  border-width: 0;
  border-right-width: 0.3em;
  margin-right: 0.3em;
  padding-right: 0.6em;
}
.trix-content li {
  margin-left: 1em;
}
.trix-content [dir=rtl] li {
  margin-right: 1em;
}
.trix-content pre {
  display: inline-block;
  width: 100%;
  vertical-align: top;
  font-family: monospace;
  font-size: 0.9em;
  padding: 0.5em;
  white-space: pre;
  background-color: #eee;
  overflow-x: auto;
}
.trix-content img {
  max-width: 100%;
  height: auto;
}
.trix-content .attachment {
  display: inline-block;
  position: relative;
  max-width: 100%;
}
.trix-content .attachment a {
  color: inherit;
  text-decoration: none;
}
.trix-content .attachment a:hover, .trix-content .attachment a:visited:hover {
  color: inherit;
}
.trix-content .attachment__caption {
  text-align: center;
}
.trix-content .attachment__caption .attachment__name + .attachment__size::before {
  content: " •";
}
.trix-content .attachment--preview {
  width: 100%;
  text-align: center;
}
.trix-content .attachment--preview .attachment__caption {
  color: #666;
  font-size: 0.9em;
  line-height: 1.2;
}
.trix-content .attachment--file {
  color: #333;
  line-height: 1;
  margin: 0 2px 2px 2px;
  padding: 0.4em 1em;
  border: 1px solid #bbb;
  border-radius: 5px;
}
.trix-content .attachment-gallery {
  display: flex;
  flex-wrap: wrap;
  position: relative;
}
.trix-content .attachment-gallery .attachment {
  flex: 1 0 33%;
  padding: 0 0.5em;
  max-width: 33%;
}
.trix-content .attachment-gallery.attachment-gallery--2 .attachment, .trix-content .attachment-gallery.attachment-gallery--4 .attachment {
  flex-basis: 50%;
  max-width: 50%;
}
/*
 * Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and
 * the trix-editor content (whether displayed or under editing). Feel free to incorporate this
 * inclusion directly in any other asset bundle and remove this file.
 *

*/

/*
 * We need to override trix.css’s image gallery styles to accommodate the
 * <action-text-attachment> element we wrap around attachments. Otherwise,
 * images in galleries will be squished by the max-width: 33%; rule.
*/
.trix-content .attachment-gallery > action-text-attachment,
.trix-content .attachment-gallery > .attachment {
  flex: 1 0 33%;
  padding: 0 0.5em;
  max-width: 33%;
}

.trix-content
  .attachment-gallery.attachment-gallery--2
  > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--2 > .attachment,
.trix-content
  .attachment-gallery.attachment-gallery--4
  > action-text-attachment,
.trix-content .attachment-gallery.attachment-gallery--4 > .attachment {
  flex-basis: 50%;
  max-width: 50%;
}

.trix-content action-text-attachment .attachment {
  padding: 0 !important;
  max-width: 100% !important;
}

/* Hide both attach files and attach images buttons in trix editor*/
.trix-button-group.trix-button-group--file-tools {
  display: none;
}

/* Color buttons in white */
.trix-button-row button {
  background-color: white !important;
}

.trix-content-editor {
  min-height: 10rem;
  width: 100%;
}
@tailwind base;
@tailwind components;
@tailwind utilities;
@tailwind daisyui;

/*

@layer components {
  .btn-primary {
    @apply py-2 px-4 bg-blue-200;
  }
}

*/
@import "actiontext.css";
@import "maps_maplibre_replay.css";
@import "maps_maplibre_timeline_feed.css";
@import "maps_maplibre_timeline_rail.css";
@import "maps_maplibre_place_drawer.css";

@layer components {
  .fade-out {
    opacity: 0;
    transition: opacity 150ms ease-in-out;
  }
}

/* ===== Dawarich Design System v2 ===== */

/* Glass navbar — must sit above all page content */
.navbar {
  background: oklch(var(--b1) / 0.75) !important;
  backdrop-filter: blur(16px) saturate(1.5);
  -webkit-backdrop-filter: blur(16px) saturate(1.5);
  border-bottom: 1px solid oklch(var(--bc) / 0.1);
  z-index: 40;
}

/* DaisyUI table sticky headers conflict with navbar dropdowns — disable */
.table :where(thead, tfoot) :where(th, td) {
  position: static !important;
  z-index: auto !important;
}

.table thead th,
.table tfoot th,
table thead th,
table tfoot th {
  position: static !important;
  z-index: auto !important;
}

/* Card lift on hover — only for cards that are links */
a .card,
a.card {
  transition:
    transform 200ms ease,
    box-shadow 200ms ease;
}

a .card:hover,
a.card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 20px oklch(var(--bc) / 0.05);
}

/* Button lift on hover */
.btn-primary:hover,
.btn-secondary:hover,
.btn-accent:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px oklch(var(--p) / 0.35);
}

/* Stat values — tabular nums */
.stat-value {
  font-variant-numeric: tabular-nums;
}

/* Grain texture overlay */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  opacity: 0.03;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(/%23n)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 256px;
}

[data-theme="dawarich-dark"] body::before {
  opacity: 0.04;
}

/* Supporter Badge Animation */
@keyframes supporter-rainbow-glow {
  0% {
    filter: hue-rotate(0deg) drop-shadow(0 0 2px rgba(236, 72, 153, 0.4));
  }
  25% {
    filter: hue-rotate(90deg) drop-shadow(0 0 8px rgba(236, 72, 153, 0.8));
  }
  50% {
    filter: hue-rotate(180deg) drop-shadow(0 0 2px rgba(236, 72, 153, 0.4));
  }
  75% {
    filter: hue-rotate(270deg) drop-shadow(0 0 8px rgba(236, 72, 153, 0.8));
  }
  100% {
    filter: hue-rotate(360deg) drop-shadow(0 0 2px rgba(236, 72, 153, 0.4));
  }
}

#selection-tool-button.active {
  background-color: #60a5fa;
  color: white;
}

/* Cancel Selection Button */
#cancel-selection-button {
  width: 100%;
}

/* Emoji Picker Styles */
em-emoji-picker {
  --color-border-over: rgba(0, 0, 0, 0.1);
  --color-border: rgba(0, 0, 0, 0.05);
  --font-family:
    ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    Roboto, "Helvetica Neue", Arial, sans-serif;
  --rgb-accent: 96, 165, 250;
  /* Blue accent to match application */
  position: absolute;
  z-index: 1000;
  max-width: 400px;
  min-width: 318px;
  resize: horizontal;
  overflow: auto;
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}

/* Dark mode support for emoji picker */
[data-theme="dark"] em-emoji-picker,
html.dark em-emoji-picker {
  --color-border-over: rgba(255, 255, 255, 0.1);
  --color-border: rgba(255, 255, 255, 0.05);
  --rgb-accent: 96, 165, 250;
}

/* Responsive emoji picker on mobile */
@media (max-width: 768px) {
  em-emoji-picker {
    max-width: 90vw;
    min-width: 280px;
  }
}

/* Color Picker Styles */
.color-input {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border: none;
  padding: 0;
}

.color-input::-webkit-color-swatch-wrapper {
  padding: 0;
}

.color-input::-webkit-color-swatch {
  border: none;
  border-radius: 0.5rem;
}

.color-input::-moz-color-swatch {
  border: none;
  border-radius: 0.5rem;
}
.maplibregl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgb(0,0,0,0)}.maplibregl-canvas{left:0;position:absolute;top:0}.maplibregl-map:fullscreen{height:100%;width:100%}.maplibregl-ctrl-group button.maplibregl-ctrl-compass{touch-action:none}.maplibregl-canvas-container.maplibregl-interactive,.maplibregl-ctrl-group button.maplibregl-ctrl-compass{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer{cursor:pointer}.maplibregl-canvas-container.maplibregl-interactive:active,.maplibregl-ctrl-group button.maplibregl-ctrl-compass:active{cursor:grabbing}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-canvas-container.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:pinch-zoom}.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,.maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan .maplibregl-canvas{touch-action:none}.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures,.maplibregl-canvas-container.maplibregl-touch-drag-pan.maplibregl-cooperative-gestures .maplibregl-canvas{touch-action:pan-x pan-y}.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-top-left,.maplibregl-ctrl-top-right{pointer-events:none;position:absolute;z-index:2}.maplibregl-ctrl-top-left{left:0;top:0}.maplibregl-ctrl-top-right{right:0;top:0}.maplibregl-ctrl-bottom-left{bottom:0;left:0}.maplibregl-ctrl-bottom-right{bottom:0;right:0}.maplibregl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.maplibregl-ctrl-top-left .maplibregl-ctrl{float:left;margin:10px 0 0 10px}.maplibregl-ctrl-top-right .maplibregl-ctrl{float:right;margin:10px 10px 0 0}.maplibregl-ctrl-bottom-left .maplibregl-ctrl{float:left;margin:0 0 10px 10px}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 10px 10px 0}.maplibregl-ctrl-group{background:#fff;border-radius:4px}.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (forced-colors:active){.maplibregl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.maplibregl-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.maplibregl-ctrl-group button+button{border-top:1px solid #ddd}.maplibregl-ctrl button .maplibregl-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (forced-colors:active){.maplibregl-ctrl-icon{background-color:transparent}.maplibregl-ctrl-group button+button{border-top:1px solid ButtonText}}.maplibregl-ctrl button::-moz-focus-inner{border:0;padding:0}.maplibregl-ctrl-attrib-button:focus,.maplibregl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl button:disabled{cursor:not-allowed}.maplibregl-ctrl button:disabled .maplibregl-ctrl-icon{opacity:.25}@media (hover:hover){.maplibregl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}}.maplibregl-ctrl button:not(:disabled):active{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.maplibregl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.maplibregl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.maplibregl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.maplibregl-ctrl-group button:focus:only-child{border-radius:inherit}.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-shrink .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-compass .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E")}}.maplibregl-ctrl button.maplibregl-ctrl-globe .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%23333' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-globe-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='none' stroke='%2333b5e5' viewBox='0 0 22 22'%3E%3Ccircle cx='11' cy='11' r='8.5'/%3E%3Cpath d='M17.5 11c0 4.819-3.02 8.5-6.5 8.5S4.5 15.819 4.5 11 7.52 2.5 11 2.5s6.5 3.681 6.5 8.5Z'/%3E%3Cpath d='M13.5 11c0 2.447-.331 4.64-.853 6.206-.262.785-.562 1.384-.872 1.777-.314.399-.58.517-.775.517s-.461-.118-.775-.517c-.31-.393-.61-.992-.872-1.777C8.831 15.64 8.5 13.446 8.5 11s.331-4.64.853-6.206c.262-.785.562-1.384.872-1.777.314-.399.58-.517.775-.517s.461.118.775.517c.31.393.61.992.872 1.777.522 1.565.853 3.76.853 6.206Z'/%3E%3Cpath d='M11 7.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138q.07-.058.224-.138c.299-.151.763-.302 1.379-.434C7.378 5.666 9.091 5.5 11 5.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138q-.07.058-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428ZM4.486 6.436ZM11 16.5c-1.909 0-3.622-.166-4.845-.428-.616-.132-1.08-.283-1.379-.434a1.3 1.3 0 0 1-.224-.138 1.3 1.3 0 0 1 .224-.138c.299-.151.763-.302 1.379-.434C7.378 14.666 9.091 14.5 11 14.5s3.622.166 4.845.428c.616.132 1.08.283 1.379.434.105.053.177.1.224.138a1.3 1.3 0 0 1-.224.138c-.299.151-.763.302-1.379.434-1.223.262-2.936.428-4.845.428Zm-6.514-1.064ZM11 12.5c-2.46 0-4.672-.222-6.255-.574-.796-.177-1.406-.38-1.805-.59a1.5 1.5 0 0 1-.39-.272.3.3 0 0 1-.047-.064.3.3 0 0 1 .048-.064c.066-.073.189-.167.389-.272.399-.21 1.009-.413 1.805-.59C6.328 9.722 8.54 9.5 11 9.5s4.672.222 6.256.574c.795.177 1.405.38 1.804.59.2.105.323.2.39.272a.3.3 0 0 1 .047.064.3.3 0 0 1-.048.064 1.4 1.4 0 0 1-.389.272c-.399.21-1.009.413-1.804.59-1.584.352-3.796.574-6.256.574Zm-8.501-1.51v.002zm0 .018v.002zm17.002.002v-.002zm0-.018v-.002z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%23333' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-terrain-enabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' fill='%2333b5e5' viewBox='0 0 22 22'%3E%3Cpath d='m1.754 13.406 4.453-4.851 3.09 3.09 3.281 3.277.969-.969-3.309-3.312 3.844-4.121 6.148 6.886h1.082v-.855l-7.207-8.07-4.84 5.187L6.169 6.57l-5.48 5.965v.871ZM.688 16.844h20.625v1.375H.688Zm0 0'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23aaa' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-waiting .maplibregl-ctrl-icon{animation:maplibregl-spin 2s linear infinite}@media (forced-colors:active){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23fff' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23999' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-active-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e58978' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%2333b5e5' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate.maplibregl-ctrl-geolocate-background-error .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23e54e33' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E")}.maplibregl-ctrl button.maplibregl-ctrl-geolocate:disabled .maplibregl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23666' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3Cpath fill='red' d='m14 5 1 1-9 9-1-1z'/%3E%3C/svg%3E")}}@keyframes maplibregl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;cursor:pointer;display:block;height:23px;margin:0 0 -4px -4px;overflow:hidden;width:88px}a.maplibregl-ctrl-logo.maplibregl-compact{width:14px}@media (forced-colors:active){a.maplibregl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}@media (forced-colors:active) and (prefers-color-scheme:light){a.maplibregl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='88' height='23' fill='none'%3E%3Cpath fill='%23000' fill-opacity='.4' fill-rule='evenodd' d='M17.408 16.796h-1.827l2.501-12.095h.198l3.324 6.533.988 2.19.988-2.19 3.258-6.533h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.929 5.644h-.098l-2.914-5.644-.757-1.71-.345 1.71zm1.958-3.42-.726 3.663a1.255 1.255 0 0 1-1.232 1.011h-1.827a1.255 1.255 0 0 1-1.229-1.509l2.501-12.095a1.255 1.255 0 0 1 1.23-1.001h.197a1.25 1.25 0 0 1 1.12.685l3.19 6.273 3.125-6.263a1.25 1.25 0 0 1 1.123-.695h.181a1.255 1.255 0 0 1 1.227.991l1.443 6.71a5 5 0 0 1 .314-.787l.009-.016a4.6 4.6 0 0 1 1.777-1.887c.782-.46 1.668-.667 2.611-.667a4.6 4.6 0 0 1 1.7.32l.306.134c.21-.16.474-.256.759-.256h1.694a1.255 1.255 0 0 1 1.212.925 1.255 1.255 0 0 1 1.212-.925h1.711c.284 0 .545.094.755.252.613-.3 1.312-.45 2.075-.45 1.356 0 2.557.445 3.482 1.4q.47.48.763 1.064V4.701a1.255 1.255 0 0 1 1.255-1.255h1.86A1.255 1.255 0 0 1 54.44 4.7v9.194h2.217c.19 0 .37.043.532.118v-4.77c0-.356.147-.678.385-.906a2.42 2.42 0 0 1-.682-1.71c0-.665.267-1.253.735-1.7a2.45 2.45 0 0 1 1.722-.674 2.43 2.43 0 0 1 1.705.675q.318.302.504.683V4.7a1.255 1.255 0 0 1 1.255-1.255h1.744A1.255 1.255 0 0 1 65.812 4.7v3.335a4.8 4.8 0 0 1 1.526-.246c.938 0 1.817.214 2.59.69a4.47 4.47 0 0 1 1.67 1.743v-.98a1.255 1.255 0 0 1 1.256-1.256h1.777c.233 0 .451.064.639.174a3.4 3.4 0 0 1 1.567-.372c.346 0 .861.02 1.285.232a1.25 1.25 0 0 1 .689 1.004 4.7 4.7 0 0 1 .853-.588c.795-.44 1.675-.647 2.61-.647 1.385 0 2.65.39 3.525 1.396.836.938 1.168 2.173 1.168 3.528q-.001.515-.056 1.051a1.255 1.255 0 0 1-.947 1.09l.408.952a1.255 1.255 0 0 1-.477 1.552c-.418.268-.92.463-1.458.612-.613.171-1.304.244-2.049.244-1.06 0-2.043-.207-2.886-.698l-.015-.008c-.798-.48-1.419-1.135-1.818-1.963l-.004-.008a5.8 5.8 0 0 1-.548-2.512q0-.429.053-.843a1.3 1.3 0 0 1-.333-.086l-.166-.004c-.223 0-.426.062-.643.228-.03.024-.142.139-.142.59v3.883a1.255 1.255 0 0 1-1.256 1.256h-1.777a1.255 1.255 0 0 1-1.256-1.256V15.69l-.032.057a4.8 4.8 0 0 1-1.86 1.833 5.04 5.04 0 0 1-2.484.634 4.5 4.5 0 0 1-1.935-.424 1.25 1.25 0 0 1-.764.258h-1.71a1.255 1.255 0 0 1-1.256-1.255V7.687a2.4 2.4 0 0 1-.428.625c.253.23.412.561.412.93v7.553a1.255 1.255 0 0 1-1.256 1.255h-1.843a1.25 1.25 0 0 1-.894-.373c-.228.23-.544.373-.894.373H51.32a1.255 1.255 0 0 1-1.256-1.255v-1.251l-.061.117a4.7 4.7 0 0 1-1.782 1.884 4.77 4.77 0 0 1-2.485.67 5.6 5.6 0 0 1-1.485-.188l.009 2.764a1.255 1.255 0 0 1-1.255 1.259h-1.729a1.255 1.255 0 0 1-1.255-1.255v-3.537a1.255 1.255 0 0 1-1.167.793h-1.679a1.25 1.25 0 0 1-.77-.263 4.5 4.5 0 0 1-1.945.429c-.885 0-1.724-.21-2.495-.632l-.017-.01a5 5 0 0 1-1.081-.836 1.255 1.255 0 0 1-1.254 1.312h-1.81a1.255 1.255 0 0 1-1.228-.99l-.782-3.625-2.044 3.939a1.25 1.25 0 0 1-1.115.676h-.098a1.25 1.25 0 0 1-1.116-.68l-2.061-3.994zM35.92 16.63l.207-.114.223-.15q.493-.356.735-.785l.061-.118.033 1.332h1.678V9.242h-1.694l-.033 1.267q-.133-.329-.526-.658l-.032-.028a3.2 3.2 0 0 0-.668-.428l-.27-.12a3.3 3.3 0 0 0-1.235-.23q-1.136-.001-1.974.493a3.36 3.36 0 0 0-1.3 1.382q-.445.89-.444 2.074 0 1.2.51 2.107a3.8 3.8 0 0 0 1.382 1.381 3.9 3.9 0 0 0 1.893.477q.795 0 1.455-.33zm-2.789-5.38q-.576.675-.575 1.762 0 1.102.559 1.794.576.675 1.645.675a2.25 2.25 0 0 0 .934-.19 2.2 2.2 0 0 0 .468-.29l.178-.161a2.2 2.2 0 0 0 .397-.561q.244-.5.244-1.15v-.115q0-.708-.296-1.267l-.043-.077a2.2 2.2 0 0 0-.633-.709l-.13-.086-.047-.028a2.1 2.1 0 0 0-1.073-.285q-1.052 0-1.629.692zm2.316 2.706c.163-.17.28-.407.28-.83v-.114c0-.292-.06-.508-.15-.68a.96.96 0 0 0-.353-.389.85.85 0 0 0-.464-.127c-.4 0-.56.114-.664.239l-.01.012c-.148.174-.275.45-.275.945 0 .506.122.801.27.99.097.11.266.224.68.224.303 0 .504-.09.687-.269zm7.545 1.705a2.6 2.6 0 0 0 .331.423q.319.33.755.548l.173.074q.65.255 1.49.255 1.02 0 1.844-.493a3.45 3.45 0 0 0 1.316-1.4q.493-.904.493-2.089 0-1.909-.988-2.913-.988-1.02-2.584-1.02-.898 0-1.575.347a3 3 0 0 0-.415.262l-.199.166a3.4 3.4 0 0 0-.64.82V9.242h-1.712v11.553h1.729l-.017-5.134zm.53-1.138q.206.29.48.5l.155.11.053.034q.51.296 1.119.297 1.07 0 1.645-.675.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.435 0-.835.16a2 2 0 0 0-.284.136 2 2 0 0 0-.363.254 2.2 2.2 0 0 0-.46.569l-.082.162a2.6 2.6 0 0 0-.213 1.072v.115q0 .707.296 1.267l.135.211zm.964-.818a1.1 1.1 0 0 0 .367.385.94.94 0 0 0 .476.118c.423 0 .59-.117.687-.23.159-.194.28-.478.28-.95 0-.53-.133-.8-.266-.952l-.021-.025c-.078-.094-.231-.221-.68-.221a1 1 0 0 0-.503.135l-.012.007a.86.86 0 0 0-.335.343c-.073.133-.132.324-.132.614v.115a1.4 1.4 0 0 0 .14.66zm15.7-6.222q.347-.346.346-.856a1.05 1.05 0 0 0-.345-.79 1.18 1.18 0 0 0-.84-.329q-.51 0-.855.33a1.05 1.05 0 0 0-.346.79q0 .51.346.855.345.346.856.346.51 0 .839-.346zm4.337 9.314.033-1.332q.191.403.59.747l.098.081a4 4 0 0 0 .316.224l.223.122a3.2 3.2 0 0 0 1.44.322 3.8 3.8 0 0 0 1.875-.477 3.5 3.5 0 0 0 1.382-1.366q.527-.89.526-2.09 0-1.184-.444-2.073a3.24 3.24 0 0 0-1.283-1.399q-.823-.51-1.942-.51a3.5 3.5 0 0 0-1.527.344l-.086.043-.165.09a3 3 0 0 0-.33.214q-.432.315-.656.707a2 2 0 0 0-.099.198l.082-1.283V4.701h-1.744v12.095zm.473-2.509a2.5 2.5 0 0 0 .566.7q.117.098.245.18l.144.08a2.1 2.1 0 0 0 .975.232q1.07 0 1.645-.675.576-.69.576-1.778 0-1.102-.576-1.777-.56-.691-1.645-.692a2.2 2.2 0 0 0-1.015.235q-.22.113-.415.282l-.15.142a2.1 2.1 0 0 0-.42.594q-.223.479-.223 1.1v.115q0 .705.293 1.26zm2.616-.293c.157-.191.28-.479.28-.967 0-.51-.13-.79-.276-.961l-.021-.026c-.082-.1-.232-.225-.67-.225a.87.87 0 0 0-.681.279l-.012.011c-.154.155-.274.38-.274.807v.115c0 .285.057.499.144.669a1.1 1.1 0 0 0 .367.405c.137.082.28.123.455.123.423 0 .59-.118.686-.23zm8.266-3.013q.345-.13.724-.14l.069-.002q.493 0 .642.099l.247-1.794q-.196-.099-.717-.099a2.3 2.3 0 0 0-.545.063 2 2 0 0 0-.411.148 2.2 2.2 0 0 0-.4.249 2.5 2.5 0 0 0-.485.499 2.7 2.7 0 0 0-.32.581l-.05.137v-1.48h-1.778v7.553h1.777v-3.884q0-.546.159-.943a1.5 1.5 0 0 1 .466-.636 2.5 2.5 0 0 1 .399-.253 2 2 0 0 1 .224-.099zm9.784 2.656.05-.922q0-1.743-.856-2.698-.838-.97-2.584-.97-1.119-.001-2.007.493a3.46 3.46 0 0 0-1.4 1.382q-.493.906-.493 2.106 0 1.07.428 1.975.428.89 1.332 1.432.906.526 2.255.526.973 0 1.668-.185l.044-.012.135-.04q.613-.184.984-.421l-.542-1.267q-.3.162-.642.274l-.297.087q-.51.131-1.3.131-.954 0-1.497-.444a1.6 1.6 0 0 1-.192-.193q-.366-.44-.512-1.234l-.004-.021zm-5.427-1.256-.003.022h3.752v-.138q-.011-.727-.288-1.118a1 1 0 0 0-.156-.176q-.46-.428-1.316-.428-.986 0-1.494.604-.379.45-.494 1.234zm-27.053 2.77V4.7h-1.86v12.095h5.333V15.15zm7.103-5.908v7.553h-1.843V9.242h1.843z'/%3E%3Cpath fill='%23fff' d='m19.63 11.151-.757-1.71-.345 1.71-1.12 5.644h-1.827L18.083 4.7h.197l3.325 6.533.988 2.19.988-2.19L26.839 4.7h.181l2.6 12.095h-1.81l-1.218-5.644-.362-1.71-.658 1.71-2.93 5.644h-.098l-2.913-5.644zm14.836 5.81q-1.02 0-1.893-.478a3.8 3.8 0 0 1-1.381-1.382q-.51-.906-.51-2.106 0-1.185.444-2.074a3.36 3.36 0 0 1 1.3-1.382q.839-.494 1.974-.494a3.3 3.3 0 0 1 1.234.231 3.3 3.3 0 0 1 .97.575q.396.33.527.659l.033-1.267h1.694v7.553H37.18l-.033-1.332q-.279.593-1.02 1.053a3.17 3.17 0 0 1-1.662.444zm.296-1.482q.938 0 1.58-.642.642-.66.642-1.711v-.115q0-.708-.296-1.267a2.2 2.2 0 0 0-.807-.872 2.1 2.1 0 0 0-1.119-.313q-1.053 0-1.629.692-.575.675-.575 1.76 0 1.103.559 1.795.577.675 1.645.675zm6.521-6.237h1.711v1.4q.906-1.597 2.83-1.597 1.596 0 2.584 1.02.988 1.005.988 2.914 0 1.185-.493 2.09a3.46 3.46 0 0 1-1.316 1.399 3.5 3.5 0 0 1-1.844.493q-.954 0-1.662-.329a2.67 2.67 0 0 1-1.086-.97l.017 5.134h-1.728zm4.048 6.22q1.07 0 1.645-.674.577-.69.576-1.762 0-1.119-.576-1.777-.558-.675-1.645-.675-.592 0-1.12.296-.51.28-.822.823-.296.527-.296 1.234v.115q0 .708.296 1.267.313.543.823.855.51.296 1.119.297z'/%3E%3Cpath fill='%23e1e3e9' d='M51.325 4.7h1.86v10.45h3.473v1.646h-5.333zm7.12 4.542h1.843v7.553h-1.843zm.905-1.415a1.16 1.16 0 0 1-.856-.346 1.17 1.17 0 0 1-.346-.856 1.05 1.05 0 0 1 .346-.79q.346-.329.856-.329.494 0 .839.33a1.05 1.05 0 0 1 .345.79 1.16 1.16 0 0 1-.345.855q-.33.346-.84.346zm7.875 9.133a3.17 3.17 0 0 1-1.662-.444q-.723-.46-1.004-1.053l-.033 1.332h-1.71V4.701h1.743v4.657l-.082 1.283q.279-.658 1.086-1.119a3.5 3.5 0 0 1 1.778-.477q1.119 0 1.942.51a3.24 3.24 0 0 1 1.283 1.4q.445.888.444 2.072 0 1.201-.526 2.09a3.5 3.5 0 0 1-1.382 1.366 3.8 3.8 0 0 1-1.876.477zm-.296-1.481q1.069 0 1.645-.675.577-.69.577-1.778 0-1.102-.577-1.776-.56-.691-1.645-.692a2.12 2.12 0 0 0-1.58.659q-.642.641-.642 1.694v.115q0 .71.296 1.267a2.4 2.4 0 0 0 .807.872 2.1 2.1 0 0 0 1.119.313zm5.927-6.237h1.777v1.481q.263-.757.856-1.217a2.14 2.14 0 0 1 1.349-.46q.527 0 .724.098l-.247 1.794q-.149-.099-.642-.099-.774 0-1.416.494-.626.493-.626 1.58v3.883h-1.777V9.242zm9.534 7.718q-1.35 0-2.255-.526-.904-.543-1.332-1.432a4.6 4.6 0 0 1-.428-1.975q0-1.2.493-2.106a3.46 3.46 0 0 1 1.4-1.382q.889-.495 2.007-.494 1.744 0 2.584.97.855.956.856 2.7 0 .444-.05.92h-5.43q.18 1.005.708 1.45.542.443 1.497.443.79 0 1.3-.131a4 4 0 0 0 .938-.362l.542 1.267q-.411.263-1.119.46-.708.198-1.711.197zm1.596-4.558q.016-1.02-.444-1.432-.46-.428-1.316-.428-1.728 0-1.991 1.86z'/%3E%3Cpath d='M5.074 15.948a.484.657 0 0 0-.486.659v1.84a.484.657 0 0 0 .486.659h4.101a.484.657 0 0 0 .486-.659v-1.84a.484.657 0 0 0-.486-.659zm3.56 1.16H5.617v.838h3.017z' style='fill:%23fff;fill-rule:evenodd;stroke-width:1.03600001'/%3E%3Cg style='stroke-width:1.12603545'%3E%3Cpath d='M-9.408-1.416c-3.833-.025-7.056 2.912-7.08 6.615-.02 3.08 1.653 4.832 3.107 6.268.903.892 1.721 1.74 2.32 2.902l-.525-.004c-.543-.003-.992.304-1.24.639a1.87 1.87 0 0 0-.362 1.121l-.011 1.877c-.003.402.104.787.347 1.125.244.338.688.653 1.23.656l4.142.028c.542.003.99-.306 1.238-.641a1.87 1.87 0 0 0 .363-1.121l.012-1.875a1.87 1.87 0 0 0-.348-1.127c-.243-.338-.688-.653-1.23-.656l-.518-.004c.597-1.145 1.425-1.983 2.348-2.87 1.473-1.414 3.18-3.149 3.2-6.226-.016-3.59-2.923-6.684-6.993-6.707m-.006 1.1v.002c3.274.02 5.92 2.532 5.9 5.6-.017 2.706-1.39 4.026-2.863 5.44-1.034.994-2.118 2.033-2.814 3.633-.018.041-.052.055-.075.065q-.013.004-.02.01a.34.34 0 0 1-.226.084.34.34 0 0 1-.224-.086l-.092-.077c-.699-1.615-1.768-2.669-2.781-3.67-1.454-1.435-2.797-2.762-2.78-5.478.02-3.067 2.7-5.545 5.975-5.523m-.02 2.826c-1.62-.01-2.944 1.315-2.955 2.96-.01 1.646 1.295 2.988 2.916 2.999h.002c1.621.01 2.943-1.316 2.953-2.961.011-1.646-1.294-2.988-2.916-2.998m-.005 1.1c1.017.006 1.829.83 1.822 1.89s-.83 1.874-1.848 1.867c-1.018-.006-1.829-.83-1.822-1.89s.83-1.874 1.848-1.868m-2.155 11.857 4.14.025c.271.002.49.305.487.676l-.013 1.875c-.003.37-.224.67-.495.668l-4.14-.025c-.27-.002-.487-.306-.485-.676l.012-1.875c.003-.37.224-.67.494-.668' style='color:%23000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:%23000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:evenodd;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:%23000;solid-opacity:1;vector-effect:none;fill:%23000;fill-opacity:.4;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-9.415-.316C-12.69-.338-15.37 2.14-15.39 5.207c-.017 2.716 1.326 4.041 2.78 5.477 1.013 1 2.081 2.055 2.78 3.67l.092.076a.34.34 0 0 0 .225.086.34.34 0 0 0 .227-.083l.019-.01c.022-.009.057-.024.074-.064.697-1.6 1.78-2.64 2.814-3.634 1.473-1.414 2.847-2.733 2.864-5.44.02-3.067-2.627-5.58-5.901-5.601m-.057 8.784c1.621.011 2.944-1.315 2.955-2.96.01-1.646-1.295-2.988-2.916-2.999-1.622-.01-2.945 1.315-2.955 2.96s1.295 2.989 2.916 3' style='clip-rule:evenodd;fill:%23e1e3e9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3Cpath d='M-11.594 15.465c-.27-.002-.492.297-.494.668l-.012 1.876c-.003.371.214.673.485.675l4.14.027c.271.002.492-.298.495-.668l.012-1.877c.003-.37-.215-.672-.485-.674z' style='clip-rule:evenodd;fill:%23fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.47727823;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:.4' transform='translate(15.553 2.85)scale(.88807)'/%3E%3C/g%3E%3C/svg%3E")}}.maplibregl-ctrl.maplibregl-ctrl-attrib{background-color:hsla(0,0%,100%,.5);margin:0;padding:0 5px}@media screen{.maplibregl-ctrl-attrib.maplibregl-compact{background-color:#fff;border-radius:12px;box-sizing:content-box;color:#000;margin:10px;min-height:20px;padding:2px 24px 2px 0;position:relative}.maplibregl-ctrl-attrib.maplibregl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact-show,.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact-show{border-radius:12px;padding:2px 8px 2px 28px}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-inner{display:none}.maplibregl-ctrl-attrib-button{background-color:hsla(0,0%,100%,.5);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E");border:0;border-radius:12px;box-sizing:border-box;cursor:pointer;display:none;height:24px;outline:none;position:absolute;right:0;top:0;width:24px}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;list-style:none}.maplibregl-ctrl-attrib summary.maplibregl-ctrl-attrib-button::-webkit-details-marker{display:none}.maplibregl-ctrl-bottom-left .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-top-left .maplibregl-ctrl-attrib-button{left:0}.maplibregl-ctrl-attrib.maplibregl-compact .maplibregl-ctrl-attrib-button,.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-inner{display:block}.maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;right:0}.maplibregl-ctrl-top-right>.maplibregl-ctrl-attrib.maplibregl-compact:after{right:0;top:0}.maplibregl-ctrl-top-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{left:0;top:0}.maplibregl-ctrl-bottom-left>.maplibregl-ctrl-attrib.maplibregl-compact:after{bottom:0;left:0}}@media screen and (forced-colors:active){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='%23fff' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}@media screen and (forced-colors:active) and (prefers-color-scheme:light){.maplibregl-ctrl-attrib.maplibregl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill-rule='evenodd' viewBox='0 0 20 20'%3E%3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E%3C/svg%3E")}}.maplibregl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.maplibregl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.maplibregl-attrib-empty{display:none}.maplibregl-ctrl-scale{background-color:hsla(0,0%,100%,.75);border:2px solid #333;border-top:#333;box-sizing:border-box;color:#333;font-size:10px;padding:0 5px;white-space:nowrap}.maplibregl-popup{display:flex;left:0;pointer-events:none;position:absolute;top:0;will-change:transform}.maplibregl-popup-anchor-top,.maplibregl-popup-anchor-top-left,.maplibregl-popup-anchor-top-right{flex-direction:column}.maplibregl-popup-anchor-bottom,.maplibregl-popup-anchor-bottom-left,.maplibregl-popup-anchor-bottom-right{flex-direction:column-reverse}.maplibregl-popup-anchor-left{flex-direction:row}.maplibregl-popup-anchor-right{flex-direction:row-reverse}.maplibregl-popup-tip{border:10px solid transparent;height:0;width:0;z-index:1}.maplibregl-popup-anchor-top .maplibregl-popup-tip{align-self:center;border-bottom-color:#fff;border-top:none}.maplibregl-popup-anchor-top-left .maplibregl-popup-tip{align-self:flex-start;border-bottom-color:#fff;border-left:none;border-top:none}.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{align-self:flex-end;border-bottom-color:#fff;border-right:none;border-top:none}.maplibregl-popup-anchor-bottom .maplibregl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.maplibregl-popup-anchor-left .maplibregl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.maplibregl-popup-anchor-right .maplibregl-popup-tip{align-self:center;border-left-color:#fff;border-right:none}.maplibregl-popup-close-button{background-color:transparent;border:0;border-radius:0 3px 0 0;cursor:pointer;position:absolute;right:0;top:0}.maplibregl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.maplibregl-popup-content{background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:15px 10px;pointer-events:auto;position:relative}.maplibregl-popup-anchor-top-left .maplibregl-popup-content{border-top-left-radius:0}.maplibregl-popup-anchor-top-right .maplibregl-popup-content{border-top-right-radius:0}.maplibregl-popup-anchor-bottom-left .maplibregl-popup-content{border-bottom-left-radius:0}.maplibregl-popup-anchor-bottom-right .maplibregl-popup-content{border-bottom-right-radius:0}.maplibregl-popup-track-pointer{display:none}.maplibregl-popup-track-pointer *{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.maplibregl-map:hover .maplibregl-popup-track-pointer{display:flex}.maplibregl-map:active .maplibregl-popup-track-pointer{display:none}.maplibregl-marker{left:0;position:absolute;top:0;transition:opacity .2s;will-change:transform}.maplibregl-user-location-dot,.maplibregl-user-location-dot:before{background-color:#1da1f2;border-radius:50%;height:15px;width:15px}.maplibregl-user-location-dot:before{animation:maplibregl-user-location-dot-pulse 2s infinite;content:"";position:absolute}.maplibregl-user-location-dot:after{border:2px solid #fff;border-radius:50%;box-shadow:0 0 3px rgba(0,0,0,.35);box-sizing:border-box;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px}@keyframes maplibregl-user-location-dot-pulse{0%{opacity:1;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(1)}}.maplibregl-user-location-dot-stale{background-color:#aaa}.maplibregl-user-location-dot-stale:after{display:none}.maplibregl-user-location-accuracy-circle{background-color:#1da1f233;border-radius:100%;height:1px;width:1px}.maplibregl-crosshair,.maplibregl-crosshair .maplibregl-interactive,.maplibregl-crosshair .maplibregl-interactive:active{cursor:crosshair}.maplibregl-boxzoom{background:#fff;border:2px dotted #202020;height:0;left:0;opacity:.5;position:absolute;top:0;width:0}.maplibregl-cooperative-gesture-screen{align-items:center;background:rgba(0,0,0,.4);color:#fff;display:flex;font-size:1.4em;inset:0;justify-content:center;line-height:1.2;opacity:0;padding:1rem;pointer-events:none;position:absolute;transition:opacity 1s ease 1s;z-index:99999}.maplibregl-cooperative-gesture-screen.maplibregl-show{opacity:1;transition:opacity .05s}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:none}@media (hover:none),(pointer:coarse){.maplibregl-cooperative-gesture-screen .maplibregl-desktop-message{display:none}.maplibregl-cooperative-gesture-screen .maplibregl-mobile-message{display:block}}.maplibregl-pseudo-fullscreen{height:100%!important;left:0!important;position:fixed!important;top:0!important;width:100%!important;z-index:99999}
/* Maps V2 Styles */

/* The one colour that says "a visit". Read here by the timeline's rail dot
   and by the map's visit circles (via getVisitMarkerColor in
   utils/marker_theme.js), so the list and the map cannot drift apart.
   A visit deliberately carries no status colour: showing a visit is
   asserting it, and confirmed / suggested / declined is not a visual state. */
:root {
  --visit-marker: #38bdf8;
}

/* Loading Overlay */
.loading-overlay {
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.9);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.loading-overlay.hidden {
  display: none;
}

.loading-spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #e5e7eb;
  border-top-color: #3b82f6;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.loading-text {
  margin-top: 16px;
  font-size: 14px;
  color: #6b7280;
}

/* Loading Progress Badge */
.map-progress-badge {
  position: absolute;
  top: 16px;
  left: 50%;
  padding: 8px 16px;
  background: white;
  border-radius: 20px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 500;
  color: #4b5563;
  z-index: 20;
  white-space: nowrap;
  opacity: 0;
  transform: translateX(-50%) translateY(-8px);
  transition:
    opacity 0.3s ease,
    transform 0.3s ease;
  pointer-events: none;
}

.map-progress-badge.visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
  pointer-events: auto;
}

/* Shift the loading badge so it stays centered over the VISIBLE map area
   when the side panel is open. The badge is a sibling of the map container
   inside #maps-maplibre-container; the container gets `panel-open` /
   `panel-timeline-expanded` and takes width = 100% - <panel width>. The
   offset below nudges the badge by half the panel width. */
.maps-maplibre-container.panel-open ~ .map-progress-badge {
  left: calc(50% + 240px);
}

.maps-maplibre-container.panel-timeline-expanded ~ .map-progress-badge {
  left: calc(50% + 360px);
}

@media (max-width: 1280px) {
  .maps-maplibre-container.panel-timeline-expanded ~ .map-progress-badge {
    left: calc(50% + 310px);
  }
}

@media (max-width: 1024px) {
  .maps-maplibre-container.panel-timeline-expanded ~ .map-progress-badge {
    left: calc(50% + 260px);
  }
}

@media (max-width: 768px) {
  /* Panel overlays the map on mobile; keep the badge centered. */
  .maps-maplibre-container.panel-open ~ .map-progress-badge,
  .maps-maplibre-container.panel-timeline-expanded ~ .map-progress-badge {
    left: 50%;
  }
}

.map-progress-badge-dot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid #e5e7eb;
  border-top-color: #3b82f6;
  animation: spin 0.8s linear infinite;
  flex-shrink: 0;
}

.map-progress-badge.complete .map-progress-badge-dot {
  border: none;
  animation: none;
  background: #22c55e;
  width: 8px;
  height: 8px;
  box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.2);
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.map-progress-badge.pop {
  animation: badge-pop 0.3s ease-out;
}

@keyframes badge-pop {
  0% {
    transform: translateX(-50%) scale(1);
  }
  40% {
    transform: translateX(-50%) scale(1.06);
  }
  100% {
    transform: translateX(-50%) scale(1);
  }
}

/* Dark theme support for progress badge */
html[data-theme="dark"] .map-progress-badge,
html[data-theme="dawarich-dark"] .map-progress-badge,
html.dark .map-progress-badge {
  background: rgba(31, 41, 55, 0.95);
  color: #d1d5db;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

html[data-theme="dark"] .map-progress-badge-dot,
html[data-theme="dawarich-dark"] .map-progress-badge-dot,
html.dark .map-progress-badge-dot {
  border-color: #4b5563;
  border-top-color: #60a5fa;
}

/* Popup Styles */
.point-popup {
  font-family: system-ui, -apple-system, sans-serif;
}

.popup-header {
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid #e5e7eb;
}

.popup-body {
  font-size: 13px;
}

.popup-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 4px 0;
}

.popup-row .label {
  color: #6b7280;
}

.popup-row .value {
  font-weight: 500;
  color: #111827;
}

/* MapLibre Popup Theme Support */
.maplibregl-popup-content {
  padding: 16px;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* Larger close button */
.maplibregl-popup-close-button {
  width: 32px;
  height: 32px;
  font-size: 24px;
  line-height: 32px;
  right: 4px;
  top: 4px;
  padding: 0;
  border-radius: 4px;
  transition: background-color 0.2s;
}

.maplibregl-popup-close-button:hover {
  background-color: rgba(0, 0, 0, 0.08);
}

/* Light theme (default) */
.maplibregl-popup-content {
  background-color: #ffffff;
  color: #111827;
}

.maplibregl-popup-close-button {
  color: #6b7280;
}

.maplibregl-popup-close-button:hover {
  background-color: #f3f4f6;
  color: #111827;
}

.maplibregl-popup-tip {
  border-top-color: #ffffff;
}

/* Dark theme */
html[data-theme="dark"] .maplibregl-popup-content,
html[data-theme="dawarich-dark"] .maplibregl-popup-content,
html.dark .maplibregl-popup-content {
  background-color: #1f2937;
  color: #f9fafb;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}

html[data-theme="dark"] .maplibregl-popup-close-button,
html[data-theme="dawarich-dark"] .maplibregl-popup-close-button,
html.dark .maplibregl-popup-close-button {
  color: #d1d5db;
}

html[data-theme="dark"] .maplibregl-popup-close-button:hover,
html[data-theme="dawarich-dark"] .maplibregl-popup-close-button:hover,
html.dark .maplibregl-popup-close-button:hover {
  background-color: #374151;
  color: #f9fafb;
}

html[data-theme="dark"] .maplibregl-popup-tip,
html[data-theme="dawarich-dark"] .maplibregl-popup-tip,
html.dark .maplibregl-popup-tip {
  border-top-color: #1f2937;
}

@keyframes pulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

/* Upgrade Banner */
.map-upgrade-banner {
  position: absolute;
  top: 16px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 10px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  font-size: 13px;
  font-weight: 500;
  color: #1e40af;
  white-space: normal;
  max-width: calc(100% - 32px);
  flex-wrap: wrap;
  justify-content: center;
}

.map-upgrade-banner-icon {
  font-size: 16px;
  flex-shrink: 0;
}

.map-upgrade-banner-text {
  flex: 1;
}

.map-upgrade-banner-cta {
  flex-shrink: 0;
}

.map-upgrade-banner-dismiss {
  flex-shrink: 0;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 14px;
  color: #1e40af;
  padding: 4px 8px;
  min-width: 24px;
  min-height: 24px;
  line-height: 1;
  opacity: 0.6;
}

.map-upgrade-banner-dismiss:hover {
  opacity: 1;
}

/* Dark theme support for upgrade banner */
html[data-theme="dark"] .map-upgrade-banner,
html[data-theme="dawarich-dark"] .map-upgrade-banner,
html.dark .map-upgrade-banner {
  background: rgba(30, 41, 59, 0.92);
  border-color: rgba(59, 130, 246, 0.4);
  color: #e2e8f0;
}

html[data-theme="dark"] .map-upgrade-banner-dismiss,
html[data-theme="dawarich-dark"] .map-upgrade-banner-dismiss,
html.dark .map-upgrade-banner-dismiss {
  color: #e2e8f0;
}
/* Maps V2 Control Panel Styles */

.map-control-panel {
  position: absolute;
  top: 0;
  left: -480px; /* Hidden off-screen to the left */
  width: 480px;
  height: 100%;
  background: oklch(var(--b1));
  border-right: 1px solid oklch(var(--bc) / 0.1);
  z-index: 9999;
  transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: flex;
  flex-direction: column; /* Single column — the floating cluster on the
                             panel's right edge serves as the tab strip
                             whether the panel is open or closed. */
  overflow: hidden;
}

.map-control-panel.open {
  left: 0;
}

/* Shrink map when panel is open */
.maps-maplibre-container {
  transition:
    width 0.3s cubic-bezier(0.4, 0, 0.2, 1),
    margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.maps-maplibre-container.panel-open {
  margin-left: 480px;
  width: calc(100% - 480px) !important;
}

/* Vertical Tab Bar (now on the right side of the panel) */
.panel-tabs {
  width: 64px;
  background: oklch(var(--b2));
  border-left: 1px solid oklch(var(--bc) / 0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px 0;
  gap: 8px;
  flex-shrink: 0;
}

.tab-btn {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  border: none;
  background: transparent;
  cursor: pointer;
  transition: all 0.2s;
  position: relative;
  color: oklch(var(--bc) / 0.6);
}

.tab-btn:hover {
  background: oklch(var(--b3));
  color: oklch(var(--bc));
}

.tab-btn.active {
  background: oklch(var(--p));
  color: oklch(var(--pc));
}

.tab-btn.active::after {
  display: none;
}

.tab-icon {
  width: 24px;
  height: 24px;
}

/* Panel Content (now on the left side) */
.panel-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-width: 0;
}

.panel-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 20px 24px;
  border-bottom: 1px solid oklch(var(--bc) / 0.1);
  background: oklch(var(--b1));
  flex-shrink: 0;
}

.panel-title {
  font-size: 1.25rem;
  font-weight: 600;
  margin: 0;
  color: oklch(var(--bc));
}

.panel-body {
  flex: 1;
  overflow-y: auto;
  padding: 24px;
}

/* Tab Content */
.tab-content {
  display: none;
}

.tab-content.active {
  display: block;
}

/* Custom Scrollbar */
.panel-body::-webkit-scrollbar {
  width: 8px;
}

.panel-body::-webkit-scrollbar-track {
  background: transparent;
}

.panel-body::-webkit-scrollbar-thumb {
  background: oklch(var(--bc) / 0.2);
  border-radius: 4px;
}

.panel-body::-webkit-scrollbar-thumb:hover {
  background: oklch(var(--bc) / 0.3);
}

[type="checkbox"].toggle:focus,
[type="checkbox"].toggle:focus-visible,
[type="checkbox"].toggle:focus-within,
[type="checkbox"].toggle:checked,
[type="checkbox"].toggle:checked:focus,
[type="checkbox"].toggle:checked:focus-visible,
[type="checkbox"].toggle:checked:hover,
[type="checkbox"].toggle:active,
[type="checkbox"].toggle:active:focus {
  outline: none;
  background-image: none;
  box-shadow:
    var(--handleoffsetcalculator) 0 0 2px var(--tglbg) inset,
    0 0 0 2px var(--tglbg) inset,
    var(--togglehandleborder);
  --tw-ring-shadow: 0 0 transparent;
  --tw-ring-offset-shadow: 0 0 transparent;
}

[type="checkbox"].toggle-primary:checked,
[type="checkbox"].toggle-primary:checked:focus,
[type="checkbox"].toggle-primary:checked:focus-visible,
[type="checkbox"].toggle-primary:checked:hover {
  background-color: oklch(var(--p));
  border-color: oklch(var(--p) / 0.1);
}

[type="checkbox"].toggle-secondary:checked,
[type="checkbox"].toggle-secondary:checked:focus,
[type="checkbox"].toggle-secondary:checked:focus-visible,
[type="checkbox"].toggle-secondary:checked:hover {
  background-color: oklch(var(--s));
  border-color: oklch(var(--s) / 0.1);
}

[type="checkbox"].toggle-accent:checked,
[type="checkbox"].toggle-accent:checked:focus,
[type="checkbox"].toggle-accent:checked:focus-visible,
[type="checkbox"].toggle-accent:checked:hover {
  background-color: oklch(var(--a));
  border-color: oklch(var(--a) / 0.1);
}

[type="checkbox"].toggle-success:checked,
[type="checkbox"].toggle-success:checked:focus,
[type="checkbox"].toggle-success:checked:focus-visible,
[type="checkbox"].toggle-success:checked:hover {
  background-color: oklch(var(--su));
  border-color: oklch(var(--su) / 0.1);
}

[type="checkbox"].toggle-warning:checked,
[type="checkbox"].toggle-warning:checked:focus,
[type="checkbox"].toggle-warning:checked:focus-visible,
[type="checkbox"].toggle-warning:checked:hover {
  background-color: oklch(var(--wa));
  border-color: oklch(var(--wa) / 0.1);
}

[type="checkbox"].toggle-error:checked,
[type="checkbox"].toggle-error:checked:focus,
[type="checkbox"].toggle-error:checked:focus-visible,
[type="checkbox"].toggle-error:checked:hover {
  background-color: oklch(var(--er));
  border-color: oklch(var(--er) / 0.1);
}

[type="checkbox"].toggle-info:checked,
[type="checkbox"].toggle-info:checked:focus,
[type="checkbox"].toggle-info:checked:focus-visible,
[type="checkbox"].toggle-info:checked:hover {
  background-color: oklch(var(--in));
  border-color: oklch(var(--in) / 0.1);
}

.toggle:indeterminate {
  opacity: 1;
}

/* Responsive Breakpoints */

/* Large tablets and smaller desktops (1024px - 1280px) */
@media (max-width: 1280px) {
  .map-control-panel {
    width: 420px;
    left: -420px;
  }
  .maps-maplibre-container.panel-open {
    margin-left: 420px;
    width: calc(100% - 420px) !important;
  }
}

/* Tablets (768px - 1024px) */
@media (max-width: 1024px) {
  .map-control-panel {
    width: 380px;
    left: -380px;
  }
  .maps-maplibre-container.panel-open {
    margin-left: 380px;
    width: calc(100% - 380px) !important;
  }
  .panel-body {
    padding: 20px;
  }
}

/* Small tablets and large phones (640px - 768px) */
@media (max-width: 768px) {
  .map-control-panel {
    width: 95%;
    left: -95%;
    max-width: 480px;
  }
  /* On mobile, overlay instead of shrink */
  .maps-maplibre-container.panel-open {
    margin-left: 0;
    width: 100% !important;
  }
  .panel-header {
    padding: 16px 20px;
  }
  .panel-title {
    font-size: 1.125rem;
  }
  .panel-body {
    padding: 16px 20px;
  }
}

/* Mobile phones (< 640px) */
@media (max-width: 640px) {
  .map-control-panel {
    width: 100%;
    left: -100%;
    max-width: none;
  }

  .panel-tabs {
    width: 56px;
    padding: 12px 0;
    gap: 6px;
  }

  .tab-btn {
    width: 44px;
    height: 44px;
  }

  .tab-icon {
    width: 20px;
    height: 20px;
  }

  .panel-header {
    padding: 14px 16px;
  }

  .panel-title {
    font-size: 1rem;
  }

  .panel-body {
    padding: 16px;
  }

  /* Reduce spacing on mobile */
  .space-y-4 > * + * {
    margin-top: 0.75rem;
  }

  .space-y-6 > * + * {
    margin-top: 1rem;
  }
}

/* Very small phones (< 375px) */
@media (max-width: 375px) {
  .panel-tabs {
    width: 52px;
    padding: 10px 0;
  }

  .tab-btn {
    width: 40px;
    height: 40px;
  }

  .panel-header {
    padding: 12px;
  }

  .panel-body {
    padding: 12px;
  }
}

/* ===== Timeline tab expanded panel ===== */
/* When the Timeline tab is active, the panel widens so the unified
   calendar + visit list can breathe. Matching `.panel-timeline-expanded`
   on the map container keeps the map offset so nothing is obscured. */

.map-control-panel.timeline-expanded {
  width: 720px;
  left: -720px;
}

.map-control-panel.timeline-expanded.open {
  left: 0;
}

.maps-maplibre-container.panel-timeline-expanded {
  margin-left: 720px;
  width: calc(100% - 720px) !important;
}

@media (max-width: 1280px) {
  .map-control-panel.timeline-expanded {
    width: 620px;
    left: -620px;
  }
  .maps-maplibre-container.panel-timeline-expanded {
    margin-left: 620px;
    width: calc(100% - 620px) !important;
  }
}

@media (max-width: 1024px) {
  .map-control-panel.timeline-expanded {
    width: 520px;
    left: -520px;
  }
  .maps-maplibre-container.panel-timeline-expanded {
    margin-left: 520px;
    width: calc(100% - 520px) !important;
  }
}

@media (max-width: 768px) {
  .map-control-panel.timeline-expanded {
    width: 95%;
    left: -95%;
    max-width: 620px;
  }
  /* On mobile, overlay the map instead of shrinking it. */
  .maps-maplibre-container.panel-timeline-expanded {
    margin-left: 0;
    width: 100% !important;
  }
}

/* Respect user motion preferences — cap panel/map transitions. */
@media (prefers-reduced-motion: reduce) {
  .map-control-panel,
  .maps-maplibre-container {
    transition-duration: 50ms !important;
  }
}

/* ===== Map edge button cluster =====
   The cluster sits 12px off the panel's RIGHT edge, so it tracks with the
   panel as it slides:
     - panel closed (panel.left = -480px → panel.right = 0): cluster at 12px
       (top-left of the map area, looks like a floating tab launcher)
     - panel open (panel.left = 0 → panel.right = 480/720): cluster at
       492/732px (visually attached to the panel, looks like the panel's
       tab strip)
   Removes the need for the old in-panel `.panel-tabs` element since the
   cluster itself is the tab strip in both states. */
.map-button-cluster {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 500;
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: oklch(var(--b1) / 0.95);
  backdrop-filter: blur(6px);
  border: 1px solid oklch(var(--bc) / 0.15);
  border-radius: 8px;
  padding: 6px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  transition: left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.maps-maplibre-container.panel-open ~ .map-button-cluster {
  left: 492px;
}

.maps-maplibre-container.panel-timeline-expanded ~ .map-button-cluster {
  left: 732px;
}

@media (max-width: 1280px) {
  .maps-maplibre-container.panel-timeline-expanded ~ .map-button-cluster {
    left: 632px;
  }
}

@media (max-width: 1024px) {
  .maps-maplibre-container.panel-open ~ .map-button-cluster {
    left: 392px;
  }
  .maps-maplibre-container.panel-timeline-expanded ~ .map-button-cluster {
    left: 532px;
  }
}

/* On mobile the panel overlays the map — keep the cluster pinned to the
   left edge so users can dismiss the panel by tapping a cluster button. */
@media (max-width: 768px) {
  .maps-maplibre-container.panel-open ~ .map-button-cluster,
  .maps-maplibre-container.panel-timeline-expanded ~ .map-button-cluster {
    left: 12px;
  }
}

.map-button-cluster__btn {
  position: relative;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: transparent;
  border-radius: 6px;
  cursor: pointer;
  color: oklch(var(--bc) / 0.75);
  transition:
    background-color 120ms ease,
    color 120ms ease;
}

.map-button-cluster__btn:hover {
  background: oklch(var(--bc) / 0.08);
  color: oklch(var(--bc));
}

.map-button-cluster__btn:focus-visible {
  outline: 2px solid oklch(var(--p));
  outline-offset: 1px;
}

.map-button-cluster__btn--active {
  background: oklch(var(--p));
  color: oklch(var(--pc));
}

.map-button-cluster__btn--active:hover {
  background: oklch(var(--p));
  color: oklch(var(--pc));
}

.map-button-cluster__btn--create {
  color: #22c55e;
}

.map-button-cluster__btn--create:hover {
  background: rgba(34, 197, 94, 0.12);
  color: #22c55e;
}

/* When Create is the active tab, the green icon-on-blue ends up low
   contrast. Lean into the create accent color for the active state too —
   green background, white glyph — so the active state reads cleanly and
   keeps the button's semantic color. Higher-specificity selector wins
   over the generic `--active` rule above. */
.map-button-cluster__btn--create.map-button-cluster__btn--active,
.map-button-cluster__btn--create.map-button-cluster__btn--active:hover {
  background: #22c55e;
  color: white;
}

.map-button-cluster__btn--muted {
  opacity: 0.6;
}

.map-button-cluster__btn--muted:hover {
  opacity: 1;
}

.map-button-cluster__btn svg {
  width: 20px;
  height: 20px;
}

.map-button-cluster__divider {
  height: 1px;
  background: oklch(var(--bc) / 0.1);
  margin: 2px 4px;
}

.map-button-cluster__badge {
  position: absolute;
  top: -2px;
  right: -2px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 9999px;
  background: #f59e0b;
  color: white;
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
  border: 1.5px solid oklch(var(--b1));
  white-space: nowrap;
}

/* Mobile — collapse to Timeline + Layers + overflow */
@media (max-width: 640px) {
  .map-button-cluster__btn[data-tab="search"],
  .map-button-cluster__btn[data-tab="tools"],
  .map-button-cluster__btn[data-tab="settings"],
  .map-button-cluster__divider {
    display: none;
  }
}
/* Place Drawer — right-edge slide-in panel on the map.
   Introduced in Task 6 of the Unified Timeline plan. Split out from
   maps_maplibre_timeline_feed.css to keep each stylesheet under 500 lines.
   Toggle open/closed by adding/removing `.place-drawer--open`. */

.place-drawer {
  position: absolute;
  top: 0;
  right: 0;
  height: 100%;
  width: 380px;
  max-width: 90vw;
  background: oklch(var(--b1));
  border-left: 1px solid oklch(var(--bc) / 0.1);
  box-shadow: 0 0 24px rgba(0, 0, 0, 0.15);
  z-index: 1000;
  overflow-y: auto;
  transform: translateX(100%);
  transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
}

.place-drawer--open {
  transform: translateX(0);
}

@media (prefers-reduced-motion: reduce) {
  .place-drawer {
    transition-duration: 50ms;
  }
}
/* Maps V2 Replay Panel Styles */

.replay-panel {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  width: 70%;
  max-width: 900px;
  min-width: 360px;
  background: oklch(var(--b1));
  border-radius: 10px;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
  z-index: 460;
  padding: 8px 14px;
  transition:
    opacity 0.2s ease-in-out,
    transform 0.2s ease-in-out,
    left 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Shift replay panel right when side panel is open so it stays visible */
.maps-maplibre-container.panel-open ~ .replay-panel {
  left: calc(50% + 240px);
}

/* When the Timeline tab is open the panel is 720px wide — push the replay
   panel further right so it stays centered over the visible map area. */
.maps-maplibre-container.panel-timeline-expanded ~ .replay-panel {
  left: calc(50% + 360px);
}

.replay-panel.hidden {
  display: none;
}

/* Single controls row: day nav | time | actions */
.replay-controls-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  /* Reserve space on the right so the action controls clear the close button */
  padding-right: 34px;
  margin-bottom: 6px;
  position: relative;
  z-index: 2;
}

/* Current day (left) */
.replay-day-nav {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

/* Day navigation buttons (multi-day contexts, e.g. trip replay) */
.replay-day-nav button {
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 5px;
  border: 1px solid oklch(var(--bc) / 0.2);
  background: oklch(var(--b2));
  color: oklch(var(--bc));
  cursor: pointer;
  transition: all 0.15s;
  font-size: 12px;
  font-weight: 600;
}

.replay-day-nav button:hover:not(:disabled) {
  background: oklch(var(--b3));
  border-color: oklch(var(--bc) / 0.3);
}

.replay-day-nav button:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.replay-day-info {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.replay-day-display {
  font-weight: 600;
  font-size: 0.8rem;
  color: oklch(var(--bc));
  white-space: nowrap;
}

.replay-day-count {
  font-size: 0.65rem;
  color: oklch(var(--bc) / 0.5);
}

/* Time display (center) */
.replay-time-block {
  display: flex;
  align-items: baseline;
  gap: 6px;
  flex-shrink: 0;
}

.replay-time-display {
  font-size: 1.1rem;
  font-weight: 700;
  font-family: monospace;
  color: oklch(var(--bc));
  min-width: 52px;
  text-align: center;
}

.replay-speed-display {
  font-size: 0.75rem;
  color: oklch(var(--bc) / 0.6);
  font-family: monospace;
  min-width: 56px;
}

.replay-data-indicator {
  font-size: 0.65rem;
  color: oklch(var(--bc) / 0.4);
  font-style: italic;
}

.replay-data-indicator.hidden {
  display: none;
}

/* Action controls (right): play + speed + cycle */
.replay-action-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.replay-play-btn {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 2px solid oklch(var(--p));
  background: oklch(var(--b1));
  color: oklch(var(--p));
  cursor: pointer;
  transition: all 0.15s;
  font-size: 11px;
}

.replay-play-btn:hover {
  background: oklch(var(--p) / 0.1);
}

.replay-play-btn.playing {
  background: oklch(var(--p));
  color: oklch(var(--pc));
}

.replay-play-btn .play-icon {
  margin-left: 2px; /* Visual centering for play triangle */
}

.replay-play-btn .pause-icon {
  font-size: 8px;
  letter-spacing: 1px;
}

.replay-play-btn .pause-icon.hidden,
.replay-play-btn .play-icon.hidden {
  display: none;
}

.replay-follow-btn {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 2px solid oklch(var(--p));
  background: oklch(var(--b1));
  color: oklch(var(--p));
  cursor: pointer;
  transition: all 0.15s;
  font-size: 15px;
  line-height: 1;
}

.replay-follow-btn:hover {
  background: oklch(var(--p) / 0.1);
}

.replay-follow-btn.following {
  background: oklch(var(--p));
  color: oklch(var(--pc));
}

.replay-follow-icon {
  width: 16px;
  height: 16px;
}

.replay-speed-control {
  display: flex;
  align-items: center;
  gap: 4px;
}

.replay-speed-slider {
  width: 40px;
  height: 3px;
  border-radius: 2px;
  background: oklch(var(--b3));
  outline: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.replay-speed-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: oklch(var(--bc));
  cursor: pointer;
  border: none;
}

.replay-speed-slider::-moz-range-thumb {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: oklch(var(--bc));
  cursor: pointer;
  border: none;
}

.replay-speed-label {
  font-size: 0.65rem;
  font-weight: 600;
  color: oklch(var(--bc) / 0.7);
  min-width: 20px;
}

/* Cycle controls */
.replay-cycle-controls {
  display: flex;
  align-items: center;
  gap: 4px;
  padding-left: 8px;
  border-left: 1px solid oklch(var(--bc) / 0.1);
}

.replay-cycle-controls.hidden {
  display: none;
}

.replay-cycle-controls button {
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  border: 1px solid oklch(var(--bc) / 0.2);
  background: oklch(var(--b2));
  color: oklch(var(--bc));
  cursor: pointer;
  transition: all 0.15s;
  font-size: 10px;
  font-weight: 600;
}

.replay-cycle-controls button:hover {
  background: oklch(var(--b3));
}

.replay-point-counter {
  font-size: 0.6rem;
  color: oklch(var(--bc) / 0.6);
  min-width: 56px;
  text-align: center;
}

/* Scrubber wrapper */
.replay-scrubber-wrapper {
  display: flex;
  align-items: center;
  gap: 8px;
}

.replay-time-label {
  font-size: 0.65rem;
  color: oklch(var(--bc) / 0.5);
  font-family: monospace;
  min-width: 32px;
  flex-shrink: 0;
}

.replay-time-label:first-of-type {
  text-align: right;
}

.replay-time-label:last-of-type {
  text-align: left;
}

/* Scrubber track with density visualization */
.replay-scrubber-track {
  flex: 1;
  height: 24px;
  position: relative;
  background: oklch(var(--b2));
  border-radius: 5px;
  overflow: hidden;
}

/* Density container - shows data availability */
.replay-density-container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: stretch;
  pointer-events: none;
}

.replay-density-bar {
  flex: 1;
  background: oklch(var(--b3));
  transition: background-color 0.15s;
  border-right: 1px solid oklch(var(--b2) / 0.3);
}

.replay-density-bar:last-child {
  border-right: none;
}

.replay-density-bar.has-data {
  background: oklch(var(--p) / 0.35);
}

.replay-density-bar.has-data.high-density {
  background: oklch(var(--p) / 0.55);
}

/* Range slider styling - overlay on track */
.replay-scrubber {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  background: transparent;
  outline: none;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.replay-scrubber::-webkit-slider-runnable-track {
  height: 100%;
  background: transparent;
}

.replay-scrubber::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 4px;
  height: 24px;
  background: oklch(var(--p));
  cursor: grab;
  border: none;
  border-radius: 2px;
  box-shadow: 0 0 8px oklch(var(--p) / 0.5);
  transition:
    width 0.1s,
    box-shadow 0.15s;
}

.replay-scrubber::-webkit-slider-thumb:hover {
  width: 6px;
  box-shadow: 0 0 12px oklch(var(--p) / 0.7);
}

.replay-scrubber::-webkit-slider-thumb:active {
  cursor: grabbing;
}

.replay-scrubber::-moz-range-track {
  height: 100%;
  background: transparent;
}

.replay-scrubber::-moz-range-thumb {
  width: 4px;
  height: 24px;
  background: oklch(var(--p));
  cursor: grab;
  border: none;
  border-radius: 2px;
  box-shadow: 0 0 8px oklch(var(--p) / 0.5);
  transition:
    width 0.1s,
    box-shadow 0.15s;
}

.replay-scrubber::-moz-range-thumb:hover {
  width: 6px;
  box-shadow: 0 0 12px oklch(var(--p) / 0.7);
}

/* Replay emoji marker (HTML overlay on map) */
.replay-emoji-marker {
  font-size: 28px;
  line-height: 1;
  text-align: center;
  cursor: default;
  filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.4));
  pointer-events: none;
}

/* Close button */
.replay-close {
  position: absolute;
  top: 4px;
  right: 6px;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  border: none;
  background: transparent;
  color: oklch(var(--bc) / 0.4);
  cursor: pointer;
  transition: all 0.15s;
  font-size: 20px;
  line-height: 1;
  /* Above the controls row (z-index: 2) so the full button stays hoverable */
  z-index: 3;
}

.replay-close:hover {
  background: oklch(var(--b2));
  color: oklch(var(--bc) / 0.8);
}

/* Replay photo marker (HTML overlay revealed progressively as replay reaches each photo) */
/* MapLibre positions the outer .replay-photo-marker via transform: translate(); keep all
   visual transforms (pop animation, hover scale) on the inner element so they don't fight it. */
.replay-photo-marker {
  width: 50px;
  height: 50px;
  cursor: pointer;
}

.replay-photo-marker-inner {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background-size: cover;
  background-position: center;
  border: 3px solid white;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
  transition:
    transform 0.2s,
    box-shadow 0.2s;
}

.replay-photo-marker:hover {
  z-index: 1000;
}

.replay-photo-marker:hover .replay-photo-marker-inner {
  transform: scale(1.2);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
}

.replay-photo-marker-inner.replay-photo-pop {
  animation: replay-photo-pop 0.35s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}

@keyframes replay-photo-pop {
  0% {
    transform: scale(0);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .replay-photo-marker-inner.replay-photo-pop {
    animation: none;
  }
}

/* Responsive: adjust replay panel shift for narrower side panels */
@media (max-width: 1280px) {
  .maps-maplibre-container.panel-open ~ .replay-panel {
    left: calc(50% + 210px);
  }
  .maps-maplibre-container.panel-timeline-expanded ~ .replay-panel {
    left: calc(50% + 310px);
  }
}

@media (max-width: 1024px) {
  .maps-maplibre-container.panel-open ~ .replay-panel {
    left: calc(50% + 190px);
  }
  .maps-maplibre-container.panel-timeline-expanded ~ .replay-panel {
    left: calc(50% + 260px);
  }
}

/* On mobile, side panel overlays instead of shrinking map — no shift needed */
@media (max-width: 768px) {
  .maps-maplibre-container.panel-open ~ .replay-panel,
  .maps-maplibre-container.panel-timeline-expanded ~ .replay-panel {
    left: 50%;
  }
}

/* Responsive styles */
@media (max-width: 768px) {
  .replay-panel {
    width: 95%;
    min-width: unset;
    padding: 8px 10px;
    bottom: 10px;
  }

  .replay-controls-row {
    flex-wrap: wrap;
    gap: 6px;
    padding-right: 30px;
  }

  .replay-day-nav {
    order: 1;
  }

  .replay-time-block {
    order: 2;
  }

  .replay-action-controls {
    order: 3;
    width: 100%;
    justify-content: center;
  }

  .replay-day-display {
    font-size: 0.75rem;
  }

  .replay-time-display {
    font-size: 0.95rem;
  }

  .replay-scrubber-track {
    height: 22px;
  }

  .replay-scrubber::-webkit-slider-thumb {
    height: 22px;
  }

  .replay-scrubber::-moz-range-thumb {
    height: 22px;
  }
}

/* Small mobile */
@media (max-width: 480px) {
  .replay-day-info {
    min-width: 0;
  }

  .replay-day-display {
    font-size: 0.7rem;
  }

  .replay-day-count {
    font-size: 0.55rem;
  }

  .replay-cycle-controls button {
    width: 20px;
    height: 20px;
  }
}

/* Replay corner photo stack (tilted pile revealed during replay) */
.replay-photo-stack {
  /* Single source of truth for the stack's scale. The fan offset is derived
     from it so cards keep their spacing ratio at any size. */
  --stack-size: 140px;
  --stack-fan-step: calc(var(--stack-size) * 0.078);
  position: absolute;
  top: 16px;
  left: 16px;
  width: var(--stack-size);
  height: var(--stack-size);
  z-index: 450;
  pointer-events: none;
}

.replay-photo-stack-card {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--stack-size);
  height: var(--stack-size);
  cursor: pointer;
  pointer-events: auto;
  transform: translate(
      calc(var(--depth, 0) * var(--stack-fan-step)),
      calc(var(--depth, 0) * var(--stack-fan-step))
    )
    rotate(var(--rot, 0deg));
  transition: transform 0.25s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}

.replay-photo-stack-img {
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-color: oklch(var(--b1));
  border: 4px solid white;
  border-radius: 3px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
  transition:
    transform 0.2s,
    box-shadow 0.2s;
}

.replay-photo-stack-card:hover {
  z-index: 1000 !important;
}

.replay-photo-stack-card:hover .replay-photo-stack-img {
  transform: scale(1.08);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.45);
}

.replay-photo-stack-pop .replay-photo-stack-img {
  animation: replay-photo-stack-pop 0.35s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}

@keyframes replay-photo-stack-pop {
  0% {
    transform: scale(0);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .replay-photo-stack-card {
    transition: none;
  }
  .replay-photo-stack-pop .replay-photo-stack-img {
    animation: none;
  }
}
/* Timeline Feed — Timestamps-left layout */

/* Loading state: Turbo adds [busy] while fetching a frame's src */
#timeline-feed-frame[busy] .timeline-feed-placeholder {
  display: none;
}

#timeline-feed-frame[busy]::after {
  content: "";
  display: block;
  width: 1.25rem;
  height: 1.25rem;
  margin: 2rem auto;
  border: 2px solid oklch(var(--bc) / 0.15);
  border-top-color: oklch(var(--p));
  border-radius: 50%;
  animation: timeline-spin 0.6s linear infinite;
}

@keyframes timeline-spin {
  to {
    transform: rotate(360deg);
  }
}

/* Tighter padding for the timeline tab. No bottom padding — the main
   column extends to the panel edge and scrolls independently. */
.tab-content[data-tab-content="timeline-feed"] {
  margin: -24px;
  padding: 16px 16px 0;
}

/* --- Entries container ---
   Dual-purpose: historical flex layout for legacy `.timeline-entry` rows
   AND the new `<ol>` wrapper for `.visit-row` children. List reset keeps
   both layouts clean. */
.timeline-entries {
  display: flex;
  flex-direction: column;
  list-style: none;
  padding: 0;
  margin: 0;

  /* Single source of truth for the row grid. Visit rows, journey legs and
     gap legs all read these, which is what keeps the spine unbroken and
     dead straight across three different row types. */
  --tl-time-col: 52px;
  --tl-rail-col: 18px;
  --tl-col-gap: 0.5rem;
  --tl-pad-x: 0.5rem;
  /* Centre of the rail column, measured from a row's left border edge. */
  --tl-rail-x: calc(
    var(--tl-pad-x) +
    var(--tl-time-col) +
    var(--tl-col-gap) +
    var(--tl-rail-col) /
    2
  );
  /* Dot centre, measured from a visit row's top border edge. Also where the
     spine starts on the first row and stops on the last. */
  --tl-dot-y: 1.15rem;
  --tl-rail-color: oklch(var(--bc) / 0.16);
  /* Every piece of secondary text on a row shares one tone, set at the
     lowest alpha that still clears 4.5:1 in both themes. Hierarchy below the
     place name comes from size, order and grouping — fading text past
     legibility is not a hierarchy technique. */
  --tl-text-2: oklch(var(--bc) / 0.66);
}

/* --- The spine ---
   Each row paints its own segment across its full padded height. Rows abut,
   so the segments fuse into one continuous line without the container having
   to know how many rows there are or how tall they got. */
.timeline-entries > * {
  position: relative;
}

.timeline-entries > *::before {
  content: "";
  position: absolute;
  left: var(--tl-rail-x);
  top: 0;
  bottom: 0;
  width: 2px;
  margin-left: -1px;
  border-radius: 1px;
  background: var(--tl-rail-color);
  pointer-events: none;
}

/* Cap the line at the first and last dot so it reads as a day with a
   beginning and an end, not a line that got cut off. Only visit rows carry a
   dot — when a drive opens or closes the day its rail runs the full row,
   because the movement itself is the record. */
.timeline-entries > .visit-row:first-child::before {
  top: var(--tl-dot-y);
}

.timeline-entries > .visit-row:last-child::before {
  bottom: calc(100% - var(--tl-dot-y));
}

/* Helper shown when search/filter hides every visit row on a day that has
   visits. Positioned just below the list so it reads as an explanation for
   the apparent emptiness without shifting layout when hidden. */
.timeline-entries-empty-filtered {
  margin-top: 0.5rem;
  padding: 0.75rem;
  text-align: center;
  border: 1px dashed oklch(var(--bc) / 0.15);
  border-radius: 0.5rem;
  background: oklch(var(--b2) / 0.4);
}

.timeline-entries-empty-filtered p {
  margin: 0 0 0.4rem;
}

/* --- Each entry: time column + content column --- */
.timeline-entry {
  display: flex;
  gap: 0.75rem;
  padding: 0.5rem 0;
  transition: background-color 0.15s ease;
}

/* --- Journey leg: a "between-visits" connector, not a peer row --- */
/* Legs read as transitions: lighter weight, no dot, and a rail whose height
   grows with the duration of the leg. */
.timeline-entry--journey {
  display: block;
  padding: 0;
}

/* Mirrors `.visit-row` so the time / rail / content columns line up
   between visit rows and the connecting legs — gives the day a steady
   left edge regardless of entry type. */
.journey-leg,
.gap-leg {
  display: grid;
  grid-template-columns: var(--tl-time-col) var(--tl-rail-col) minmax(0, 1fr) auto;
  gap: var(--tl-col-gap);
  align-items: center;
  padding: 0.3rem var(--tl-pad-x);
  font-size: 0.7rem;
  color: var(--tl-text-2);
  border-radius: 8px;
  transition: background-color 0.15s ease;
}

/* Time is the vertical axis. `--tl-leg-extra` is set per row from the leg's
   own duration, so the spine physically lengthens for a long drive and the
   shape of the day becomes readable before a single number is. */
.journey-leg,
.gap-leg {
  min-height: calc(1.5rem + var(--tl-leg-extra, 0px));
}

.journey-leg:hover {
  background: oklch(var(--bc) / 0.05);
  color: oklch(var(--bc) / 0.8);
}

.journey-leg__time,
.gap-leg__time {
  text-align: right;
  font-size: 0.65rem;
  font-variant-numeric: tabular-nums;
  color: var(--tl-text-2);
}

.journey-leg__summary,
.gap-leg__summary {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  min-width: 0;
  flex-wrap: wrap;
}

.journey-leg__verb {
  font-weight: 500;
  color: oklch(var(--bc) / 0.72);
}

.journey-leg__sep {
  color: oklch(var(--bc) / 0.45);
}

/* --- Gap: an interior stretch with no record at all ---
   Solid rail means "we have this"; dotted means "we don't". That is the
   whole distinction, and it is the one the old feed silently collapsed. */
.timeline-entry--gap {
  display: block;
  padding: 0;
}

/* Reads at least as strongly as the solid rail — this segment is carrying
   the message, so it must not be the faintest thing on the row. */
.timeline-entry--gap::before {
  width: 0;
  background: none;
  border-left: 2px dotted oklch(var(--bc) / 0.42);
}

.gap-leg__summary {
  font-size: 0.65rem;
  font-style: italic;
  letter-spacing: 0.01em;
  color: var(--tl-text-2);
}

.journey-leg__chevron {
  width: 0.75rem;
  height: 0.75rem;
  flex-shrink: 0;
  transition: transform 0.2s ease;
  color: oklch(var(--bc) / 0.5);
}

/* Track info panel inside entry content.
   Stacked above the spine: the row's rail is an absolutely-positioned
   ::before, which paints over in-flow content, so an expanded card would
   otherwise get a line drawn straight down its middle. The rail still enters
   the top edge and leaves the bottom — the day continues, and this card is
   detail hung off it. */
.timeline-entry .track-info-panel {
  position: relative;
  z-index: 1;
  margin-top: 0.375rem;
}

/* When the track-info panel is rendered inside a journey leg, push it to
   span the full width of the day column (the connector indent shouldn't
   apply to the expanded card). */
.timeline-entry--journey .track-info-panel {
  margin-left: 0;
  margin-right: 0;
}

.track-info-chevron.expanded {
  transform: rotate(180deg);
}

/* Compact track-info card — distance/speed/elevation render inline so the
   card stays roughly two short rows even with all stats present. */
.track-info-card {
  margin-top: 0.375rem;
  padding: 0.5rem 0.625rem;
  border: 1px solid oklch(var(--bc) / 0.12);
  border-radius: 0.5rem;
  background: oklch(var(--b1));
  font-size: 0.75rem;
}

.track-info-card__id {
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: oklch(var(--bc) / 0.45);
  margin-bottom: 0.35rem;
}

.track-info-stats {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.875rem;
}

.track-info-stats__label {
  color: oklch(var(--bc) / 0.55);
  margin-right: 0.15rem;
}

.track-info-stats strong {
  font-weight: 600;
}

.track-info-mode {
  margin-left: auto;
  padding: 0.05rem 0.4rem;
  border: 1px solid oklch(var(--bc) / 0.25);
  border-radius: 999px;
  font-size: 0.65rem;
  letter-spacing: 0.02em;
  color: oklch(var(--bc) / 0.75);
}

.track-info-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-top: 0.4rem;
  padding-top: 0.4rem;
  border-top: 1px solid oklch(var(--bc) / 0.1);
}

.track-info-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  cursor: pointer;
  font-size: 0.7rem;
  color: oklch(var(--bc) / 0.8);
  white-space: nowrap;
}

/* --- Empty state --- */
.timeline-empty {
  color: oklch(var(--bc) / 0.5);
  font-size: 0.75rem;
  padding: 0.5rem 0;
}

/* --- Responsive padding overrides --- */
@media (max-width: 1024px) {
  .tab-content[data-tab-content="timeline-feed"] {
    margin: -20px;
    padding: 12px;
  }
}

@media (max-width: 768px) {
  .tab-content[data-tab-content="timeline-feed"] {
    margin: -16px -20px;
    padding: 12px;
  }
}

@media (max-width: 640px) {
  .tab-content[data-tab-content="timeline-feed"] {
    margin: -16px;
    padding: 10px;
  }
}

@media (max-width: 375px) {
  .tab-content[data-tab-content="timeline-feed"] {
    margin: -12px;
    padding: 8px;
  }
}

/* =========================================================================
   Unified Timeline — calendar, visit rows, drawer, overlays
   Introduced in Task 6 of the Unified Timeline plan. These styles back the
   new Stimulus controller and the shared class contract consumed by the
   server-rendered views and the map overlays.
   ========================================================================= */

/* --- Tab pane + filter row --- */
/* Timeline tab fills the panel body and manages its own scroll — rail stays
   in view while the main column (visit list) scrolls independently. */
.tab-content[data-tab-content="timeline-feed"].active {
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* Two-column layout: calendar/filter rail (260px) + visit list main.
   No bottom padding so the day column reaches the panel edge; top + sides
   keep the breathing room. */
.timeline-tab-content {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 1rem;
  padding: 0.75rem 0.75rem 0;
  align-items: start;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* Collapse to single column when the panel gets narrow (≤1024px panel) */
@media (max-width: 1024px) {
  .timeline-tab-content {
    grid-template-columns: 1fr;
  }
  .timeline-rail {
    gap: 0.5rem;
  }
}

/* --- Calendar grid (sits inside the 260px timeline-rail) --- */
.timeline-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
}

/* Optimistic skeleton state — applied by `timeline-feed#previewMonth`
   when the user clicks the prev/next month chevron. Removed implicitly
   when the turbo_stream replaces the calendar frame with real data. */
.timeline-calendar--loading .cal-cell {
  opacity: 0.55;
  cursor: progress;
  transition: opacity 0.15s ease;
}

.timeline-calendar--loading .cal-cell:not(.cal-cell--selected) {
  background: oklch(var(--bc) / 0.05);
}

.timeline-calendar-grid__weekday {
  text-align: center;
  font-size: 9px;
  text-transform: uppercase;
  color: oklch(var(--bc) / 0.5);
  padding: 2px 0;
}

.cal-cell {
  position: relative;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 500;
  border: 0;
  cursor: pointer;
  background: transparent;
  color: oklch(var(--bc));
}

.cal-cell:hover:not(.cal-cell--disabled) {
  outline: 1px solid oklch(var(--bc) / 0.2);
}

.cal-cell--out-of-month {
  color: oklch(var(--bc) / 0.25);
}

.cal-cell--disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.cal-cell--selected {
  outline: 2px solid oklch(var(--p));
  outline-offset: 1px;
}

/* Heat buckets — transparent through emerald-88%.
   High-intensity cells switch to white text for contrast. */
.heat-0 {
  background: transparent;
}
.heat-1 {
  background: rgba(34, 197, 94, 0.15);
}
.heat-2 {
  background: rgba(34, 197, 94, 0.3);
}
.heat-3 {
  background: rgba(34, 197, 94, 0.5);
  color: white;
}
.heat-4 {
  background: rgba(34, 197, 94, 0.7);
  color: white;
}
.heat-5 {
  background: rgba(34, 197, 94, 0.88);
  color: white;
}

/* The day fills its column so the footer can anchor to the bottom (via
   `margin-top: auto` on the footer) and the empty space below short days
   gets reclaimed for at-a-glance rollup + quick day nav. */
.timeline-day {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

/* --- Day header / summary / bulk banner --- */
.timeline-day-header {
  padding: 0 0.5rem 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  border-bottom: 1px solid oklch(var(--bc) / 0.1);
}

/* Pinned to the bottom of the day column. Compact rollup of day stats
   flanked by prev/next-day buttons, so users don't need to scroll back to
   the header to switch days when they've scrolled to the bottom. */
.timeline-day-footer {
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.6rem 0.5rem 0.4rem;
  border-top: 1px dashed oklch(var(--bc) / 0.12);
  color: oklch(var(--bc) / 0.7);
}

.timeline-day-rollup {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.35rem 0.9rem;
  margin: 0.25rem 0 0.5rem;
  padding: 0.5rem 0.5rem;
  font-size: 0.7rem;
  font-variant-numeric: tabular-nums;
  border-bottom: 1px dashed oklch(var(--bc) / 0.12);
}

.timeline-day-rollup > div {
  display: flex;
  align-items: baseline;
  gap: 0.25rem;
}

.timeline-day-rollup dt {
  color: oklch(var(--bc) / 0.5);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-size: 0.6rem;
  font-weight: 600;
}

.timeline-day-rollup dd {
  margin: 0;
  font-weight: 600;
  color: oklch(var(--bc) / 0.85);
}

.timeline-day-header__nav {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.timeline-day-header__meta {
  text-align: center;
  font-size: 0.75rem;
  color: oklch(var(--bc) / 0.6);
}

.timeline-day-summary {
  font-size: 0.75rem;
  color: oklch(var(--bc) / 0.7);
  padding: 0 0.5rem;
}

.timeline-bulk-banner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  padding: 0.6rem 0.75rem;
  background: rgba(245, 158, 11, 0.08);
  border: 1px solid rgba(245, 158, 11, 0.3);
  border-radius: 8px;
  font-size: 0.85rem;
  margin: 0.5rem 0.25rem;
  text-align: center;
}

.timeline-bulk-banner__text {
  color: #d97706;
  font-weight: 600;
  white-space: nowrap;
}

.timeline-bulk-banner__actions {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
}

/* `button_to` wraps each button in a <form class="button_to"> which defaults
   to block-level. Reset so the banner's flex layout works cleanly. */
.timeline-bulk-banner__actions form.button_to {
  display: inline-flex;
  margin: 0;
}

/* --- Visit row --- */
.visit-row {
  display: grid;
  /* minmax(0, 1fr) so the content column can shrink below its natural
     content width — otherwise long place names push the row beyond the
     panel and trigger horizontal scroll. */
  grid-template-columns: var(--tl-time-col) var(--tl-rail-col) minmax(0, 1fr) auto;
  gap: var(--tl-col-gap);
  align-items: start;
  /* No row border. Hairlines between every entry imposed table rhythm and
     fought the spine; the rail and the whitespace do the separating now. */
  padding: 0.55rem var(--tl-pad-x) 0.6rem;
  border-radius: 8px;
  cursor: pointer;
  transition:
    background-color 120ms ease,
    box-shadow 120ms ease;
}

.visit-row:hover {
  background-color: oklch(var(--bc) / 0.055);
}

.visit-row:focus-visible {
  outline: 2px solid oklch(var(--p));
  outline-offset: -2px;
}

.visit-row--selected {
  background-color: oklch(var(--p) / 0.12);
}

/* Inline visit editor — spans the full row below the content columns.
   Opaque and stacked above the spine, which runs the full height of the row
   and would otherwise strike through the panel. */
.visit-row__editor {
  position: relative;
  z-index: 1;
  grid-column: 1 / -1;
  min-width: 0;
  margin-top: 8px;
  padding: 10px 12px;
  border: 1px solid oklch(var(--bc) / 0.1);
  border-radius: 10px;
  background: oklch(var(--b2));
}

.visit-editor__label {
  display: block;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: oklch(var(--bc) / 0.45);
  margin-bottom: 4px;
}

.visit-editor__name-form {
  display: flex;
  gap: 6px;
  margin-bottom: 10px;
}

.visit-editor__foot {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

/* Icon-only: the row already says what it is, and the label was the widest
   thing in a column that has to stay narrow. */
.visit-edit-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  border: 1px solid oklch(var(--bc) / 0.15);
  background: oklch(var(--b2));
  color: oklch(var(--bc) / 0.7);
  cursor: pointer;
}

.visit-edit-btn:hover,
.visit-edit-btn:focus-visible,
.visit-edit-btn[aria-expanded="true"] {
  border-color: oklch(var(--in));
  color: oklch(var(--in));
}

/* Search panel spans the full row so the input + results have room. */
.visit-row__place-search {
  grid-column: 1 / -1;
  min-width: 0;
}

/* Belt + suspenders — ensure the content cell (and anything inside it like
   the suggested picker) can shrink below intrinsic content width. */
.visit-row__content {
  min-width: 0;
  justify-self: stretch;
  text-align: left;
}

.visit-row__time {
  text-align: right;
  font-size: 0.7rem;
  line-height: 1.45rem;
  font-variant-numeric: tabular-nums;
  color: var(--tl-text-2);
}

.visit-row__all-day {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Empty spacer; it only reserves the column. The dot positions itself
   against the row so it lands exactly on the spine. */
.visit-row__rail {
  align-self: stretch;
}

/* The one line that has to be recognizable from across the room. */
.visit-row__title {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.5rem;
  font-size: 0.8125rem; /* 13px — compact; drops from the default ~16px */
  font-weight: 600;
  line-height: 1.45rem;
  letter-spacing: -0.005em;
  color: oklch(var(--bc) / 0.95);
  text-align: left;
}

/* Wraps rather than truncates — a name the user typed themselves is never
   the thing to cut off. Splitting the address out keeps this short anyway. */
.visit-row__title > span {
  min-width: 0;
  overflow-wrap: anywhere;
}

.visit-row__title .place-link {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  font: inherit;
  text-align: left;
}

.visit-row__title .place-link:hover {
  text-decoration: underline;
}

.visit-row__meta {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 0.15rem 0.4rem;
  margin-top: 1px;
  font-size: 0.6875rem; /* 11px */
  line-height: 1.35;
  color: var(--tl-text-2);
  text-align: left;
}

/* The rest of the geocoded string. Present, findable, and never competing
   with the name above it. */
.visit-row__address {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* How many fixes back this visit — a confidence signal, not a headline.
   Ranked below the address by size, not by fading it out of readability. */
.visit-row__points {
  font-size: 0.625rem; /* 10px */
  font-variant-numeric: tabular-nums;
  color: var(--tl-text-2);
}

/* Trails the address rather than leading the point count, so a wrap leaves
   the separator attached to the line it closes instead of orphaning a bullet
   at the start of the next one. */
.visit-row__address::after {
  content: "·";
  margin-left: 0.35rem;
  color: oklch(var(--bc) / 0.45);
}

/* Duration sits opposite the arrival time, so the row is bracketed by when
   and how long. Column width is reserved by the always-present duration, so
   revealing the edit button on hover shifts nothing. */
.visit-row__actions {
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  gap: 0.35rem;
  line-height: 1.45rem;
}

.visit-row__duration {
  font-size: 0.7rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--tl-text-2);
}

.visit-row .visit-edit-btn {
  opacity: 0;
  transition: opacity 120ms ease;
}

.visit-row:hover .visit-edit-btn,
.visit-row:focus-within .visit-edit-btn,
.visit-row .visit-edit-btn[aria-expanded="true"] {
  opacity: 1;
}

/* One neutral dot for every visit — detection status is not a UI state.
   Positioned against the row, not the cell, so it lands dead centre on the
   spine no matter how tall the row's content grows. */
.visit-status-dot {
  position: absolute;
  left: var(--tl-rail-x);
  top: var(--tl-dot-y);
  transform: translate(-50%, -50%);
  width: 9px;
  height: 9px;
  border-radius: 9999px;
  background: var(--visit-marker);
  box-shadow: 0 0 0 2px oklch(var(--b1));
  transition:
    background-color 120ms ease,
    box-shadow 120ms ease;
}

/* Selection reads on the rail rather than as a coloured slab edge — the dot
   is the thing the map is also highlighting, so it is what should change. */
.visit-row--selected .visit-status-dot {
  background: oklch(var(--p));
  box-shadow:
    0 0 0 2px oklch(var(--b1)),
    0 0 0 4px oklch(var(--p) / 0.45);
}

/* Tag chips — background color applied inline by the view. */
.tag-chip {
  display: inline-block;
  padding: 0 6px;
  border-radius: 9999px;
  font-size: 10px;
  line-height: 1.6;
  color: white;
}

/* Inside a row, a filled pill was the loudest thing on screen — louder than
   the place name it annotates. The rail's filter chips stay pills because
   there they are the control; here the tag is an annotation, so the user's
   colour becomes a dot and the label joins the secondary tone. That also
   sidesteps white-on-user-colour contrast, which we cannot predict. */
.visit-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.625rem;
  line-height: 1.35;
  color: var(--tl-text-2);
}

.visit-tag__dot {
  width: 6px;
  height: 6px;
  border-radius: 9999px;
  flex-shrink: 0;
}

/* Suggested picker styles live in maps_maplibre_suggested_picker.css. */

/* Place drawer styles live in maps_maplibre_place_drawer.css. */

/* --- Map overlays (scope + legend) ---
   Hidden by default. Visible only when the map container sits in the
   timeline-expanded state, which is toggled alongside the panel. */
.timeline-map-overlay {
  display: none;
  position: absolute;
  z-index: 500;
  background: oklch(var(--b1) / 0.95);
  backdrop-filter: blur(4px);
  border: 1px solid oklch(var(--bc) / 0.15);
  border-radius: 6px;
  padding: 0.4rem 0.6rem;
  font-size: 0.75rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

.maps-maplibre-container.panel-timeline-expanded .timeline-map-overlay {
  display: block;
}

.timeline-map-overlay--scope {
  top: 12px;
  left: 12px;
}

.visit-row__check {
  display: none;
}

.visit-row__check input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: oklch(var(--p));
  cursor: pointer;
}

.visit-row {
  position: relative;
}

[data-selection-mode="true"] .timeline-entries {
  padding-left: 28px;
}

[data-selection-mode="true"] .visit-row__check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  left: -22px;
  top: 50%;
  transform: translateY(-50%);
}

[data-selection-mode="true"] .visit-row {
  cursor: pointer;
}

[data-selection-mode="true"] .visit-row__actions,
[data-selection-mode="true"] .visit-row__editor {
  pointer-events: none;
  opacity: 0.45;
}

.day-select-toggle {
  margin-left: 8px;
  font-size: 11px;
  padding: 2px 8px;
  border: 1px solid oklch(var(--bc) / 0.2);
  border-radius: 6px;
  background: transparent;
  color: oklch(var(--bc) / 0.7);
  cursor: pointer;
}

.day-select-toggle:hover {
  background: oklch(var(--bc) / 0.05);
  color: oklch(var(--bc));
}

[data-selection-mode="true"] .day-select-toggle {
  background: oklch(var(--p) / 0.15);
  border-color: oklch(var(--p) / 0.5);
  color: oklch(var(--p));
}

.selection-bar {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  margin: 0 0 8px 0;
  background: oklch(var(--b2));
  border: 1px solid oklch(var(--p) / 0.3);
  border-radius: 8px;
  font-size: 12px;
  color: oklch(var(--bc));
}

.selection-bar[hidden] {
  display: none;
}

.selection-bar__count {
  font-weight: 600;
}

.selection-bar__actions {
  display: flex;
  flex-wrap: wrap;
  row-gap: 6px;
  column-gap: 8px;
}

.selection-bar__form {
  display: inline-flex;
  margin: 0;
}

.selection-bar__cancel,
.selection-bar__action {
  padding: 4px 10px;
  border-radius: 6px;
  font-size: 12px;
  cursor: pointer;
}

/* Icon-only exit control at the right end of the actions. */
.selection-bar__cancel {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px;
  background: transparent;
  border: 1px solid transparent;
  color: oklch(var(--bc) / 0.6);
}

.selection-bar__cancel:hover,
.selection-bar__cancel:focus-visible {
  border-color: oklch(var(--bc) / 0.25);
  color: oklch(var(--bc) / 0.9);
}

.selection-bar__action {
  font-weight: 600;
}

.selection-bar__merge {
  background: oklch(var(--p));
  border: 1px solid oklch(var(--p));
  color: oklch(var(--pc));
}

.selection-bar__delete {
  background: oklch(var(--er));
  border: 1px solid oklch(var(--er));
  color: oklch(var(--erc));
}

.selection-bar__action:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ── Simplified segment legs (first expansion level of a journey) ── */
.segment-ribbon {
  display: flex;
  height: 6px;
  border-radius: 3px;
  overflow: hidden;
  margin: 4px 0 8px;
  background: oklch(var(--bc) / 0.08);
}

.segment-ribbon i {
  display: block;
  height: 100%;
  min-width: 2px;
}

.segment-ribbon__gap {
  background: transparent;
  min-width: 0;
}

.segment-ribbon__uncertain {
  background: repeating-linear-gradient(
    135deg,
    oklch(var(--bc) / 0.35) 0 4px,
    oklch(var(--bc) / 0.12) 4px 8px
  );
}

.segment-leg {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 3px 0;
  font-size: 0.85rem;
}

.segment-stop {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 2px 0;
  font-size: 0.72rem;
  font-style: italic;
  color: oklch(var(--bc) / 0.45);
}

.segment-stop::before,
.segment-stop::after {
  content: "";
  flex: 1;
  border-top: 1px dashed oklch(var(--bc) / 0.15);
}

.segment-leg + .segment-leg,
.segment-leg + .segment-stop,
.segment-stop + .segment-leg {
  border-top: 1px solid oklch(var(--bc) / 0.06);
}

.segment-leg__icon,
.segment-row__icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  align-self: center;
  color: oklch(var(--bc) / 0.6);
}

.segment-leg__mode {
  font-weight: 600;
}

/* The label is the control. It reads as text until you approach it, then a
   dotted underline and a caret admit it is editable — the row never turns
   into a form, and there is nothing to save. */
.segment-leg__form {
  display: contents;
}

.segment-leg__mode--editable {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 1px;
  cursor: pointer;
  border-bottom: 1px dashed oklch(var(--bc) / 0.28);
  transition: border-color 120ms ease;
}

.segment-leg:hover .segment-leg__mode--editable,
.segment-leg__mode--editable:focus-within {
  border-bottom-color: oklch(var(--bc) / 0.7);
}

.segment-leg__caret {
  width: 10px;
  height: 10px;
  flex-shrink: 0;
  opacity: 0;
  color: oklch(var(--bc) / 0.55);
  transition: opacity 120ms ease;
}

.segment-leg:hover .segment-leg__caret,
.segment-leg__mode--editable:focus-within .segment-leg__caret {
  opacity: 1;
}

/* Stretched over the label so the text itself is the hit target. */
.segment-leg__select {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
}

.segment-leg__mode--editable:focus-within {
  outline: 2px solid oklch(var(--p));
  outline-offset: 3px;
  border-radius: 2px;
}

.segment-leg__nums {
  font-size: 0.78rem;
  color: oklch(var(--bc) / 0.6);
  font-variant-numeric: tabular-nums;
}

.segment-leg__mid {
  opacity: 0.4;
  margin: 0 3px;
}

.segment-leg--neutral .segment-leg__mode {
  font-weight: 500;
  font-style: italic;
  color: oklch(var(--bc) / 0.6);
}

/* Opening "All segments · edit" swaps the condensed list for the editable
   one rather than stacking a second copy underneath it. When DisplayLegs
   happens not to condense anything — no stationary rows, no short runs, all
   confident — the two lists are the same segments twice over.
   The ribbon deliberately survives: it indexes both views.
   Without :has() support both lists show, which is the previous behaviour. */
.track-segments:has(.segment-rawlist[open]) .segment-leg,
.track-segments:has(.segment-rawlist[open]) .segment-stop {
  display: none;
}

/* The toggle stays anchored at the bottom of the card in both states: the
   rows it reveals are ordered above it, so opening does not yank the link
   upward into the space the condensed list just vacated. */
.segment-rawlist {
  display: flex;
  flex-direction: column;
  margin-top: 8px;
}

.segment-rawlist > summary {
  order: 1;
}

/* Belt and braces. Giving <details> a non-block display has historically let
   engines render the collapsed content anyway; this states the collapse
   outright rather than trusting each UA stylesheet to survive the change. */
.segment-rawlist:not([open]) .segment-rawlist__rows {
  display: none;
}

.segment-rawlist > summary {
  list-style: none;
  cursor: pointer;
  font-size: 0.72rem;
  color: oklch(var(--in));
  user-select: none;
}

.segment-rawlist > summary::-webkit-details-marker {
  display: none;
}

.segment-rawlist > summary:hover {
  text-decoration: underline;
}

/* ── Day mode chips ── */
.timeline-day-modes {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}

.timeline-day-modes .mode-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 0.75rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  padding: 3px 10px;
  border-radius: 999px;
  background: oklch(var(--b2));
  border: 1px solid oklch(var(--bc) / 0.08);
}

/* Drawn icons, not emoji: these inherit currentColor and share the stroke
   weight of every other icon on the panel. */
.timeline-day-modes .mode-chip__icon {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
  color: oklch(var(--bc) / 0.6);
}

.timeline-day-modes .mode-chip--muted {
  font-weight: 500;
  color: oklch(var(--bc) / 0.55);
  background: transparent;
}

/* Confidence gating: medium-band suggestions render subdued; low-band ones
   stay behind the per-day disclosure toggle (a day-level class, so the
   search/filter `hidden` mechanics stay untouched). */
.visit-row--subdued {
  opacity: 0.55;
}

.timeline-day:not(.timeline-day--show-lowconf) .visit-row--lowconf {
  display: none;
}

.timeline-lowconf-toggle {
  display: block;
  margin: 2px auto 8px;
  padding: 2px 10px;
  font-size: 0.72rem;
  border-radius: 999px;
  color: oklch(var(--bc) / 0.55);
  background: transparent;
  border: 1px dashed oklch(var(--bc) / 0.2);
}

.timeline-lowconf-toggle[aria-expanded="true"] {
  color: oklch(var(--bc) / 0.8);
  border-style: solid;
}
/* Timeline Feed — left rail (calendar + filters + tags + day summary).
   Paired with .timeline-tab-content grid in maps_maplibre_timeline_feed.css. */

.timeline-rail {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  min-width: 0;
  min-height: 0;
  max-height: 100%;
  overflow-y: auto;
}

.timeline-rail__section {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.timeline-rail__section-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: oklch(var(--bc) / 0.55);
}

.timeline-rail__section-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
}

.timeline-rail__section-link {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: oklch(var(--p));
  text-decoration: none;
}

.timeline-rail__section-link:hover {
  text-decoration: underline;
}

.timeline-rail__heat-legend {
  display: flex;
  align-items: center;
  gap: 2px;
  font-size: 10px;
  color: oklch(var(--bc) / 0.55);
}

.timeline-rail__heat-legend .heat-swatch {
  width: 10px;
  height: 10px;
  border-radius: 2px;
}

.timeline-rail__heat-legend .heat-swatch.heat-0 {
  border: 1px solid oklch(var(--bc) / 0.2);
}

.timeline-rail__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.tag-chip--ghost {
  background: transparent !important;
  color: oklch(var(--bc) / 0.6);
  border: 1px dashed oklch(var(--bc) / 0.3);
  cursor: pointer;
}

/* Clickable tag chip — inactive looks muted; active pops with a ring. */
.tag-chip--toggle {
  cursor: pointer;
  border: 0;
  opacity: 0.7;
  transition:
    opacity 120ms ease,
    box-shadow 120ms ease;
}

.tag-chip--toggle:hover {
  opacity: 1;
}

.tag-chip--toggle.tag-chip--active {
  opacity: 1;
  box-shadow:
    0 0 0 2px oklch(var(--b1)),
    0 0 0 3px oklch(var(--p));
}

.timeline-filter-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.85rem;
  cursor: pointer;
}

.timeline-filter-row--muted {
  color: oklch(var(--bc) / 0.55);
}

.timeline-filter-row__count {
  font-size: 0.72rem;
  color: oklch(var(--bc) / 0.45);
  font-variant-numeric: tabular-nums;
}

.timeline-main {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  max-height: 100%;
  overflow-y: auto;
  /* Hover highlight on entries uses negative horizontal margin to bleed
     into the column padding — without overflow-x clipping the parent gets
     a scrollbar. */
  overflow-x: hidden;
}

.timeline-main__empty {
  text-align: center;
  color: oklch(var(--bc) / 0.6);
  font-size: 0.85rem;
  padding: 2rem 1rem;
}

.visit-row--hidden {
  display: none !important;
}
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *


 */

.emoji-icon {
  font-size: 36px; /* Adjust size as needed */
  text-align: center;
  line-height: 36px; /* Same as font-size for perfect centering */
}

.timeline-box {
  overflow: visible !important;
}

.photo-marker {
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: 50%;
}

.photo-marker img {
  border-radius: 50%;
  width: 48px;
  height: 48px;
}
.loading-spinner {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 18px;
  color: gray;
}

.loading-spinner::before {
  content: "";
  font-size: 18px;
  animation: spinner 1s linear infinite;
}

.loading-spinner.done::before {
  content: "✅";
  animation: none;
}

/* Flash message animations */
@keyframes slideInFromRight {
  0% {
    transform: translateX(100%);
    opacity: 0;
  }
  100% {
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes slideOutToRight {
  0% {
    transform: translateX(0);
    opacity: 1;
  }
  100% {
    transform: translateX(100%);
    opacity: 0;
  }
}

/* Family feature specific styles */
.family-member-card {
  transition: all 0.2s ease-in-out;
}

.family-member-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.invitation-card {
  border-left: 4px solid #f59e0b;
}

.family-invitation-form {
  max-width: 500px;
}

/* Loading states */
.btn:disabled {
  opacity: 0.7;
  cursor: not-allowed;
}

.loading-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(255, 255, 255, 0.8);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
}

/* Fix: DaisyUI table sticky headers render above navbar dropdowns */
.table thead th,
.table tfoot th,
table thead th {
  position: static !important;
  z-index: auto !important;
}
