:root {
  --mv-bg: #020806 !important;
  --mv-surface: rgba(3, 17, 13, 0.92) !important;
  --mv-surface-2: rgba(5, 27, 20, 0.96) !important;
  --mv-border: rgba(91, 255, 174, 0.32) !important;
  --mv-text: #dcffed !important;
  --mv-muted: #82a99a !important;
  --mv-link: #51d7ff !important;
  --mv-link-hover: #8bff93 !important;
  --bbs-green: #8bff43;
  --bbs-cyan: #4bdcff;
  --bbs-magenta: #ff4fa3;
  --bbs-amber: #ffd35a;
  --bbs-line: rgba(91, 255, 174, 0.28);
  --bbs-panel: rgba(2, 14, 11, 0.88);
  --bbs-pointer-x: 50%;
  --bbs-pointer-y: 18%;
  color-scheme: dark;
}

html {
  background: #010604;
  scrollbar-color: rgba(92, 255, 174, 0.65) rgba(2, 12, 9, 0.96);
}

body {
  position: relative;
  min-height: 100vh;
  margin: 0 !important;
  padding: 18px clamp(10px, 2vw, 32px) 28px;
  overflow-x: hidden;
  font-family: "Cascadia Code", "IBM Plex Mono", "SFMono-Regular", Consolas, monospace !important;
  font-size: 14px;
  line-height: 1.45;
  letter-spacing: -0.015em;
  background:
    radial-gradient(circle at var(--bbs-pointer-x) var(--bbs-pointer-y), rgba(57, 255, 151, 0.11), transparent 25rem),
    radial-gradient(circle at 82% 12%, rgba(58, 202, 255, 0.08), transparent 30rem),
    linear-gradient(135deg, rgba(6, 35, 26, 0.34), transparent 42%),
    #010604 !important;
  color: var(--mv-text) !important;
}

body::before,
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9998;
  pointer-events: none;
}

body::before {
  opacity: 0.18;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0,
    transparent 3px,
    rgba(137, 255, 189, 0.13) 4px
  );
  mix-blend-mode: screen;
}

body::after {
  z-index: -1;
  opacity: 0.5;
  background-image:
    linear-gradient(rgba(68, 255, 162, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(68, 255, 162, 0.04) 1px, transparent 1px);
  background-size: 44px 44px;
  mask-image: linear-gradient(to bottom, black, transparent 75%);
}

body > br,
body > .site-shell + br,
body > #site-menu + br {
  display: none;
}

#site-header,
#site-message,
#site-menu,
body > #footer,
body > #footer + .site-shell {
  width: min(100%, 1440px);
  margin-inline: auto;
  box-sizing: border-box;
}

#site-header {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 58px;
  padding: 12px 16px 12px 58px;
  border: 1px solid var(--bbs-line);
  border-bottom-color: rgba(75, 220, 255, 0.52);
  background: linear-gradient(90deg, rgba(7, 34, 24, 0.96), rgba(2, 13, 11, 0.92));
  box-shadow: 0 0 34px rgba(31, 255, 134, 0.08), inset 0 1px rgba(139, 255, 67, 0.08);
  text-align: left;
  color: #edfff7 !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

#site-header::before {
  content: "M//V";
  position: absolute;
  left: 14px;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border: 1px solid var(--bbs-cyan);
  clip-path: polygon(50% 0, 95% 24%, 95% 76%, 50% 100%, 5% 76%, 5% 24%);
  color: var(--bbs-green);
  font-size: 9px;
  font-weight: 800;
  text-shadow: 0 0 12px rgba(139, 255, 67, 0.8);
}

#site-header::after {
  content: "CANADAVERSE // LIVE ARCHIVE";
  margin-left: auto;
  color: var(--bbs-green);
  font-size: 10px;
  letter-spacing: 0.12em;
}

#site-header strong {
  font-size: clamp(16px, 2vw, 22px);
  font-weight: 800;
  text-shadow: 0 0 18px rgba(75, 220, 255, 0.28);
}

#site-message {
  padding: 7px 14px;
  border-inline: 1px solid var(--bbs-line);
  background: rgba(0, 10, 7, 0.92);
  color: var(--mv-muted) !important;
  text-align: left;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

#site-message::before {
  content: "[ PUBLIC FEED ] ";
  color: var(--bbs-magenta);
}

#site-menu {
  display: flex;
  gap: 6px;
  align-items: center;
  padding: 8px;
  overflow-x: auto;
  border: 1px solid var(--bbs-line);
  background: rgba(2, 16, 11, 0.95);
  text-align: left;
  scrollbar-width: thin;
}

