/* Tabs */
.tab-btn {
  padding: 0.4rem 0.85rem;
  border-radius: 0.375rem;
  font-size: 0.875rem;
  color: rgb(71 85 105);
  transition: background-color 120ms, color 120ms;
}
.tab-btn:hover { background-color: rgb(241 245 249); color: rgb(15 23 42); }
.tab-btn.active { background-color: rgb(15 23 42); color: white; }
.tab-btn.active:hover { background-color: rgb(30 41 59); color: white; }

/* View toggle */
.view-btn {
  padding: 0.25rem 0.6rem;
  border-radius: 0.25rem;
  color: rgb(71 85 105);
}
.view-btn:hover { color: rgb(15 23 42); }
.view-btn.active { background-color: rgb(15 23 42); color: white; }

/* File list items */
.file-item {
  display: block;
  padding: 0.5rem 0.75rem;
  border-radius: 0.375rem;
  cursor: pointer;
  transition: background-color 120ms;
}
.file-item:hover { background-color: rgb(241 245 249); }
.file-item.active { background-color: rgb(224 231 255); color: rgb(30 27 75); }
.file-item .file-title { display: block; font-size: 0.875rem; font-weight: 500; }
.file-item .file-sub { display: block; font-size: 0.75rem; color: rgb(100 116 139); margin-top: 0.125rem; }
.file-item.active .file-sub { color: rgb(67 56 202); }

/* Markdown content */
.prose-md h1 { font-size: 1.5rem; font-weight: 700; margin: 0 0 0.75rem 0; }
.prose-md h2 { font-size: 1.125rem; font-weight: 600; margin: 1.25rem 0 0.5rem 0; padding-top: 0.75rem; border-top: 1px solid rgb(226 232 240); }
.prose-md h2:first-child { padding-top: 0; border-top: none; }
.prose-md h3 { font-size: 1rem; font-weight: 600; margin: 1rem 0 0.4rem 0; color: rgb(51 65 85); }
.prose-md p, .prose-md ul, .prose-md ol { margin: 0.5rem 0; line-height: 1.6; font-size: 0.9rem; }
.prose-md ul { list-style: disc; padding-left: 1.5rem; }
.prose-md ol { list-style: decimal; padding-left: 1.5rem; }
.prose-md li { margin: 0.2rem 0; }
.prose-md code { background-color: rgb(241 245 249); padding: 0.1rem 0.35rem; border-radius: 0.25rem; font-size: 0.85em; }
.prose-md pre { background-color: rgb(15 23 42); color: rgb(226 232 240); padding: 0.75rem 1rem; border-radius: 0.375rem; overflow-x: auto; font-size: 0.85em; }
.prose-md pre code { background: none; padding: 0; color: inherit; }
.prose-md blockquote { border-left: 3px solid rgb(203 213 225); padding-left: 0.85rem; color: rgb(71 85 105); margin: 0.5rem 0; }
.prose-md hr { border: 0; border-top: 1px solid rgb(226 232 240); margin: 1rem 0; }
.prose-md a { color: rgb(37 99 235); text-decoration: underline; }
.prose-md table { width: 100%; border-collapse: collapse; margin: 0.75rem 0; font-size: 0.85rem; }
.prose-md th, .prose-md td { padding: 0.4rem 0.6rem; border: 1px solid rgb(226 232 240); text-align: left; vertical-align: top; }
.prose-md th { background-color: rgb(248 250 252); font-weight: 600; }
.prose-md strong { font-weight: 600; }

