/* Prophecta Agentic Fleet — design system */

:root {
  /* Neutrals (cool dark, matches screenshots) */
  --bg: #14171c;
  --bg-1: #181c23;
  --bg-2: #1e232b;
  --bg-3: #252b35;
  --bg-4: #2e3540;
  --line: #2a313c;
  --line-strong: #3a4250;

  /* Text */
  --fg: #e8ecf2;
  --fg-1: #b9c2cf;
  --fg-2: #7d8796;
  --fg-3: #525a67;

  /* Brand (from Prophecta logo gradient) */
  --cyan: #00b3e6;
  --cyan-2: #0095da;
  --magenta: #ff0061;
  --magenta-2: #d3004f;

  /* Semantic */
  --ok: #2dd28d;
  --ok-2: #1f9a66;
  --warn: #ffb547;
  --warn-2: #c98818;
  --danger: #ff4d6a;
  --danger-2: #c83651;
  --info: var(--cyan);

  /* Type */
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif;
  --font-mono: "JetBrains Mono", "SF Mono", Menlo, monospace;

  /* Sizing */
  --r-sm: 4px;
  --r: 6px;
  --r-lg: 10px;
  --r-xl: 14px;

  --sidebar-w: 232px;
  --topbar-h: 44px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--fg);
  font-size: 14px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }

/* ========== App shell ========== */
.app {
  display: grid;
  grid-template-columns: var(--sidebar-w) 1fr;
  height: 100vh;
  overflow: hidden;
}

.sidebar {
  background: var(--bg-1);
  border-right: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.sidebar-brand {
  height: var(--topbar-h);
  display: flex;
  align-items: center;
  padding: 0 16px;
  border-bottom: 1px solid var(--line);
}
.sidebar-brand img { height: 18px; display: block; }

.sidebar-scroll {
  flex: 1;
  overflow-y: auto;
  padding: 6px 0 16px;
}
.sidebar-scroll::-webkit-scrollbar { width: 6px; }
.sidebar-scroll::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: 3px; }

.nav-section {
  padding: 16px 16px 4px;
  font-size: 10px;
  letter-spacing: 0.12em;
  font-weight: 600;
  color: var(--fg-3);
  text-transform: uppercase;
}
.nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 500;
  color: var(--fg-1);
  cursor: pointer;
  position: relative;
}
.nav-item:hover { background: var(--bg-2); color: var(--fg); }
.nav-item.active {
  background: linear-gradient(90deg, rgba(0,179,230,0.18), rgba(0,179,230,0.04));
  color: var(--fg);
}
.nav-item.active::before {
  content: "";
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 2px; background: var(--cyan);
}
.nav-item .ico { width: 16px; height: 16px; opacity: 0.9; flex-shrink: 0; }

/* Main */
.main {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-width: 0;
}

.topbar {
  height: var(--topbar-h);
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  padding: 0 12px;
  gap: 8px;
  background: var(--bg);
}

.tb-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px;
  border-radius: var(--r);
  color: var(--fg-1);
  font-size: 13px;
}
.tb-btn:hover { background: var(--bg-2); color: var(--fg); }
.tb-btn[disabled] { color: var(--fg-3); cursor: default; }
.tb-btn[disabled]:hover { background: transparent; color: var(--fg-3); }
.tb-btn .ico { width: 14px; height: 14px; }

.tb-spacer { flex: 1; }

.tb-icon {
  position: relative;
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--r);
  color: var(--fg-1);
}
.tb-icon:hover { background: var(--bg-2); color: var(--fg); }
.tb-icon .ico { width: 16px; height: 16px; }
.tb-icon .badge {
  position: absolute; top: 4px; right: 4px;
  min-width: 14px; height: 14px;
  border-radius: 7px;
  background: var(--danger);
  color: #fff;
  font-size: 9px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 3px;
}
.tb-icon .badge.muted { background: var(--bg-3); color: var(--fg-1); }

.workspace {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-height: 0;
}

/* Workspace header (title bar) */
.ws-header {
  height: 40px;
  border-bottom: 1px solid var(--line);
  padding: 0 16px;
  display: flex; align-items: center;
  gap: 12px;
  background: var(--bg);
}
.ws-title { font-weight: 600; font-size: 14px; }
.ws-actions { margin-left: auto; display: flex; gap: 4px; }

