/*
 * spark.css — Spark Wonder Design System
 * Version: 1.0.0
 *
 * Usage:
 *   <link rel="stylesheet" href="http://spark-core.ai/assets/spark.css">
 *   or
 *   <link rel="stylesheet" href="https://ui.spark-core.ai/spark.css">
 *
 * Tool accent colours — set on <html> or <body>:
 *   spark (dashboard):   #e8e8e8  neutral white
 *   spark-reach:         #3b82f6  blue
 *   spark-security:      #ef4444  red
 *   spark-devices:       #14b8a6  teal
 *   spark-xero-rec:      #22c55e  green
 *   ovrsight:            #f59e0b  amber
 *   pocket-spark:        #a855f7  purple
 *   spark-historian:     #f97316  orange
 *
 * Example:
 *   <html data-tool-accent="#3b82f6">
 */

/* ── reset ─────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* ── tokens: dark mode (default) ────────────────────────────────────────────── */
:root {
  --spark-bg:           #1a1a1a;
  --spark-surface:      #242424;
  --spark-card:         #2e2e2e;
  --spark-border:       #3a3a3a;
  --spark-border-mid:   #4a4a4a;
  --spark-text:         #e8e8e8;
  --spark-text-muted:   #9a9a9a;
  --spark-text-hint:    #666666;

  --spark-success:      #4ade80;
  --spark-success-bg:   #0f2a1a;
  --spark-warning:      #fbbf24;
  --spark-warning-bg:   #2a1f0a;
  --spark-danger:       #f87171;
  --spark-danger-bg:    #2a0f0f;
  --spark-info:         #60a5fa;
  --spark-info-bg:      #0f1f2a;

  --tool-accent:        #9a9a9a;
  --tool-accent-bg:     #2a2a2a;
}

/* ── tokens: light mode ─────────────────────────────────────────────────────── */
[data-theme="light"] {
  --spark-bg:           #f5f5f5;
  --spark-surface:      #ffffff;
  --spark-card:         #ffffff;
  --spark-border:       #e0e0e0;
  --spark-border-mid:   #c8c8c8;
  --spark-text:         #1a1a1a;
  --spark-text-muted:   #555555;
  --spark-text-hint:    #888888;

  --spark-success:      #16a34a;
  --spark-success-bg:   #dcfce7;
  --spark-warning:      #d97706;
  --spark-warning-bg:   #fef9c3;
  --spark-danger:       #dc2626;
  --spark-danger-bg:    #fee2e2;
  --spark-info:         #2563eb;
  --spark-info-bg:      #dbeafe;

  --tool-accent:        #444444;
  --tool-accent-bg:     #f0f0f0;
}

/* ── base ───────────────────────────────────────────────────────────────────── */
body {
  background:  var(--spark-bg);
  color:       var(--spark-text);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size:   15px;
  line-height: 1.6;
  transition:  background 0.2s, color 0.2s;
}

/* ── accent bar ─────────────────────────────────────────────────────────────── */
.spark-header-accent-bar {
  height:     3px;
  background: var(--tool-accent);
  width:      100%;
}

/* ── header ─────────────────────────────────────────────────────────────────── */
.spark-header {
  background:     var(--spark-surface);
  border-bottom:  1px solid var(--spark-border);
  padding:        1rem 1.5rem;
  display:        flex;
  align-items:    center;
  justify-content: space-between;
  gap:            1rem;
}
.spark-header-title {
  font-size:   1.1rem;
  font-weight: 700;
  color:       var(--spark-text);
}

/* ── cards & surfaces ───────────────────────────────────────────────────────── */
.spark-card {
  background:    var(--spark-card);
  border:        1px solid var(--spark-border);
  border-radius: 10px;
  padding:       1.25rem;
  transition:    background 0.2s, border-color 0.2s;
}
.spark-card:hover {
  border-color: var(--spark-border-mid);
}

.spark-surface {
  background:    var(--spark-surface);
  border:        1px solid var(--spark-border);
  border-radius: 8px;
  padding:       1rem;
  transition:    background 0.2s, border-color 0.2s;
}

/* ── badges ─────────────────────────────────────────────────────────────────── */
.spark-badge {
  display:      inline-flex;
  align-items:  center;
  padding:      2px 10px;
  border-radius: 999px;
  font-size:    12px;
  font-weight:  500;
  line-height:  1.6;
}