/* Sprint board */
.board-section { margin-bottom: 1.5rem; }
.board-section h3 { font-size: 0.875rem; font-weight: 600; color: rgb(71 85 105); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; }
.board-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 0.75rem; }
.card {
  background: white;
  border: 1px solid rgb(226 232 240);
  border-radius: 0.5rem;
  padding: 0.75rem 0.85rem;
  box-shadow: 0 1px 2px rgb(0 0 0 / 4%);
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  transition: box-shadow 150ms, transform 150ms;
}
.card:hover { box-shadow: 0 4px 8px rgb(0 0 0 / 6%); transform: translateY(-1px); }
.card.priority-high { border-left: 4px solid rgb(220 38 38); }
.card.priority-medium { border-left: 4px solid rgb(234 179 8); }
.card.priority-low { border-left: 4px solid rgb(34 197 94); }
.card.priority-unknown { border-left: 4px solid rgb(148 163 184); }
.card .card-head { display: flex; justify-content: space-between; align-items: start; gap: 0.5rem; }
.card .card-tkt { font-family: ui-monospace, SFMono-Regular, monospace; font-size: 0.7rem; color: rgb(100 116 139); }
.card .card-priority { font-size: 0.65rem; padding: 0.1rem 0.4rem; border-radius: 0.25rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
.card .card-priority.high { background: rgb(254 226 226); color: rgb(153 27 27); }
.card .card-priority.medium { background: rgb(254 249 195); color: rgb(133 77 14); }
.card .card-priority.low { background: rgb(220 252 231); color: rgb(22 101 52); }
.card .card-priority.unknown { background: rgb(241 245 249); color: rgb(71 85 105); }
.card .card-subj { font-size: 0.875rem; font-weight: 500; line-height: 1.35; }
.card .card-meta { font-size: 0.7rem; color: rgb(100 116 139); display: flex; gap: 0.5rem; flex-wrap: wrap; }
.card .card-notes { font-size: 0.75rem; color: rgb(71 85 105); line-height: 1.4; border-top: 1px solid rgb(241 245 249); padding-top: 0.4rem; }

/* Standup blocks */
.standup-block { background: white; border: 1px solid rgb(226 232 240); border-radius: 0.5rem; padding: 0.85rem 1rem; margin-bottom: 0.75rem; }
.standup-block.has-blockers { border-left: 4px solid rgb(234 88 12); }
.standup-block .standup-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 0.4rem; }
.standup-block .standup-name { font-weight: 600; }
.standup-block .standup-count { font-size: 0.7rem; color: rgb(100 116 139); }
.standup-block dl { display: grid; grid-template-columns: 5rem 1fr; gap: 0.3rem 0.75rem; font-size: 0.825rem; margin-top: 0.4rem; }
.standup-block dt { font-weight: 600; color: rgb(71 85 105); }
.standup-block dd { color: rgb(30 41 59); white-space: pre-line; }
.standup-block dd.blockers { color: rgb(154 52 18); }

/* Goal banner */
.goal-banner { background: linear-gradient(135deg, rgb(15 23 42), rgb(30 41 59)); color: white; padding: 1rem 1.25rem; border-radius: 0.5rem; margin-bottom: 1.25rem; }
.goal-banner .goal-label { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em; color: rgb(148 163 184); margin-bottom: 0.3rem; }
.goal-banner .goal-text { font-size: 1rem; line-height: 1.5; }

/* Capacity stats */
.stats-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 0.6rem; margin-bottom: 1.25rem; }
.stat-card { background: white; border: 1px solid rgb(226 232 240); border-radius: 0.5rem; padding: 0.75rem; }
.stat-card .stat-label { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em; color: rgb(100 116 139); margin-bottom: 0.25rem; }
.stat-card .stat-value { font-size: 1.4rem; font-weight: 600; color: rgb(15 23 42); }

/* Grouped ticket sections (Spark / Framework) */
.group-section {
  background: white;
  border: 1px solid rgb(226 232 240);
  border-radius: 0.5rem;
  overflow: hidden;
}
.group-head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.65rem 0.85rem;
  background: rgb(248 250 252);
  border-bottom: 1px solid rgb(226 232 240);
}
.group-title { font-size: 0.95rem; font-weight: 600; color: rgb(15 23 42); }
.group-count {
  font-size: 0.7rem;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  background: white;
  border: 1px solid rgb(226 232 240);
  color: rgb(71 85 105);
  font-weight: 600;
}
.group-empty { padding: 0.85rem 1rem; color: rgb(148 163 184); font-style: italic; font-size: 0.85rem; }

