html,
body {
  margin: 0;
  min-height: 100%;
  background: #0b0b0b;
  color: #e8e8e8;
  font-family: Consolas, monospace;
}

* {
  box-sizing: border-box;
}

body {
  min-height: 100vh;
}

.login-body {
  display: block;
}

.login-shell {
  width: min(720px, 90%);
  margin: 0 auto;
  padding: clamp(90px, 15vh, 150px) 40px 40px;
}

.dashboard-shell {
  width: min(1100px, 92%);
  margin: 0 auto;
  padding: 50px 20px 80px;
}

h1 {
  margin: 0 0 12px;
  font-size: clamp(3rem, 10vw, 6rem);
  letter-spacing: -0.08em;
}

h2 {
  margin: 0;
  font-size: 1.15rem;
}

.tagline {
  opacity: 0.65;
  margin: 0 0 40px;
}

header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 30px;
}

.host-status,
.login-panel,
.server-card {
  border-left: 2px solid currentColor;
  padding-left: 20px;
}

.host-status {
  line-height: 1.8;
  margin-bottom: 45px;
}

.host-status p {
  margin: 0;
}

.host-status span {
  display: inline-block;
  width: 150px;
  opacity: 0.55;
}

.login-panel {
  display: grid;
  gap: 18px;
  max-width: 520px;
}

label {
  display: grid;
  grid-template-columns: 90px 1fr;
  align-items: center;
  gap: 15px;
}

label span {
  opacity: 0.55;
}

input {
  width: 100%;
  border: 1px solid #444;
  background: #111;
  color: #e8e8e8;
  font: inherit;
  padding: 11px 12px;
  outline: none;
}

input:focus {
  border-color: #e8e8e8;
}

button {
  appearance: none;
  border: 1px solid #555;
  background: transparent;
  color: #e8e8e8;
  font: inherit;
  padding: 10px 14px;
  cursor: pointer;
}

button:hover:not(:disabled) {
  background: #e8e8e8;
  color: #0b0b0b;
}

button:disabled {
  opacity: 0.25;
  cursor: not-allowed;
}

button.quiet {
  opacity: 0.5;
  border-color: #333;
}

.servers {
  display: grid;
  gap: 22px;
}

.server-card {
  padding-top: 6px;
  padding-bottom: 6px;
}

.server-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.server-header p {
  margin: 7px 0 0;
  opacity: 0.4;
  font-size: 0.85rem;
}

.server-header strong {
  font-size: 0.8rem;
  white-space: nowrap;
}

.online {
  opacity: 1;
}

.offline {
  opacity: 0.35;
}

.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 20px;
}

.pending {
  margin: 16px 0 0;
  opacity: 0.25;
  font-size: 0.85rem;
}

.error {
  margin: 0;
  opacity: 0.85;
}

.footer {
  margin-top: 40px;
  opacity: 0.35;
  font-size: 0.9rem;
}

.footer::after {
  content: "_";
  margin-left: 4px;
  opacity: 1;
  animation: blink 1s steps(1) infinite;
}

@keyframes blink {
  50% {
    opacity: 0;
  }
}

@media (max-width: 650px) {
  header {
    display: block;
  }

  header form {
    margin-bottom: 35px;
  }

  label {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .host-status span {
    width: 110px;
  }

  .server-header {
    display: block;
  }

  .server-header strong {
    display: block;
    margin-top: 12px;
  }
}

/* Prevent focus/autofill from shifting login rows */
.login-panel label {
  min-height: 44px;
}

.login-panel input {
  height: 42px;
  min-height: 42px;
  line-height: 20px;
  padding: 10px 12px;
  margin: 0;
  box-sizing: border-box;
  appearance: none;
  -webkit-appearance: none;
}

.login-panel input:focus {
  height: 42px;
  min-height: 42px;
  padding: 10px 12px;
  margin: 0;
}

/* Control action feedback */
.messages {
  margin: -20px 0 35px;
  border-left: 2px solid #555;
  padding-left: 20px;
}

.message {
  margin: 8px 0;
  font-size: 0.9rem;
}

.message.ok {
  opacity: 0.85;
}

.message.error {
  opacity: 1;
  font-weight: bold;
}

.actions form {
  margin: 0;
}

/* ===== HIKKI ACTION CONSOLE ===== */

.action-console-section {
  margin-top: 36px;
}

.console-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  margin-bottom: 12px;
}

