/* ShellScan Dashboard — minimal/functional dark theme */

* { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  background: #0d1117;
  color: #e6edf3;
  line-height: 1.5;
}

a { color: #58a6ff; text-decoration: none; }
a:hover { text-decoration: underline; }

.container { max-width: 1400px; margin: 0 auto; padding: 20px; }

/* Nav */
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 20px;
  border-bottom: 1px solid #21262d;
  background: #161b22;
}
.nav-left { display: flex; align-items: center; gap: 20px; }
.nav-right { display: flex; align-items: center; gap: 12px; }
.nav-brand { font-weight: bold; color: #e6edf3; font-size: 15px; }
.nav-link { color: #8b949e; font-size: 14px; }
.nav-link.active { color: #e6edf3; border-bottom: 2px solid #e6edf3; padding-bottom: 2px; }
.nav-org { color: #8b949e; font-size: 12px; }
.nav-logout { color: #f85149; font-size: 13px; }

/* Login */
.login-card {
  max-width: 380px;
  margin: 120px auto;
  text-align: center;
}
.login-card h2 { margin-bottom: 4px; }
.subtitle { color: #8b949e; margin-bottom: 24px; }
.input-mono {
  width: 100%;
  padding: 10px 12px;
  background: #161b22;
  border: 1px solid #30363d;
  border-radius: 6px;
  color: #e6edf3;
  font-family: monospace;
  font-size: 14px;
  margin-bottom: 12px;
}
.input-mono:focus { outline: none; border-color: #58a6ff; }
.footer-text { color: #484f58; font-size: 12px; margin-top: 16px; }
.error { color: #f85149; font-size: 13px; margin-bottom: 8px; }

/* Buttons */
.btn {
  padding: 8px 16px;
  border: 1px solid #30363d;
  border-radius: 6px;
  background: #21262d;
  color: #e6edf3;
  cursor: pointer;
  font-size: 13px;
}
.btn:hover { background: #30363d; }
.btn-primary { background: #238636; border-color: #238636; }
.btn-primary:hover { background: #2ea043; }
.btn-danger { background: #da3633; border-color: #da3633; color: #fff; }
.btn-danger:hover { background: #f85149; }
.btn-sm { padding: 4px 10px; font-size: 11px; }

/* Stats */
.stats-row { display: flex; gap: 16px; margin-bottom: 20px; }
.stat-card {
  flex: 1;
  background: #161b22;
  padding: 16px 20px;
  border-radius: 6px;
  text-align: center;
  border: 1px solid #21262d;
}
.stat-value { font-size: 28px; font-weight: bold; }
.stat-label { color: #8b949e; font-size: 12px; }

/* Tables */
table { width: 100%; border-collapse: collapse; font-size: 13px; }
thead tr { border-bottom: 1px solid #21262d; }
th { padding: 8px; text-align: left; color: #8b949e; font-weight: normal; }
td { padding: 8px; }
tbody tr { border-bottom: 1px solid #161b22; }
tbody tr:hover { background: #161b22; }
.scan-table tbody tr { cursor: pointer; }
.table-actions { display: flex; justify-content: flex-end; margin-bottom: 8px; }
.mono { font-family: monospace; font-size: 12px; }
.muted { color: #8b949e; }
.hint { font-size: 11px; margin-top: 8px; }
.empty-state { color: #484f58; padding: 40px; text-align: center; }

/* Badges */
.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 3px;
  font-size: 11px;
  font-weight: bold;
}
.badge-lg { padding: 4px 12px; font-size: 13px; }
.badge-critical { background: #da3633; color: #fff; }
.badge-high { background: #d29922; color: #fff; }
.badge-medium { background: #e3b341; color: #000; }
.badge-low { background: #388bfd; color: #fff; }
.badge-info { background: #484f58; color: #e6edf3; }
.badge-pass { background: #238636; color: #fff; }
.badge-fail { background: #da3633; color: #fff; }
.badge-review { background: #d29922; color: #fff; }
.badge-complete { background: #238636; color: #000; }
.badge-scanning { background: #e3b341; color: #000; }
.badge-pending { background: #484f58; color: #e6edf3; }
.badge-failed { background: #da3633; color: #fff; }
.badge-active { background: #238636; color: #000; }

/* Scan detail */
.scan-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}
.scan-verdict { display: flex; align-items: center; gap: 8px; }
.scan-content-wrapper { display: flex; gap: 0; }
.findings-section { flex: 1; min-width: 0; overflow-x: auto; }
.findings-table .finding-row { cursor: pointer; }
.findings-table .finding-row:hover { background: #1a2332; }
.evidence-indicator { color: #d29922; margin-left: 4px; cursor: help; }

/* Source panel */
.source-panel {
  flex: 1 1 45%;
  min-width: 320px;
  max-width: 60%;
  background: #0d1117;
  border-left: 1px solid #21262d;
  display: flex;
  flex-direction: column;
}
.panel-header {
  padding: 10px 12px;
  border-bottom: 1px solid #21262d;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.panel-close { color: #8b949e; cursor: pointer; font-size: 18px; }
.panel-close:hover { color: #e6edf3; }
.panel-body {
  flex: 1;
  overflow-y: auto;
  font-family: monospace;
  font-size: 12px;
  line-height: 1.8;
}
.source-line { display: flex; }
.line-num {
  color: #484f58;
  padding: 0 8px;
  min-width: 40px;
  text-align: right;
  user-select: none;
}
.line-content { padding-left: 8px; white-space: pre; }
.source-line.highlighted {
  background: #2a1a1a;
  border-left: 3px solid #da3633;
}
.source-line.highlighted .line-num { color: #f85149; font-weight: bold; }
.source-line.highlighted .line-content { color: #ffc1c0; }

/* Error/status boxes */
.error-box { background: #2a1a1a; border: 1px solid #da3633; border-radius: 6px; padding: 16px; margin-top: 16px; }
.status-box { text-align: center; padding: 40px; }

/* Org page */
.key-display {
  background: #161b22;
  border: 1px solid #238636;
  border-radius: 6px;
  padding: 16px;
  margin-top: 16px;
}
.key-display code {
  display: block;
  background: #0d1117;
  padding: 10px;
  border-radius: 4px;
  font-size: 13px;
  margin: 8px 0;
  word-break: break-all;
}
.warning { color: #d29922; font-size: 12px; }

/* Help */
.code-block {
  background: #161b22;
  padding: 12px;
  border-radius: 6px;
  font-family: monospace;
  font-size: 13px;
  line-height: 1.6;
  margin-bottom: 20px;
  overflow-x: auto;
}
.help-table { margin-bottom: 20px; }
.help-table td { padding: 6px 8px; }
.help-table tr { border-bottom: 1px solid #161b22; }
.help-footer { padding-top: 12px; border-top: 1px solid #21262d; margin-top: 24px; }
.help-footer .muted { margin: 0 8px; }

h2 { margin-bottom: 8px; }
h3 { margin: 20px 0 12px; }

/* Scan lobster */
.scan-lobster {
  font-size: 36px;
  margin-top: 12px;
  animation: lobster-walk 2s ease-in-out infinite;
  display: inline-block;
}
@keyframes lobster-walk {
  0%, 100% { transform: translateX(-20px) scaleX(-1); }
  50% { transform: translateX(20px) scaleX(-1); }
}

/* Upload */
.upload-card { max-width: 520px; margin: 40px auto; }
.upload-dropzone {
  border: 2px dashed #30363d;
  border-radius: 8px;
  padding: 32px;
  text-align: center;
  cursor: pointer;
  margin: 16px 0;
  transition: border-color 0.15s, background 0.15s;
}
.upload-dropzone.dragover { border-color: #58a6ff; background: #161b22; }
.dropzone-text { color: #8b949e; }
.dropzone-text a { color: #58a6ff; }
.file-list { margin: 8px 0 16px; }
.file-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 10px; background: #161b22; border-radius: 4px;
  margin-bottom: 4px; font-size: 13px;
}
.file-item .mono { color: #e6edf3; }
.file-item .remove { color: #f85149; cursor: pointer; font-size: 12px; }
.form-row { margin: 16px 0; }
.form-label { display: block; color: #8b949e; font-size: 12px; margin-bottom: 4px; }
.btn-upload { width: 100%; padding: 10px; font-size: 14px; }
.upload-progress { text-align: center; margin-top: 16px; }