.ticket-table-wrap { overflow-x: auto; }
.ticket-table { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.ticket-table thead th {
  text-align: left;
  font-weight: 600;
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: rgb(100 116 139);
  background: rgb(248 250 252);
  padding: 0.5rem 0.75rem;
  border-bottom: 1px solid rgb(226 232 240);
  white-space: nowrap;
}
.ticket-table tbody td { padding: 0.55rem 0.75rem; border-bottom: 1px solid rgb(241 245 249); vertical-align: top; }
.ticket-table tbody tr { cursor: pointer; transition: background-color 100ms; }
.ticket-table tbody tr:hover { background: rgb(248 250 252); }
.ticket-table tbody tr:last-child td { border-bottom: none; }
.ticket-table .col-tkt { font-family: ui-monospace, SFMono-Regular, monospace; font-size: 0.75rem; color: rgb(71 85 105); white-space: nowrap; }
.ticket-table .col-subj { color: rgb(15 23 42); font-weight: 500; min-width: 280px; }
.ticket-table .col-status, .ticket-table .col-priority, .ticket-table .col-category { white-space: nowrap; color: rgb(71 85 105); }
.ticket-table .col-assignee { color: rgb(51 65 85); white-space: nowrap; }
.ticket-table .col-reporter { color: rgb(51 65 85); white-space: nowrap; }
.ticket-table .col-meta { color: rgb(71 85 105); white-space: nowrap; font-size: 0.8rem; }
.ticket-table .col-created { color: rgb(100 116 139); white-space: nowrap; font-size: 0.75rem; }
.ticket-table .col-updated { color: rgb(100 116 139); white-space: nowrap; font-size: 0.75rem; }
.ticket-table .col-tags { white-space: normal; max-width: 14rem; }

/* Tag chips on ticket rows */
.tag-chip {
  display: inline-block;
  font-size: 0.65rem;
  padding: 0.1rem 0.45rem;
  border-radius: 999px;
  background: rgb(241 245 249);
  color: rgb(51 65 85);
  font-weight: 500;
  margin: 0.1rem 0.2rem 0.1rem 0;
  white-space: nowrap;
  border: 1px solid rgb(226 232 240);
}
.tag-chip.tag-spark, .tag-chip.tag-spark-portal { background: rgb(238 242 255); color: rgb(67 56 202); border-color: rgb(199 210 254); }
.tag-chip.tag-framework, .tag-chip.tag-new-framework { background: rgb(236 253 245); color: rgb(6 95 70); border-color: rgb(167 243 208); }
.tag-chip.tag-internal-ticket, .tag-chip.tag-comments, .tag-chip.tag-updates { background: rgb(254 249 195); color: rgb(133 77 14); border-color: rgb(253 224 71); }
.tag-chip.tag-content { background: rgb(219 234 254); color: rgb(30 64 175); border-color: rgb(147 197 253); }
.tag-chip.tag-login, .tag-chip.tag-password, .tag-chip.tag-access { background: rgb(254 226 226); color: rgb(153 27 27); border-color: rgb(252 165 165); }
.tag-chip.tag-attachments, .tag-chip.tag-search { background: rgb(245 243 255); color: rgb(91 33 182); border-color: rgb(196 181 253); }
.tag-chip.tag-email, .tag-chip.tag-branding, .tag-chip.tag-outlook { background: rgb(255 237 213); color: rgb(154 52 18); border-color: rgb(253 186 116); }
.ticket-table .priority-row-high { box-shadow: inset 3px 0 0 rgb(220 38 38); }
.ticket-table .priority-row-medium { box-shadow: inset 3px 0 0 rgb(234 179 8); }
.ticket-table .priority-row-low { box-shadow: inset 3px 0 0 rgb(34 197 94); }
.ticket-table .priority-row-unknown { box-shadow: inset 3px 0 0 rgb(203 213 225); }
.row-priority { font-size: 0.65rem; padding: 0.1rem 0.4rem; border-radius: 0.25rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; }
.row-priority.high { background: rgb(254 226 226); color: rgb(153 27 27); }
.row-priority.medium { background: rgb(254 249 195); color: rgb(133 77 14); }
.row-priority.low { background: rgb(220 252 231); color: rgb(22 101 52); }
.row-priority.unknown { background: rgb(241 245 249); color: rgb(71 85 105); }
.priority-derived { margin-left: 0.2rem; opacity: 0.55; cursor: help; }
.row-overdue { background: rgb(254 226 226); color: rgb(153 27 27); font-size: 0.65rem; font-weight: 600; padding: 0.05rem 0.35rem; border-radius: 0.25rem; margin-left: 0.4rem; }

/* Live polling pulse + freshness indicator in the header */
.live-pulse {
  display: inline-block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 999px;
  background: rgb(34 197 94);
  box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.55);
  animation: live-pulse-anim 2.2s ease-out infinite;
}
@keyframes live-pulse-anim {
  0%   { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.55); }
  70%  { box-shadow: 0 0 0 6px rgba(34, 197, 94, 0); }
  100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
}

