
html {
  background-color: #fff;
  height: 100%;
  overflow: hidden;
}

:root {
  --td-header-height: 56px;
  --td-nav-height: 39px;
  --td-top-height: calc(var(--td-header-height) + var(--td-nav-height));
  --td-panel-bg: rgba(7, 15, 24, 0.7);
  --td-panel-border: rgba(117, 196, 238, 0.35);
  --td-panel-text: #d8ecfb;
}

body {
  margin: 0px;
  padding: 0px !important;
  width: 100%;
  height: 100%;

  font-family: "Sans-serif", "Helvetica" !important;
  font-size: 12px;
  background: #fff;
}

label {
  display: inline-block;
  width: 5em;
}

h1 {
  font-family: "Sans-serif", "Helvetica" !important;
  color: #1a1a1a;
}

h2 {
  font-family: "Sans-serif", "Helvetica" !important;
  color: #1a1a1a;
}

h3 {
  font-family: "Sans-serif", "Helvetica" !important;
  color: #1a1a1a;
}

sup {
  font-weight: normal;
}

a {
  color: #337ab7;
  text-decoration: none;
  background-color: transparent;
}

/* Set the position of the map */
#map-container {
  position:absolute;
  top: var(--td-top-height);
  left: 0px;
  width: 100%;
  height: calc(100% - var(--td-top-height));
  z-index:5;
}

#tdt-native-map-container {
  position: absolute;
  top: var(--td-top-height);
  left: 0;
  width: 100%;
  height: calc(100% - var(--td-top-height));
  z-index: 10;
  display: block !important;
  opacity: 0;
  pointer-events: auto;
}

/* 核弹级：确保原生天地图在 tdt_native 模式下完全显示和交互 */
body.td-native-overlay-only #tdt-native-map-container {
  opacity: 1 !important;
  display: block !important;
  visibility: visible !important;
  pointer-events: auto !important;
  z-index: 99999 !important;
}

/* 彻底隐藏 Leaflet 容器 */
body.td-native-overlay-only #map-container {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
  opacity: 0 !important;
  z-index: -999999 !important;
}

body.td-native-basemap-enabled #tdt-native-map-container {
  opacity: 1 !important;
  pointer-events: auto !important;
  display: block !important;
  z-index: 10 !important;
}

body.td-native-basemap-enabled #map-container {
  background: transparent;
}

body.td-native-basemap-enabled #map-container .leaflet-container {
  background: transparent !important;
}

body.td-native-basemap-enabled #map-container .leaflet-tile-pane {
  opacity: 0 !important;
}

.td-native-draw-toolbar {
  position: absolute;
  top: 10px;
  left: 12px;
  display: flex;
  flex-direction: column;
  gap: 0;
  z-index: 3000;
  pointer-events: auto;
  border-radius: 4px;
  overflow: visible;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
}

/* Move TianDiTu native control groups to left side to avoid conflict with right status panels. */
body.td-native-overlay-only #tdt-native-map-container .tdt-top.tdt-right,
body.td-native-basemap-enabled #tdt-native-map-container .tdt-top.tdt-right {
  right: auto !important;
  left: 10px !important;
}

body.td-native-overlay-only #tdt-native-map-container .tdt-bottom.tdt-right,
body.td-native-basemap-enabled #tdt-native-map-container .tdt-bottom.tdt-right {
  right: auto !important;
  left: 10px !important;
}

/* Keep copyright at bottom-right instead of bottom-left. */
body.td-native-overlay-only #tdt-native-map-container .tdt-bottom.tdt-left,
body.td-native-basemap-enabled #tdt-native-map-container .tdt-bottom.tdt-left {
  left: auto !important;
  right: 10px !important;
}

body.td-native-overlay-only #tdt-native-map-container .tdt-control-copyright,
body.td-native-basemap-enabled #tdt-native-map-container .tdt-control-copyright {
  text-align: right !important;
}

.td-native-draw-btn {
  width: 40px;
  height: 40px;
  border: 0;
  border-bottom: 1px solid rgba(18, 32, 56, 0.12);
  border-radius: 0;
  background: rgba(255, 255, 255, 0.96);
  color: #252525;
  font-size: 18px;
  font-weight: 400;
  line-height: 1;
  cursor: pointer;
  position: relative;
}

.td-native-btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  font-size: 16px;
}

.td-native-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.td-native-draw-btn::after,
.td-native-zoom-btn::after {
  content: attr(data-tip);
  position: absolute;
  left: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  white-space: nowrap;
  background: rgba(33, 33, 33, 0.94);
  color: #fff;
  font-size: 12px;
  line-height: 1;
  padding: 7px 9px;
  border-radius: 6px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.14s ease;
  z-index: 5000;
}

.td-native-draw-btn:hover::after,
.td-native-zoom-btn:hover::after {
  opacity: 1;
}

.td-native-draw-btn:hover {
  background: rgba(245, 251, 255, 0.98);
}

.td-native-draw-btn.is-active {
  background: #e7f1ff;
  color: #1f6fe5;
}

.td-native-draw-btn[data-tool="clear"] {
  margin-top: 8px;
  border-bottom: 0;
  border-radius: 4px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
}

.td-native-zoom-toolbar {
  position: absolute;
  left: 12px;
  bottom: 100px;
  z-index: 3000;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 4px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
}

.td-native-zoom-btn {
  width: 40px;
  height: 40px;
  border: 0;
  border-bottom: 1px solid rgba(18, 32, 56, 0.12);
  background: rgba(255, 255, 255, 0.96);
  font-size: 28px;
  line-height: 1;
  color: #252525;
  cursor: pointer;
  position: relative;
}

.td-native-zoom-level {
  width: 40px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: 1px solid rgba(18, 32, 56, 0.12);
  background: rgba(255, 255, 255, 0.97);
  color: #212121;
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  user-select: none;
}

.td-native-zoom-btn:last-child {
  border-bottom: 0;
}

.td-native-zoom-btn:hover {
  background: rgba(245, 251, 255, 0.98);
}