.console-header h2 {
  margin: 0;
  font-size: 1rem;
  letter-spacing: 0.08em;
}

.console-header p {
  margin: 4px 0 0;
  opacity: 0.4;
  font-size: 0.8rem;
}

.action-console {
  height: 260px;
  overflow-y: auto;
  overflow-x: auto;

  border: 1px solid #333;
  border-left: 2px solid currentColor;

  background: #070707;

  padding: 14px 16px;

  font-size: 0.82rem;
  line-height: 1.65;

  white-space: nowrap;
}

.console-line {
  opacity: 0.62;
}

.console-line:last-child {
  opacity: 1;
}

.console-time {
  opacity: 0.42;
}

.console-error {
  font-weight: bold;
}

.action-console::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

.action-console::-webkit-scrollbar-track {
  background: #090909;
}

.action-console::-webkit-scrollbar-thumb {
  background: #333;
}

.action-console::-webkit-scrollbar-thumb:hover {
  background: #444;
}

/* Server connection address */
.server-address {
  margin: 4px 0;
  opacity: 0.8;
  font-size: 0.9rem;
  user-select: all;
}

/* Live server population */
.player-count {
  margin-left: 10px;
  opacity: 0.65;
  font-weight: normal;
}

/* ===== PER-SERVER CONSOLE ===== */

.console-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-height: 38px;
  padding: 0 14px;

  border: 1px solid #444;

  color: inherit;
  background: transparent;

  font: inherit;
  font-size: 0.8rem;

  text-decoration: none;
  cursor: pointer;
}

.console-link:hover {
  background: #161616;
}

.console-server-card {
  margin-bottom: 30px;
}

.console-messages {
  margin-top: 0;
}

.server-console-section {
  margin-top: 30px;
}

.console-command-form {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;

  margin-top: 12px;
}

.console-prompt {
  opacity: 0.7;
  font-weight: bold;
}

.console-command-form input[type="text"] {
  width: 100%;

  box-sizing: border-box;

  border: 1px solid #444;
  background: #070707;
  color: #e8e8e8;

  padding: 11px 12px;

  font: inherit;
}

.console-command-form input[type="text"]:focus {
  outline: 1px solid #777;
  outline-offset: 0;
}

.command-result {
  margin-top: 14px;

  border: 1px solid #333;
  border-left: 2px solid currentColor;

  background: #070707;
}

.command-result-meta {
  padding: 8px 12px;

  border-bottom: 1px solid #222;

  opacity: 0.45;
  font-size: 0.75rem;
}

.command-result pre {
  margin: 0;
  padding: 14px;

  max-height: 360px;
  overflow: auto;

  white-space: pre-wrap;
  word-break: break-word;

  font: inherit;
  font-size: 0.82rem;
  line-height: 1.55;
}

.server-log {
  height: 430px;

  margin: 12px 0 0;
  padding: 14px 16px;

  box-sizing: border-box;

  overflow: auto;

  border: 1px solid #333;
  border-left: 2px solid currentColor;

  background: #070707;
  color: #d8d8d8;

  white-space: pre-wrap;
  word-break: break-word;

  font: inherit;
  font-size: 0.78rem;
  line-height: 1.55;
}

@media (max-width: 700px) {
  .console-command-form {
    grid-template-columns: auto 1fr;
  }

  .console-command-form button {
    grid-column: 2;
  }
}

/* ===== HIKKI CS16 ADMIN V1 ===== */

.cs-admin {
  width: min(1120px, 92%);
}

.cs-top-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

.cs-hero {
  display: flex;
  justify-content: space-between;
  gap: 30px;

  margin: 25px 0 20px;
  padding: 22px 24px;

  border: 1px solid #333;
  border-left: 2px solid currentColor;

  background: #090909;
}

.cs-hero h2 {
  margin: 0 0 8px;
  font-size: 1.15rem;
}

.cs-hero-status {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;

  white-space: nowrap;
}

.cs-hero-status span {
  opacity: 0.58;
}

.cs-tabs {
  display: flex;
  flex-wrap: wrap;

  margin: 30px 0 22px;

  border-bottom: 1px solid #333;
}

.cs-tabs button {
  padding: 12px 16px;

  border: 0;
  border-bottom: 2px solid transparent;

  background: transparent;
  color: inherit;

  font: inherit;
  font-size: 0.8rem;

  cursor: pointer;
  opacity: 0.48;
}

