/* Cassandra — panel chrome, tables, status LEDs, utility colour classes. */

/* --- Panels ----------------------------------------------------------- */

.panel {
  background: var(--surface);
  border: 1px solid var(--border);
  position: relative;
}
.panel-header {
  border-bottom: 1px solid var(--border);
  padding: 8px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted);
  font-size: 11px;
  background: linear-gradient(180deg, var(--surface-2), var(--surface));
}
.panel-header .title { color: var(--text); font-weight: 700; }
.panel-header .title::before { content: "■ "; color: var(--accent); }
.panel-header .meta  { color: var(--dim); }
.panel-body { padding: 6px 0; }
.panel-body--scroll { max-height: 70vh; overflow-y: auto; }

/* --- Tables ----------------------------------------------------------- */

table.dense {
  width: 100%;
  border-collapse: collapse;
}
table.dense th, table.dense td {
  padding: 4px 12px;
  font-size: 12px;
  border-bottom: 1px solid var(--surface-2);
  white-space: nowrap;
}
table.dense th {
  text-align: left;
  color: var(--muted);
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 10px;
  background: var(--surface-2);
}
table.dense th.num,
table.dense td.num { text-align: right; }
table.dense td.label { color: var(--text); }
table.dense td.label.has-tip,
table.dense td[title] {
  cursor: help;
  border-bottom: 1px dotted color-mix(in srgb, var(--accent) 40%, transparent);
  border-bottom-width: 1px;
}
.pf-name.has-tip {
  cursor: help;
  border-bottom: 1px dotted color-mix(in srgb, var(--accent) 50%, transparent);
}
table.dense tr:hover td { background: color-mix(in srgb, var(--accent) 5%, transparent); }

.pos { color: var(--positive); }
.neg { color: var(--negative); }
.neu { color: var(--muted); }

/* --- Status LEDs ------------------------------------------------------ */

.led { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; vertical-align: middle; }
.led.ok      { background: var(--positive); box-shadow: 0 0 6px var(--positive); }
.led.warn    { background: var(--warning); box-shadow: 0 0 6px var(--warning); }
.led.err     { background: var(--negative); box-shadow: 0 0 6px var(--negative); }
.led.idle    { background: var(--dim); }

/* --- Empty / loading state ------------------------------------------- */

.empty {
  padding: 24px;
  text-align: center;
  color: var(--muted);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.htmx-indicator {
  display: inline-block;
  color: var(--dim);
  opacity: 0;
  transition: opacity 0.2s;
}
.htmx-request .htmx-indicator { opacity: 1; }


/* --- Mobile (≤480px) -------------------------------------------------- */

@media (max-width: 480px) {
  /* Force panels and their bodies to honour the parent grid cell
     width, even when descendants (tables, code blocks, long URLs)
     have intrinsic widths that exceed the viewport. min-width:0 is
     the magic that lets flex/grid items shrink past min-content;
     max-width:100% caps the box itself. */
  .panel { min-width: 0; max-width: 100%; }
  .panel-body { min-width: 0; max-width: 100%; }

  .panel-header {
    padding: 8px 10px;
    gap: 8px;
  }
  .panel-header .title { font-size: 12px; }
  .panel-header .meta { font-size: 10px; }
  .panel-body { padding: 4px 6px; }
  /* Scroll panels lose some vertical room on small screens so the
     stacked layout doesn't push log/news off the fold. */
  .panel-body--scroll { max-height: 60vh; }

  /* Tables: dropping white-space:nowrap lets long Symbol / Label cells
     wrap to a second line instead of forcing the table wider than the
     panel. Numeric cells stay nowrap since "−12.34%" wrapping would be
     unreadable. */
  table.dense { table-layout: auto; }
  table.dense th, table.dense td { white-space: normal; }
  table.dense .num { white-space: nowrap; }

  /* Final safety net: if a descendant still insists on being wider
     than the panel (e.g. a wide pre/code block in the AI output),
     scroll it horizontally inside the panel rather than blowing the
     whole page out. */
  .panel-body pre,
  .panel-body code { max-width: 100%; overflow-x: auto; }
}