/* "NEW since last visit" badge in the Subject cell of the live board */
.ticket-new-badge {
  display: inline-block;
  background: rgb(219 234 254);
  color: rgb(29 78 216);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 0.05rem 0.4rem;
  border-radius: 0.25rem;
  margin-left: 0.4rem;
  border: 1px solid rgb(147 197 253);
  vertical-align: middle;
}

/* Sprint board table extras */
.theme-title { font-size: 1.125rem; font-weight: 700; color: rgb(15 23 42); margin: 1.1rem 0 0.5rem; }

/* Triage banner — Insights / Considerations / Next steps */
.triage-banner { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0.75rem; margin-bottom: 1.25rem; }
.triage-block { background: white; border: 1px solid rgb(226 232 240); border-radius: 0.5rem; padding: 0.85rem 1rem; }
.triage-block-label { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: rgb(71 85 105); margin-bottom: 0.5rem; }
.triage-block-list { font-size: 0.875rem; line-height: 1.5; color: rgb(30 41 59); padding-left: 1.1rem; margin: 0; }
.triage-block-list li { margin: 0.25rem 0; }
.triage-block-list strong { color: rgb(15 23 42); }
.triage-block-list code { background: rgb(241 245 249); padding: 0.05rem 0.3rem; border-radius: 0.2rem; font-size: 0.85em; }

/* Triage sub-section table label (e.g., "Spark portal bugs (assign to ...)") */
.triage-table-label { font-size: 1rem; font-weight: 700; color: rgb(15 23 42); margin: 1rem 0 0.4rem; }

/* Triage summary tables — multi-table grid under "## Summary counts" */
.triage-summary { margin-bottom: 1.25rem; }
.triage-summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0.75rem; }
.triage-summary-block {
  background: white;
  border: 1px solid rgb(226 232 240);
  border-radius: 0.5rem;
  padding: 0.7rem 0.85rem;
}
.triage-summary-label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgb(71 85 105);
  margin-bottom: 0.45rem;
}
.triage-summary-block .ticket-table { font-size: 0.78rem; }
.triage-summary-block .ticket-table thead th {
  font-size: 0.65rem;
  padding: 0.3rem 0.5rem;
  background: transparent;
  border-bottom: 1px solid rgb(241 245 249);
}
.triage-summary-block .ticket-table tbody td {
  padding: 0.35rem 0.5rem;
  border-bottom: 1px solid rgb(241 245 249);
}
.triage-summary-block .ticket-table tbody tr:hover { background: transparent; cursor: default; }
.triage-summary-block .ticket-table tbody tr:last-child td { border-bottom: none; }
.triage-summary-merged { display: flex; flex-direction: column; gap: 0.5rem; }
.triage-summary-sub { border-top: 1px dashed rgb(226 232 240); padding-top: 0.35rem; }
.triage-summary-sub:first-child { border-top: none; padding-top: 0; }
.triage-summary-sublabel { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em; color: rgb(100 116 139); margin-bottom: 0.25rem; }