.td-native-scale-wrap {
  position: absolute;
  left: 12px;
  bottom: 20px;
  z-index: 3000;
  pointer-events: none;
  text-align: left;
}

.td-native-scale-bar {
  height: 6px;
  border-left: 2px solid #323232;
  border-right: 2px solid #323232;
  border-bottom: 2px solid #323232;
  background: transparent;
}

.td-native-scale-text {
  margin-top: 3px;
  font-size: 11px;
  color: #323232;
  font-weight: 600;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);
}

@media screen and (max-width: 1024px) {
  .td-native-draw-toolbar {
    top: 8px;
    left: 8px;
  }

  .td-native-zoom-toolbar,
  .td-native-scale-wrap {
    left: 8px;
  }

  .td-native-zoom-toolbar {
    bottom: 92px;
  }

  .td-native-draw-btn,
  .td-native-zoom-btn {
    width: 36px;
    height: 36px;
  }

  .td-native-zoom-level {
    width: 36px;
    height: 30px;
    font-size: 14px;
  }

  .td-native-btn-icon {
    font-size: 14px;
  }
}

.td-native-measure-guide {
  position: absolute;
  z-index: 4100;
  background: rgba(255, 255, 255, 0.97);
  border: 2px solid #dd3e1f;
  color: #222;
  font-size: 11px;
  line-height: 1.3;
  padding: 5px 8px;
  border-radius: 2px;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12);
}

.td-native-measure-guide-prefix {
  color: #212121;
  font-size: 11px;
}

.td-native-measure-guide-total {
  color: #dd3e1f;
  font-weight: 700;
  font-size: 11px;
}

.td-native-measure-point,
.td-native-measure-point-icon {
  display: block;
  width: 12px;
  height: 12px;
  border: 4px solid #df0b0b;
  border-radius: 50%;
  background: #fff;
  box-sizing: border-box;
}

.td-native-measure-start-label,
.td-native-measure-segment-label {
  display: inline-block;
  background: rgba(255, 255, 255, 0.95);
  border: 1px solid #8c8c8c;
  border-radius: 5px;
  padding: 2px 8px;
  font-size: 24px;
  color: #555;
  font-weight: 600;
  white-space: nowrap;
}

.td-native-measure-total-label {
  display: inline-block;
  background: rgba(255, 255, 255, 0.97);
  border: 2px solid #dd3e1f;
  border-radius: 2px;
  padding: 10px 14px;
  font-size: 20px;
  line-height: 1.35;
  color: #222;
  white-space: nowrap;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1);
}

.td-native-measure-total-prefix {
  color: #222;
}

.td-native-measure-total-value {
  color: #dd3e1f;
  font-weight: 700;
}

.td-native-measure-total-hint {
  color: #222;
}

#tdt-native-map-container.td-native-measure-cursor,
.td-native-measure-cursor {
  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3E%3Cg transform='rotate(-30 11 11)'%3E%3Crect x='4' y='8' width='14' height='6' rx='1' fill='%23ffffff' stroke='%23222222' stroke-width='1.5'/%3E%3Cpath d='M7 8v3M9 8v2M11 8v3M13 8v2M15 8v3' stroke='%23222222' stroke-width='1'/%3E%3C/g%3E%3C/svg%3E") 2 18, crosshair !important;
}

.td-native-shade-toggle {
  position: absolute;
  left: 12px;
  top: 310px;
  z-index: 3000;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.94);
  border-radius: 3px;
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
  padding: 6px 10px;
  color: #2c2c2c;
  font-size: 15px;
  overflow: visible;
}

.td-native-shade-toggle-unavailable {
  box-shadow: 0 2px 10px rgba(143, 77, 0, 0.16);
}

.td-native-shade-toggle-hidden {
  display: none;
}

.td-native-shade-hint {
  position: absolute;
  left: 0;
  top: calc(100% + 8px);
  width: 190px;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(255, 248, 236, 0.98);
  border: 1px solid rgba(210, 154, 86, 0.38);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
  color: #8f4d00;
  font-size: 12px;
  line-height: 1.45;
  letter-spacing: 0.01em;
  white-space: normal;
  writing-mode: horizontal-tb;
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition: opacity 120ms ease, transform 120ms ease;
}

.td-native-shade-toggle-unavailable .td-native-shade-hint {
  opacity: 1;
  transform: translateY(0);
}

@media screen and (max-width: 1024px) {
  .td-native-shade-toggle {
    left: 8px;
    top: 280px;
  }
}

@media screen and (max-width: 880px) {
  .td-native-shade-toggle {
    display: none;
  }
}

.td-native-shade-checkbox {
  width: 18px;
  height: 18px;
  margin: 0;
}

