/* precrime brutalist: 2px ink borders, zero radius, paper ground, flat pastel
   status pills. No dark mode -- house rule, and this file is where that gets
   enforced rather than argued about. */

:root {
  --paper: #f5f4ee;
  --card: #fffefa;
  --ink: #1a1a1a;
  --ink2: #4a4845;
  --ink3: #7a7770;
  --rule: #1a1a1a;

  --ok: #e0fff1;
  --warn: #fcf7dc;
  --bad: #ffe6e6;
  --info: #afeffd;
  --accent: #f4e1fc;

  --disp: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  padding: 40px 20px;
  background: var(--paper);
  color: var(--ink);
  font: 14px/1.55 ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  display: flex;
  justify-content: center;
}

.wrap { width: 100%; max-width: 620px; }
.wrap.wide { max-width: 900px; }

h1 {
  font-size: 15px;
  letter-spacing: .1em;
  text-transform: uppercase;
  margin: 0 0 4px;
}

.sub { color: var(--ink3); font-size: 12px; margin: 0 0 22px; }

.card {
  background: var(--card);
  border: 2px solid var(--ink);
  padding: 20px;
  margin-bottom: 18px;
}

.card h2 {
  font-size: 11px;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--ink2);
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--ink);
}

button {
  font: inherit;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  background: var(--card);
  color: var(--ink);
  border: 2px solid var(--ink);
  padding: 11px 18px;
  cursor: pointer;
  width: 100%;
  margin-bottom: 9px;
}

button:hover:not(:disabled) { background: var(--accent); }
button:disabled { color: var(--ink3); cursor: not-allowed; }
button.ghost { background: transparent; font-weight: 400; text-transform: none; letter-spacing: 0; }
button.narrow { width: auto; padding: 6px 12px; font-size: 11px; margin: 0; }

input {
  font: inherit;
  width: 100%;
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  padding: 10px 12px;
  margin-bottom: 9px;
}

input::placeholder { color: var(--ink3); }

.pill {
  display: inline-block;
  border: 2px solid var(--ink);
  padding: 2px 8px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  /* Pills sit inside table rows; without this the 2px bottom border clips
     against the row edge, which is the defect that kept turning up in the
     energy dashboard audit. */
  line-height: 1.5;
  vertical-align: middle;
}

.pill.ok   { background: var(--ok); }
.pill.warn { background: var(--warn); }
.pill.bad  { background: var(--bad); }
.pill.info { background: var(--info); }

.msg { border: 2px solid var(--ink); padding: 11px 13px; margin-bottom: 14px; font-size: 12.5px; }
.msg.ok   { background: var(--ok); }
.msg.bad  { background: var(--bad); }
.msg.warn { background: var(--warn); }
.msg.info { background: var(--info); }
.msg:empty { display: none; }

table { width: 100%; border-collapse: collapse; font-size: 12.5px; }

th {
  text-align: left;
  font-weight: 700;
  font-size: inherit;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ink2);
  border-bottom: 2px solid var(--ink);
  padding: 7px 9px;
  white-space: nowrap;
}

td { padding: 7px 9px; border-bottom: 1px solid #e4e2da; vertical-align: middle; }
tr:last-child td { border-bottom: none; }
td.nowrap { white-space: nowrap; }

.key {
  font-size: 17px;
  letter-spacing: .12em;
  word-break: break-all;
  background: var(--warn);
  border: 2px solid var(--ink);
  padding: 15px;
  margin: 12px 0;
  text-align: center;
}

.note { color: var(--ink3); font-size: 11.5px; margin-top: 10px; }
.row { display: flex; gap: 9px; align-items: center; }
.row > * { margin-bottom: 0; }
.hide { display: none; }
a { color: var(--ink); }