/* Triage kanban — 3 columns (Urgent / Backlog / Can wait) with theme buckets inside */
.triage-kanban {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.85rem;
  margin-bottom: 1.25rem;
}
@media (max-width: 1100px) {
  .triage-kanban { grid-template-columns: 1fr; }
}
.triage-col {
  background: rgb(248 250 252);
  border: 1px solid rgb(226 232 240);
  border-radius: 0.5rem;
  display: flex;
  flex-direction: column;
  min-height: 14rem;
}
.triage-col-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.6rem 0.85rem;
  background: white;
  border-bottom: 1px solid rgb(226 232 240);
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
  border-left: 4px solid var(--col-accent, rgb(148 163 184));
}
.triage-col-urgent .triage-col-head { --col-accent: rgb(220 38 38); }
.triage-col-backlog .triage-col-head { --col-accent: rgb(234 179 8); }
.triage-col-projects .triage-col-head { --col-accent: rgb(139 92 246); }
.triage-col-title { font-size: 0.95rem; font-weight: 700; color: rgb(15 23 42); }
.triage-col-count {
  font-size: 0.75rem;
  font-weight: 700;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  background: rgb(241 245 249);
  color: rgb(51 65 85);
}
.triage-col-urgent .triage-col-count { background: rgb(254 226 226); color: rgb(153 27 27); }
.triage-col-backlog .triage-col-count { background: rgb(254 249 195); color: rgb(133 77 14); }
.triage-col-projects .triage-col-count { background: rgb(243 232 255); color: rgb(88 28 135); }

.triage-col-body { padding: 0.6rem; display: flex; flex-direction: column; gap: 0.65rem; flex: 1; }
.triage-col-empty { color: rgb(148 163 184); font-style: italic; font-size: 0.8rem; padding: 0.85rem 0.4rem; text-align: center; }

.triage-theme {
  background: white;
  border: 1px solid rgb(226 232 240);
  border-radius: 0.4rem;
  padding: 0.5rem 0.65rem;
}
.triage-theme-head {
  font-size: 0.78rem;
  font-weight: 700;
  color: rgb(30 41 59);
  margin-bottom: 0.35rem;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.triage-theme-count { font-size: 0.65rem; color: rgb(100 116 139); font-weight: 600; }
.triage-theme-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.2rem; }
.triage-ticket-item {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  font-size: 0.78rem;
  line-height: 1.35;
  padding: 0.15rem 0;
  border-bottom: 1px dashed rgb(241 245 249);
}
.triage-ticket-item:last-child { border-bottom: none; }
.triage-ticket-tkt { font-family: ui-monospace, SFMono-Regular, monospace; font-size: 0.7rem; flex-shrink: 0; min-width: 4.5rem; }
.triage-ticket-subj { color: rgb(30 41 59); flex: 1; }

/* Projects column — meeting-derived work that doesn't have Spark tickets yet */
.triage-projects-theme { background: rgb(250 245 255); border-color: rgb(216 180 254); }
.triage-projects-theme .triage-theme-head { color: rgb(88 28 135); }
.project-item {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.35rem 0;
  border-bottom: 1px dashed rgb(233 213 255);
  cursor: help;
}
.project-item:last-child { border-bottom: none; }
.project-row1 { display: flex; align-items: baseline; gap: 0.4rem; }
.project-urgency-dot {
  display: inline-block;
  width: 0.5rem; height: 0.5rem;
  border-radius: 999px;
  flex-shrink: 0;
  margin-top: 0.25rem;
}
.project-urgency-dot.urgency-high   { background: rgb(220 38 38); }
.project-urgency-dot.urgency-medium { background: rgb(234 179 8); }
.project-urgency-dot.urgency-low    { background: rgb(34 197 94); }
.project-title {
  font-size: 0.8rem;
  font-weight: 500;
  color: rgb(46 16 101);
  line-height: 1.35;
  flex: 1;
}
.project-related-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  margin-left: 0.9rem;
}
.project-related-tkt {
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-size: 0.65rem;
  background: white;
  border: 1px solid rgb(216 180 254);
  color: rgb(91 33 182);
  padding: 0.05rem 0.4rem;
  border-radius: 0.25rem;
  text-decoration: none;
}
a.project-related-tkt:hover { background: rgb(243 232 255); border-color: rgb(167 139 250); }