.td-header-bar {
  height: var(--td-header-height);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 22px;
  color: #f6fbff;
  background:
    linear-gradient(95deg, #0b1623 0%, #102338 52%, #0c1b2a 100%),
    repeating-linear-gradient(90deg, rgba(102, 209, 255, 0.06) 0, rgba(102, 209, 255, 0.06) 1px, transparent 1px, transparent 26px);
  border-bottom: 1px solid rgba(102, 209, 255, 0.24);
  box-shadow: inset 0 -1px 0 rgba(102, 209, 255, 0.18);
  box-sizing: border-box;
}

.td-branding {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.td-brand-icon {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 9px;
  color: #a6e8ff;
  background: rgba(33, 132, 176, 0.2);
  box-shadow: inset 0 0 0 1px rgba(134, 213, 248, 0.36), 0 0 10px rgba(70, 176, 227, 0.25);
}

.td-brand-copy {
  min-width: 0;
}

.td-brand-title {
  font-size: 29px;
  line-height: 24px;
  letter-spacing: 1.4px;
  font-weight: 700;
  color: #e9f6ff;
  text-shadow: 0 0 8px rgba(102, 209, 255, 0.26);
}

.td-brand-subtitle {
  margin-top: 4px;
  font-size: 12px;
  line-height: 1;
  color: #93b8cf;
}

.td-server-time {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: #cbe5f5;
}

.td-server-time-label {
  opacity: 0.85;
  text-transform: uppercase;
  letter-spacing: 0.8px;
}

.td-server-time-value {
  min-width: 76px;
  text-align: center;
  padding: 5px 8px;
  border-radius: 7px;
  background: rgba(19, 80, 115, 0.36);
  box-shadow: inset 0 0 0 1px rgba(84, 196, 255, 0.45), 0 0 12px rgba(35, 142, 192, 0.23);
  color: #e9faff;
  font-weight: 700;
  letter-spacing: 0.9px;
}

/* Add a black background color to the top navigation */
.topnav {
  overflow: hidden;
  background: linear-gradient(to bottom, #2f3a40, #262f36);
  -webkit-box-shadow: inset 0 1px rgba(154, 220, 250, 0.08);
  box-shadow: inset 0 1px rgba(154, 220, 250, 0.08);
  border-bottom: 1px solid rgba(8, 18, 29, 0.8);
  z-index:200;
}

/* Style the links inside the navigation bar */
.topnav a {
  float: left;
  display: block;
  color: #dbe9f3;
  text-align: center;
  padding: 12px 14px;
  text-decoration: none;
  font-size: 13px;
}

.dropdown-content-checkbox {
  padding-left: 45px !important;
  background-image: url(/images/unchecked.png);
  background-repeat: no-repeat;
  background-position: 5% 50%;
}

.dropdown-content-checkbox-active {
  background-image: url(/images/checked.png);
}

.dropdown-content-checkbox-hidden {
  display: none !important;
}

/* Hide the link that should open and close the topnav on small screens */
.topnav .icon {
  display: none;
}

/* Dropdown container - needed to position the dropdown content */
.dropdown {
  float: left;
  overflow: visible;
}

/* Style the dropdown button to fit inside the topnav */
.dropdown .dropbtn {
  font-size: 13px;
  border: none;
  outline: none;
  color: #dbe9f3;
  padding: 11px 14px;
  background-color: inherit;
  font-family: inherit;
  margin: 0;
}

/* Style the dropdown content (hidden by default) */
.dropdown-content {
  display: none;
  position: absolute;
  background-color: rgba(15, 26, 37, 0.96);
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.35);
  border: 1px solid rgba(93, 173, 218, 0.32);
  z-index: 200;
  pointer-events: auto;
}

/* Style the links inside the dropdown */
.dropdown-content a {
  float: none;
  color: #d9eaf5;
  padding: 12px 14px;
  text-decoration: none;
  display: block;
  text-align: left;
  pointer-events: auto;
}

/* Add a dark background on topnav links and the dropdown button on hover */
.topnav a:hover, .dropdown:hover .dropbtn {
  background-color: #3f4f59;
  color: #ffffff;
}

/* Add a grey background to dropdown links on hover */
.dropdown-content a:hover {
  background-color: rgba(46, 116, 154, 0.34);
  color: #f4fcff;
}

/* Show the dropdown menu when the user moves the mouse over the dropdown button */


/* When the screen is less than 880 pixels wide, hide all links, except for the first one ("Home"). Show the link that contains should open and close the topnav (.icon) */
@media screen and (max-width: 880px) {
  :root {
    --td-header-height: 64px;
  }

  .td-header-bar {
    padding: 0 12px;
  }

  .td-brand-title {
    font-size: 22px;
    line-height: 20px;
    letter-spacing: 0.8px;
  }

  .td-brand-subtitle {
    font-size: 9px;
  }

  .td-server-time {
    flex-direction: column;
    align-items: flex-end;
    gap: 3px;
  }

  .td-server-time-label {
    font-size: 9px;
  }

  .td-server-time-value {
    min-width: 70px;
    padding: 4px 6px;
  }

  .topnav a:not(:first-child), .dropdown .dropbtn {
    display: none;
  }

  .topnav a.icon {
    float: right;
    display: block;
  }
}

/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */
@media screen and (max-width: 880px) {
  .topnav.responsive {position: relative;}

  .topnav.responsive a.icon {
    position: absolute;
    right: 0;
    top: 0;
  }

  .topnav.responsive a {
    float: none;
    display: block;
    text-align: left;
  }

  .topnav.responsive .dropdown {float: none;}
  .topnav.responsive .dropdown-content {position: relative;}

  .topnav.responsive .dropdown .dropbtn {
    display: block;
    width: 100%;
    text-align: left;
  }
}

/* Dropdown content panel */
.dropdown-content {
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 200;
}

/* Style the links inside the dropdown */
.dropdown-content a {
  float: none;
  color: black;
  padding: 12px 14px;
  text-decoration: none;
  display: block;
  text-align: left;
}

/* Add a dark background on topnav links and the dropdown button on hover */
.topnav a:hover, .dropdown:hover .dropbtn {
  background-color: #596066;
  color: white;
}

/* Add a grey background to dropdown links on hover */
.dropdown-content a:hover {
  background-color: #ddd;
  color: black;
}

/* Show the dropdown menu when the user moves the mouse over the dropdown button */
.dropdown:hover .dropdown-content {
  display: block;
}

/* When the screen is less than 880 pixels wide, hide all links, except for the first one ("Home"). Show the link that contains should open and close the topnav (.icon) */
@media screen and (max-width: 880px) {
  :root {
    --td-header-height: 64px;
  }

  .td-header-bar {
    padding: 0 12px;
  }

  .td-brand-title {
    font-size: 24px;
    line-height: 20px;
    letter-spacing: 0.8px;
  }

  .td-brand-subtitle {
    font-size: 10px;
  }

  .td-server-time {
    flex-direction: column;
    align-items: flex-end;
    gap: 3px;
  }

  .td-server-time-label {
    font-size: 9px;
  }

  .td-server-time-value {
    min-width: 70px;
    padding: 4px 6px;
  }

  .topnav a:not(:first-child), .dropdown .dropbtn {
  display: none;
  }
  .topnav a.icon {
  float: right;
  display: block;
  }
}

/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */
@media screen and (max-width: 880px) {
  .topnav.responsive {position: relative;}
  .topnav.responsive a.icon {
  position: absolute;
  right: 0;
  top: 0;
  }
  .topnav.responsive a {
  float: none;
  display: block;
  text-align: left;
  }
  .topnav.responsive .dropdown {float: none;}
  .topnav.responsive .dropdown-content {position: relative;}
  .topnav.responsive .dropdown .dropbtn {
  display: block;
  width: 100%;
  text-align: left;
  }
}

/* The Modal (background) */
.modal {
  display: none;
  position: fixed;
  z-index: 300;
  padding-top: 100px; /* Location of the box */
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: rgb(0,0,0);
  background-color: rgba(0,0,0,0.4);
}

#td-modal {
  display: block;
}

/* Modal Content */
.modal-content, .modal-long-content {
  background-color: #fff;
  margin: auto;
  padding: 0px;
  border: 1px solid #888;
  width: 80%;
  max-width: 1200px;
}

.modal-long-content {
  height: 80%;
  max-height: 1200px;
}

@media screen and (max-width: 1000px) {
  .modal-long-content {
    width: 95%;
    height: 95%;
  }
  .modal {
    padding-top: 10px;
  }
}

/* Modal Close Button */
.modal-close {
  color: #aaaaaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
  margin: 10px;
}
.modal-close:hover,
.modal-close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}