.cs-tabs button:hover {
  opacity: 0.85;
}

.cs-tabs button.active {
  border-bottom-color: currentColor;
  opacity: 1;
}

.cs-tab-panel {
  display: none;
}

.cs-tab-panel.active {
  display: block;
}

.cs-grid {
  display: grid;
  grid-template-columns:
    repeat(
      4,
      minmax(0, 1fr)
    );

  gap: 12px;

  margin-bottom: 18px;
}

.cs-stat {
  min-height: 80px;

  padding: 16px;

  border: 1px solid #2b2b2b;
  background: #090909;
}

.cs-stat span {
  display: block;

  margin-bottom: 10px;

  opacity: 0.38;
  font-size: 0.72rem;
}

.cs-stat strong {
  font-size: 1rem;
}

.cs-block {
  margin-bottom: 18px;
  padding: 20px;

  border: 1px solid #303030;
  background: #090909;
}

.cs-block-title {
  display: flex;
  justify-content: space-between;
  align-items: end;

  margin-bottom: 18px;
}

.cs-block-title h3 {
  margin: 0;
  font-size: 0.95rem;
}

.cs-block-title p {
  margin: 5px 0 0;

  opacity: 0.38;
  font-size: 0.72rem;
}

.setting-grid {
  display: grid;
  grid-template-columns:
    repeat(
      3,
      minmax(0, 1fr)
    );

  gap: 14px;
}

.setting-grid label {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.setting-grid label span {
  opacity: 0.45;
  font-size: 0.72rem;
}

.setting-grid .setting-wide {
  grid-column: 1 / -1;
}

.setting-grid input,
.setting-grid select,
.cs-inline-form select {
  width: 100%;

  box-sizing: border-box;

  padding: 10px 11px;

  border: 1px solid #3b3b3b;

  background: #070707;
  color: #e8e8e8;

  font: inherit;
}

.setting-grid input:focus,
.setting-grid select:focus,
.cs-inline-form select:focus,
.cs-editor:focus {
  outline: 1px solid #777;
}

.setting-grid input:disabled {
  opacity: 0.4;
}

.cs-save-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;

  margin-top: 18px;
}

.cs-save-row span {
  opacity: 0.38;
  font-size: 0.75rem;
}

.cs-inline-form {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
}

.cs-editor {
  width: 100%;
  min-height: 260px;

  box-sizing: border-box;

  resize: vertical;

  padding: 14px;

  border: 1px solid #333;

  background: #060606;
  color: #ddd;

  font: inherit;
  font-size: 0.82rem;
  line-height: 1.55;
}

.cs-motd {
  min-height: 360px;
}

.cs-table-wrap {
  overflow-x: auto;
}

.cs-table {
  width: 100%;

  border-collapse: collapse;

  font-size: 0.8rem;
}

.cs-table th,
.cs-table td {
  padding: 10px 12px;

  border-bottom: 1px solid #222;

  text-align: left;
}

.cs-table th {
  opacity: 0.4;
  font-weight: normal;
}

.cs-table tbody tr:hover {
  background: #0f0f0f;
}

.cs-empty {
  opacity: 0.35;
}

.backup-list {
  margin-top: 18px;
}

.backup-row {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    auto
    auto;

  gap: 18px;

  padding: 9px 0;

  border-bottom: 1px solid #202020;

  font-size: 0.76rem;
}

.backup-row span:nth-child(2),
.backup-row span:nth-child(3) {
  opacity: 0.45;
}

@media (max-width: 800px) {

  .cs-hero {
    flex-direction: column;
  }

  .cs-grid {
    grid-template-columns:
      repeat(
        2,
        minmax(0, 1fr)
      );
  }

  .setting-grid {
    grid-template-columns:
      1fr;
  }

  .setting-grid .setting-wide {
    grid-column: auto;
  }

  .backup-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }

}

@media (max-width: 520px) {

  .cs-grid {
    grid-template-columns: 1fr;
  }

  .cs-inline-form {
    grid-template-columns: 1fr;
  }

  .cs-save-row {
    align-items: stretch;
    flex-direction: column;
  }

}

/* ===== HIKKI CS16 ADMIN V1.1 ===== */

.cs-player-heading {
  align-items: center;
}