#site-menu > a {
  flex: 0 0 auto;
  padding: 6px 10px !important;
  border: 1px solid rgba(75, 220, 255, 0.28);
  background: rgba(7, 31, 24, 0.82);
  color: var(--bbs-cyan) !important;
  font-size: 10px;
  font-weight: 700;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  transition: border-color 160ms ease, color 160ms ease, background 160ms ease, transform 160ms ease;
}

#site-menu > a:hover,
#site-menu > a:focus-visible {
  transform: translateY(-1px);
  border-color: var(--bbs-green);
  background: rgba(18, 53, 35, 0.96);
  color: var(--bbs-green) !important;
  outline: none;
}

body > #chat-container,
body > #node-list,
body > #mobile-node-list,
body > #map-wrapper,
body > #mynetwork,
body > .container,
body > .container-fluid,
body > .main-container,
body > form,
body > table,
body > h1,
body > h2,
body > h3,
body > div:not(.site-shell):not(#mv-bbs-handshake) {
  width: min(100%, 1440px);
  margin-inline: auto;
  box-sizing: border-box;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  color: #eafff4 !important;
  font-family: inherit !important;
  font-weight: 800 !important;
  letter-spacing: -0.04em;
  text-shadow: 0 0 16px rgba(75, 220, 255, 0.16);
}

h2::before {
  content: ":: ";
  color: var(--bbs-magenta);
}

a {
  color: var(--bbs-cyan) !important;
  text-underline-offset: 3px;
}

a:hover,
a:focus-visible {
  color: var(--bbs-green) !important;
}

.card,
.modal-content,
.dropdown-menu,
.list-group-item,
.node-card,
.chat-packet,
table,
#mynetwork,
#unmapped-packets,
#node-info,
#legend,
.legend {
  border-color: var(--bbs-line) !important;
  border-radius: 0 !important;
  background: var(--bbs-panel) !important;
  box-shadow: inset 0 1px rgba(139, 255, 67, 0.04), 0 16px 45px rgba(0, 0, 0, 0.2) !important;
}

.chat-packet {
  position: relative;
  margin: 4px 0 !important;
  padding: 8px 9px !important;
  border: 1px solid rgba(82, 222, 173, 0.15) !important;
  background: linear-gradient(90deg, rgba(5, 26, 19, 0.94), rgba(2, 13, 11, 0.88)) !important;
  transition: border-color 160ms ease, background 160ms ease, transform 160ms ease;
}

.chat-packet:nth-of-type(even),
.chat-packet:nth-of-type(odd) {
  background: linear-gradient(90deg, rgba(5, 26, 19, 0.94), rgba(2, 13, 11, 0.88)) !important;
}

.chat-packet:hover {
  z-index: 1;
  transform: translateX(2px);
  border-color: rgba(75, 220, 255, 0.58) !important;
  background: linear-gradient(90deg, rgba(7, 38, 28, 0.98), rgba(3, 19, 15, 0.94)) !important;
}

.chat-packet .timestamp {
  color: var(--bbs-green) !important;
}

.chat-packet .channel,
.chat-packet .replying-to,
.chat-packet .reply-preview {
  color: var(--mv-muted) !important;
}

.chat-packet .message {
  color: #ecfff6;
}

.chat-packet.flash {
  animation: mv-packet-arrive 900ms ease-out !important;
}

table {
  overflow: hidden;
  border: 1px solid var(--bbs-line) !important;
}

th,
td {
  border-color: rgba(82, 222, 173, 0.16) !important;
}

th {
  background: rgba(7, 31, 24, 0.98) !important;
  color: var(--bbs-green) !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

tr:nth-child(even),
tr:nth-child(odd) {
  background: rgba(2, 15, 11, 0.84) !important;
}

tr:hover {
  background: rgba(12, 42, 30, 0.96) !important;
}

input,
select,
textarea,
.form-control,
.form-select,
button,
.btn {
  border-radius: 0 !important;
  font-family: inherit !important;
}

input,
select,
textarea,
.form-control,
.form-select {
  border: 1px solid var(--bbs-line) !important;
  background: rgba(1, 12, 9, 0.96) !important;
  color: #e7fff2 !important;
  box-shadow: none !important;
}

button,
.btn,
.export-btn,
.clear-btn,
#share-button,
#reset-filters-button {
  border: 1px solid rgba(75, 220, 255, 0.48) !important;
  background: rgba(7, 31, 24, 0.96) !important;
  color: var(--bbs-cyan) !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

button:hover,
.btn:hover,
.export-btn:hover,
.clear-btn:hover,
#share-button:hover,
#reset-filters-button:hover {
  border-color: var(--bbs-green) !important;
  background: rgba(15, 50, 34, 0.98) !important;
  color: var(--bbs-green) !important;
}