.modal-title {
  font-weight: bold;
  font-size: 16pt;
  margin: 15px 15px 15px 20px;
  float: left;
  font-family: "Sans-serif", "Helvetica" !important;
}

.modal-content-header {
  width: 100%;
  height: 55px;
  border-bottom: 1px solid #e9ecef;
  border-top-left-radius: 0.3rem;
  border-top-right-radius: 0.3rem;
}

.modal-content-body {
  height: auto;
  max-height: calc(100dvh - 170px);
  margin: 0px;
  padding: 0px;
  overflow: auto;
  clear: both;
}

.modal-long-content .modal-content-body {
  height: calc(100% - 56px);
  max-height: none;
}

input[type=text], select, textarea {
  padding: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
  resize: vertical
}

input[type=text] {
  padding: 11px;
}

input[type=submit] {
  background-color: #4CAF50;
  color: white;
  padding: 12px 20px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

input[type=submit]:hover {
  background-color: #45a049;
}

.form-container {
  margin-top: 6px;
  margin-bottom: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  width: 100%;
}

.form-container > * {
  max-width: 100%;
}

#cordinates-container {
  clear: both;
  color: var(--td-panel-text);
  font-size: 11px;
  display: none;
  min-width: 130px;
}

#status-container {
  white-space:nowrap;
  line-height: 20px;
  color: #a8f0bf;
}

#stats-container {
  white-space:nowrap;
  margin-bottom: 4px;
  color: var(--td-panel-text);
}

@media screen and (min-width: 800px) {
  #cordinates-container {
    display: block;
  }
}

#right-container {
  position: absolute;
  right: 0px;
  text-align: right;
}

#right-container-info, #right-container-filtered, #right-container-timetravel {
  position:relative;
  right:10px;
  z-index:50;

  color: var(--td-panel-text);
  font-size:11px;
  font-family: "Sans-serif", "Helvetica";

  margin-bottom: 10px;

  background-color: var(--td-panel-bg);
  border: 1px solid var(--td-panel-border);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.28);
  backdrop-filter: blur(2px);
  min-width: 130px;
  border-radius: 12px;

  padding: 5px 10px 5px 10px;
}

#right-container-info {
  margin-top: 10px;
}

#right-container-filtered, #right-container-timetravel {
  display: none;
}

.modal-inner-content {
  max-width: 1100px;
  width: 100%;
  box-sizing: border-box;

  padding-top: 10px;
  padding-left: 30px;
  padding-right: 30px;
  padding-bottom: 10px;

  margin-left: auto;
  margin-right: auto;

  font-size: 9pt;
  font-family: "Sans-serif", "Helvetica";
}


.modal-inner-content-menu {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 16px;
  align-items: center;
  font-size: 9pt;
  padding-top: 15px;
  padding-bottom: 3px;

}

.modal-inner-content-menu a, .modal-inner-content-menu span {
  margin-right: 0;
  display: inline-flex;
  align-items: center;
}

.modal-inner-content-about h2:not(:first-child) {
    padding-top: 20px;
}

.modal-inner-content-about h2 {
    font-weight: normal;
}

.modal-inner-content-about h3 {
    padding-top: 15px;
}

.overview-content-summary {
  float:none;
  width: 100%;
  padding-right: 0;
  box-sizing: border-box;
  min-width: 0;
}

.overview-content-summary div div {
  font-size: 9pt;
  line-height: 14pt;
  font-family: "Sans-serif", "Helvetica";
  word-break: break-all;
}

.overview-content-symbol {
  float:none;
  width:200px;
  text-align:left;
  color: grey;
  font-family: "Helvetica";
  font-size: 13px;
  display: block;
  text-align: center;
}

.overview-content-symbol h3 {
  font-size: 12px;
  font-weight: bold;
  color: grey;
}

.overview-content-symbol p {
  font-size: 10px;
  margin: 0px;
}

.overview-content-symbol div {
  padding-bottom: 10px;
}

.overview-content-explanations, .list-explanations {
  clear: both;
  width: 100%;
  font-size: 12px;
}

.overview-content-summary-cell-time {
  color: grey;
}

.overview-content-summary-cell-weather-time {
  color: #227152;
}

.overview-content-summary-cell-telemetry-time {
  color: #823030;
}

.overview-content-summary-cell-position {
  color: #754D08;
}

.overview-content-summary-cell-posambiguity {
  color: darkred;
}

.overview-content-summary-cell-status {
  color: #375654;
}

.overview-content-summary-cell-phg {
  color: #440B2A;
}

.overview-content-packet-frequency span:nth-of-type(2){
  color: grey;
}

.overview-content-number-of-packets span {
  color: grey;
}

.overview-content-station span {
  vertical-align: bottom;
}