.cs-mini-button {
  padding: 8px 12px;

  border: 1px solid #353535;

  background: transparent;
  color: #ddd;

  font: inherit;
  font-size: 0.72rem;

  cursor: pointer;
}

.cs-mini-button:hover {
  border-color: #777;
  background: #101010;
}

.cs-player-action {
  width: 100px;
}

.cs-player-action form {
  margin: 0;
}

.cs-pill {
  display: inline-block;

  min-width: 40px;

  padding: 3px 6px;

  border: 1px solid #343434;

  text-align: center;

  font-size: 0.68rem;
}

.cs-pill.human {
  border-color: #777;
}

.cs-muted-action {
  opacity: 0.28;
  font-size: 0.7rem;
}

.cs-danger-button {
  padding: 6px 10px;

  border: 1px solid #4a4a4a;

  background: transparent;
  color: #ddd;

  font: inherit;
  font-size: 0.7rem;

  cursor: pointer;
}

.cs-danger-button:hover {
  border-color: #aaa;
  background: #161616;
}


.cs-map-toolbar {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    auto;

  align-items: center;

  gap: 12px;

  margin-bottom: 14px;
}

.cs-map-toolbar input {
  width: 100%;
  box-sizing: border-box;

  padding: 11px 12px;

  border: 1px solid #353535;

  background: #070707;
  color: #e8e8e8;

  font: inherit;
}

.cs-map-toolbar input:focus {
  outline: 1px solid #777;
}

.cs-map-toolbar span {
  opacity: 0.35;
  font-size: 0.72rem;
  white-space: nowrap;
}


.cs-map-grid {
  display: grid;

  grid-template-columns:
    repeat(
      4,
      minmax(0, 1fr)
    );

  gap: 8px;

  max-height: 440px;

  padding-right: 4px;

  overflow-y: auto;
}

.cs-map-form {
  margin: 0;
}

.cs-map-card {
  display: grid;

  grid-template-columns:
    auto
    minmax(0, 1fr);

  grid-template-rows:
    auto
    auto;

  width: 100%;

  min-height: 72px;

  box-sizing: border-box;

  padding: 11px 12px;

  border: 1px solid #2f2f2f;

  background: #070707;
  color: #ddd;

  text-align: left;
  font: inherit;

  cursor: pointer;
}

.cs-map-card:hover:not(:disabled) {
  border-color: #777;
  background: #101010;
}

.cs-map-card.current {
  border-color: #aaa;
  cursor: default;
}

.cs-map-card:disabled {
  opacity: 1;
}

.cs-map-type {
  grid-row: 1 / 3;

  align-self: center;

  margin-right: 11px;

  padding: 4px 5px;

  border: 1px solid #333;

  opacity: 0.5;

  font-size: 0.62rem;
}

.cs-map-card strong {
  overflow: hidden;

  text-overflow: ellipsis;
  white-space: nowrap;

  font-size: 0.78rem;
}

.cs-map-card small {
  margin-top: 4px;

  opacity: 0.28;

  font-size: 0.62rem;
}

.cs-map-card.current small {
  opacity: 0.65;
}


@media (max-width: 900px) {

  .cs-map-grid {
    grid-template-columns:
      repeat(
        3,
        minmax(0, 1fr)
      );
  }

}

@media (max-width: 650px) {

  .cs-map-grid {
    grid-template-columns:
      repeat(
        2,
        minmax(0, 1fr)
      );
  }

}

@media (max-width: 430px) {

  .cs-map-grid {
    grid-template-columns: 1fr;
  }

  .cs-map-toolbar {
    grid-template-columns: 1fr;
  }

}

/* ===== HIKKI CS16 ADMIN V1.2 LIVE ===== */

#cs-live-sync {
  font-size: 0.68rem;
  opacity: 0.32;

  transition:
    opacity 0.15s ease;
}

#cs-live-sync.stale {
  opacity: 0.8;
}

.cs-player-table tbody tr {
  transition:
    background 0.12s ease;
}



/* ===== HIKKI CS16 PROFILES V1 ===== */

.cs-profile-block {
  margin-top: 18px;
}

.cs-profile-title {
  align-items: center;
}

.cs-profile-badge {
  display: inline-block;

  padding: 5px 8px;

  border: 1px solid #444;

  font-size: 0.68rem;
  letter-spacing: 0.05em;
}

