/* Artifice Asset Inventory — extracted from assets.html */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/static/fonts/inter-latin.woff2) format('woff2');
}
@font-face {
  font-family: 'Fira Code';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/static/fonts/fira-code-latin.woff2) format('woff2');
}
:root {
  --bg: #0f1923;
  --bg-deep: #0b1420;
  --panel: #162233;
  --panel-alt: #111b2b;
  --border: #243447;
  --border-dim: #141e32;
  --text: #d4dce6;
  --text-dim: #7a8a9e;
  --text-muted: #384560;
  --accent: #5b8af0;
  --accent-cyan: #32b8c6;
  --color-danger: #ef4444;
  --color-warning: #f59e0b;
  --color-success: #22c55e;
  --font-mono: 'Fira Code','Cascadia Code','Consolas','Courier New', monospace;
  --font-ui: 'Inter','Segoe UI', system-ui, -apple-system, sans-serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body { background: var(--bg); color: var(--text); font-family: var(--font-ui); font-size: 14px; -webkit-font-smoothing: antialiased; }

.topbar {
  display: flex; align-items: center; gap: 16px; padding: 10px 20px;
  background: var(--panel); border-bottom: 1px solid var(--border);
  z-index: 10;
}
.topbar h1 { font-size: 1em; font-weight: 700; white-space: nowrap; }
.topbar h1 span { color: var(--color-danger); }
.topbar .stats { font-size: 0.82em; color: var(--text-dim); font-family: var(--font-mono); }
.topbar .stats b { color: var(--text); }
.topbar .actions { display: flex; gap: 8px; margin-left: auto; }
.btn {
  padding: 5px 14px; border: 1px solid var(--border); border-radius: 4px;
  background: var(--panel-alt); color: var(--text); font-size: 0.82em;
  cursor: pointer; font-family: var(--font-ui); text-decoration: none;
  transition: border-color 0.15s;
}
.btn:hover { border-color: var(--accent); }
.btn-accent { border-color: var(--accent); color: var(--accent); }

.toolbar {
  display: flex; align-items: center; gap: 12px; padding: 10px 20px;
  background: var(--bg-deep); border-bottom: 1px solid var(--border-dim);
  flex-wrap: wrap;
}
.toolbar input[type="search"] {
  padding: 6px 10px; background: var(--panel); border: 1px solid var(--border);
  border-radius: 4px; color: var(--text); font-family: var(--font-ui); font-size: 0.88em;
  width: 240px;
}
.toolbar input:focus { border-color: var(--accent); outline: none; }
.toolbar .filter-group { display: flex; gap: 4px; align-items: center; }
.toolbar select {
  padding: 5px 8px; background: var(--panel); border: 1px solid var(--border);
  border-radius: 4px; color: var(--text); font-family: var(--font-ui); font-size: 0.82em;
}
.toolbar .count { font-size: 0.82em; color: var(--text-dim); margin-left: auto; font-family: var(--font-mono); }

.table-wrap { overflow-x: auto; padding: 0 20px 20px; }
table { width: 100%; border-collapse: collapse; font-size: 0.88em; }
thead { z-index: 5; }
th {
  text-align: left; padding: 8px 10px; font-size: 0.75em; text-transform: uppercase;
  color: var(--text-dim); background: var(--panel); border-bottom: 2px solid var(--border);
  font-weight: 600; letter-spacing: 0.3px; cursor: pointer; user-select: none;
  white-space: nowrap;
}
th:hover { color: var(--accent); }
th .sort-arrow { font-size: 0.7em; margin-left: 3px; opacity: 0.5; }
th.sorted .sort-arrow { opacity: 1; color: var(--accent); }
td {
  padding: 6px 10px; border-bottom: 1px solid var(--border-dim);
  font-family: var(--font-mono); font-size: 0.92em; vertical-align: top;
}
tr:hover td { background: rgba(91,138,240,0.03); }
.role-tag {
  display: inline-block; padding: 1px 8px; border-radius: 3px;
  font-size: 0.85em; font-family: var(--font-ui); white-space: nowrap;
}
.proto-tag {
  display: inline-block; padding: 1px 5px; margin: 1px; border-radius: 2px;
  font-size: 0.78em; border: 1px solid;
}
.auth-yes { color: var(--color-success); }
.auth-no { color: var(--color-warning); }
.pri-crit { color: var(--color-danger); font-weight: 600; }
.pri-high { color: var(--color-warning); }
.pri-low { color: var(--text-dim); }
.detail-cell { font-family: var(--font-ui); font-size: 0.85em; color: var(--text-dim); max-width: 300px; }
.detail-cell .lbl { color: var(--text-muted); }
.type-tag {
  display: inline-block; padding: 1px 6px; border-radius: 3px;
  font-size: 0.78em; font-family: var(--font-ui); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.3px;
}
.type-local { background: rgba(34,197,94,0.1); color: var(--color-success); border: 1px solid rgba(34,197,94,0.25); }
.type-external { background: rgba(139,92,246,0.1); color: #8b5cf6; border: 1px solid rgba(139,92,246,0.25); }
.type-network { background: rgba(122,138,158,0.1); color: var(--text-dim); border: 1px solid rgba(122,138,158,0.25); }
.section-divider {
  padding: 10px 10px 6px; font-size: 0.78em; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.5px; border-bottom: 1px solid var(--border);
}
.section-divider.local { color: var(--color-success); }
.section-divider.external { color: #8b5cf6; }
.section-divider.network { color: var(--text-dim); }

.expand-btn {
  background: none; border: none; color: var(--text-dim); cursor: pointer;
  font-size: 0.9em; padding: 2px 4px;
}
.expand-btn:hover { color: var(--accent); }
tr.detail-row td {
  padding: 8px 10px 12px 30px; background: var(--bg-deep);
  border-bottom: 1px solid var(--border);
}
.conn-line { padding: 2px 0; font-size: 0.85em; }
.risk-line { padding: 2px 0; font-size: 0.85em; }

.ephemeral-toggle {
  display: inline-block; padding: 1px 6px; margin: 1px; border-radius: 2px;
  font-size: 0.72em; border: 1px solid #64748b44; background: #64748b08;
  color: #64748b; cursor: pointer; user-select: none; vertical-align: middle;
}
.ephemeral-toggle:hover { border-color: #64748b88; background: #64748b18; }
.ephemeral-ports { display: none; margin-top: 2px; }
.ephemeral-ports.open { display: inline; }

@media print {
  body { background: #fff; color: #111; }
  .topbar, .toolbar { background: #f5f5f5; border-color: #ddd; }
  th { background: #eee; border-color: #ccc; color: #333; }
  td { border-color: #eee; }
  .btn { display: none; }
}