.overview-content-station img {
  vertical-align: middle;
}

.overview-content-station-list {
  padding-top: 5px;
  margin: 0;
  list-style: none;
}

.overview-content-summary .overview-content-station-list {
  display: flex !important;
  flex-direction: column;
  gap: 6px;
  align-items: stretch;
}

.overview-content-station-list img {
  vertical-align: middle;
}

.td-station-list-row {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  margin: 0 0 6px 0;
}

.td-station-list-row-simple {
  grid-template-columns: 22px minmax(0, 1fr);
}

.td-station-list-item {
  display: grid !important;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  margin-bottom: 6px;
  width: 100%;
}

.td-station-list-item-simple {
  display: grid !important;
  grid-template-columns: 22px minmax(0, 1fr);
  width: 100%;
}

.overview-content-station-list span {
  line-height: 24px;
  vertical-align: bottom;
}

.overview-content-station-list li {
  list-style: none;
}

.overview-content-station-list a {
  line-height: 24px;
  font-weight: bold;
}

.overview-content-station-list span span {
  color: grey;
  float: right;
  padding-right: 50px;
  font-weight: normal;
}

.overview-content-station-list .td-station-list-distance {
  color: grey;
  float: none;
  padding-right: 0;
  font-weight: normal;
  line-height: 1.4;
  white-space: nowrap;
}

.overview-content-summary-hr, .overview-content-summary-hr-indent{
  font-weight: bold;
  font-family: "Helvetica";
  font-size: 13px;
  padding-right:25px;
  white-space: nowrap;
  width: 148px;
}

.overview-content-summary-hr-indent {
  padding-left: 20px;
}

.overview-content-divider {
  height: 20px;
}

#raw-content-output p {
  white-space: normal;
    margin-top: 0px;
    margin-bottom: 5px;
    font-size: 8pt;
    font-family: "Sans-serif", "Helvetica";
    line-height: normal;
    clear: both;
  overflow-wrap: anywhere;
}

#raw-content-output a {
    font-weight: bold;
}

.raw-packet-warning {
    color: darkorange;
}

.raw-packet-error {
    color: darkred;
}

.raw-packet-timestamp {
    color:grey;
}

.telemetry-subtable {
    display: table;
}

.telemetry-subtable div {
    display: table-row;
}

.telemetry-subtable div div {
    display: table-cell;
    font-size: 8pt;
    color: grey;
    font-family: "Sans-serif", "Helvetica";
    padding-right: 10px;
    padding-top: 3px;
}

.telemetry-biton {
    color: black;
}

.telemetry-bitoff {
    color: lightgrey;
    text-decoration: line-through;
}

.horizontal-line {
  height: 1px;
  margin: 5px 0px 25px 0px;
  padding: 0;
  background-color: #e9ecef;
  clear: both;
  margin-top: 3px;
}


@media screen and (max-width: 600px) {
  .td-overview-top {
    display: block;
  }

  .td-overview-top .overview-content-summary,
  .td-overview-top .overview-content-symbol {
    width: 100%;
    min-width: 0;
    float: none;
  }

  .td-overview-top .overview-content-symbol {
    margin-top: 12px;
  }

  .td-overview-top .overview-content-summary > div {
    display: block;
  }

  .td-station-list-item,
  .td-station-list-item-simple,
  .td-station-list-row,
  .td-station-list-row-simple {
    grid-template-columns: 22px minmax(0, 1fr);
  }

  .overview-content-station-list .td-station-list-distance {
    grid-column: 2;
    white-space: normal;
  }

  .overview-content-summary-hr, .overview-content-summary-hr-indent {
    padding-top: 8px;
  }

  .overview-content-summary-indent {
    padding-left: 20px;
  }
}

@media screen and (min-width: 600px) {
  .td-overview-top {
    display: flex;
    gap: 18px;
    align-items: flex-start;
  }

  .td-overview-top .overview-content-summary {
    width: auto;
    flex: 1 1 auto;
  }

  .td-overview-top .overview-content-summary > div {
    display: grid;
    grid-template-columns: 132px minmax(0, 1fr);
    column-gap: 10px;
    align-items: start;
  }

  .td-overview-top .overview-content-summary > div > div {
    display: block;
    min-width: 0;
  }

  .td-overview-top .overview-content-summary-hr,
  .td-overview-top .overview-content-summary-hr-indent {
    width: auto;
    padding-right: 0;
    min-width: 0;
  }

  .td-overview-top .overview-content-summary-hr-indent {
    padding-left: 0;
  }

  .td-overview-top .overview-content-symbol {
    width: 200px;
    flex: 0 0 200px;
  }
}

@media screen and (min-width: 850px) {
  .td-overview-top .overview-content-summary > div {
    grid-template-columns: 132px minmax(0, 1fr);
  }
}

.tooltiptext {
  display:none;
  width: 150px;
  font-family: "Helvetica";
  font-size: 14px;
  line-height: 16px;
  padding: 5px;
}

.leaflet-marker-tooltiptext {
  padding-left: 3px !important;
  padding-right: 0px !important;
  padding-top: 0px !important;
  padding-bottom: 0px !important;
}

.leaflet-marker-labeltext {
  background-color: transparent !important;
  box-shadow: none !important;
  box-shadow: none !important;
  font-weight: bold !important;
  font-size: 10px !important;
  border: none !important;
  color: #000 !important;
}

.leaflet-marker-tooltiptext::before, .leaflet-marker-labeltext::before {
  border: none !important;
}

.leaflet-infowindow-content .leaflet-popup-content-wrapper {
  border-radius: 2px !important;
}

.leaflet-popup-close-button {
  height: auto !important;
  padding: 4px !important;
}

.leaflet-bottom {
  bottom: 5px !important;
}

.datagrid table {
  border-collapse: collapse;
  text-align: left;
  width: 100%;
  min-width: 560px;
}

.datagrid {
  font: normal 12px/150% Arial, Helvetica, sans-serif;
  background: #fff;
  overflow: hidden;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  width: 100%;
  border: 1px solid #c3c3c3;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
}

