:root { --bg: #0a0e12; --panel: #10161c; --border: #223038; --text: #d8e4e8; --muted: #7f97a0; --accent: #00fff2; --accent-dim: #00b3a8; --working: #33d17a; --partial: #f5b23c; --broken: #f0506e; } * { box-sizing: border-box; } body { margin: 0; background: var(--bg); color: var(--text); font-family: ui-monospace, "SF Mono", Consolas, monospace; line-height: 1.5; } header, main, footer { max-width: 1100px; margin: 0 auto; padding: 1.5rem; } h1 { color: var(--accent); letter-spacing: 0.08em; margin-bottom: 0.25rem; } a { color: var(--accent-dim); } a:hover { color: var(--accent); } header p { color: var(--muted); max-width: 70ch; } header .cta { color: var(--text); } header .cta-secondary { color: var(--muted); font-size: 0.85rem; max-width: 70ch; } header .cta-secondary code { background: var(--panel); padding: 0.1rem 0.35rem; border-radius: 3px; color: var(--text); } .controls { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; margin-bottom: 1rem; } #search { flex: 1 1 260px; min-width: 200px; } input, select { background: var(--panel); border: 1px solid var(--border); color: var(--text); padding: 0.5rem 0.7rem; border-radius: 4px; font-family: inherit; font-size: 0.9rem; } input:focus, select:focus { outline: none; border-color: var(--accent-dim); } .count { color: var(--muted); font-size: 0.85rem; margin-left: auto; } table { width: 100%; border-collapse: collapse; font-size: 0.85rem; } thead th { text-align: left; padding: 0.6rem 0.7rem; border-bottom: 2px solid var(--border); color: var(--muted); cursor: pointer; user-select: none; white-space: nowrap; } thead th:hover { color: var(--accent); } tbody tr { border-bottom: 1px solid var(--border); } tbody tr:hover { background: var(--panel); } tbody tr.expandable { cursor: pointer; } td { padding: 0.6rem 0.7rem; vertical-align: top; } .badge { display: inline-block; padding: 0.15rem 0.5rem; border-radius: 3px; font-size: 0.75rem; font-weight: bold; text-transform: uppercase; letter-spacing: 0.03em; } .badge.working { background: rgba(51, 209, 122, 0.15); color: var(--working); } .badge.partial { background: rgba(245, 178, 60, 0.15); color: var(--partial); } .badge.broken { background: rgba(240, 80, 110, 0.15); color: var(--broken); } .detail-row td { background: var(--panel); color: var(--muted); white-space: pre-wrap; font-size: 0.82rem; padding: 0.8rem 1.2rem; } .detail-row strong { color: var(--text); } .empty { color: var(--muted); text-align: center; padding: 2rem; } footer { color: var(--muted); font-size: 0.8rem; border-top: 1px solid var(--border); margin-top: 2rem; } footer code { background: var(--panel); padding: 0.1rem 0.35rem; border-radius: 3px; } h1 a { color: inherit; text-decoration: none; } h1 a:hover { color: var(--accent); } .report-form { display: flex; flex-direction: column; gap: 1rem; max-width: 640px; } .field { display: flex; flex-direction: column; gap: 0.3rem; flex: 1; } .field-row { display: flex; gap: 1rem; flex-wrap: wrap; } .field-row .field { min-width: 140px; } label { color: var(--muted); font-size: 0.85rem; } .required-hint { color: var(--partial); font-weight: normal; } textarea { background: var(--panel); border: 1px solid var(--border); color: var(--text); padding: 0.5rem 0.7rem; border-radius: 4px; font-family: inherit; font-size: 0.9rem; resize: vertical; } textarea:focus, .report-form input:focus, .report-form select:focus { outline: none; border-color: var(--accent-dim); } .report-form input, .report-form select { width: 100%; } .form-error { color: var(--broken); font-size: 0.85rem; } .report-form button { align-self: flex-start; background: var(--accent); color: var(--bg); border: none; padding: 0.7rem 1.2rem; border-radius: 4px; font-family: inherit; font-weight: bold; font-size: 0.9rem; cursor: pointer; } .report-form button:hover { background: var(--accent-dim); }