/* Solute Connect — admin styles */
body.admin { background: var(--paper); min-height: 100vh; }
.admin-shell { max-width: 1180px; margin: 0 auto; padding: 28px; }
.admin-topbar {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 24px; background: var(--paper-warm);
  border: 1.5px solid var(--ink); border-radius: 4px;
  box-shadow: 8px 8px 0 var(--ink);
  margin-bottom: 28px;
}
.admin-nav { display: flex; gap: 20px; align-items: center; }
.admin-nav a, .link-button {
  color: var(--ink-soft); text-decoration: none; font-weight: 500; font-size: 14px;
  background: none; border: none; cursor: pointer; padding: 0;
}
.admin-nav a:hover, .link-button:hover { color: var(--accent); }

.admin-main { padding: 0 4px; }
.auth-card {
  max-width: 480px; margin: 60px auto;
  background: #fff; padding: 40px;
  border: 1.5px solid var(--ink); border-radius: 4px;
  box-shadow: 14px 14px 0 var(--ink);
}
.auth-card h2 {
  font-family: 'Instrument Serif', Georgia, serif; font-style: italic;
  font-size: 36px; margin: 0 0 8px; font-weight: 400; letter-spacing: -0.015em;
}
.auth-card .subtitle { color: var(--ink-soft); font-size: 14px; margin: 0 0 24px; }
.auth-card label { display: block; margin-bottom: 16px; font-weight: 500; font-size: 13px; }
.auth-card .hint { color: var(--muted); font-weight: 400; }
.auth-card input { width: 100%; padding: 10px 12px; border: 1.5px solid var(--ink); border-radius: 4px; font-size: 14px; margin-top: 6px; font-family: inherit; box-sizing: border-box; background: #fff; }
.auth-card input:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
.auth-card .btn-primary {
  width: 100%; padding: 12px; background: var(--ink); color: #fff; border: none; border-radius: 4px;
  font-size: 14px; font-weight: 600; cursor: pointer; letter-spacing: 0.03em; margin-top: 8px;
}
.auth-card .btn-primary:hover { background: var(--accent); }

.alert { padding: 12px 16px; border-radius: 4px; margin-bottom: 20px; font-size: 14px; }
.alert-error { background: #fde8e3; color: var(--accent-deep); border: 1px solid var(--accent); }
.alert-info { background: var(--paper-warm); color: var(--ink-soft); border: 1px solid var(--ink); }

table.devices { width: 100%; border-collapse: collapse; background: #fff; border: 1.5px solid var(--ink); border-radius: 4px; box-shadow: 8px 8px 0 var(--ink); }
table.devices th { text-align: left; padding: 12px 16px; background: var(--paper-warm); border-bottom: 1.5px solid var(--ink); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; color: var(--ink-soft); }
table.devices td { padding: 14px 16px; border-bottom: 1px solid #eee; font-size: 14px; }
table.devices tr:last-child td { border-bottom: none; }
.status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; }
.status-dot.online { background: #28c840; box-shadow: 0 0 0 3px rgba(40,200,64,0.2); }
.status-dot.offline { background: #ccc; }
.rd-id { font-family: 'JetBrains Mono', monospace; font-weight: 600; }
.connect-btn { padding: 6px 14px; background: var(--accent); color: #fff; text-decoration: none; border-radius: 4px; font-size: 12px; font-weight: 600; }
.connect-btn:hover { background: var(--accent-deep); }
.label-edit { background: transparent; border: 1px dashed transparent; padding: 4px 8px; cursor: text; font-size: 13px; }
.label-edit:hover, .label-edit:focus { border-color: var(--ink); background: var(--paper); outline: none; }
.page-title { font-family: 'Instrument Serif', serif; font-size: 36px; font-weight: 400; margin: 0 0 24px; letter-spacing: -0.015em; }
.page-title em { font-style: italic; color: var(--accent); }