/* Progress / feature progress bars */
.legend-item { display: inline-flex; align-items: center; gap: 0.35rem; color: rgb(71 85 105); }
.legend-swatch { display: inline-block; width: 0.85rem; height: 0.55rem; border-radius: 0.15rem; border: 1px solid rgba(0,0,0,0.05); }

/* Status colors (shared by bar fills, badges, swatches, count pills) */
.status-done       { --st-bg: rgb(34 197 94);   --st-fg: white;             --st-soft: rgb(220 252 231); --st-soft-fg: rgb(22 101 52); }
.status-in_progress{ --st-bg: rgb(59 130 246);  --st-fg: white;             --st-soft: rgb(219 234 254); --st-soft-fg: rgb(30 64 175); }
.status-blocked    { --st-bg: rgb(220 38 38);   --st-fg: white;             --st-soft: rgb(254 226 226); --st-soft-fg: rgb(153 27 27); }
.status-at_risk    { --st-bg: rgb(234 88 12);   --st-fg: white;             --st-soft: rgb(255 237 213); --st-soft-fg: rgb(154 52 18); }
.status-planned    { --st-bg: rgb(148 163 184); --st-fg: white;             --st-soft: rgb(241 245 249); --st-soft-fg: rgb(51 65 85); }
.legend-swatch.status-done { background: rgb(34 197 94); }
.legend-swatch.status-in_progress { background: rgb(59 130 246); }
.legend-swatch.status-blocked { background: rgb(220 38 38); }
.legend-swatch.status-at_risk { background: rgb(234 88 12); }
.legend-swatch.status-planned { background: rgb(148 163 184); }

/* Lane accent bars */
.lane-indigo { --lane: rgb(99 102 241); }
.lane-violet { --lane: rgb(139 92 246); }
.lane-sky    { --lane: rgb(14 165 233); }
.lane-emerald{ --lane: rgb(16 185 129); }
.lane-amber  { --lane: rgb(245 158 11); }
.lane-rose   { --lane: rgb(244 63 94); }
.lane-cyan   { --lane: rgb(6 182 212); }
.lane-slate  { --lane: rgb(100 116 139); }

/* Top summary card */
.progress-summary {
  background: white;
  border: 1px solid rgb(226 232 240);
  border-radius: 0.5rem;
  padding: 1rem 1.25rem;
  margin-bottom: 1rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 1.5rem;
}
.progress-summary-overall { display: flex; align-items: center; gap: 0.85rem; flex: 1 1 320px; }
.progress-summary-label { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: rgb(71 85 105); white-space: nowrap; }
.progress-summary-bar { flex: 1; height: 0.85rem; background: rgb(241 245 249); border-radius: 999px; overflow: hidden; min-width: 12rem; }
.progress-summary-fill { height: 100%; background: linear-gradient(90deg, rgb(34 197 94), rgb(59 130 246)); transition: width 300ms; }
.progress-summary-pct { font-size: 1rem; font-weight: 700; color: rgb(15 23 42); white-space: nowrap; }
.progress-summary-counts { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.progress-count-pill {
  font-size: 0.7rem;
  font-weight: 600;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: var(--st-soft);
  color: var(--st-soft-fg);
}

/* Category section */
.progress-category {
  background: white;
  border: 1px solid rgb(226 232 240);
  border-left: 4px solid var(--lane, rgb(148 163 184));
  border-radius: 0.5rem;
  padding: 0.85rem 1rem 1rem;
  margin-bottom: 0.85rem;
}
.progress-category-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 0.65rem; gap: 0.5rem; }
.progress-category-name { font-size: 1rem; font-weight: 700; color: rgb(15 23 42); margin: 0; }
.progress-category-meta { font-size: 0.75rem; color: rgb(100 116 139); white-space: nowrap; }
.progress-feature-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 0.7rem; }

