:root { --ink: #1c1c1c; --muted: #6b6b6b; --line: #ddd; --bg: #fafafa; --panel: #fff; --accent: #245ea8; --warn: #a15c00; --warnbg: #fff4e0; --badge: #eef2f7; }
@media (prefers-color-scheme: dark) { :root { --ink: #e8e8e8; --muted: #9a9a9a; --line: #333; --bg: #141414; --panel: #1d1d1d; --accent: #7fb0ff; --warn: #f0b35a; --warnbg: #3a2a10; --badge: #2a2f38; } }
* { box-sizing: border-box; }
body { margin: 0; font: 14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif; color: var(--ink); background: var(--bg); }
a { color: var(--accent); }
main { padding: 16px 24px 48px; max-width: 1500px; margin: 0 auto; }
header.top { display: flex; justify-content: space-between; align-items: center; padding: 10px 24px; border-bottom: 1px solid var(--line); background: var(--panel); }
header.top .brand { font-weight: 600; text-decoration: none; color: var(--ink); }
header.top nav a { margin-right: 16px; }
form.inline { display: inline; }
button.link { background: none; border: 0; color: var(--accent); cursor: pointer; font: inherit; padding: 0; }
h1 { font-size: 22px; margin: 8px 0 12px; } h2 { font-size: 17px; margin: 28px 0 8px; } h3 { font-size: 15px; margin: 0 0 6px; }
.narrow { max-width: 420px; margin: 48px auto; }
label { display: block; margin: 8px 0; } input, select, button { font: inherit; padding: 6px 8px; }
button[type=submit] { background: var(--accent); color: #fff; border: 0; border-radius: 4px; padding: 8px 14px; cursor: pointer; }
.muted { color: var(--muted); } .error { color: var(--warn); } .warn { color: var(--warn); }
.badge { display: inline-block; font-size: 11px; padding: 1px 6px; border-radius: 3px; background: var(--badge); color: var(--ink); vertical-align: middle; }
.badge.warn { background: var(--warnbg); color: var(--warn); }
.filters { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; margin-bottom: 12px; } .filters label { margin: 0; font-size: 12px; color: var(--muted); } .filters select, .filters input { display: block; }
table { border-collapse: collapse; width: 100%; background: var(--panel); }
th, td { text-align: left; padding: 5px 8px; border-bottom: 1px solid var(--line); vertical-align: top; }
th { font-weight: 600; font-size: 12px; color: var(--muted); } td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.facts span { margin-right: 14px; } .links a { margin-right: 12px; }
.session-head { padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.timeline-wrap { overflow-x: auto; background: var(--panel); border: 1px solid var(--line); border-radius: 4px; }
#timeline svg { display: block; font: 11px system-ui, sans-serif; }
#timeline .lane-label { fill: var(--muted); } #timeline .axis text { fill: var(--muted); } #timeline .axis line, #timeline .grid { stroke: var(--line); }
#timeline .turn-label { fill: var(--accent); cursor: pointer; font-weight: 600; } #timeline .turn-line { stroke: var(--accent); stroke-opacity: .35; stroke-dasharray: 3 3; }
#timeline .bar { stroke: rgba(0,0,0,.25); stroke-width: .5; } #timeline .tick { stroke-width: 2; }
#timeline .interviewee { fill: #6c8ebf; } #timeline .recogniser { fill: #7fb07f; } #timeline .engine { fill: #d98c3f; } #timeline .voice { fill: #b07fc9; } #timeline .player { fill: #4fa8b8; } #timeline .planner { fill: #c9a23f; } #timeline .notes { fill: #999; } #timeline .cost { fill: #777; }
#timeline .derived { fill: url(#hatch); } #timeline .call { fill-opacity: .55; }
.turn { background: var(--panel); border: 1px solid var(--line); border-radius: 4px; padding: 12px 14px; margin: 12px 0; }
.turn .said { margin: 4px 0; } .turn .said b { display: inline-block; width: 100px; color: var(--muted); font-size: 12px; }
table.stages { width: auto; min-width: 620px; margin: 10px 0; } table.stages tr.group th { padding-top: 10px; color: var(--ink); } table.stages tr.unobservable td { color: var(--muted); } table.stages tr.derived td:nth-child(2) { background: repeating-linear-gradient(45deg, transparent 0 4px, rgba(128,128,128,.15) 4px 6px); }
table.calls { width: auto; min-width: 620px; } ul.events { list-style: none; padding-left: 0; margin: 6px 0; font-size: 13px; } ul.events li { margin: 2px 0; }
ul.recordings { list-style: none; padding: 0; } ul.recordings li { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 6px 0; } ul.recordings audio { height: 32px; }
table.agenda td.status-done { color: #3a8a3a; } table.agenda td.status-gone { color: var(--muted); } table.agenda tr.inserted td:first-child { font-style: italic; }
details { margin: 6px 0; } pre { background: var(--panel); border: 1px solid var(--line); padding: 10px; overflow-x: auto; font-size: 12px; max-height: 480px; }
code { font-size: 12px; }
@media (max-width: 700px) { main { padding: 12px; } .turn .said b { width: auto; display: block; } table.stages, table.calls { min-width: 0; } }
a.button, button.secondary, button.danger { display: inline-block; padding: 8px 14px; border-radius: 4px; text-decoration: none; font: inherit; cursor: pointer; }
a.button { background: var(--accent); color: #fff; } button.secondary { background: var(--badge); color: var(--ink); border: 1px solid var(--line); } button.danger { background: transparent; color: var(--warn); border: 1px solid var(--warn); }
.actions form { margin-right: 8px; } .narrow.wide { max-width: 720px; } textarea { width: 100%; font: inherit; padding: 6px 8px; } input[name=name], input[name=email], input[name=phone_number] { width: 100%; }
.badge.status-invited { background: #e6f0ff; color: #1d4ea3; } .badge.status-in_progress { background: #fff2cc; color: #7a5a00; } .badge.status-completed, .badge.status-done, .badge.status-covered { background: #e3f4e3; color: #2f6f2f; } .badge.status-preparing { background: var(--badge); } .badge.status-failed, .badge.status-revoked, .badge.status-expired { background: var(--warnbg); color: var(--warn); }
.transcript .said b { width: 110px; } .transcript .said.interviewer { color: var(--muted); } ul.coverage { list-style: none; padding: 0; } ul.coverage li { margin: 4px 0; }