.cs-profile-badge.sync {
  border-color: #42614b;
  color: #9fc2a7;
}

.cs-profile-badge.drift {
  border-color: #765f39;
  color: #d1ad6d;
}

.cs-profile-badge.error {
  border-color: #704646;
  color: #cc8d8d;
}

.cs-profile-name {
  margin: 4px 0 18px;

  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.03em;
}

.cs-profile-meta {
  display: grid;

  grid-template-columns:
    repeat(
      4,
      minmax(0, 1fr)
    );

  gap: 8px;
}

.cs-profile-meta > div {
  min-width: 0;

  padding: 11px 12px;

  border: 1px solid #2d2d2d;
  background: #070707;
}

.cs-profile-meta span {
  display: block;

  margin-bottom: 7px;

  opacity: 0.35;

  font-size: 0.65rem;
}

.cs-profile-meta strong {
  display: block;

  overflow: hidden;

  text-overflow: ellipsis;
  white-space: nowrap;

  font-size: 0.78rem;
  font-weight: normal;
}

.cs-profile-clean,
.cs-profile-error {
  margin: 14px 0 0;

  opacity: 0.42;

  font-size: 0.72rem;
}

.cs-profile-error {
  color: #cc8d8d;
  opacity: 0.9;
}

.cs-profile-drift {
  margin-top: 14px;

  border: 1px solid #3a3328;
}

.cs-profile-drift-heading {
  padding: 8px 10px;

  border-bottom: 1px solid #3a3328;

  opacity: 0.55;

  font-size: 0.65rem;
  letter-spacing: 0.06em;
}

.cs-profile-drift-row {
  display: grid;

  grid-template-columns:
    minmax(120px, 0.35fr)
    minmax(0, 1fr);

  gap: 14px;

  padding: 8px 10px;

  border-bottom: 1px solid #24211d;

  font-size: 0.7rem;
}

.cs-profile-drift-row:last-child {
  border-bottom: 0;
}

.cs-profile-drift-row span {
  overflow: hidden;

  text-overflow: ellipsis;
  white-space: nowrap;
}

.cs-profile-drift-row code {
  overflow-wrap: anywhere;

  opacity: 0.58;

  font: inherit;
}

.cs-profile-actions {
  display: flex;
  flex-wrap: wrap;

  gap: 8px;

  margin-top: 16px;
}

.cs-profile-actions form {
  margin: 0;
}

.cs-profile-actions button {
  padding: 8px 12px;

  border: 1px solid #444;

  background: transparent;
  color: #ddd;

  font: inherit;
  font-size: 0.7rem;

  cursor: pointer;
}

.cs-profile-actions button:hover:not(:disabled) {
  border-color: #888;
  background: #101010;
}

.cs-profile-actions button:disabled {
  opacity: 0.25;
  cursor: not-allowed;
}


@media (max-width: 760px) {

  .cs-profile-meta {
    grid-template-columns:
      repeat(
        2,
        minmax(0, 1fr)
      );
  }

}


@media (max-width: 460px) {

  .cs-profile-meta {
    grid-template-columns: 1fr;
  }

  .cs-profile-drift-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }

}


/* ===== HIKKI SECURITY PANEL V1 ===== */

.header-tools {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 10px;
}

.header-tools form { margin: 0; }
.header-tools .console-link { margin: 0; }