/* Feature card */
.progress-feature {
  background: rgb(248 250 252);
  border: 1px solid rgb(226 232 240);
  border-radius: 0.4rem;
  padding: 0.7rem 0.85rem;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.progress-feature-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.5rem; }
.progress-feature-title { font-size: 0.875rem; font-weight: 600; color: rgb(15 23 42); line-height: 1.3; }
.progress-status-badge {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 0.15rem 0.45rem;
  border-radius: 0.25rem;
  background: var(--st-soft);
  color: var(--st-soft-fg);
  white-space: nowrap;
  flex-shrink: 0;
}
.progress-feature-summary { font-size: 0.78rem; color: rgb(71 85 105); line-height: 1.45; }
.progress-bar-row { display: flex; align-items: center; gap: 0.6rem; }
.progress-bar { flex: 1; height: 0.55rem; background: rgb(226 232 240); border-radius: 999px; overflow: hidden; }
.progress-bar-fill { height: 100%; background: var(--st-bg); transition: width 300ms; }
.progress-bar-fill.status-planned { background: linear-gradient(90deg, var(--lane, rgb(148 163 184)) 0%, rgb(203 213 225) 100%); opacity: 0.7; }
.progress-bar-pct { font-size: 0.75rem; font-weight: 600; color: rgb(51 65 85); min-width: 2.5rem; text-align: right; }

/* Feature metadata footer */
.progress-feature-meta { display: flex; flex-wrap: wrap; gap: 0.5rem 0.85rem; font-size: 0.72rem; color: rgb(71 85 105); }
.progress-target { font-weight: 500; }
.progress-tickets { display: inline-flex; flex-wrap: wrap; gap: 0.3rem; }
.progress-ticket-chip {
  font-family: ui-monospace, SFMono-Regular, monospace;
  font-size: 0.65rem;
  background: white;
  border: 1px solid rgb(226 232 240);
  color: rgb(37 99 235);
  padding: 0.1rem 0.4rem;
  border-radius: 0.25rem;
  text-decoration: none;
}
a.progress-ticket-chip:hover { background: rgb(239 246 255); border-color: rgb(147 197 253); }
.board-summary { cursor: pointer; font-size: 0.875rem; font-weight: 600; color: rgb(51 65 85); text-transform: uppercase; letter-spacing: 0.04em; padding: 0.4rem 0; user-select: none; }
.board-summary:hover { color: rgb(15 23 42); }
.col-notes { color: rgb(51 65 85); font-size: 0.8rem; line-height: 1.4; max-width: 30rem; }

/* Sprint + standup tables aren't clickable — override the live-board hover/cursor */
.prose-md ~ * .ticket-table tbody tr,
#content .ticket-table tbody tr:not([data-tkt-idx]) { cursor: default; }
#content .ticket-table tbody tr:not([data-tkt-idx]):hover { background: transparent; }
.standup-table tbody tr { cursor: default !important; }
.standup-table tbody tr:hover { background: transparent; }
.standup-table tbody tr.standup-row-blocked:hover { background: rgb(254 240 219); }

