/* ── Reset / base ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-family: system-ui, sans-serif; background: #0f1117; color: #d1d5db; } a { color: inherit; text-decoration: none; } a:hover { text-decoration: underline; } input, select, textarea, button { font: inherit; background: #1f2937; color: #f3f4f6; border: 1px solid #374151; border-radius: 4px; padding: .375rem .625rem; } input:focus, select:focus, textarea:focus { outline: 1px solid #6366f1; } button { cursor: pointer; } /* ── Layout ── */ .nav { background: #111827; border-bottom: 1px solid #1f2937; padding: .75rem 1.5rem; display: flex; gap: 1.5rem; align-items: center; } .nav-brand { font-weight: 700; color: #f9fafb; font-size: 1.1rem; } .nav a { font-size: .875rem; color: #9ca3af; } .nav a:hover { color: #f3f4f6; text-decoration: none; } main { max-width: 760px; margin: 2rem auto; padding: 0 1.5rem; } /* ── Page header ── */ .page-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; } .page-header h1 { font-size: 1.5rem; font-weight: 700; color: #f9fafb; } .back { color: #6b7280; font-size: 1.25rem; text-decoration: none; } .back:hover { color: #9ca3af; } /* ── Detail header ── */ .detail-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 2rem; } .detail-info h1 { font-size: 1.75rem; font-weight: 700; color: #f9fafb; } .detail-subtitle { display: flex; gap: .75rem; color: #6b7280; font-size: .875rem; margin-top: .25rem; } .detail-desc { color: #9ca3af; font-size: .875rem; margin-top: .5rem; white-space: pre-wrap; } .detail-actions { display: flex; gap: .5rem; flex-shrink: 0; } /* ── Sections ── */ section { margin-bottom: 2rem; } section h2 { font-size: 1rem; font-weight: 600; color: #9ca3af; text-transform: uppercase; letter-spacing: .05em; margin-bottom: .75rem; } /* ── Member list (detail view) ── */ .member-list { display: flex; flex-direction: column; gap: .5rem; } .member-list li { display: flex; flex-direction: column; gap: .25rem; } .member-main { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; } .member-list a { color: #60a5fa; font-weight: 500; } .member-list a:hover { color: #93c5fd; } /* ── Period display (detail view) ── */ .period-list { list-style: none; display: flex; flex-direction: column; gap: .125rem; padding-left: .75rem; border-left: 2px solid #374151; margin-top: .125rem; } .period-item { display: flex; gap: .5rem; align-items: baseline; font-size: .8rem; } .period-range { color: #9ca3af; } .period-note { color: #6b7280; } /* ── Link list ── */ .link-list { display: flex; flex-direction: column; gap: .375rem; } .link-list a { color: #60a5fa; font-size: .875rem; } .link-list a:hover { color: #93c5fd; } /* ── Band list / home ── */ .band-list { display: flex; flex-direction: column; gap: .5rem; } .band-item { display: flex; align-items: center; gap: .75rem; padding: .75rem; background: #111827; border-radius: 6px; } .band-item a { font-weight: 500; color: #f3f4f6; flex: 1; } .band-item a:hover { color: #60a5fa; text-decoration: none; } /* ── Meta ── */ .meta { font-size: .75rem; color: #6b7280; display: flex; flex-direction: column; gap: .25rem; } .meta a { color: #6b7280; } .meta a:hover { color: #9ca3af; } .updated { color: #6b7280; } .muted { color: #6b7280; font-size: .875rem; } /* ── Buttons ── */ .btn { display: inline-flex; align-items: center; padding: .375rem .875rem; border-radius: 4px; font-size: .875rem; background: #1f2937; border: 1px solid #374151; color: #d1d5db; text-decoration: none; } .btn:hover { background: #374151; text-decoration: none; } button[type="submit"], .btn-primary { background: #4f46e5; border-color: #4f46e5; color: #fff; padding: .375rem .875rem; border-radius: 4px; } button[type="submit"]:hover, .btn-primary:hover { background: #4338ca; } .btn-text { background: none; border: none; color: #60a5fa; font-size: .8rem; padding: .25rem .125rem; } .btn-text:hover { color: #93c5fd; } .btn-icon { background: none; border: none; color: #6b7280; font-size: .875rem; padding: .25rem .375rem; } .btn-icon:hover { color: #f3f4f6; } .edit, .history { font-size: .875rem; color: #6b7280; padding: .375rem .75rem; border: 1px solid #374151; border-radius: 4px; } .edit:hover, .history:hover { color: #d1d5db; border-color: #6b7280; text-decoration: none; } /* ── Badges ── */ .badge { display: inline-flex; align-items: center; gap: .25rem; background: #1e3a5f; color: #93c5fd; font-size: .75rem; padding: .125rem .5rem; border-radius: 9999px; } .badge button { background: none; border: none; color: #60a5fa; font-size: .7rem; padding: 0; line-height: 1; } .badge button:hover { color: #f87171; } /* ── Form ── */ form { display: flex; flex-direction: column; gap: 1rem; } form > div { display: flex; flex-direction: column; gap: .375rem; } form label { font-size: .875rem; color: #9ca3af; } form input, form select, form textarea { width: 100%; } .req { color: #f87171; } .error { font-size: .75rem; color: #f87171; } .mono { font-family: monospace; } /* ── Actions row ── */ .actions { display: flex; gap: .75rem; align-items: center; padding-top: .5rem; } /* ── Links form ── */ .links-form { display: flex; flex-direction: column; gap: .5rem; margin-bottom: .75rem; } .link-row { display: flex; gap: .5rem; align-items: center; } .link-row input { width: auto; flex: 1; min-width: 0; } .link-row .label-input { flex: 0 0 7rem; } .link-row select { width: 9rem; flex-shrink: 0; } /* ── Members form (edit/new) ── */ .members-form { display: flex; flex-direction: column; gap: .75rem; margin-bottom: .75rem; } .member-group { background: #111827; border-radius: 6px; overflow: hidden; } .member-group > .card-header { display: flex; justify-content: space-between; align-items: center; padding: .625rem .75rem; border-bottom: 1px solid #1f2937; } .member-card { padding: .75rem; border-top: 1px solid #1f2937; } .member-card:first-of-type { border-top: none; } .member-card .badges { display: flex; flex-wrap: wrap; gap: .375rem; margin-bottom: .5rem; } .member-card .role-row { display: flex; gap: .5rem; align-items: center; margin-bottom: .5rem; } .member-card .role-row .custom-input { width: 8rem; flex: none; } .card-name { font-size: .875rem; font-weight: 500; color: #e5e7eb; } /* ── Period row (edit/new form) ── */ .period-row { display: flex; gap: .5rem; align-items: center; margin-top: .5rem; } .period-row input { flex: 1; min-width: 0; font-size: .8rem; } .period-row .period-note { flex: 1.5; } .period-sep { color: #6b7280; flex-shrink: 0; font-size: .875rem; } /* ── Revision list ── */ .rev-list { display: flex; flex-direction: column; gap: 1rem; } .rev { background: #111827; border-radius: 6px; padding: 1rem; } .rev-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; } .rev-main { flex: 1; min-width: 0; } .rev-message { font-weight: 500; color: #f3f4f6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .rev-time { font-size: .75rem; color: #6b7280; margin-top: .25rem; } .rev-latest { font-size: .75rem; color: #60a5fa; flex-shrink: 0; } .rev-snap { font-size: .75rem; color: #9ca3af; margin-top: .75rem; display: flex; flex-direction: column; gap: .125rem; }