summaryrefslogtreecommitdiff
path: root/app/app.css
diff options
context:
space:
mode:
authoryyamashita <yyamashita@hetzner.yyamashita.com>2026-08-15 18:57:59 +0900
committeryyamashita <yyamashita@hetzner.yyamashita.com>2026-08-15 18:57:59 +0900
commit59a9f4984c3acd29bc746a78e30849f50fa555ee (patch)
treeb9dab024c0c5d1d68e023b8f49eb0716b97965bd /app/app.css
parenta100fb28f92fa7c5d2cf701d118c4c7b898c9bf2 (diff)
Add Claude-powered band auto-registration from live info text
Extracts band/artist names from pasted live info via Claude (API or CLI adapter), matches against existing bands, and lets the user review and bulk-register new ones through a polling job queue. Also adds a livehouse events import script and recent-bands/artists home page sections. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Diffstat (limited to 'app/app.css')
-rw-r--r--app/app.css39
1 files changed, 39 insertions, 0 deletions
diff --git a/app/app.css b/app/app.css
index 90dc85f..9125f90 100644
--- a/app/app.css
+++ b/app/app.css
@@ -163,6 +163,45 @@ form input, form select, form textarea { width: 100%; }
.entry-band { font-weight: 500; color: #e5e7eb; }
.entry-note { font-size: .8rem; color: #6b7280; margin-top: .125rem; }
+/* ── Job list ── */
+
+.job-list { display: flex; flex-direction: column; gap: .25rem; }
+.job-row { display: flex; align-items: baseline; gap: .75rem; padding: .5rem .75rem; background: #111827; border-radius: 4px; text-decoration: none; }
+.job-row:hover { background: #1f2937; text-decoration: none; }
+.job-status { flex-shrink: 0; font-size: .75rem; font-weight: 600; width: 4rem; }
+.job-preview { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #d1d5db; font-size: .875rem; }
+.job-time { flex-shrink: 0; font-size: .75rem; color: #6b7280; font-variant-numeric: tabular-nums; }
+.job-meta { display: flex; align-items: center; gap: 1rem; margin-bottom: .5rem; }
+
+/* ── Spinner ── */
+
+@keyframes spin { to { transform: rotate(360deg); } }
+.spinner { display: inline-block; width: 1rem; height: 1rem; border: 2px solid #374151; border-top-color: #6366f1; border-radius: 50%; animation: spin .8s linear infinite; flex-shrink: 0; }
+
+/* ── Auto-register ── */
+
+.auto-register-list { display: flex; flex-direction: column; gap: .5rem; }
+
+.auto-register-row { display: flex; gap: .75rem; align-items: flex-start; padding: .75rem; border-radius: 6px; border-left: 3px solid #374151; background: #111827; }
+.auto-register-row.conf-exact { border-left-color: #374151; opacity: .7; }
+.auto-register-row.conf-fuzzy { border-left-color: #d97706; }
+.auto-register-row.conf-new { border-left-color: #4f46e5; }
+
+.ar-left { width: 1.25rem; padding-top: .125rem; flex-shrink: 0; }
+.ar-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .35rem; }
+.ar-name { font-weight: 500; color: #e5e7eb; }
+.ar-name-input { font-size: .9rem; width: 100%; background: #1f2937; }
+
+.ar-status { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; font-size: .8rem; }
+.ar-badge { display: inline-block; padding: .1rem .45rem; border-radius: 9999px; font-size: .7rem; font-weight: 600; }
+.ar-exact .ar-badge { background: #1f2937; color: #6b7280; }
+.ar-fuzzy .ar-badge { background: #451a03; color: #fbbf24; }
+.ar-new .ar-badge { background: #1e1b4b; color: #818cf8; }
+
+.ar-link { color: #60a5fa; font-size: .8rem; }
+.ar-link:hover { color: #93c5fd; }
+.ar-candidate { color: #9ca3af; }
+
/* ── Entry form rows (new/edit) ── */
.entry-row { display: flex; gap: .5rem; align-items: center; margin-bottom: .375rem; }