.leaflet-container {
  border: 1px solid var(--bbs-line);
  filter: saturate(0.82) contrast(1.06) brightness(0.86);
}

.leaflet-control,
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
  border-radius: 0 !important;
}

#map-wrapper {
  margin-top: 12px;
  height: calc(100vh - 230px) !important;
  min-height: 440px;
  border: 1px solid var(--bbs-line);
  box-shadow: 0 0 42px rgba(27, 255, 136, 0.08);
}

#mynetwork {
  border: 1px solid var(--bbs-line) !important;
  background-color: #020a08 !important;
}

body > #footer {
  margin-top: 30px;
  padding: 11px 14px;
  border-top: 1px solid var(--bbs-line);
  color: var(--mv-muted) !important;
  text-align: left;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

body > #footer::before {
  content: "CANADAVERSE // ";
  color: var(--bbs-green);
}

body > #footer + .site-shell {
  padding: 0 14px 12px;
  color: #55796b !important;
  text-align: left;
}

#mv-bbs-handshake {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  padding: 24px;
  background: #010604;
  color: var(--bbs-green);
  transition: opacity 220ms ease, visibility 220ms ease;
}

#mv-bbs-handshake.is-done {
  visibility: hidden;
  opacity: 0;
}

.mv-handshake-box {
  width: min(520px, 100%);
  padding: 22px;
  border: 1px solid var(--bbs-line);
  background: rgba(2, 18, 13, 0.96);
  box-shadow: 0 0 80px rgba(50, 255, 142, 0.12);
}

.mv-handshake-kicker,
.mv-handshake-status {
  color: var(--bbs-cyan);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
}

.mv-handshake-title {
  margin: 8px 0 14px;
  color: #effff7;
  font-size: clamp(22px, 6vw, 42px);
  font-weight: 800;
  letter-spacing: -0.06em;
}

.mv-handshake-track {
  height: 4px;
  margin: 12px 0;
  overflow: hidden;
  background: rgba(139, 255, 67, 0.11);
}

.mv-handshake-track::after {
  content: "";
  display: block;
  width: 45%;
  height: 100%;
  background: linear-gradient(90deg, var(--bbs-cyan), var(--bbs-green));
  animation: mv-dial 620ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

@keyframes mv-dial {
  from { transform: translateX(-110%); }
  to { transform: translateX(225%); }
}

@keyframes mv-packet-arrive {
  0% { border-color: var(--bbs-green); box-shadow: inset 8px 0 var(--bbs-green), 0 0 24px rgba(139, 255, 67, 0.28); }
  100% { border-color: rgba(82, 222, 173, 0.15); box-shadow: none; }
}

@media (max-width: 768px) {
  body {
    padding: 8px 8px 20px;
    font-size: 12px;
  }

  #site-header {
    min-height: 50px;
    padding: 9px 10px 9px 49px;
  }

  #site-header::before {
    left: 10px;
    width: 27px;
    height: 27px;
  }

  #site-header::after {
    content: "LIVE";
    font-size: 9px;
  }

  #site-message {
    padding: 6px 9px;
    font-size: 9px;
  }

  #site-menu {
    gap: 4px;
    padding: 6px;
  }

  #site-menu > a {
    padding: 5px 8px !important;
    font-size: 9px;
  }

  .chat-packet {
    display: grid !important;
    grid-template-columns: minmax(112px, 0.9fr) minmax(100px, 0.8fr);
    gap: 4px 8px;
  }

  .chat-packet > [class^="col-"] {
    width: auto !important;
    max-width: none !important;
    padding: 0 !important;
  }

  .chat-packet .timestamp,
  .chat-packet .channel {
    font-size: 9px;
  }

  .chat-packet .nodename,
  .chat-packet .message {
    grid-column: 1 / -1;
  }

  .chat-packet .nodename {
    font-weight: 700;
  }

  #map-wrapper {
    height: calc(100vh - 210px) !important;
    min-height: 420px;
  }

  .filter-container,
  .count-container {
    width: 100% !important;
  }
}

@media (max-width: 360px) {
  #site-header::after {
    display: none;
  }

  .chat-packet {
    grid-template-columns: 1fr;
  }

  .chat-packet .timestamp,
  .chat-packet .channel,
  .chat-packet .nodename,
  .chat-packet .message {
    grid-column: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }

  body {
    --bbs-pointer-x: 50%;
    --bbs-pointer-y: 18%;
  }
}