.security-shell { width: min(1320px, 94%); }
.security-intro {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 20px;
  margin-bottom: 18px;
  padding: 14px 0 16px 18px;
  border-left: 2px solid currentColor;
}
.security-intro p { margin: 6px 0 0; opacity: .42; font-size: .78rem; }
.security-eyebrow { font-size: .72rem; letter-spacing: .08em; opacity: .72; }
.security-live-line { display:flex; align-items:center; gap:8px; font-size:.68rem; opacity:.68; white-space:nowrap; }
.security-dot { width:8px; height:8px; border-radius:50%; background:#777; display:inline-block; }
.security-dot.ok { background:#7fb28a; }
.security-dot.bad { background:#c97878; }

.security-metrics {
  display: grid;
  grid-template-columns: repeat(5, minmax(0,1fr));
  gap: 9px;
  margin-bottom: 12px;
}
.security-metric { border:1px solid #2d2d2d; background:#070707; padding:13px 14px; min-width:0; }
.security-metric > span, .security-metric small { display:block; }
.security-metric > span { opacity:.36; font-size:.63rem; letter-spacing:.07em; }
.security-metric strong { display:block; margin:8px 0 5px; font-size:1.08rem; font-weight:normal; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.security-metric small { opacity:.38; font-size:.62rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.metric-good { color:#9fc2a7; }
.metric-bad { color:#cc8d8d; }

.security-panel { border:1px solid #2c2c2c; background:#070707; }
.security-map-panel { padding:14px; margin-bottom:12px; }
.security-section-head { display:flex; justify-content:space-between; align-items:end; gap:16px; margin-bottom:12px; }
.security-section-head h2 { font-size:.82rem; letter-spacing:.09em; }
.security-section-head p { margin:5px 0 0; opacity:.34; font-size:.63rem; }
.security-range { display:flex; gap:5px; }
.security-range button, .security-reveal, #security-refresh { padding:7px 10px; font-size:.65rem; }
.security-range button.active { background:#e8e8e8; color:#0b0b0b; border-color:#e8e8e8; }

.security-map-wrap { position:relative; border:1px solid #272727; background:#050505; overflow:hidden; }
.security-map { width:100%; display:block; aspect-ratio:2/1; min-height:250px; max-height:460px; }
.security-map-bg { fill:#050505; }
.security-grid-line { fill:none; stroke:#181818; stroke-width:1; }
.security-land path { fill:#111; stroke:#2b2b2b; stroke-width:1.2; vector-effect:non-scaling-stroke; }
.security-map-point { stroke:#050505; stroke-width:1.5; cursor:pointer; outline:none; }
.security-map-point.ssh { fill:#d2a75d; }
.security-map-point.http { fill:#79a9c5; }
.security-map-point.sensitive { fill:#c97878; }
.security-map-point.selected { stroke:#fff; stroke-width:3; }
.security-map-pulse { opacity:.13; }
.security-map-pulse.ssh { fill:#d2a75d; }
.security-map-pulse.http { fill:#79a9c5; }
.security-map-pulse.sensitive { fill:#c97878; }
.security-map-empty { position:absolute; inset:0; display:grid; place-items:center; pointer-events:none; opacity:.45; font-size:.72rem; }
.security-map-empty[hidden] { display:none; }
.security-legend { display:flex; flex-wrap:wrap; gap:14px; margin-top:10px; opacity:.55; font-size:.63rem; }
.legend-dot { width:7px; height:7px; display:inline-block; border-radius:50%; margin-right:5px; }
.legend-dot.ssh { background:#d2a75d; }.legend-dot.http { background:#79a9c5; }.legend-dot.sensitive { background:#c97878; }

.security-main-grid { display:grid; grid-template-columns:minmax(0,1fr) 310px; gap:12px; }
.security-events-panel { min-width:0; }
.security-events-head { padding:13px 14px 0; }
.security-filters { display:grid; grid-template-columns:minmax(0,1fr) 160px; gap:9px; padding:0 14px 13px; border-bottom:1px solid #272727; }
.security-filters label { display:block; min-height:0; }
.security-filters label span { display:block; margin-bottom:6px; opacity:.35; font-size:.61rem; letter-spacing:.06em; }
.security-filters input, .security-filters select { width:100%; height:39px; border:1px solid #333; background:#0c0c0c; color:#e8e8e8; font:inherit; font-size:.72rem; padding:8px 10px; outline:none; }
.security-filters select { appearance:none; }
.security-filters input:focus, .security-filters select:focus { border-color:#777; }
.security-console-head, .security-event-row { display:grid; grid-template-columns:118px 62px 180px minmax(0,1fr); gap:10px; align-items:center; }
.security-console-head { padding:8px 14px; border-bottom:1px solid #242424; opacity:.3; font-size:.58rem; letter-spacing:.06em; }
.security-event-list { max-height:560px; overflow:auto; }
.security-event-row { width:100%; border:0; border-bottom:1px solid #1f1f1f; background:transparent; color:inherit; text-align:left; padding:9px 14px; font:inherit; cursor:pointer; }
.security-event-row:hover, .security-event-row.selected { background:#101010; color:inherit; }
.security-event-row.selected { box-shadow:inset 2px 0 #aaa; }
.security-event-time { opacity:.36; font-size:.63rem; }
.security-event-type { font-size:.66rem; font-weight:bold; }
.security-event-source { min-width:0; font-size:.69rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.security-event-source small { display:block; opacity:.35; margin-top:3px; overflow:hidden; text-overflow:ellipsis; }
.security-event-signal { min-width:0; opacity:.62; font-size:.68rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.security-no-events { padding:28px 14px; opacity:.35; font-size:.7rem; }

.security-investigation { padding:14px; min-width:0; align-self:start; }
.security-detail-empty { opacity:.35; font-size:.7rem; padding:8px 0 14px; }
.security-detail-title { display:flex; align-items:center; gap:8px; margin:5px 0 16px; font-size:.72rem; letter-spacing:.05em; }
.security-detail-dot { width:8px; height:8px; border-radius:50%; background:#aaa; display:inline-block; }
.security-detail-list { display:grid; grid-template-columns:78px minmax(0,1fr); gap:8px 10px; margin:0; font-size:.66rem; }
.security-detail-list dt { opacity:.34; }
.security-detail-list dd { margin:0; overflow-wrap:anywhere; opacity:.82; }
.security-reveal { margin-top:18px; opacity:.7; }

.security-pipeline { margin-top:12px; padding:13px 14px; display:flex; justify-content:space-between; align-items:center; gap:18px; }
.security-pipeline h2 { font-size:.78rem; letter-spacing:.08em; }
.security-pipeline p { margin:5px 0 0; opacity:.34; font-size:.62rem; }
.security-pills { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.security-pills span { border:1px solid #313131; padding:5px 7px; opacity:.5; font-size:.58rem; }
.security-attribution { margin:14px 0 0; opacity:.3; font-size:.58rem; }
.security-attribution a { color:inherit; }

@media (max-width: 980px) {
  .security-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .security-main-grid { grid-template-columns:1fr; }
  .security-investigation { order:-1; }
}
@media (max-width: 700px) {
  .header-tools { justify-content:flex-start; margin:0 0 35px; }
  .security-intro { display:block; }
  .security-live-line { margin-top:14px; }
  .security-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .security-filters { grid-template-columns:1fr; }
  .security-console-head { display:none; }
  .security-event-row { grid-template-columns:92px 48px minmax(0,1fr); gap:7px; }
  .security-event-signal { grid-column:1 / -1; padding-left:0; white-space:normal; }
  .security-pipeline { display:block; }
  .security-pills { justify-content:flex-start; margin-top:12px; }
}
@media (max-width: 430px) {
  .security-metrics { grid-template-columns:1fr; }
  .security-map { min-height:210px; }
  .security-section-head { display:block; }
  .security-range { margin-top:10px; }
  .security-detail-list { grid-template-columns:68px minmax(0,1fr); }
}

/* ===== HIKKI SECURITY PANEL V1.1 LIVE MAP ===== */

.security-map-head {
  align-items: center;
}

.security-map-wrap {
  min-height: 340px;
  user-select: none;
}

.security-map {
  min-height: 340px;
  cursor: grab;
  touch-action: none;
}

.security-map.dragging {
  cursor: grabbing;
}

.security-world-image {
  opacity: 1;
  pointer-events: none;
}

.security-grid-overlay {
  opacity: .56;
  pointer-events: none;
}

.security-map-marker {
  cursor: pointer;
  outline: none;
}

.security-map-marker .security-map-point {
  stroke: #050505;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
  transition: filter .12s ease, opacity .12s ease;
}

.security-map-marker.ssh .security-map-point { fill:#d2a75d; }
.security-map-marker.http .security-map-point { fill:#79a9c5; }
.security-map-marker.sensitive .security-map-point { fill:#c97878; }

.security-map-marker .security-map-pulse {
  opacity: .12;
  pointer-events: none;
}

.security-map-marker.ssh .security-map-pulse { fill:#d2a75d; }
.security-map-marker.http .security-map-pulse { fill:#79a9c5; }
.security-map-marker.sensitive .security-map-pulse { fill:#c97878; }

.security-map-marker:hover .security-map-point,
.security-map-marker:focus .security-map-point {
  filter: brightness(1.45);
}

.security-map-marker.selected .security-map-point {
  stroke: #f2f2f2;
  stroke-width: 2.5;
}

.security-map-marker.new .security-map-pulse {
  animation: security-live-ring 1.45s ease-out infinite;
  transform-box: fill-box;
  transform-origin: center;
}

.security-map-cluster-label {
  fill: #090909;
  font-size: 8px;
  font-weight: 800;
  text-anchor: middle;
  pointer-events: none;
  dominant-baseline: middle;
}

@keyframes security-live-ring {
  0% { opacity: .48; transform: scale(.8); }
  75% { opacity: .08; transform: scale(1.55); }
  100% { opacity: 0; transform: scale(1.8); }
}

.security-map-hud {
  position: absolute;
  inset: 10px 10px auto 10px;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
  pointer-events: none;
  z-index: 5;
}

.security-map-controls,
.security-map-live {
  pointer-events: auto;
}

.security-map-controls {
  display: flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid #303030;
  background: rgba(5,5,5,.92);
}

.security-map-controls button {
  min-width: 32px;
  height: 30px;
  padding: 0 9px;
  border: 1px solid #343434;
  background: #0a0a0a;
  color: #d7d7d7;
  font: inherit;
  font-size: .62rem;
  cursor: pointer;
}

.security-map-controls button:hover,
.security-map-controls button:focus-visible {
  border-color: #777;
  background: #111;
}

.security-map-live {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 9px;
  border: 1px solid #303030;
  background: rgba(5,5,5,.92);
}

.security-map-live strong,
.security-map-live small {
  display: block;
  white-space: nowrap;
}

.security-map-live strong {
  font-size: .61rem;
  font-weight: normal;
  letter-spacing: .07em;
}

.security-map-live small {
  margin-top: 3px;
  opacity: .38;
  font-size: .53rem;
}

.security-live-pulse {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #7fb28a;
  box-shadow: 0 0 0 0 rgba(127,178,138,.25);
  animation: security-live-dot 2s ease-out infinite;
}

.security-live-pulse.bad {
  background: #c97878;
  animation: none;
}

@keyframes security-live-dot {
  0% { box-shadow: 0 0 0 0 rgba(127,178,138,.28); }
  70% { box-shadow: 0 0 0 7px rgba(127,178,138,0); }
  100% { box-shadow: 0 0 0 0 rgba(127,178,138,0); }
}

.security-map-tooltip {
  position: absolute;
  z-index: 8;
  width: min(265px, calc(100% - 16px));
  padding: 10px 11px;
  border: 1px solid #3a3a3a;
  background: rgba(4,4,4,.97);
  pointer-events: none;
  box-shadow: 0 8px 24px rgba(0,0,0,.42);
  font-size: .62rem;
}

.security-map-tooltip strong,
.security-map-tooltip span,
.security-map-tooltip small {
  display: block;
}

.security-map-tooltip strong {
  margin-bottom: 7px;
  font-size: .67rem;
  letter-spacing: .04em;
}

.security-map-tooltip span {
  margin-top: 4px;
  opacity: .72;
}

.security-map-tooltip small {
  margin-top: 8px;
  opacity: .34;
  font-size: .54rem;
}

.security-map-help {
  position: absolute;
  right: 9px;
  bottom: 8px;
  z-index: 4;
  opacity: .28;
  pointer-events: none;
  font-size: .54rem;
  letter-spacing: .05em;
}

.legend-ring {
  width: 9px;
  height: 9px;
  display: inline-block;
  border: 1px solid #8fb798;
  border-radius: 50%;
  margin-right: 5px;
  vertical-align: -1px;
}

.security-event-row.is-new {
  animation: security-event-arrival 2.2s ease-out 1;
}

@keyframes security-event-arrival {
  0% { background: #182018; box-shadow: inset 2px 0 #8fb798; }
  100% { background: transparent; box-shadow: inset 2px 0 transparent; }
}

.security-outcome.good { color:#9fc2a7; }
.security-outcome.warn { color:#d1ad6d; }
.security-outcome.neutral { color:#b8b8b8; }

@media (max-width: 700px) {
  .security-map-hud {
    inset: 7px 7px auto 7px;
  }

  .security-map-controls button {
    min-width: 30px;
    padding: 0 7px;
  }

  .security-map-live small {
    display: none;
  }

  .security-map-help {
    display: none;
  }
}

@media (max-width: 500px) {
  .security-map-live {
    display: none;
  }

  .security-map-wrap,
  .security-map {
    min-height: 250px;
  }
}