.datagrid table td, .datagrid table th {
  padding: 1px 10px;
}

.datagrid table thead th {
  background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #E8E8E8), color-stop(1, #D1D1D1) );
  background:-moz-linear-gradient( center top, #E8E8E8 5%, #D1D1D1 100% );
  filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E8E8E8', endColorstr='#D1D1D1');
  background-color:#E8E8E8;
  color:#636363;
  font-size: 13px;
  font-weight: bold;
  border-left: 1px solid #A3A3A3;
  line-height: 23px;
}

.datagrid table thead th:first-child {
  border: none;
}

.datagrid table tbody td {
  color: #404040;
  border-left: 1px solid #DBDBDB;
  font-size: 12px;
  font-weight: normal;
  line-height: 22px;
  vertical-align: top;
}

.datagrid table tbody tr:nth-child(odd) {
  background: #F4F4F4;
  color: #404040;
}

.datagrid table tbody td:first-child {
  border-left: none;
}

.datagrid table tbody tr:last-child td {
  border-bottom: none;
}

.datagrid table tbody td table td {
  border-left: none;
  padding: 0;
}

.datagrid table tbody td table tr {
  background-color: rgba(255, 255, 255, 0) !important;
  color: #404040;
}

.pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
}

.pagination a {
  color: black;
  float: none;
  padding: 8px 16px;
  text-decoration: none;
  height: auto;
}

.pagination a:first-child, .pagination a:last-child {
  font-size: 9px;
}

.pagination a.active {
  background-color: #4CAF50;
  color: white;
  border-radius: 5px;
}

.pagination a:hover:not(.active) {
  background-color: #ddd;
  border-radius: 5px;
}

@media screen and (max-width: 600px) {
  .modal-content-body {
    max-height: calc(100dvh - 96px);
  }

  .modal-content, .modal-long-content {
    width: 95%;
  }

  .modal-inner-content {
    padding-left: 16px;
    padding-right: 16px;
  }

  .datagrid table {
    min-width: 460px;
  }

  .pagination-rows {
    display: none;
  }

  #raw-type {
    display: none;
  }

  #trail-curve-chart {
    min-height: 260px;
  }

  .decoded table tr td:first-child {
    width: auto;
  }

  .telemetry-subtable,
  .telemetry-subtable div,
  .telemetry-subtable div div {
    display: block;
  }

  .telemetry-subtable div div {
    padding-right: 0;
  }
}

.decoded {
    margin-bottom: 20px;
  overflow-x: auto;
}

.decoded table tr td:first-child {
    width: 150px;
}

#trail-curve-chart {
  width: 100% !important;
  max-width: 850px;
  min-height: 320px;
}

@media screen and (max-width: 600px) {
  .datagrid-statistics tr th:nth-child(3),
  .datagrid-statistics tr th:nth-child(4) {
    display:none;
  }
  .datagrid-statistics tr td:nth-child(3),
  .datagrid-statistics tr td:nth-child(4) {
    display:none;
  }
}

@media screen and (max-width: 600px) {
  .datagrid-weather tr th:nth-child(3),
  .datagrid-weather tr th:nth-child(4),
  .datagrid-weather tr th:nth-child(5),
  .datagrid-weather tr th:nth-child(6),
  .datagrid-weather tr th:nth-child(7),
  .datagrid-weather tr th:nth-child(8) {
    display:none;
  }
  .datagrid-weather tr td:nth-child(3),
  .datagrid-weather tr td:nth-child(4),
  .datagrid-weather tr td:nth-child(5),
  .datagrid-weather tr td:nth-child(6),
  .datagrid-weather tr td:nth-child(7),
  .datagrid-weather tr td:nth-child(8) {
    display:none;
  }
}

@media screen and (max-width: 600px) {
  .datagrid-telemetry1 tr th:nth-child(4),
  .datagrid-telemetry1 tr th:nth-child(5),
  .datagrid-telemetry1 tr th:nth-child(6) {
    display:none;
  }
  .datagrid-telemetry1 tr td:nth-child(4),
  .datagrid-telemetry1 tr td:nth-child(5),
  .datagrid-telemetry1 tr td:nth-child(6) {
    display:none;
  }
}

@media screen and (max-width: 600px) {
  .datagrid-telemetry2 tr th:nth-child(4),
  .datagrid-telemetry2 tr th:nth-child(5),
  .datagrid-telemetry2 tr th:nth-child(6),
  .datagrid-telemetry2 tr th:nth-child(7),
  .datagrid-telemetry2 tr th:nth-child(8),
  .datagrid-telemetry2 tr th:nth-child(9) {
    display:none;
  }
  .datagrid-telemetry2 tr td:nth-child(4),
  .datagrid-telemetry2 tr td:nth-child(5),
  .datagrid-telemetry2 tr td:nth-child(6),
  .datagrid-telemetry2 tr td:nth-child(7),
  .datagrid-telemetry2 tr td:nth-child(8),
  .datagrid-telemetry2 tr td:nth-child(9) {
    display:none;
  }
}

@media screen and (max-width: 600px) {
  .datagrid-search tr th:nth-child(3),
  .datagrid-search tr th:nth-child(4) {
    display:none;
  }
  .datagrid-search tr td:nth-child(3),
  .datagrid-search tr td:nth-child(4) {
    display:none;
  }
}

@media screen and (max-width: 800px) {
  .datagrid-search tr th:nth-child(4) {
    display:none;
  }
  .datagrid-search tr td:nth-child(4) {
    display:none;
  }
}

/* Lightweight cross-view fixes for /views/*.php pages */
@media screen and (min-width: 850px) {
  .overview-content-summary {
    width: calc(100% - 230px);
  }

  .overview-content-symbol {
    width: 200px;
  }
}

@media screen and (max-width: 849px) {
  .overview-content-summary {
    width: 100%;
    min-width: 0;
    display: block;
    float: none;
    padding-right: 0;
  }

  .overview-content-symbol {
    display: block;
    float: none;
    width: 100%;
    margin-top: 12px;
    text-align: center;
  }
}