.spark-badge-success {
  color:      var(--spark-success);
  background: var(--spark-success-bg);
}
.spark-badge-warning {
  color:      var(--spark-warning);
  background: var(--spark-warning-bg);
}
.spark-badge-danger {
  color:      var(--spark-danger);
  background: var(--spark-danger-bg);
}
.spark-badge-info {
  color:      var(--spark-info);
  background: var(--spark-info-bg);
}
.spark-badge-accent {
  color:      var(--tool-accent);
  background: var(--tool-accent-bg);
}

/* ── status pills ───────────────────────────────────────────────────────────── */
.spark-status-up {
  color:        var(--spark-success);
  background:   var(--spark-success-bg);
  display:      inline-flex;
  align-items:  center;
  padding:      2px 10px;
  border-radius: 999px;
  font-size:    12px;
  font-weight:  700;
}
.spark-status-down {
  color:        var(--spark-danger);
  background:   var(--spark-danger-bg);
  display:      inline-flex;
  align-items:  center;
  padding:      2px 10px;
  border-radius: 999px;
  font-size:    12px;
  font-weight:  700;
}

/* ── buttons ────────────────────────────────────────────────────────────────── */
.spark-btn {
  display:        inline-flex;
  align-items:    center;
  gap:            0.4rem;
  padding:        0.5rem 1.25rem;
  border-radius:  6px;
  border:         1px solid var(--spark-border);
  background:     var(--spark-card);
  color:          var(--spark-text);
  cursor:         pointer;
  font-size:      14px;
  font-family:    inherit;
  font-weight:    500;
  line-height:    1;
  transition:     border-color 0.15s, background 0.15s;
  text-decoration: none;
}
.spark-btn:hover {
  border-color: var(--tool-accent);
  background:   var(--spark-surface);
}
.spark-btn:disabled {
  opacity: 0.45;
  cursor:  not-allowed;
}

.spark-btn-accent {
  background:   var(--tool-accent);
  color:        var(--spark-bg);
  border-color: var(--tool-accent);
  font-weight:  600;
}
.spark-btn-accent:hover {
  opacity: 0.88;
}

.spark-btn-danger {
  background:   var(--spark-danger-bg);
  color:        var(--spark-danger);
  border-color: var(--spark-danger);
}
.spark-btn-danger:hover {
  background: var(--spark-danger);
  color:      var(--spark-bg);
}

/* ── table ──────────────────────────────────────────────────────────────────── */
.spark-table {
  width:           100%;
  border-collapse: collapse;
}
.spark-table th {
  text-align:    left;
  color:         var(--spark-text-muted);
  font-size:     12px;
  font-weight:   600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding:       0.5rem 1rem;
  border-bottom: 1px solid var(--spark-border);
}
.spark-table td {
  padding:       0.75rem 1rem;
  border-bottom: 1px solid var(--spark-border);
  font-size:     14px;
  color:         var(--spark-text);
}
.spark-table tr:last-child td {
  border-bottom: none;
}
.spark-table tr:hover td {
  background: var(--spark-surface);
}

/* ── input ──────────────────────────────────────────────────────────────────── */
.spark-input {
  background:    var(--spark-bg);
  border:        1px solid var(--spark-border);
  border-radius: 6px;
  color:         var(--spark-text);
  padding:       0.5rem 0.75rem;
  font-size:     14px;
  font-family:   inherit;
  width:         100%;
  transition:    border-color 0.15s;
}
.spark-input:focus {
  outline:      none;
  border-color: var(--tool-accent);
}
.spark-input::placeholder {
  color: var(--spark-text-hint);
}

/* ── select (inherits input styles) ────────────────────────────────────────── */
.spark-select {
  background:    var(--spark-bg);
  border:        1px solid var(--spark-border);
  border-radius: 6px;
  color:         var(--spark-text);
  padding:       0.5rem 0.75rem;
  font-size:     14px;
  font-family:   inherit;
  cursor:        pointer;
  transition:    border-color 0.15s;
}
.spark-select:focus {
  outline:      none;
  border-color: var(--tool-accent);
}

/* ── utility ────────────────────────────────────────────────────────────────── */
.spark-muted  { color: var(--spark-text-muted); }
.spark-hint   { color: var(--spark-text-hint); font-size: 12px; }
.spark-divider {
  border: none;
  border-top: 1px solid var(--spark-border);
  margin: 1rem 0;
}

/* ── layout helpers ─────────────────────────────────────────────────────────── */
.spark-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
.spark-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
.spark-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.spark-flex   { display: flex; align-items: center; gap: 0.75rem; }
.spark-flex-between { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }

@media (max-width: 640px) {
  .spark-grid-2,
  .spark-grid-3,
  .spark-grid-4 { grid-template-columns: 1fr; }
}