/* Standup table */
.standup-table tbody td { vertical-align: top; }
.standup-table .col-assignee { white-space: normal; min-width: 9rem; }
.standup-table .col-assignee .standup-name { font-weight: 600; color: rgb(15 23 42); }
.standup-table .col-assignee .standup-count { font-size: 0.7rem; color: rgb(100 116 139); margin-top: 0.15rem; }
.standup-table .col-block { font-size: 0.8rem; line-height: 1.45; color: rgb(30 41 59); max-width: 22rem; }
.standup-table .col-block.blockers { color: rgb(154 52 18); }
.standup-table .standup-list { list-style: disc; padding-left: 1.1rem; margin: 0; }
.standup-table .standup-list li { margin: 0.1rem 0; }
.standup-table .standup-row-blocked { background: rgb(255 247 237); }
.standup-table .standup-row-blocked:hover { background: rgb(254 240 219); }

/* Kanban columns (legacy — still used by some callers) */
.kanban-col {
  background: rgb(248 250 252);
  border: 1px solid rgb(226 232 240);
  border-radius: 0.5rem;
  display: flex;
  flex-direction: column;
}
.kanban-col-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.65rem 0.85rem;
  border-bottom: 1px solid rgb(226 232 240);
  background: white;
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
  position: sticky;
  top: 0;
  z-index: 1;
}
.kanban-col-title { font-size: 0.875rem; font-weight: 600; color: rgb(15 23 42); }
.kanban-col-count { font-size: 0.7rem; padding: 0.15rem 0.5rem; border-radius: 999px; background: rgb(241 245 249); color: rgb(71 85 105); font-weight: 600; }
.kanban-col-body { padding: 0.6rem; display: flex; flex-direction: column; gap: 0.5rem; overflow-y: auto; flex: 1; }
.kanban-card { cursor: pointer; }
.kanban-card .card-overdue {
  background: rgb(254 226 226);
  color: rgb(153 27 27);
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.1rem 0.4rem;
  border-radius: 0.25rem;
  margin-left: auto;
}

/* Drawer */
#drawer { transition: opacity 150ms; }
#drawer.hidden { display: none !important; }
.drawer-fields { display: grid; grid-template-columns: 6.5rem 1fr; gap: 0.4rem 0.75rem; font-size: 0.85rem; margin-bottom: 1rem; }
.drawer-fields dt { font-weight: 600; color: rgb(71 85 105); }
.drawer-fields dd { color: rgb(15 23 42); }
.drawer-section { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: rgb(71 85 105); margin: 1rem 0 0.4rem 0; }
.drawer-desc { font-size: 0.875rem; line-height: 1.5; white-space: pre-wrap; color: rgb(30 41 59); padding: 0.6rem 0.85rem; background: rgb(248 250 252); border-radius: 0.375rem; }
.drawer-desc-html { white-space: normal; overflow-wrap: anywhere; word-break: break-word; }
.drawer-desc-html p { margin: 0 0 0.6rem 0; }
.drawer-desc-html p:last-child { margin-bottom: 0; }
.drawer-desc-html ul, .drawer-desc-html ol { margin: 0.4rem 0; padding-left: 1.5rem; }
.drawer-desc-html ul { list-style: disc; }
.drawer-desc-html ol { list-style: decimal; }
.drawer-desc-html a { color: rgb(37 99 235); text-decoration: underline; overflow-wrap: anywhere; }
.drawer-desc-html img { max-width: 100%; height: auto; border-radius: 0.25rem; margin: 0.4rem 0; }
.drawer-desc-html pre, .drawer-desc-html code { white-space: pre-wrap; word-break: break-word; }
.drawer-desc-html h1, .drawer-desc-html h2, .drawer-desc-html h3, .drawer-desc-html h4 { font-weight: 600; margin: 0.6rem 0 0.3rem; }
.drawer-desc-html em { font-style: italic; color: rgb(100 116 139); font-size: 0.8rem; }

/* Spark ticket link */
.tkt-link { color: rgb(37 99 235); text-decoration: none; }
.tkt-link:hover { text-decoration: underline; color: rgb(29 78 216); }
.drawer-warning { padding: 0.5rem 0.85rem; background: rgb(254 226 226); color: rgb(153 27 27); border-radius: 0.375rem; font-size: 0.8rem; font-weight: 600; margin-bottom: 1rem; }