@media screen and (max-width: 600px) {
  .modal-inner-content {
    padding-left: 12px;
    padding-right: 12px;
  }

  .modal-inner-content-menu {
    gap: 6px 10px;
  }

  .modal-inner-content-menu a,
  .modal-inner-content-menu span {
    line-height: 1.4;
  }
}

/* Final targeted fix: remove left blank area in overview and keep mobile in-bounds */
.td-overview-top {
  display: flex;
  gap: 18px;
  align-items: flex-start;
}

.td-overview-top .overview-content-summary {
  float: none;
  width: auto;
  min-width: 0;
  flex: 1 1 auto;
  padding-right: 0;
  display: block;
}

.td-overview-top .overview-content-summary > div {
  display: grid;
  grid-template-columns: minmax(88px, 132px) minmax(0, 1fr);
  column-gap: 10px;
  align-items: start;
}

.td-overview-top .overview-content-summary > div > div {
  display: block;
  min-width: 0;
}

.td-overview-top .overview-content-summary-hr,
.td-overview-top .overview-content-summary-hr-indent {
  width: auto;
  min-width: 0;
  padding-right: 0;
}

.td-overview-top .overview-content-summary-hr-indent {
  padding-left: 0;
}

.td-overview-top .overview-content-symbol {
  float: none;
  display: block;
  width: 200px;
  flex: 0 0 200px;
}

.overview-content-station-list {
  margin: 0;
  padding: 5px 0 0 0;
  list-style: none;
}

.overview-content-station-list .td-station-list-item,
.overview-content-station-list .td-station-list-item-simple {
  display: grid;
  align-items: center;
  gap: 8px;
  margin: 0 0 6px 0;
}

.overview-content-station-list .td-station-list-item {
  grid-template-columns: 22px minmax(0, 1fr) auto;
}

.overview-content-station-list .td-station-list-item-simple {
  grid-template-columns: 22px minmax(0, 1fr);
}

.overview-content-station-list .td-station-list-distance {
  white-space: nowrap;
  color: grey;
  font-weight: normal;
}

@media screen and (max-width: 850px) {
  .td-overview-top {
    flex-direction: column;
    gap: 12px;
  }

  .td-overview-top .overview-content-symbol {
    width: 100%;
    flex: none;
  }

  .td-overview-top .overview-content-summary > div {
    grid-template-columns: minmax(78px, 116px) minmax(0, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .td-overview-top .overview-content-summary > div {
    grid-template-columns: 1fr;
    row-gap: 2px;
  }

  .overview-content-summary-indent,
  .overview-content-summary-hr-indent {
    padding-left: 0;
  }

  .overview-content-station-list .td-station-list-item,
  .overview-content-station-list .td-station-list-item-simple {
    grid-template-columns: 22px minmax(0, 1fr);
  }

  .overview-content-station-list .td-station-list-distance {
    grid-column: 2;
    white-space: normal;
  }
}

/* ===== Unified popup style refresh (all /views/*.php) ===== */
#td-modal .modal-long-content {
  width: min(1240px, calc(100vw - 18px));
  max-width: none;
  border: 1px solid #d9e2ec;
  border-radius: 8px;
  box-shadow: 0 20px 48px rgba(7, 22, 43, 0.24);
}

#td-modal .modal-content-header {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border-bottom: 1px solid #e3eaf3;
}

#td-modal .modal-title {
  font-size: 24pt;
  margin: 16px 16px 16px 20px;
}

#td-modal .modal-content-body {
  background: #f5f8fc;
  padding: 0;
}

#td-modal #td-modal-content .modal-inner-content.td-view-page {
  max-width: none;
  width: 100%;
  margin: 0;
  padding: 14px 20px 18px 20px;
  box-sizing: border-box;
  font-size: 10pt;
  background: #f5f8fc;
}

#td-modal #td-modal-content .td-view-page .modal-inner-content-menu {
  gap: 8px 10px;
  padding-top: 8px;
  padding-bottom: 8px;
}

#td-modal #td-modal-content .td-view-page .modal-inner-content-menu a,
#td-modal #td-modal-content .td-view-page .modal-inner-content-menu span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #d5dfec;
  background: #ffffff;
  color: #2d6fb2;
  border-radius: 999px;
  padding: 6px 12px;
  line-height: 1.2;
  min-height: 30px;
}

#td-modal #td-modal-content .td-view-page .modal-inner-content-menu span {
  color: #0f1f33;
  border-color: #c6d4e8;
  background: #eef4fc;
  font-weight: 700;
}

#td-modal #td-modal-content .td-view-page .horizontal-line {
  margin: 6px 0 14px 0;
}

#td-modal #td-modal-content .td-view-page .datagrid {
  border: 1px solid #d1dbe8;
  border-radius: 8px;
  overflow: auto;
  background: #fff;
}

#td-modal #td-modal-content .td-view-page .datagrid table {
  min-width: 640px;
}

#td-modal #td-modal-content .td-view-page .datagrid table thead th {
  background: linear-gradient(180deg, #f7faff 0%, #eaf1fb 100%);
  color: #26486f;
  border-left-color: #cedaea;
}

#td-modal #td-modal-content .td-view-page .datagrid table tbody tr:nth-child(odd) {
  background: #f9fbfe;
}

#td-modal #td-modal-content .td-view-page .pagination {
  gap: 6px;
}

#td-modal #td-modal-content .td-view-page .pagination a {
  border-radius: 6px;
  padding: 6px 12px;
}

/* Overview layout */
#td-modal #td-modal-content .td-view-page .td-overview-top {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 230px;
  gap: 16px;
  align-items: start;
}

#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary {
  width: 100% !important;
  float: none !important;
  min-width: 0 !important;
  padding-right: 0 !important;
  display: block !important;
}

#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary > div {
  display: grid !important;
  grid-template-columns: minmax(88px, 136px) minmax(0, 1fr);
  column-gap: 10px;
  align-items: start;
}

#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary > div > div {
  display: block !important;
}