/* ========== Cards ========== */
.card {
  background: var(--bg-1);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  overflow: hidden;
}
.card-h {
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  display: flex; align-items: center; gap: 10px;
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--fg-2);
  font-weight: 600;
}
.card-h .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); }
.card-b { padding: 14px; }

/* ========== Pills / chips / badges ========== */
.pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 11px; font-weight: 600;
  background: var(--bg-3);
  color: var(--fg-1);
  border: 1px solid var(--line-strong);
  white-space: nowrap;
}
.pill.ok    { background: rgba(45,210,141,0.12); color: var(--ok);    border-color: rgba(45,210,141,0.3); }
.pill.warn  { background: rgba(255,181,71,0.12); color: var(--warn);  border-color: rgba(255,181,71,0.3); }
.pill.danger{ background: rgba(255,77,106,0.14); color: var(--danger);border-color: rgba(255,77,106,0.32); }
.pill.info  { background: rgba(0,179,230,0.14);  color: var(--cyan);  border-color: rgba(0,179,230,0.32); }
.pill.solid-cyan { background: var(--cyan); color: #001823; border-color: transparent; }
.pill.solid-mag  { background: var(--magenta); color: #fff; border-color: transparent; }

.kbd {
  font-family: var(--font-mono);
  font-size: 11px;
  padding: 2px 6px;
  border-radius: 4px;
  border: 1px solid var(--line-strong);
  background: var(--bg-3);
  color: var(--fg-1);
}

/* Icons (default size for any uncontainered .ico) */
.ico { width: 14px; height: 14px; flex-shrink: 0; display: inline-block; }

/* Buttons */
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  border-radius: var(--r);
  font-size: 13px;
  font-weight: 600;
  background: var(--bg-3);
  color: var(--fg);
  border: 1px solid var(--line-strong);
  transition: background 120ms, transform 80ms;
}
.btn:hover { background: var(--bg-4); }
.btn:active { transform: translateY(1px); }
.btn-primary {
  background: var(--cyan);
  color: #001823;
  border-color: transparent;
}
.btn-primary:hover { background: #1cc0ee; }
.btn-ghost { background: transparent; }
.btn-ghost:hover { background: var(--bg-2); }
.btn-danger { background: var(--danger); color: #fff; border-color: transparent; }

/* KPI tile */
.kpi {
  background: var(--bg-1);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  padding: 12px 14px;
}
.kpi .label {
  font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--fg-2); font-weight: 600;
}
.kpi .value {
  font-size: 22px; font-weight: 700; margin-top: 4px; letter-spacing: -0.01em;
}
.kpi .delta { font-size: 12px; color: var(--fg-2); margin-top: 2px; }
.kpi .delta.ok { color: var(--ok); }
.kpi .delta.bad { color: var(--danger); }

/* Mono labels */
.mono { font-family: var(--font-mono); }
.dim  { color: var(--fg-2); }
.dimmer { color: var(--fg-3); }

/* Section caps */
.cap {
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--fg-2); font-weight: 600;
}

/* Glow accents */
.glow-cyan { box-shadow: 0 0 0 1px rgba(0,179,230,0.4), 0 0 24px rgba(0,179,230,0.2); }
.glow-mag  { box-shadow: 0 0 0 1px rgba(255,0,97,0.45), 0 0 24px rgba(255,0,97,0.22); }

/* Animated stripes for "live" lines */
@keyframes dash-flow { to { stroke-dashoffset: -16; } }
.dashflow { stroke-dasharray: 4 6; animation: dash-flow 0.9s linear infinite; }

@keyframes pulse-ring {
  0%   { transform: scale(0.6); opacity: 0.9; }
  100% { transform: scale(1.8); opacity: 0; }
}
.pulse-ring {
  position: absolute; inset: 0; border-radius: 50%;
  border: 2px solid var(--danger);
  animation: pulse-ring 1.4s ease-out infinite;
}

/* Hero ribbon (above main scene) */
.hero {
  background: linear-gradient(180deg, var(--bg-1), var(--bg));
  border-bottom: 1px solid var(--line);
  padding: 16px 20px;
  display: flex;
  align-items: center;
  gap: 24px;
}
.hero-q {
  flex: 1;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.01em;
}
.hero-q .accent { color: var(--cyan); }
.hero-q .danger { color: var(--danger); }

/* Fixed result ribbon */
.result-ribbon {
  border-top: 1px solid var(--line);
  background: var(--bg-1);
  padding: 10px 16px;
  display: flex;
  gap: 12px;
  align-items: center;
}

/* Phase tracker */
.phases {
  display: flex; gap: 4px;
  background: var(--bg-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 3px;
}
.phase-pill {
  padding: 4px 10px;
  font-size: 11px; font-weight: 600;
  color: var(--fg-2);
  border-radius: 999px;
}
.phase-pill.active { background: var(--cyan); color: #001823; }
.phase-pill.done   { color: var(--fg-1); }

/* Decision card */
.choice {
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  background: var(--bg-1);
  padding: 14px;
  position: relative;
  transition: border-color 200ms, transform 200ms, background 200ms;
}
.choice .label {
  font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--fg-2); font-weight: 600;
}
.choice .name { font-size: 16px; font-weight: 700; margin-top: 4px; }
.choice .row { display: flex; justify-content: space-between; padding: 6px 0; border-top: 1px dashed var(--line); margin-top: 8px; font-size: 12px; }
.choice .row .k { color: var(--fg-2); }
.choice .row .v { font-family: var(--font-mono); }
.choice.win { border-color: var(--ok); background: linear-gradient(180deg, rgba(45,210,141,0.06), transparent); }
.choice.deny { border-color: var(--danger); background: linear-gradient(180deg, rgba(255,77,106,0.06), transparent); }
.choice.warn { border-color: var(--warn); }
.choice .stamp {
  position: absolute; top: 10px; right: 10px;
  font-size: 10px; font-weight: 700; letter-spacing: 0.1em;
  padding: 3px 8px; border-radius: 4px;
}
.choice.win  .stamp { background: var(--ok); color: #00130b; }
.choice.deny .stamp { background: var(--danger); color: #fff; }
.choice.warn .stamp { background: var(--warn); color: #2a1a00; }

/* Trace lines */
.trace {
  display: flex; flex-direction: column; gap: 0;
  font-family: var(--font-mono);
  font-size: 12px;
}
.trace-row {
  display: grid;
  grid-template-columns: 70px 24px 1fr;
  gap: 10px;
  padding: 7px 0;
  border-bottom: 1px dashed var(--line);
  align-items: baseline;
}
.trace-row .t { color: var(--fg-3); }
.trace-row .a { color: var(--cyan); }
.trace-row .m { color: var(--fg); }
.trace-row.deny .m, .trace-row.deny .a { color: var(--danger); }
.trace-row.win  .m, .trace-row.win  .a { color: var(--ok); }
.trace-row.warn .m, .trace-row.warn .a { color: var(--warn); }

/* Sparkline */
.spark { width: 100%; height: 28px; }

/* Counterfactual reveal */
.compare-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
}
.compare-col { padding: 14px; border-radius: var(--r-lg); border: 1px solid var(--line); background: var(--bg-1); }
.compare-col.bad { border-color: rgba(255,77,106,0.4); }
.compare-col.good { border-color: rgba(45,210,141,0.4); }
.compare-col h4 {
  margin: 0 0 8px; font-size: 11px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--fg-2);
}

/* Modal */
.modal-back {
  position: fixed; inset: 0; background: rgba(8,10,14,0.72);
  display: flex; align-items: center; justify-content: center;
  z-index: 50;
  backdrop-filter: blur(6px);
}
.modal {
  background: var(--bg-1);
  border: 1px solid var(--line-strong);
  border-radius: var(--r-xl);
  width: min(720px, 92vw);
  max-height: 86vh; overflow: auto;
  padding: 24px;
}

/* Utility */
.row { display: flex; align-items: center; gap: 8px; }
.col { display: flex; flex-direction: column; gap: 8px; }
.gap-4 { gap: 4px; } .gap-8 { gap: 8px; } .gap-12 { gap: 12px; } .gap-16 { gap: 16px; }
.grow { flex: 1; }
.muted { color: var(--fg-2); }
.scroll-y { overflow-y: auto; }
.scroll-y::-webkit-scrollbar { width: 6px; }
.scroll-y::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: 3px; }

/* Tiny risk meter */
.meter {
  width: 100%; height: 6px;
  background: var(--bg-3); border-radius: 3px;
  overflow: hidden; position: relative;
}
.meter > span {
  position: absolute; left: 0; top: 0; bottom: 0;
  background: linear-gradient(90deg, var(--ok), var(--warn) 50%, var(--danger));
  transition: width 600ms ease;
}

/* Header actions row in workspace */
.bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--line);
  background: var(--bg);
}