#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary-hr,
#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary-hr-indent {
  width: auto !important;
  min-width: 0 !important;
  padding-right: 0 !important;
}

#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary-hr-indent,
#td-modal #td-modal-content .td-view-page .overview-content-summary-indent {
  padding-left: 0 !important;
}

#td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-symbol {
  width: 230px !important;
  float: none !important;
  display: block !important;
  text-align: center;
}

/* Related/nearby station list */
#td-modal #td-modal-content .td-view-page .overview-content-station-list {
  margin: 0;
  padding: 4px 0 0 0;
  list-style: none;
}

#td-modal #td-modal-content .td-view-page .overview-content-station-list li {
  list-style: none;
}

#td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-item,
#td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-item-simple {
  display: grid !important;
  align-items: center;
  gap: 8px;
  margin: 0 0 8px 0;
}

#td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-item {
  grid-template-columns: 22px minmax(0, 1fr) auto;
}

#td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-item-simple {
  grid-template-columns: 22px minmax(0, 1fr);
}

#td-modal #td-modal-content .td-view-page .overview-content-station-list a {
  line-height: 1.4;
}

#td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-distance {
  white-space: nowrap;
  color: #66768c;
}

@media screen and (max-width: 1000px) {
  #td-modal .modal-long-content {
    width: calc(100vw - 8px);
    height: calc(100dvh - 8px);
    max-height: none;
    border-radius: 6px;
  }

  #td-modal .modal-content-body {
    max-height: calc(100dvh - 72px);
  }

  #td-modal #td-modal-content .modal-inner-content.td-view-page {
    padding: 10px 12px 14px 12px;
    font-size: 11pt;
  }

  #td-modal #td-modal-content .td-view-page .td-overview-top {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  #td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-symbol {
    width: 100% !important;
  }

  #td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary > div {
    grid-template-columns: minmax(76px, 110px) minmax(0, 1fr);
  }

  #td-modal #td-modal-content .td-view-page .modal-inner-content-menu {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
  }

  #td-modal #td-modal-content .td-view-page .modal-inner-content-menu a,
  #td-modal #td-modal-content .td-view-page .modal-inner-content-menu span {
    width: 100%;
    padding: 7px 6px;
    white-space: nowrap;
  }

  #td-modal #td-modal-content .td-view-page .datagrid table {
    min-width: 520px;
  }
}

@media screen and (max-width: 600px) {
  #td-modal .modal-title {
    font-size: 20pt;
    margin: 14px 12px 14px 14px;
  }

  #td-modal #td-modal-content .td-view-page .modal-inner-content-menu {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #td-modal #td-modal-content .td-view-page .td-overview-top .overview-content-summary > div {
    grid-template-columns: 1fr;
    row-gap: 2px;
  }

  #td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-item,
  #td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-item-simple {
    grid-template-columns: 22px minmax(0, 1fr);
  }

  #td-modal #td-modal-content .td-view-page .overview-content-station-list .td-station-list-distance {
    grid-column: 2;
    white-space: normal;
  }
}

/* Native APRS pulse animation for received packets */
@keyframes td-native-aprs-pulse {
  0% {
    r: 20px;
    opacity: 0.8;
  }
  50% {
    r: 35px;
    opacity: 0.4;
  }
  100% {
    r: 50px;
    opacity: 0;
  }
}

.td-native-aprs-pulse circle {
  animation: td-native-aprs-pulse 0.4s ease-out;
}

.td-native-aprs-div-icon {
  /* position: absolute so the element is out of normal flow;
     prevents cumulative stacking offset in tdt-marker-pane that grows with more markers. */
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  pointer-events: auto !important;
  cursor: pointer !important;
}

/* Force APRS icon center anchor (TianDiTu default is bottom-center, -12/-24). */
.tdt-marker-icon.td-native-aprs-div-icon {
  margin-left: -17px !important;
  margin-top: -17px !important;
  z-index: 30 !important;
}

.td-native-aprs-marker-wrap {
  position: relative;
  display: inline-flex;
  width: 34px;
  height: 34px;
  align-items: center;
  justify-content: center;
  pointer-events: auto !important;
}

.td-native-aprs-div-icon img {
  filter: drop-shadow(0 0 2px rgba(42, 169, 255, 0.6));
  pointer-events: auto !important;
}

.td-native-aprs-marker-label {
  position: absolute;
  left: 28px;
  top: 14px;
  transform: none;
  max-width: 220px;
  padding: 1px 6px;
  border-radius: 10px;
  font-size: 11px;
  line-height: 1.3;
  white-space: nowrap;
  color: #f5f9ff;
  background: rgba(7, 18, 35, 0.82);
  border: 1px solid rgba(120, 182, 255, 0.5);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
  pointer-events: none;
}

.td-native-hover-popup {
  position: absolute;
  z-index: 2600;
  max-width: 320px;
  padding: 6px 10px;
  border-radius: 10px;
  color: #f5f9ff;
  background: rgba(7, 18, 35, 0.92);
  border: 1px solid rgba(120, 182, 255, 0.5);
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.28);
  white-space: nowrap;
  pointer-events: none;
}

.td-native-dot-marker-wrap {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  z-index: 20 !important;
}

/* Keep previous-position dots centered on packet coordinates. */
.tdt-marker-icon.td-native-dot-marker-wrap {
  margin-left: -7px !important;
  margin-top: -7px !important;
  width: 14px !important;
  height: 14px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.td-native-dot-marker {
  display: block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(255, 196, 0, 0.58);
  border: 1px solid rgba(15, 20, 32, 0.45);
  box-shadow: 0 0 1px rgba(255, 196, 0, 0.3);
}

.td-native-transmit-icon-wrap {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
}

.td-native-transmit-icon {
  width: 60px;
  height: 60px;
  opacity: 0.62;
  pointer-events: none;
}

.td-native-coverage-heat-dot-wrap {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
}

.td-native-coverage-heat-dot {
  display: block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(47, 125, 255, 0.26);
  box-shadow: 0 0 6px rgba(47, 125, 255, 0.4);
}


